1var suggestions = document.getElementById('suggestions'); 2var search = document.getElementById('search'); 3 4if (search !== null) { 5 document.addEventListener('keydown', inputFocus); 6} 7 8function inputFocus(e) { 9 if (e.ctrlKey && e.key === '/' ) { 10 e.preventDefault(); 11 search.focus(); 12 } 13 if (e.key === 'Escape' ) { 14 search.blur(); 15 suggestions.classList.add('d-none'); 16 } 17} 18 19document.addEventListener('click', function(event) { 20 21 var isClickInsideElement = suggestions.contains(event.target); 22 23 if (!isClickInsideElement) { 24 suggestions.classList.add('d-none'); 25 } 26 27}); 28 29/* 30Source: 31 - https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3 32*/ 33 34document.addEventListener('keydown',suggestionFocus); 35 36function suggestionFocus(e) { 37 const suggestionsHidden = suggestions.classList.contains('d-none'); 38 if (suggestionsHidden) return; 39 40 const focusableSuggestions= [...suggestions.querySelectorAll('a')]; 41 if (focusableSuggestions.length === 0) return; 42 43 const index = focusableSuggestions.indexOf(document.activeElement); 44 45 if (e.key === "ArrowUp") { 46 e.preventDefault(); 47 const nextIndex = index > 0 ? index - 1 : 0; 48 focusableSuggestions[nextIndex].focus(); 49 } 50 else if (e.key === "ArrowDown") { 51 e.preventDefault(); 52 const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index; 53 focusableSuggestions[nextIndex].focus(); 54 } 55 56} 57 58/* 59Source: 60 - https://github.com/nextapps-de/flexsearch#index-documents-field-search 61 - https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html 62*/ 63 64(function(){ 65 66 var index = new FlexSearch.Document({ 67 tokenize: "forward", 68 cache: 100, 69 document: { 70 id: 'id', 71 store: [ 72 "href", "title", "description" 73 ], 74 index: ["title", "description", "content"] 75 } 76 }); 77 78 79 // Not yet supported: https://github.com/nextapps-de/flexsearch#complex-documents 80 81 /* 82 var docs = [ 83 { 84 id: 0, 85 href: "https://prometheus-operator.dev/docs/getting-started/", 86 title: "Getting-Started", 87 description: "Prologue for the Prometheus Operator.", 88 content: "" 89 }, 90 { 91 id: 1, 92 href: "https://prometheus-operator.dev/docs/getting-started/introduction/", 93 title: "Introduction", 94 description: "The Prometheus Operator provides Kubernetes native deployment and management of Prometheus and related monitoring components", 95 content: "\u003cp\u003ePrometheus Operator is a \u003ca href=\"https://github.com/cncf/tag-app-delivery/blob/main/operator-wg/whitepaper/Operator-WhitePaper_v1-0.md#foundation\"\u003eKubernetes Operator\u003c/a\u003e that provides Kubernetes native deployment and management of \u003ca href=\"https://prometheus.io/\"\u003ePrometheus\u003c/a\u003e and related monitoring components.\u003c/p\u003e\n\u003cp\u003eThe Prometheus operator includes, but is not limited to, the following features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eKubernetes Custom Resources\u003c/strong\u003e: Use Kubernetes custom resources to deploy and manage Prometheus, Alertmanager, and related components.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSimplified Deployment Configuration\u003c/strong\u003e: Configure the fundamentals of Prometheus like versions, persistence, retention policies, and replicas from a native Kubernetes resource.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003ePrometheus Target Configuration\u003c/strong\u003e: Automatically generate monitoring target configurations based on familiar Kubernetes label queries; no need to learn a Prometheus specific configuration language.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePrometheus Operator provides a set of Custom Resource Definitions(CRDs) that allows you to configure your Prometheus and related instances. Currently, the CRDs provided by Prometheus Operator are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrometheus\u003c/li\u003e\n\u003cli\u003eAlertmanager\u003c/li\u003e\n\u003cli\u003eThanosRuler\u003c/li\u003e\n\u003cli\u003eServiceMonitor\u003c/li\u003e\n\u003cli\u003ePodMonitor\u003c/li\u003e\n\u003cli\u003eProbe\u003c/li\u003e\n\u003cli\u003ePrometheusRule\u003c/li\u003e\n\u003cli\u003eAlertmanagerConfig\u003c/li\u003e\n\u003cli\u003ePrometheusAgent\u003c/li\u003e\n\u003cli\u003eScrapeConfig\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003eCheck the \u003ca href=\"https://prometheus-operator.dev/docs/getting-started/design/\"\u003eDesign\u003c/a\u003e page for an overview of all the resources provided by Prometheus Operator.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo significantly reduce the effort required to configure, implement and manage all components of Prometheus based monitoring stack.\u
95003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eAutomation\u003c/strong\u003e - Automate the management of Prometheus monitoring targets, ultimately increasing efficiency. This automation is performed by the use of Kubernetes \u003ca href=\"https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/\"\u003eCustom Resource Definition\u003c/a\u003e. The Operator introduces custom resources like \u003ccode\u003ePrometheus\u003c/code\u003e, \u003ccode\u003eAlertmanager\u003c/code\u003e, \u003ccode\u003eThanosRuler\u003c/code\u003e, and others, which help automate the deployment and configuration of these resources.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eConfiguration Abstraction and Validation\u003c/strong\u003e - Instead of learning and manually writing Prometheus Relabeling rules (which can be time consuming), you can simply use Kubernetes \u003ca href=\"https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\"\u003eLabel Selectors\u003c/a\u003e. \u003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e and \u003ccode\u003eProbe\u003c/code\u003e custom resources provide this abstraction. The Operator also removes the complexity of validating the configuration of \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e and \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eScaling\u003c/strong\u003e - There are many scaling-related features provided by the Operator like \u003ca href=\"https://prometheus-operator.dev/docs/platform/thanos/#thanos-ruler\"\u003eThanosRuler\u003c/a\u003e custom resource for rule evaluation, workload distribution across multiple Prometheus instances using scrape target sharding, and running \u003ca href=\"https://thanos.io/v0.4/components/sidecar/\"\u003eThanos sidecar\u003c/a\u003e in Prometheus instance for long-term storage.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"next-steps\"\u003eNext Steps \u003ca href=\"#next-steps\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eBy now, you have the basic idea about Prometheus Operator!!\u003c/p\u003e\n\u003cp\u003eTake a look at these guides to get into action with Prometheus Operator.\u003c/p\u003e\n\u003c!-- Getting-Started --\u003e\n\n \u003cdiv class=\"card-nav d-flex flex-column flex-sm-row\" style=\"padding: 5px;\"\u003e\n \u003cdiv class=\"card text-end w-100\" style=\"border: 2px solid transparent; transition: border-color 0.3s ease;\" onmouseover=\"this.style.borderColor='#8cd2f7'\" onmouseout=\"this.style.borderColor='transparent'\"\u003e\n \u003cdiv class=\"card-body d-flex\"\u003e\n \u003cdiv class=\"d-flex flex-column me-auto text-start\"\u003e\n \u003ch5 class=\"card-title my-0\"\u003e\u003ca href=\"https://prometheus-operator.dev/docs/getting-started/introduction/\" class=\"stretched-link text-reset text-decoration-none\"\u003eGetting-Started\u003c/a\u003e\u003c/h5\u003e\n \u003cp class=\"card-text mt-1\"\u003eGet started with Prometheus-Operator.\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"d-flex flex-column justify-content-center\"\u003e\n \u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-arrow-right\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n \u003cpath stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c/path\u003e\n \u003cpath d=\"M5 12l14 0\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 18l6 -6\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 6l6 6\"\u003e\u003c/path\u003e\n \u003c/svg\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\u003c!-- API --\u003e\n\n \u003cdiv class=\"card-nav d-flex flex-column flex-sm-row\" style=\"padding: 5px;\"\u003e\n \u003cdiv class=\"card text-end w-100\" style=\"border: 2px solid transparent; transition: border-color 0.3s ease;
95\" onmouseover=\"this.style.borderColor='#8cd2f7'\" onmouseout=\"this.style.borderColor='transparent'\"\u003e\n \u003cdiv class=\"card-body d-flex\"\u003e\n \u003cdiv class=\"d-flex flex-column me-auto text-start\"\u003e\n \u003ch5 class=\"card-title my-0\"\u003e\u003ca href=\"https://prometheus-operator.dev/docs/api-reference/api/\" class=\"stretched-link text-reset text-decoration-none\"\u003eAPI Reference\u003c/a\u003e\u003c/h5\u003e\n \u003cp class=\"card-text mt-1\"\u003eReference for different fields of Custom Resources in Prometheus-Operator.\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"d-flex flex-column justify-content-center\"\u003e\n \u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-arrow-right\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n \u003cpath stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c/path\u003e\n \u003cpath d=\"M5 12l14 0\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 18l6 -6\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 6l6 6\"\u003e\u003c/path\u003e\n \u003c/svg\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\u003c!-- Platform Guide --\u003e\n\n \u003cdiv class=\"card-nav d-flex flex-column flex-sm-row\" style=\"padding: 5px;\"\u003e\n \u003cdiv class=\"card text-end w-100\" style=\"border: 2px solid transparent; transition: border-color 0.3s ease;\" onmouseover=\"this.style.borderColor='#8cd2f7'\" onmouseout=\"this.style.borderColor='transparent'\"\u003e\n \u003cdiv class=\"card-body d-flex\"\u003e\n \u003cdiv class=\"d-flex flex-column me-auto text-start\"\u003e\n \u003ch5 class=\"card-title my-0\"\u003e\u003ca href=\"https://prometheus-operator.dev/docs/platform/webhook/\" class=\"stretched-link text-reset text-decoration-none\"\u003ePlatform Guide\u003c/a\u003e\u003c/h5\u003e\n \u003cp class=\"card-text mt-1\"\u003eSet up, configure and manage instances of Prometheus-Operator, Prometheus, Alertmanager and ThanosRuler resources.\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"d-flex flex-column justify-content-center\"\u003e\n \u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-arrow-right\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n \u003cpath stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c/path\u003e\n \u003cpath d=\"M5 12l14 0\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 18l6 -6\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 6l6 6\"\u003e\u003c/path\u003e\n \u003c/svg\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\u003c!-- Developer Guide --\u003e\n\n \u003cdiv class=\"card-nav d-flex flex-column flex-sm-row\" style=\"padding: 5px;\"\u003e\n \u003cdiv class=\"card text-end w-100\" style=\"border: 2px solid transparent; transition: border-color 0.3s ease;\" onmouseover=\"this.style.borderColor='#8cd2f7'\" onmouseout=\"this.style.borderColor='transparent'\"\u003e\n \u003cdiv class=\"card-body d-flex\"\u003e\n \u003cdiv class=\"d-flex flex-column me-auto text-start\"\u003e\n \u003ch5 class=\"card-title my-0\"\u003e\u003ca href=\"https://prometheus-operator.dev/docs/developer/getting-started/\" class=\"stretched-link text-reset text-decoration-none\"\u003eDeveloper Guide\u003c/a\u003e\u003c/h5\u003e\n \u003cp class=\"card-text mt-1\"\u003eLearn how to configure scraping, alert
95ing, and recording rules for your applications.\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"d-flex flex-column justify-content-center\"\u003e\n \u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-arrow-right\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n \u003cpath stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c/path\u003e\n \u003cpath d=\"M5 12l14 0\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 18l6 -6\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 6l6 6\"\u003e\u003c/path\u003e\n \u003c/svg\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\u003c!-- Community --\u003e\n\n \u003cdiv class=\"card-nav d-flex flex-column flex-sm-row\" style=\"padding: 5px;\"\u003e\n \u003cdiv class=\"card text-end w-100\" style=\"border: 2px solid transparent; transition: border-color 0.3s ease;\" onmouseover=\"this.style.borderColor='#8cd2f7'\" onmouseout=\"this.style.borderColor='transparent'\"\u003e\n \u003cdiv class=\"card-body d-flex\"\u003e\n \u003cdiv class=\"d-flex flex-column me-auto text-start\"\u003e\n \u003ch5 class=\"card-title my-0\"\u003e\u003ca href=\"https://prometheus-operator.dev/docs/community/contributing/\" class=\"stretched-link text-reset text-decoration-none\"\u003eCommunity\u003c/a\u003e\u003c/h5\u003e\n \u003cp class=\"card-text mt-1\"\u003eJoin and interact with Prometheus-Operator community.\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"d-flex flex-column justify-content-center\"\u003e\n \u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-arrow-right\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n \u003cpath stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c/path\u003e\n \u003cpath d=\"M5 12l14 0\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 18l6 -6\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 6l6 6\"\u003e\u003c/path\u003e\n \u003c/svg\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n" 96 }, 97 { 98 id: 2, 99 href: "https://prometheus-operator.dev/docs/getting-started/installation/", 100 title: "Installing Prometheus Operator", 101 description: "Installation guide listing all the installation methods of Prometheus Operator.", 102 content: "\u003cp\u003eThere are different approaches to install Prometheus Operator in your Kubernetes cluster:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#install-using-yaml-files\"\u003eInstall using YAML files\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#install-using-kube-prometheus\"\u003eInstall using Kube-Prometheus\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#install-using-helm-chart\"\u003eInstall using Helm Chart\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"pre-requisites\"\u003ePre-requisites \u003ca href=\"#pre-requisites\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eDue to the use of \u003ca href=\"https://kubernetes.io/docs/reference/using-api/cel/\"\u003eCommon Expression Language\u003c/a\u003e (CEL) in Custom Resource Definitions, version \u0026gt;= v0.84.0 of the Prometheus Operator requires a Kubernetes cluster of version \u0026gt;= v1.25.0 (or \u0026gt;= v1.23.0 with the \u003ccode\u003eCustomResourceValidationExpressions\u003c/code\u003e feature gate enabled).\u003c/p\u003e\n\u003cp\u003eReleases before v0.84.0 require Kubernetes \u0026gt;= v1.16.0.\u003c/p\u003e\n\u003cp\u003eIf you are just starting out with the Prometheus Operator, it is \u003cstrong\u003ehighly recommended\u003c/strong\u003e to use the latest version. If you have an older version of Kubernetes and the Prometheus Operator running, we recommend upgrading Kubernetes first and then the Prometheus Operator.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eCheck the appropriate versions of each of the components in the \u003ca href=\"https://prometheus-operator.dev/docs/getting-started/compatibility/\"\u003eCompatibility\u003c/a\u003e page.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"install-using-yaml-files\"\u003eInstall using YAML files \u003ca href=\"#install-using-yaml-files\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe first step is to install the operator\u0026rsquo;s Custom Resource Definitions (CRDs) as well as the operator itself with the required RBAC resources.\u003c/p\u003e\n\u003cp\u003eRun the following commands to install the CRDs and deploy the operator in the \u003ccode\u003edefault\u003c/code\u003e namespace:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eLATEST\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003ecurl -s https://api.github.com/repos/prometheus-operator/prometheus-operator/releases/latest \u003cspan class=\"p\"\u003e|\u003c/span\u003e jq -cr .tag_name\u003cspan class=\"k\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecurl -sL https://github.com/prometheus-operator/prometheus-operator/releases/download/\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003eLATEST\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e/bundle.yaml \u003cspan class=\"p\"\u003e|\u003c/span\u003e kubectl create -f -\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe \u003ca href=\"https://kubectl.docs.kubernetes.io/installation/kustomize/\"\u003eKustomize\u003c/a\u003e tool is required to install the operator into a
102namespace different than the \u003ccode\u003edefault\u003c/code\u003e namespace:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eNAMESPACE\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003emy_namespace\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eTMPDIR\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003emktemp -d\u003cspan class=\"k\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eLATEST\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003ecurl -s https://api.github.com/repos/prometheus-operator/prometheus-operator/releases/latest \u003cspan class=\"p\"\u003e|\u003c/span\u003e jq -cr .tag_name\u003cspan class=\"k\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecurl -s \u003cspan class=\"s2\"\u003e\u0026#34;https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/refs/tags/\u003c/span\u003e\u003cspan class=\"nv\"\u003e$LATEST\u003c/span\u003e\u003cspan class=\"s2\"\u003e/kustomization.yaml\u0026#34;\u003c/span\u003e \u0026gt; \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$TMPDIR\u003c/span\u003e\u003cspan class=\"s2\"\u003e/kustomization.yaml\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecurl -s \u003cspan class=\"s2\"\u003e\u0026#34;https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/refs/tags/\u003c/span\u003e\u003cspan class=\"nv\"\u003e$LATEST\u003c/span\u003e\u003cspan class=\"s2\"\u003e/bundle.yaml\u0026#34;\u003c/span\u003e \u0026gt; \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$TMPDIR\u003c/span\u003e\u003cspan class=\"s2\"\u003e/bundle.yaml\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e \u003cspan class=\"nv\"\u003e$TMPDIR\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e kustomize edit \u003cspan class=\"nb\"\u003eset\u003c/span\u003e namespace \u003cspan class=\"nv\"\u003e$NAMESPACE\u003c/span\u003e\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e kubectl create -k \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$TMPDIR\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIt can take a few minutes for the operator to be up and running. You can check for c
102ompletion with the following command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl \u003cspan class=\"nb\"\u003ewait\u003c/span\u003e --for\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"nv\"\u003econdition\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eReady pods -l app.kubernetes.io/name\u003cspan class=\"o\"\u003e=\u003c/span\u003eprometheus-operator\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"install-using-kube-prometheus\"\u003eInstall using Kube-Prometheus \u003ca href=\"#install-using-kube-prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe easiest way of starting with the Prometheus Operator is by deploying it as part of kube-prometheus. kube-prometheus deploys the Prometheus Operator and already schedules a Prometheus called \u003ccode\u003eprometheus-k8s\u003c/code\u003e with alerts and rules by default.\u003c/p\u003e\n\u003cp\u003eWe are going to deploy a compiled version of the Kubernetes \u003ca href=\"https://github.com/prometheus-operator/kube-prometheus/tree/main/manifests\"\u003emanifests\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou can either clone the kube-prometheus from GitHub:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit clone https://github.com/prometheus-operator/kube-prometheus.git\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eor download the current main branch as zip file and extract its contents:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prometheus-operator/kube-prometheus/archive/main.zip\"\u003egithub.com/prometheus-operator/kube-prometheus/archive/main.zip\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eOnce you have the files on your machine change into the project\u0026rsquo;s root directory and run the following commands:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Create the namespace and CRDs, and then wait for them to be available before creating the remaining resources\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl create -f manifests/setup\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Wait until the \u0026#34;servicemonitors\u0026#34; CRD is created. The message \u0026#34;No resources found\u0026#34; means success in this context.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003euntil\u003c/span\u003e kubectl get servicemonitors --all-namespaces \u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003edo\u003c/span\u003e date\u003cspan class=\"p\"\u003e;\u003c/span\u003e sleep 1\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003edone\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl create -f manifests/\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWe create the namespace and CustomResourceDefinitions first to avoid race conditions when deploying the monitoring components. Alternatively, the resources in both folders can be applied with a single command:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ekubectl create -f manifests/setup -f manifests\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eBut it may be necessary to run the command multiple times for all c
102omponents to be created successfully.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: For versions before Kubernetes v1.20.z refer to the \u003ca href=\"https://github.com/prometheus-operator/kube-prometheus#kubernetes-compatibility-matrix\"\u003eKubernetes compatibility matrix\u003c/a\u003e in order to choose a compatible branch.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: If you used Kube-Prometheus as the installation method, we would recommend you to follow this \u003ca href=\"http://prometheus-operator.dev/kube-prometheus/kube/access-ui/\"\u003epage\u003c/a\u003e to learn how to access the resources provided.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"remove-kube-prometheus\"\u003eRemove Kube-Prometheus \u003ca href=\"#remove-kube-prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eIf you\u0026rsquo;re done experimenting with kube-prometheus and the Prometheus Operator you can simply teardown the deployment by running:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl delete --ignore-not-found\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"nb\"\u003etrue\u003c/span\u003e -f manifests/ -f manifests/setup\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"install-using-helm-chart\"\u003eInstall Using Helm Chart \u003ca href=\"#install-using-helm-chart\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eInstall the \u003ca href=\"https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack\"\u003eKube-Prometheus-Stack\u003c/a\u003e helm chart which provides a collection of Kubernetes manifests, \u003ca href=\"https://grafana.com/\"\u003eGrafana\u003c/a\u003e dashboards, and \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/\"\u003ePrometheus rules\u003c/a\u003e combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with \u003ca href=\"https://prometheus.io/\"\u003ePrometheus\u003c/a\u003e using the Prometheus Operator.\u003c/p\u003e\n\u003cp\u003eTo see more details, please check the \u003ca href=\"https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#kube-prometheus-stack\"\u003echart\u0026rsquo;s README\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis Helm chart is no longer part of Prometheus-Operator and is now maintained by \u003ca href=\"https://github.com/prometheus-community/helm-charts\"\u003ePrometheus Community Helm Charts\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n" 103 }, 104 { 105 id: 3, 106 href: "https://prometheus-operator.dev/docs/getting-started/compatibility/", 107 title: "Compatibility", 108 description: "The Prometheus Operator supports a number of Kubernetes and Prometheus releases.", 109 content: "\u003cp\u003eIt is recommended to use versions of the components identical or close to the versions used by the operator\u0026rsquo;s end-to-end test suite (the specific version numbers are listed below).\u003c/p\u003e\n\u003ch2 id=\"kubernetes\"\u003eKubernetes \u003ca href=\"#kubernetes\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eDue to the use of \u003ca href=\"https://kubernetes.io/docs/reference/using-api/cel/\"\u003eCommon Expression Language\u003c/a\u003e (CEL) in Custom Resource Definitions, prometheus-operator \u0026gt;= v0.84.0 requires Kubernetes \u0026gt;= v1.25.0 (or v1.23.0 with the \u003ccode\u003eCustomResourceValidationExpressions\u003c/code\u003e feature gate enabled).\u003c/p\u003e\n\u003cp\u003eReleases before v0.84.0 require Kubernetes \u0026gt;= v1.16.0.\u003c/p\u003e\n\u003cp\u003eThe Prometheus Operator uses the official \u003ca href=\"https://github.com/kubernetes/client-go\"\u003eGo client\u003c/a\u003e for Kubernetes to communicate with the Kubernetes API. The compatibility matrix for client-go and Kubernetes clusters can be found \u003ca href=\"https://github.com/kubernetes/client-go#compatibility-matrix\"\u003ehere\u003c/a\u003e. All additional compatibility is only best effort, or happens to be still/already supported.\u003c/p\u003e\n\u003cp\u003eThe current version of the Prometheus operator uses the following Go client version:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-$\" data-lang=\"$\"\u003ev0.37.0\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"prometheus\"\u003ePrometheus \u003ca href=\"#prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003ePrometheus Operator supports all Prometheus versions \u0026gt;= v2.0.0. The operator\u0026rsquo;
109s end-to-end tests verify that the operator can deploy the following Prometheus versions:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-$\" data-lang=\"$\"\u003e* v2.45.0\n* v2.46.0\n* v2.47.0\n* v2.47.1\n* v2.47.2\n* v2.48.0\n* v2.48.1\n* v2.49.0\n* v2.49.1\n* v2.50.0\n* v2.50.1\n* v2.51.0\n* v2.51.1\n* v2.51.2\n* v2.52.0\n* v2.53.0\n* v2.53.1\n* v2.53.2\n* v2.53.3\n* v2.54.0\n* v2.54.1\n* v2.55.0\n* v2.55.1\n* v3.0.0\n* v3.0.1\n* v3.1.0\n* v3.2.0\n* v3.2.1\n* v3.3.0\n* v3.3.1\n* v3.4.0\n* v3.4.1\n* v3.4.2\n* v3.5.0\n* v3.5.1\n* v3.5.2\n* v3.5.3\n* v3.5.4\n* v3.5.5\n* v3.6.0\n* v3.7.0\n* v3.7.1\n* v3.7.2\n* v3.7.3\n* v3.8.0\n* v3.8.1\n* v3.9.0\n* v3.9.1\n* v3.10.0\n* v3.11.0\n* v3.11.1\n* v3.11.2\n* v3.11.3\n* v3.12.0\n* v3.13.0\n* v3.13.1\n* v3.13.2\n* v3.13.3\n* v3.14.0\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe end-to-end tests are mostly tested against\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-$\" data-lang=\"$\"\u003e* v3.14.0\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"alertmanager\"\u003eAlertmanager \u003ca href=\"#alertmanager\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus Operator is compatible with Alertmanager v0.15 and above.\u003c/p\u003e\n\u003cp\u003eThe end-to-end tests are mostly tested against\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-$\" data-lang=\"$\"\u003e* v0.34.0\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"thanos\"\u003eThanos \u003ca href=\"#thanos\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus Operator is compatible with Thanos v0.10 and above.\u003c/p\u003e\n\u003cp\u003eThe end-to-end tests are mostly tested against\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-$\" data-lang=\"$\"\u003e* v0.42.4\n\u003c/code\u003e\u003c/pre\u003e" 110 }, 111 { 112 id: 4, 113 href: "https://prometheus-operator.dev/docs/getting-started/design/", 114 title: "Design", 115 description: "This document describes the design and interaction between the custom resource definitions that the Prometheus Operator manages.", 116 content: "\u003cp\u003eThis document describes the design and interaction between the \u003ca href=\"https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/\"\u003ecustom resource definitions\u003c/a\u003e that the Prometheus Operator manages.\u003c/p\u003e\n\u003cp\u003eThe custom resources managed by the Prometheus Operator are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#prometheus\"\u003ePrometheus\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#alertmanager\"\u003eAlertmanager\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#thanosruler\"\u003eThanosRuler\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#prometheus-agent\"\u003ePrometheusAgent\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#servicemonitor\"\u003eServiceMonitor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#podmonitor\"\u003ePodMonitor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#probe\"\u003eProbe\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#scrapeconfig\"\u003eScrapeConfig\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#alertmanagerconfig\"\u003eAlertmanagerConfig\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#prometheusrule\"\u003ePrometheusRule\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFor a better understanding of all these custom resources, let us classify them into two major groups:\u003c/p\u003e\n\u003ch3 id=\"instance-based-resources\"\u003eInstance-Based Resources \u003ca href=\"#instance-based-resources\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e\u003cimg class=\"img-fluid lazyload blur-up\" src=\"/img/instance-based-resources.png\" alt=\"Instances based resources\"\u003e\u003c/p\u003e\n\u003cp\u003eInstance-based resources are used to manage the deployment and lifecycle of different c
116omponents in the Prometheus ecosystem, as shown in the above figure. Let us look into the features of each of these custom resources:\u003c/p\u003e\n\u003ch4 id=\"prometheus\"\u003ePrometheus \u003ca href=\"#prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheus\u003c/code\u003e CRD sets up a \u003ca href=\"https://prometheus.io/docs/prometheus\"\u003ePrometheus\u003c/a\u003e instance in a Kubernetes cluster. It allows configuration of replicas, persistent storage, and Alertmanagers for sending alerts. For each Prometheus resource, the Operator deploys \u003ccode\u003eStatefulSet\u003c/code\u003e objects (one per shard, default is 1) in the same namespace.\u003c/p\u003e\n\u003ch4 id=\"alertmanager\"\u003eAlertmanager \u003ca href=\"#alertmanager\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003eAlertmanager\u003c/code\u003e CRD sets up a \u003ca href=\"https://prometheus.io/docs/alerting\"\u003eAlertmanager\u003c/a\u003e instance in a Kubernetes cluster. It provides options to configure the number of replicas and persistent storage. For each \u003ccode\u003eAlertmanager\u003c/code\u003e resource, the Operator deploys a \u003ccode\u003eStatefulSet\u003c/code\u003e in the same namespace. For multiple replicas, the operator runs the Alertmanager instances in high availability mode.\u003c/p\u003e\n\u003ch4 id=\"thanosruler\"\u003eThanosRuler \u003ca href=\"#thanosruler\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003eThanosRuler\u003c/code\u003e CRD sets up a \u003ca href=\"https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md\"\u003eThanos Ruler\u003c/a\u003e instance in a Kubernetes cluster. It enables the processing of recording and alerting rules across multiple Prometheus instances. A \u003ccode\u003eThanosRuler\u003c/code\u003e instance needs at least one \u003ccode\u003equery endpoint\u003c/code\u003e that connects to Thanos Queriers or Prometheus instances. More details can be found in the \u003ca href=\"https://prometheus-operator.dev/docs/platform/thanos/\"\u003eThanos section\u003c/a\u003e.\u003c/p\u003e\n\u003ch4 id=\"prometheus-agent\"\u003ePrometheus Agent \u003ca href=\"#prometheus-agent\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheus Agent\u003c/code\u003e CRD sets up a \u003ca href=\"https://prometheus.io/blog/2021/11/16/agent/\"\u003ePrometheus Agent\u003c/a\u003e instance in a Kubernetes cluster. While similar to the \u003ccode\u003ePrometheus\u003c/code\u003e CR, the \u003ccode\u003ePrometheus Agent\u003c/code\u003e has several configuration options redacted, including alerting, PrometheusRules selectors, remote-read, storage, and Thanos sidecars. To understand why Agent support was introduced, read the \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/proposals/202201-prometheus-agent.md\"\u003eproposal here\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"config-based-resources\"\u003eConfig-Based Resources \u003ca href=\"#config-based-resources\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eConfig-based resources focus on managing the monitoring of resources and scraping metrics within a Kubernetes cluster. They define how metrics are collected, processed, and managed, rather than managing the deployment of the monitoring components themselves. For a clear picture, let us look at the relation of config-based resources with instance based resources.\u003c/p\u003e\n\u003cp\u003e\u003cimg class=\"img-fluid lazyload blur-up\" src=\"/img/config-based-resources.png\" alt=\"Config based resources\"\u003e\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e CRDs use the \u003ccode\u003epodMonitorSelector\u003c/code\u003e, \u003ccode\u003eserviceMonitorSelector\u003c/code\u003e, \u003ccode\u003eprobeSelector\u003c/code\u003e, and \u003ccode\u003escrapeConfigSelector\u003c/code\u003e fields to determine which \u003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e, and \u003ccode\u003eScrapeConfig\u003c/code\u003e configurations should be included in the \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e instances for scraping.\u003c/p\u003e\n\u003ch4 id=\"servicemonitor\"\u003eServiceMonitor \u003ca href=\"#servicemonitor\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003eServiceMonitor\u003c/code\u003e CRD defines how a dynamic set of services should be monitored. A \u003ccode\u003eService\u003c/code\u003e object discovers pods by a label selector and adds those to the \u003ccode\u003eEndpointSlice\u003c/code\u003e or \u003ccode\u003eEndpoints\u003c/code\u003e object. The \u003ccode\u003eServiceMonitor\u003c/code\u003e object discovers those \u003ccode\u003eEndpointSlice\u003c/code\u003e or \u003ccode\u003eEndpoints\u003c/code\u003e objects and configures Prometheus to monitor those pods. The services selected to be monitored with the desired configuration are defined using label selections.\u003c/p\u003e\n\u003ch4 id=\"podmonitor\"\u003ePodMonitor \u003ca href=\"#podmonitor\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003ePodMonitor\u003c/code\u003e CRD defines how a dynamic set of pods should be monitored. The \u003ccode\u003ePodMonitor\u003c/code\u003e object discovers these pods and generates the relevant configuration for the Prometheus server to monitor them. The pods selected to be monitored with the desired configuration is defined using label selections.\u003c/p\u003e\n\u003ch4 id=\"probe\"\u003eProbe \u003ca href=\"#probe\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003eProbe\u003c/code\u003e CRD defines how groups of ingresses and static targets should be monitored. Besides the target, the \u003ccode\u003eProbe\u003c/code\u003e object requires a \u003ccode\u003eprober\u003c/code\u003e which is the service that monitors the target and provides metrics for Prometheus to scrape. Typically, this is achieved using the \u003ca href=\"https://github.com/prometheus/blackbox_exporter\"\u003eblackbox exporter\u003c/a\u003e.\u003c/p\u003e\n\u003ch4 id=\"scrapeconfig\"\u003eScrapeConfig \u003ca href=\"#scrapeconfig\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003eScrapeConfig\u003c/code\u003e CRD allows you to define how Prometheus should discover and scrape metrics from target services. You can use the \u003ccode\u003eScrapeConfig\u003c/code\u003e CRD to scrape targets external to the Kubernetes cluster or to create scrape configurations that are not possible with the higher-level \u003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e, or \u003ccode\u003ePodMonitor\u003c/code\u003e resources. Both the \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e CRDs have a \u003ccode\u003escrapeConfigSelector\u003c/code\u003e field, which needs to be set to a list of labels to match ScrapeConfigs.\u003c/p\u003e\n\u003ch4 id=\"alertmanagerconfig\"\u003eAlertmanagerConfig \u003ca href=\"#alertmanagerconfig\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003e\u003cimg class=\"img-fluid lazyload blur-up\" src=\"/img/alertmanager-config.png\" alt=\"AlertmanagerConfig\"\u003e\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e CRD allows us to configure \u003ccode\u003eAlertmanager\u003c/code\u003e instances in a Kubernetes cluster. It specifies subsections of the Alertmanager configuration, enabling the routing of alerts to custom receivers and the setting of inhibition rules.\u003c/p\u003e\n\u003ch4 id=\"prometheusrule\"\u003ePrometheusRule \u003ca href=\"#prometheusrule\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003e\u003cimg class=\"img-fluid lazyload blur-up\" src=\"/img/prometheus-rule.png\" alt=\"Prometheus Rule\"\u003e\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheusRule\u003c/code\u003e CRD allows the definition of alerting and recording rules to be consumed by Prometheus or Thanos Ruler instances. Alerts and recording rules are reconciled by the Operator and dynamically loaded without requiring a restart of Prometheus or Thanos Ruler.\u003c/p\u003e\n\u003ch3 id=\"resource-selectors\"\u003eResource Selectors \u003ca href=\"#resource-selectors\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eInstance-based resources use selector fields to discover and associate config-based resources:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserviceMonitorSelector\u003c/code\u003e and \u003ccode\u003eserviceMonitorNamespaceSelector\u003c/code\u003e for \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e CRDs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epodMonitorSelector\u003c/code\u003e and \u003ccode\u003epodMonitorNamespaceSelector\u003c/code\u003e for \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e CRDs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprobeSelector\u003c/code\u003e and \u003ccode\u003eprobeNamespaceSelector\u003c/code\u003e for \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e CRDs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003escrapeConfigSelector\u003c/code\u003e and \u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e for \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e CRDs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eruleSelector\u003c/code\u003e and \u003ccode\u003eruleNamespaceSelector\u003c/code\u003e for \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003eThanosRuler\u003c/code\u003e CRDs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ealertmanagerConfigSelector\u003c/code\u003e and \u003ccode\u003ealertmanagerConfigNamespaceSelector\u003c/code\u003e for \u003ccode\u003eAlertmanager\u003c/code\u003e CRD.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe selector fields follow standard Kubernetes label selector semantics:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAn empty selector (\u003ccode\u003e{}\u003c/code\u003e) matches all objects.\u003c/li\u003e\n\u003cli\u003eA null selector (field not specified) matches no objects for resource selectors, or only the current namespace for namespace selectors.\u003c/li\u003e\n\u003cli\u003eOtherwise the label selector matches objects with the specified labels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eYou can check the examples mentioned in the \u003ca href=\"../developer/scrapeconfig.md\"\u003eScrapeConfig documentation\u003c/a\u003e.\u003c/p\u003e\n" 117 }, 118 { 119 id: 5, 120 href: "https://prometheus-operator.dev/docs/api-reference/", 121 title: "API Reference", 122 description: null, 123 content: "" 124 }, 125 { 126 id: 6, 127 href: "https://prometheus-operator.dev/docs/api-reference/api/", 128 title: "API reference", 129 description: "Prometheus operator generated API reference docs", 130 content: "\u003cblockquote\u003e\n\u003cp\u003eThis page is automatically generated
130with \u003ccode\u003egen-crd-api-reference-docs\u003c/code\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003ePackages:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com%2fv1\"\u003emonitoring.coreos.com/v1\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com%2fv1alpha1\"\u003emonitoring.coreos.com/v1alpha1\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com%2fv1beta1\"\u003emonitoring.coreos.com/v1beta1\u003c/a\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"monitoring.coreos.com/v1\"\u003emonitoring.coreos.com/v1\u003c/h2\u003e\nResource Types:\n\u003cul\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Alertmanager\"\u003eAlertmanager\u003c/a\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodMonitor\"\u003ePodMonitor\u003c/a\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Probe\"\u003eProbe\u003c/a\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Prometheus\"\u003ePrometheus\u003c/a\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusRule\"\u003ePrometheusRule\u003c/a\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitor\"\u003eServiceMonitor\u003c/a\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ThanosRuler\"\u003eThanosRuler\u003c/a\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Alertmanager\"\u003eAlertmanager\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003eAlertmanager\u003c/code\u003e custom resource definition (CRD) defines a desired \u003ca href=\"https://prometheus.io/docs/alerting\"\u003eAlertmanager\u003c/a\u003e setup to run in a Kubernetes cluster. It allows to specify many options such as the number of replicas, persistent storage and many more.\u003c/p\u003e\n\u003cp\u003eFor each \u003ccode\u003eAlertmanager\u003c/code\u003e resource, the Operator deploys a \u003ccode\u003eStatefulSet\u003c/code\u003e in the same namespace. When there are two or more configured replicas, the Operator runs the Alertmanager instances in high-availability mode.\u003c/p\u003e\n\u003cp\u003eThe resource defines via label and namespace selectors which \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e objects should be associated to the deployed Alertmanager instances.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eAlertmanager\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003e\nAlertmanagerSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of the desired behavior of the Alertmanager cluster. More info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the Alertmanager pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;alertmanager\u0026rdquo; label, set to the name of the Alertmanager instance.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Alertmanager instance.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;alertmanager\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Alertmanager version.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;alertmanager\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage if specified has precedence over baseImage, tag and sha\ncombinations. Specifying the version is still necessary to ensure the\nPrometheus Operator knows what version of Alertmanager is being\nconfigured.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy for the \u0026lsquo;alertmanager\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion the cluster should be on.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etag\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etag of Alertmanager container image to be deployed. Defaults to the value of \u003ccode\u003eversion\u003c/code\u003e.\nVersion is ignored if Tag is set.\nDeprecated: use \u0026lsquo;image\u0026rsquo; instead. The image tag can be specified as part of the image URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esha\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esha of Alertmanager container image to be deployed. Defaults to the value of \u003ccode\u003eversion\u003c/code\u003e.\nSimilar to a tag, but the SHA explicitly deploys an immutable container image.\nVersion and Tag are ignored if SHA is set.\nDeprecated: use \u0026lsquo;image\u0026rsquo; instead. The image digest can be specified as part of the image URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebaseImage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebaseImage that is used to deploy pods, without tag.\nDeprecated: use \u0026lsquo;image\u0026rsquo; instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets An optional list of references to secrets in the same namespace\nto use for pulling prometheus and alertmanager images from registries\nsee \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecrets is a list of Secrets in the same namespace as the Alertmanager\nobject, which shall be mounted
130into the Alertmanager Pods.\nEach Secret is added to the StatefulSet definition as a volume named \u003ccode\u003esecret-\u0026lt;secret-name\u0026gt;\u003c/code\u003e.\nThe Secrets are mounted into \u003ccode\u003e/etc/alertmanager/secrets/\u0026lt;secret-name\u0026gt;\u003c/code\u003e in the \u0026lsquo;alertmanager\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigMaps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigMaps defines a list of ConfigMaps in the same namespace as the Alertmanager\nobject, which shall be mounted into the Alertmanager Pods.\nEach ConfigMap is added to the StatefulSet definition as a volume named \u003ccode\u003econfigmap-\u0026lt;configmap-name\u0026gt;\u003c/code\u003e.\nThe ConfigMaps are mounted into \u003ccode\u003e/etc/alertmanager/configmaps/\u0026lt;configmap-name\u0026gt;\u003c/code\u003e in the \u0026lsquo;alertmanager\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigSecret defines the name of a Kubernetes Secret in the same namespace as the\nAlertmanager object, which contains the configuration for this Alertmanager\ninstance. If empty, it defaults to \u003ccode\u003ealertmanager-\u0026lt;alertmanager-name\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe Alertmanager configuration should be available under the\n\u003ccode\u003ealertmanager.yaml\u003c/code\u003e key. Additional keys from the original secret are\ncopied to the generated secret and mounted into the\n\u003ccode\u003e/etc/alertmanager/config\u003c/code\u003e directory in the \u003ccode\u003ealertmanager\u003c/code\u003e container.\u003c/p\u003e\n\u003cp\u003eIf either the secret or the \u003ccode\u003ealertmanager.yaml\u003c/code\u003e key is missing, the\noperator provisions a minimal Alertmanager configuration with one empty\nreceiver (effectively dropping alert notifications).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for Alertmanager to be configured with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for Alertmanager to be configured with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the expected size of the alertmanager cluster. The controller will\neventually make the size of the running cluster equal to the expected\nsize.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretention\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GoDuration\"\u003e\nGoDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretention defines the time duration Alertmanager shall retain data for. Default is \u0026lsquo;120h\u0026rsquo;,\nand must match the regular expression \u003ccode\u003e[0-9]+(ms|s|m|h)\u003c/code\u003e (milliseconds seconds minutes hours).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the definition of how storage will be used by the Alertmanager\ninstances.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes allows configuration of additional volumes on the output StatefulSet definition.\nVolumes specified will be appended to other volumes that are generated as a result of\nStorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition.\nVolumeMounts specified will be appended to other VolumeMounts in the alertmanager container,\nthat are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epersistentVolumeClaimRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#statefulsetpersistentvolumeclaimretentionpolicy-v1-apps\"\u003e\nKubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epersistentVolumeClaimRetentionPolicy controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\nThe default behavior is all PVCs are retained.\nThis is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\nIt requires enabling the StatefulSetAutoDeletePVC feature gate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalUrl defines the URL used to access the Alertmanager web service. This is\nnecessary to generate correct URLs. This is necessary if Alertmanager is not\nserved from root of a DNS name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix Alertmanager registers HTTP handlers for. This is useful,\nif using ExternalURL and a proxy is rewriting HTTP routes of a request,\nand the actual ExternalURL is still true, but the server serves requests\nunder a different route prefix. For example for use with \u003ccode\u003ekubectl proxy\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused if set to true all actions on the underlying managed objects are not\ngoing to be performed, except for delete actions.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines which Nodes the Pods are scheduled on.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resource requests and limits of the Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines the pod\u0026rsquo;s scheduling constraints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines the pod\u0026rsquo;s tolerations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#topologyspreadconstraint-v1-core\"\u003e\n[]Kubernetes core/v1.TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the Pod\u0026rsquo;s topology spread constraints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext holds pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003ealertmanager-operated\u003c/code\u003e for Alertmanager resources.\nWhen deploying multiple Alertmanager resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName is the name of the ServiceAccount to use to run the\nPrometheus Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal defines the Alertmanager server listen on loopback, so that it\ndoes not bind against the Pod IP. Note this is only for the Alertmanager\nUI, not the gossip communication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers descr
130ibed here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003ealertmanager\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\n* \u003ccode\u003ethanos-sidecar\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting initContainers to the Pod definition. Those\ncan be used to e.g. fetch secrets for injection into the Prometheus\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\nInitContainers described here modify an operator generated init\ncontainers if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of init container name managed by the operator are:\n* \u003ccode\u003einit-config-reloader\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOverriding init containers which are managed by the operator require\ncareful testing, especially when upgrading to a new version of the\noperator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName assigned to the Pods\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalPeers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterAdvertiseAddress\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterAdvertiseAddress defines the explicit address to advertise in cluster.\nNeeds to be provided for non RFC1918 \u003ca href=\"public\"\u003e1\u003c/a\u003e addresses.\n[1] RFC1918: \u003ca href=\"https://tools.ietf.org/html/rfc1918\"\u003ehttps://tools.ietf.org/html/rfc1918\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterGossipInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GoDuration\"\u003e\nGoDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterGossipInterval defines the interval between gossip attempts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterLabel defines the identifier that uniquely identifies the Alertmanager cluster.\nYou 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 \u
130003ccode\u003e.spec.additionalPeers\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterPushpullInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GoDuration\"\u003e\nGoDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterPushpullInterval defines the interval between pushpull attempts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterPeerTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GoDuration\"\u003e\nGoDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterPeerTimeout defines the timeout for cluster peering.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterPeerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterPeerName defines the name that this Alertmanager instance uses to\nadvertise itself to other cluster peers (the \u003ccode\u003e--cluster.peer-name\u003c/code\u003e flag,\navailable since Alertmanager v0.30.0).\u003c/p\u003e\n\u003cp\u003eIf not set, the operator defaults to the pod\u0026rsquo;s name (\u003ccode\u003e$(POD_NAME)\u003c/code\u003e),\nwhich is injected via the Kubernetes downward API. Setting this field\nlets you override that default with either a literal value or a string\nreferencing environment variables that are already available in the\nAlertmanager container (for example \u003ccode\u003e$(POD_NAME).$(NAMESPACE)\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003e/ It requires Alertmanager \u0026gt;= 0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName defines the port\u0026rsquo;s name for the pods and governing service.\nDefaults to \u003ccode\u003eweb\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eforceEnableClusterMode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eforceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica.\nUse case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagerConfigSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagerConfigSelector defines the selector to be used for to merge and configure Alertmanager with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagerConfigNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagerConfigNamespaceSelector defines the namespaces to be selected for AlertmanagerConfig discovery. If nil, only\ncheck own namespace.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagerConfigMatcherStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerConfigMatcherStrategy\"\u003e\nAlertmanagerConfigMatcherStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagerConfigMatcherStrategy defines how AlertmanagerConfig objects\nprocess incoming alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly\ncreated pod should be ready without any of its container crashing for it\nto be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003cp\u003eWhen the Alertmanager version is greater than or equal to v0.30.0, the\nduration is also used to delay the first flush of the aggregation\ngroups. This delay helps ensuring that all alerts have been resent by\nthe Prometheus instances to Alertmanager after a roll-out. It is\npossible to override this behavior passing a custom value via\n\u003ccode\u003e.spec.additionalArgs\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases Pods configuration\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostNetwork\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostNetwork controls whether the pod may use the node network namespace.\u003c/p\u003e\n\u003cp\u003eMake sure to understand the security implications if you want to enable\nit (\u003ca href=\"https://kubernetes.io/docs/concepts/configuration/overview/\"\u003ehttps://kubernetes.io/docs/concepts/configuration/overview/\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eWhen hostNetwork is enabled, this will set the DNS policy to\n\u003ccode\u003eClusterFirstWithHostNet\u003c/code\u003e automatically (unless \u003ccode\u003e.spec.dnsPolicy\u003c/code\u003e is set\nto a different value).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerWebSpec\"\u003e\nAlertmanagerWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the web command line flags when starting Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elimits\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerLimitsSpec\"\u003e\nAlertmanagerLimitsSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elimits defines the limits command line flags when starting Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterTLS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ClusterTLSConfig\"\u003e\nClusterTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterTLS defines the mutual TLS configuration for the Alertmanager cluster\u0026rsquo;s gossip protocol.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= 0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagerConfiguration\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerConfiguration\"\u003e\nAlertmanagerConfiguration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagerConfiguration defines the configuration of Alertmanager.\u003c/p\u003e\n\u003cp\u003eIf defined, it takes precedence over the \u003ccode\u003econfigSecret\u003c/code\u003e field.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eautomountServiceAccountToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eautomountServiceAccountToken defines whether a service account token should be automatically mounted
130in the pod.\nIf the service account has \u003ccode\u003eautomountServiceAccountToken: true\u003c/code\u003e, set the field to \u003ccode\u003efalse\u003c/code\u003e to opt out of automounting API credentials.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures defines the Alertmanager\u0026rsquo;s feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= 0.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs allows setting additional arguments for the \u0026lsquo;Alertmanager\u0026rsquo; container.\nIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nAlertmanager container which may cause issues if they are invalid or not supported\nby the given Alertmanager version.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the Optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 120 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerStatus\"\u003e\nAlertmanagerStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the most recent observed status of the Alertmanager cluster. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PodMonitor\"\u003ePodMonitor\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003ePodMonitor\u003c/code\u003e custom resource definition (CRD) defines how \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e can scrape metrics from a group of pods.\nAmong 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.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e objects select \u003ccode\u003ePodMonitor\u003c/code\u003e objects using label and namespace selectors.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePodMonitor\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodMonitorSpec\"\u003e\nPodMonitorSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of desired Pod selection for target discovery by Prometheus.\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejobLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejobLabel defines the label to use to retrieve the job name from.\n\u003ccode\u003ejobLabel\u003c/code\u003e selects the label from the associated Kubernetes \u003ccode\u003ePod\u003c/code\u003e\nobject which will be used as the \u003ccode\u003ejob\u003c/code\u003e label for all metrics.\u003c/p\u003e\n\u003cp\u003eFor example if \u003ccode\u003ejobLabel\u003c/code\u003e is set to \u003ccode\u003efoo\u003c/code\u003e and the Kubernetes \u003ccode\u003ePod\u003c/code\u003e\nobject is labeled with \u003ccode\u003efoo: bar\u003c/code\u003e, then Prometheus adds the \u003ccode\u003ejob=\u0026quot;bar\u0026quot;\u003c/code\u003e\nlabel to all ingested metrics.\u003c/p\u003e\n\u003cp\u003eIf the value of this field is empty, the \u003ccode\u003ejob\u003c/code\u003e label of the metrics\ndefaults to the namespace and name of the PodMonitor object (e.g. \u003ccode\u003e\u0026lt;namespace\u0026gt;/\u0026lt;name\u0026gt;\u003c/code\u003e).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels defines the labels which are transferred from the\nassociated Kubernetes \u003ccode\u003ePod\u003c/code\u003e object onto the ingested metrics.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetricsEndpoints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodMetricsEndpoint\"\u003e\n[]PodMetricsEndpoint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetricsEndpoints defines how to scrape metrics from the selected pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eselector defines the label selector to select the Kubernetes \u003ccode\u003ePod\u003c/code\u003e objects to scrape metrics from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselectorMechanism\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SelectorMechanism\"\u003e\nSelectorMechanism\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselectorMechanism defines the mechanism used to select the endpoints to scrape.\nBy default, the selection process relies on relabel configurations to filter the discovered targets.\nAlternatively, you can opt in for role selectors, which may offer better efficiency in large cluster
130s.\nWhich strategy is best for your use case needs to be carefully evaluated.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.17.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NamespaceSelector\"\u003e\nNamespaceSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespaceSelector defines in which namespace(s) Prometheus should discover the pods.\nBy default, the pods are discovered in the same namespace as the \u003ccode\u003ePodMonitor\u003c/code\u003e object but it is possible to select pods across different/all namespaces.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines a per-scrape limit on the number of scraped samples\nthat will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will\nbe accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\
130nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eattachMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AttachMetadata\"\u003e\nAttachMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eattachMetadata defines additional metadata which is added to the\ndiscovered targets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.35.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClass defines the scrape class to apply.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit when defined specifies a job level limit on the size\nof uncompressed response body that will be accepted by Prometheus.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceStatus\"\u003e\nConfigResourceStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the status subresource. It is under active development and is updated only when the\n\u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\u003c/p\u003e\n\u003cp\u003eMost recent observed status of the PodMonitor. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Probe\"\u003eProbe\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003eProbe\u003c/code\u003e custom resource definition (CRD) defines how to scrape metrics from prober exporters such as the \u003ca href=\"https://github.com/prometheus/blackbox_exporter\"\u003eblackbox exporter\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eProbe\u003c/code\u003e 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, \u0026hellip;) as Prometheus metrics.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e objects select \u003ccode\u003eProbe\u003c/code\u003e objects using label and namespace selectors.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eProbe\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003e\nProbeSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of desired Ingress selection for target discovery by Prometheus.\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejobName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejobName assigned to scraped metrics by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprober\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProberSpec\"\u003e\nProberSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprober defines the specification for the prober to use for probing targets.\nThe prober.URL parameter is required. Targets cannot be probed if left empty.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emodule\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emodule to use for probing specifying how to probe the target.\nExample module configuring in the blackbox exporter:\n\u003ca href=\"https://github.com/prometheus/blackbox_exporter/blob/master/example.yml\"\u003ehttps://github.com/prometheus/blackbox_exporter/blob/master/example.yml\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProbeTargets\"\u003e\nProbeTargets\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargets defines a set of static or dynamically discovered targets to probe.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einterval at which targets are probed using the configured prober.\nIf not specified Prometheus\u0026rsquo; global scrape interval is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the timeout for scraping metrics from the Prometheus exporter.\nIf not specified, the Prometheus global scrape timeout is used.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricRelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricRelabelings defines the RelabelConfig to apply to samples before ingestion.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization section for this endpoint\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\
130nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClass defines the scrape class to apply.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eparams\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProbeParam\"\u003e\n[]ProbeParam\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eparams defines the list of HTTP query parameters for the scrape.\nPlease note that the \u003ccode\u003e.spec.module\u003c/code\u003e field takes precedence over the \u003ccode\u003emodule\u003c/code\u003e parameter from this list when both are defined.\nThe module name must be added using Module under ProbeSpec.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration used by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceStatus\"\u003e\nConfigResourceStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the status subresource. It is under active development and is updated only when the\n\u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\u003c/p\u003e\n\u003cp\u003eMost recent observed status of the Probe. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Prometheus\"\u003ePrometheus\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheus\u003c/code\u003e custom resource definition (CRD) defines a desired \u003ca href=\"https://prometheus.io/docs/prometheus\"\u003ePrometheus\u003c/a\u003e 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.\u003c/p\u003e\n\u003cp\u003eFor each \u003ccode\u003ePrometheus\u003c/code\u003e resource, the Operator deploys one or several \u003ccode\u003eStatefulSet\u003c/code\u003e objects in the same namespace. The number of StatefulSets is equal to the number of shards which is 1 by default.\u003c/p\u003e\n\u003cp\u003eThe resource defines via label and namespace selectors which \u003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e and \u003ccode\u003ePrometheusRule\u003c/code\u003e objects should be associated to the deployed Prometheus instances.\u003c/p\u003e\n\u003cp\u003eThe 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.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePrometheus\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003e\nPrometheusSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of the desired behavior of the Prometheus cluster. More info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the Prometheus pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version.\n* \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeSelector defines the probes to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e
130\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label\nselector matches all namespaces. A null label selector matches the\ncurrent namespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion of Prometheus being deployed. The operator uses this information\nto generate the Prometheus StatefulSet + configuration files.\u003c/p\u003e\n\u003cp\u003eIf not specified, the operator assumes the latest upstream version of\nPrometheus available at the time when the version of the operator was\nreleased.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines when a Prometheus deployment is paused, no actions except for deletion\nwill be performed on the underlying objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage defines the container image name for Prometheus. If specified, it takes precedence\nover the \u003ccode\u003espec.baseImage\u003c/code\u003e, \u003ccode\u003espec.tag\u003c/code\u003e and \u003ccode\u003espec.sha\u003c/code\u003e fields.\u003c/p\u003e\n\u003cp\u003eSpecifying \u003ccode\u003espec.version\u003c/code\u003e is still necessary to ensure the Prometheus\nOperator knows which version of Prometheus is being configured.\u003c/p\u003e\n\u003cp\u003eIf neither \u003ccode\u003espec.image\u003c/code\u003e nor \u003ccode\u003espec.baseImage\u003c/code\u003e are defined, the operator\nwill use the latest upstream version of Prometheus available at the time\nwhen the operator was released.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets defines an optional list of references to Secrets in the same namespace\nto use for pulling images from registries.\nSee \u003ca href=\"http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\"\u003ehttp://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the number of replicas of each shard to deploy for a Prometheus deployment.\n\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\ncreated.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshards\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshards defines the number of shards to distribute the scraped targets onto.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\nbeing created.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator assumes only one shard.\u003c/p\u003e\n\u003cp\u003eNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. 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.\u003c/p\u003e\n\u003cp\u003eBy default, the sharding of targets is performed on:\n* The \u003ccode\u003e__address__\u
130003c/code\u003e target\u0026rsquo;s metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The \u003ccode\u003e__param_target__\u003c/code\u003e label for Probe resources.\u003c/p\u003e\n\u003cp\u003eUsers can define their own sharding implementation by setting the\n\u003ccode\u003e__tmp_hash\u003c/code\u003e label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\u003c/p\u003e\n\u003cp\u003eYou can also disable sharding on a specific target by setting the\n\u003ccode\u003e__tmp_disable_sharding\u003c/code\u003e label with relabeling configuration. When\nthe label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardingStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardingStrategy\"\u003e\nShardingStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes\ntargets based on a hash of the target address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicaExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicaExternalLabelName defines the name of Prometheus external label used to denote the replica name.\nThe external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to the\nempty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance\nname. The external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to\nthe empty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for Log level for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeInterval defines interval between consecutive scrapes.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the number of seconds to wait until a scrape request times out.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheusText1.0.0\u003c/code\u003e requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalLabels defines the labels to add to any time series or alerts when communicating with\nexternal systems (federation, remote storage, Alertmanager).\nLabels defined by \u003ccode\u003espec.replicaExternalLabelName\u003c/code\u003e and\n\u003ccode\u003espec.prometheusExternalLabelName\u003c/code\u003e take precedence over this list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableRemoteWriteReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote\nwrite protocol.\u003c/p\u003e\n\u003cp\u003eWARNING: This is not considered an efficie
130nt way of ingesting samples.\nUse it with caution for specific low-volume use cases.\nIt is not suitable for replacing the ingestion via scraping and turning\nPrometheus into a push-based metrics collection system.\nFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\"\u003ehttps://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.33.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableOTLPReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\u003c/p\u003e\n\u003cp\u003eNote that the OTLP receiver endpoint is automatically enabled if \u003ccode\u003e.spec.otlpConfig\u003c/code\u003e is defined.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWriteReceiverMessageVersions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteMessageVersion\"\u003e\n[]RemoteWriteMessageVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the\nremote writes.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EnableFeature\"\u003e\n[]EnableFeature\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\u003c/p\u003e\n\u003cp\u003eEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/feature_flags/\"\u003ehttps://prometheus.io/docs/prometheus/latest/feature_flags/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalUrl defines the external URL under which the Prometheus service is externally\navailable. This is necessary to generate correct URLs (for instance if\nPrometheus is accessible behind an Ingress resource).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix defines the route prefix Prometheus registers HTTP handlers for.\u003c/p\u003e\n\u003cp\u003eThis is useful when using \u003ccode\u003espec.externalURL\u003c/code\u003e, and a proxy is rewriting\nHTTP routes of a request, and the actual ExternalURL is still true, but\nthe server serves requests under a different route prefix. For example\nfor use with \u003ccode\u003ekubectl proxy\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the storage used by Prometheus.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes allows the configuration of additional volumes on the output\nStatefulSet definition. Volumes specified will be appended to other\nvolumes that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts allows the configuration of additional VolumeMounts.\u003c/p\u003e\n\u003cp\u003eVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo;\ncontainer, that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epersistentVolumeClaimRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#statefulsetpersistentvolumeclaimretentionpolicy-v1-apps\"\u003e\nKubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epersistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\nThe default behavior is all PVCs are retained.\nThis is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\nIt requires enabling the StatefulSetAutoDeletePVC feature gate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusWebSpec\"\u003e\nPrometheusWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the configuration of the Prometheus web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines on which Nodes the Pods are scheduled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName is the name of the ServiceAccount to use to run the\nPrometheus Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eautomountServiceAccountToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eautomountServiceAccountToken defines whether a service account token should be automatically mounted
130in the pod.\nIf the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWarning:\u003c/strong\u003e be aware that by default, Prometheus requires the service account token for Kubernetes service discovery.\nIt is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecrets defines a list of Secrets in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach Secret is added to the StatefulSet definition as a volume named \u003ccode\u003esecret-\u0026lt;secret-name\u0026gt;\u003c/code\u003e.\nThe Secrets are mounted into /etc/prometheus/secrets/\u003csecret-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigMaps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigMaps defines a list of ConfigMaps in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach ConfigMap is added to the StatefulSet definition as a volume named \u003ccode\u003econfigmap-\u0026lt;configmap-name\u0026gt;\u003c/code\u003e.\nThe ConfigMaps are mounted into /etc/prometheus/configmaps/\u003cconfigmap-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines the Pods\u0026rsquo; tolerations if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TopologySpreadConstraint\"\u003e\n[]TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWrite\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003e\n[]RemoteWriteSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWrite defines the list of remote write configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eotlp\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OTLPConfig\"\u003e\nOTLPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eotlp defines the settings related to the OTLP receiver feature.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext holds pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal when true, the Prometheus server listens on the loopback address\ninstead of the Pod IP\u0026rsquo;s address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers described here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003eprometheus\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\n* \u003ccode\u003ethanos-sidecar\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting init
130Containers to the Pod definition. Those\ncan be used to e.g. fetch secrets for injection into the Prometheus\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\nInitContainers described here modify an operator generated init\ncontainers if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of init container name managed by the operator are:\n* \u003ccode\u003einit-config-reloader\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOverriding init containers which are managed by the operator require\ncareful testing, especially when upgrading to a new version of the\noperator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalScrapeConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalScrapeConfigs allows specifying a key of a Secret containing\nadditional Prometheus scrape configurations. Scrape configurations\nspecified are appended to the configurations generated by the Prometheus\nOperator. Job configurations specified must have the form as specified\nin the official Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\u003c/a\u003e.\nAs scrape configs are appended, the user is responsible to make sure it\nis valid. Note that using this feature may expose the possibility to\nbreak upgrades of Prometheus. It is advised to review Prometheus release\nnotes to ensure that no incompatible scrape configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiserverConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003e\nAPIServerConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiserverConfig allows specifying a host and auth methods to access the\nKuberntees API server.\nIf null, Prometheus is assumed to run inside of the cluster: it will\ndiscover the API servers automatically and use the Pod\u0026rsquo;s CA certificate\nand bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName assigned to the Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName used for the pods and governing service.\nDefault: \u0026ldquo;web\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003earbitraryFSAccessThroughSMs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ArbitraryFSAccessThroughSMsConfig\"\u003e\nArbitraryFSAccessThroughSMsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003earbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to\nreference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo;\ncontainer.\nWhen a ServiceMonitor\u0026rsquo;s endpoint specifies a \u003ccode\u003ebearerTokenFile\u003c/code\u003e value\n(e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a\nmalicious target can get access to the Prometheus service account\u0026rsquo;s\ntoken in the Prometheus\u0026rsquo; scrape request. Setting\n\u003ccode\u003espec.arbitraryFSAccessThroughSM\u003c/code\u003e to \u0026lsquo;true\u0026rsquo; would prevent the attack.\nUsers should instead provide the credentials using the\n\u003ccode\u003espec.bearerTokenSecret\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data\nto âexported_â for all targets created from ServiceMonitor, PodMonitor and\nScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies.\nIn practice,\u003ccode\u003eOverrideHonorLabels:true\u003c/code\u003e enforces \u003ccode\u003ehonorLabels:false\u003c/code\u003e\nfor all ServiceMonitor, PodMonitor and ScrapeConfig objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created\nfrom service and pod monitors.\nOtherwise the HonorTimestamps field of the service or pod monitor applies.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eignoreNamespaceSelectors\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eignoreNamespaceSelectors when true, \u003ccode\u003espec.namespaceSelector\u003c/code\u003e from all PodMonitor, ServiceMonitor\nand Probe objects will be ignored. They will only discover targets\nwithin the namespace of the PodMonitor, ServiceMonitor and Probe\nobject.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedNamespaceLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedNamespaceLabel when not empty, a label will be added to:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAll metrics scraped from \u
130003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e and \u003ccode\u003eScrapeConfig\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll metrics generated from recording rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll alerts generated from alerting rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll vector selectors of PromQL expressions defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe label will not added for objects referenced in \u003ccode\u003espec.excludedFromEnforcement\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe label\u0026rsquo;s name is this field\u0026rsquo;s value.\nThe label\u0026rsquo;s value is the namespace of the \u003ccode\u003eServiceMonitor\u003c/code\u003e,\n\u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e, \u003ccode\u003ePrometheusRule\u003c/code\u003e or \u003ccode\u003eScrapeConfig\u003c/code\u003e object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedSampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedSampleLimit when defined specifies a global limit on the number\nof scraped samples that will be accepted. This overrides any\n\u003ccode\u003espec.sampleLimit\u003c/code\u003e set by ServiceMonitor, PodMonitor, Probe objects\nunless \u003ccode\u003espec.sampleLimit\u003c/code\u003e is greater than zero and less than\n\u003ccode\u003espec.enforcedSampleLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to keep the overall number of\nsamples/series under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e and \u003ccode\u003esampleLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e is greater than the \u003ccode\u003esampleLimit\u003c/code\u003e, the \u003ccode\u003esampleLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedTargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedTargetLimit when defined specifies a global limit on the number\nof scraped targets. The value overrides any \u003ccode\u003espec.targetLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.targetLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedTargetLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to to keep the overall number of\ntargets under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e and \u003ccode\u003etargetLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e is greater than the \u003ccode\u003etargetLimit\u003c/code\u003e, the \u003ccode\u003etargetLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelLimit when defined specifies a global limit on the number\nof labels per sample. The value overrides any \u003ccode\u003espec.labelLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e and \u003ccode\u003elabelLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelLimit\u003c/code\u003e, the \u003ccode\u003elabelLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelNameLengthLimit when defined specifies a global limit on the length\nof labels name per sample. The value overrides any \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelNameLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e and \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelValueLengthLimit when not null defines a global limit on the length\nof labels value per sample. The value overrides any \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelValueLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e and \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedKeepDroppedTargets when defined specifies a global limit on the number of targets\ndropped by relabeling that will be kept in memory. The value overrides\nany \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedKeepDroppedTargets\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e and \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e is greater than the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e, the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e will be set to \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedBodySizeLimit when defined specifies a global limit on the size\nof uncompressed response body that will be accepted by Prometheus.\nTargets responding with a body larger than this many bytes will cause\nthe scrape to fail.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e and \u003ccode\u003ebodySizeLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e is greater than the \u003ccode\u003ebodySizeLimit\u003c/code\u003e, the \u003ccode\u003ebodySizeLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameValidationScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameValidationSchemeOptions\"\u003e\nNameValidationSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameValidationScheme defines the validation scheme for metric and label names.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameEscapingScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameEscapingSchemeOptions\"\u003e\nNameEscapingSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameEscapingScheme defines the character escaping scheme that will be requested when scraping\nfor metric and label names that do not conform to the legacy Prometheus\ncharacter set.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native\nhistogram with custom buckets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.5.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready\nwithout any of its container crashing for it to be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s\nhosts file if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003cp\u003eIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nPrometheus container which may cause issues if they are invalid or not supported\nby the given Prometheus version.\u003c/p\u003e\n\u003cp\u003eIn case of an argument conflict (e.g. an argument which is already set by the\noperator itself) or when providing an invali
130d argument, the reconciliation will\nfail and an error will be logged.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewalCompression\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewalCompression defines the compression of the write-ahead log (WAL) using Snappy.\u003c/p\u003e\n\u003cp\u003eWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\u003c/p\u003e\n\u003cp\u003eRequires Prometheus v2.11.0 and above.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexcludedFromEnforcement\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ObjectReference\"\u003e\n[]ObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexcludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects\nto be excluded from enforcing a namespace label of origin.\u003c/p\u003e\n\u003cp\u003eIt is only applicable if \u003ccode\u003espec.enforcedNamespaceLabel\u003c/code\u003e set to true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostNetwork\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostNetwork defines the host\u0026rsquo;s network namespace if true.\u003c/p\u003e\n\u003cp\u003eMake sure to understand the security implications if you want to enable\nit (\u003ca href=\"https://kubernetes.io/docs/concepts/configuration/overview/\"\u003ehttps://kubernetes.io/docs/concepts/configuration/overview/\u003c/a\u003e ).\u003c/p\u003e\n\u003cp\u003eWhen hostNetwork is enabled, this will set the DNS policy to\n\u003ccode\u003eClusterFirstWithHostNet\u003c/code\u003e automatically (unless \u003ccode\u003e.spec.DNSPolicy\u003c/code\u003e is set\nto a different value).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels are appended to the \u003ccode\u003espec.podTargetLabels\u003c/code\u003e field of all\nPodMonitor and ServiceMonitor objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TracingConfig\"\u003e\nTracingConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfig defines tracing in Prometheus.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit defines per-scrape on response body size.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\nOnl
130y valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereloadStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ReloadStrategyType\"\u003e\nReloadStrategyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereloadStrategy defines the strategy used to reload the Prometheus configuration.\nIf not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaximumStartupDurationSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaximumStartupDurationSeconds defines the maximum time that the \u003ccode\u003eprometheus\u003c/code\u003e container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete.\nIf set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClasses\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003e\n[]ScrapeClass\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClasses defines the list of scrape classes to expose to scraping objects such as\nPodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceDiscoveryRole\"\u003e\nServiceDiscoveryRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceDiscoveryRole defines the service discovery role used to discover targets from\n\u003ccode\u003eServiceMonitor\u003c/code\u003e objects and Alertmanager endpoints.\u003c/p\u003e\n\u003cp\u003eIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
130.\nIf unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etsdb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TSDBSpec\"\u003e\nTSDBSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etsdb defines the runtime reloadable configuration of the timeseries database(TSDB).\nIt requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeFailureLogFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeFailureLogFile defines the file to which scrape failures are logged.\nReloading the configuration will reopen the file.\u003c/p\u003e\n\u003cp\u003eIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods\nwill mount the file into an emptyDir volume at \u003ccode\u003e/var/log/prometheus\u003c/code\u003e.\nIf a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you\nmust mount a volume in the specified directory and it must be writable.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003eprometheus-operated\u003c/code\u003e for Prometheus resources,\nor \u003ccode\u003eprometheus-agent-operated\u003c/code\u003e for PrometheusAgent resources.\nWhen deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruntime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RuntimeConfig\"\u003e\nRuntimeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruntime defines the values for the Prometheus process behavior\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 600 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebaseImage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebaseImage is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etag\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etag is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead. The image\u0026rsquo;s tag can be specified as part of the image name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esha\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esha is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead. The image\u0026rsquo;s digest can be specified as part of the image name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretention\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretention defines how long to retain the Prometheus data.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;24h\u0026rdquo; if \u003ccode\u003espec.retention\u003c/code\u003e, \u003ccode\u003espec.retentionSize\u003c/code\u003e and\n\u003ccode\u003espec.retentionPercentage\u003c/code\u003e are empty.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretentionSize\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretentionSize defines the maximum number of bytes used by the Prometheus data.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretentionPercentage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretentionPercentage defines the maximum percentage of the data volume\u0026rsquo;s\ncapacity used by the Prometheus data.\u003c/p\u003e\n\u003cp\u003eThe value is a number between 0 and 100. If set to 0, percentage-based\nretention is disabled.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.11.0 and is ignored by older versions.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardRetentionPolicy\"\u003e\nShardRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshardRetentionPolicy defines the retention policy for the Prometheus shards.\u003c/p\u003e\n\u003cp\u003e(Beta) Using this mode requires the \u
130003ccode\u003ePrometheusShardRetentionPolicy\u003c/code\u003e feature gate (enabled by default).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edisableCompaction\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edisableCompaction when true, the Prometheus compaction is disabled.\u003c/p\u003e\n\u003cp\u003eWhen \u003ccode\u003espec.thanos.objectStorageConfig\u003c/code\u003e or \u003ccode\u003espec.thanos.objectStorageConfigFile\u003c/code\u003e are defined, the operator\u0026rsquo;s\ndefault handling depends on the Prometheus and Thanos sidecar versions:\n- With Prometheus \u0026lt; v3.9.0 or a Thanos sidecar \u0026lt; v0.42.0, block compaction is disabled to avoid race\nconditions during block uploads (as the Thanos documentation recommends).\n- With Prometheus \u0026gt;= v3.9.0 and a Thanos sidecar \u0026gt;= v0.42.0, local compaction is kept enabled and coordinated\nwith the sidecar through the shipper meta file (\u003ccode\u003e--storage.tsdb.delay-compact-file.path\u003c/code\u003e), so blocks are only\ncompacted after they have been uploaded.\nSetting this field to true always disables local compaction regardless of the versions.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erules\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Rules\"\u003e\nRules\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erules defines the configuration of the Prometheus rules\u0026rsquo; engine.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusRulesExcludedFromEnforce\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusRuleExcludeConfig\"\u003e\n[]PrometheusRuleExcludeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusRulesExcludedFromEnforce defines the list of PrometheusRule objects to which the namespace label\nenforcement doesn\u0026rsquo;t apply.\nThis is only relevant when \u003ccode\u003espec.enforcedNamespaceLabel\u003c/code\u003e is set to true.\nDeprecated: use \u003ccode\u003espec.excludedFromEnforcement\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleSelector defines the prometheusRule objects to be selected for rule evaluation. An empty\nlabel selector matches all objects. A null label selector matches no\nobjects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleNamespaceSelector defines the namespaces to match for PrometheusRule discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equery\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.QuerySpec\"\u003e\nQuerySpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equery defines the configuration of the Prometheus query service.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealert
130ing\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertingSpec\"\u003e\nAlertingSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealerting defines the settings related to Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalAlertRelabelConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalAlertRelabelConfigs defines a key of a Secret containing\nadditional Prometheus alert relabel configurations. The alert relabel\nconfigurations are appended to the configuration generated by the\nPrometheus Operator. They must be formatted according to the official\nPrometheus documentation:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe user is responsible for making sure that the configurations are valid\u003c/p\u003e\n\u003cp\u003eNote that using this feature may expose the possibility to break\nupgrades of Prometheus. It is advised to review Prometheus release notes\nto ensure that no incompatible alert relabel configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalAlertManagerConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalAlertManagerConfigs defines a key of a Secret containing\nadditional Prometheus Alertmanager configurations. The Alertmanager\nconfigurations are appended to the configuration generated by the\nPrometheus Operator. They must be formatted according to the official\nPrometheus documentation:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe user is responsible for making sure that the configurations are valid\u003c/p\u003e\n\u003cp\u003eNote that using this feature may expose the possibility to break\nupgrades of Prometheus. It is advised to review Prometheus release notes\nto ensure that no incompatible AlertManager configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteRead\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003e\n[]RemoteReadSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteRead defines the list of remote read configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethanos\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ThanosSpec\"\u003e\nThanosSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ethanos defines the configuration of the optional Thanos sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equeryLogFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equeryLogFile specifies where the file to which PromQL queries are logged.\u003c/p\u003e\n\u003cp\u003eIf the filename has an empty path, e.g. \u0026lsquo;query.log\u0026rsquo;
130, The Prometheus Pods\nwill mount the file into an emptyDir volume at \u003ccode\u003e/var/log/prometheus\u003c/code\u003e.\nIf a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/query.log\u0026rsquo;, you\nmust mount a volume in the specified directory and it must be writable.\nThis is because the prometheus container runs with a read-only root\nfilesystem for security reasons.\nAlternatively, the location can be set to a standard I/O stream, e.g.\n\u003ccode\u003e/dev/stdout\u003c/code\u003e, to log query information to the default Prometheus log\nstream.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eallowOverlappingBlocks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eallowOverlappingBlocks enables vertical compaction and vertical query\nmerge in Prometheus.\u003c/p\u003e\n\u003cp\u003eDeprecated: this flag has no effect for Prometheus \u0026gt;= 2.39.0 where overlapping blocks are enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexemplars\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Exemplars\"\u003e\nExemplars\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexemplars related settings that are runtime reloadable.\nIt requires to enable the \u003ccode\u003eexemplar-storage\u003c/code\u003e feature flag to be effective.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eevaluationInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eevaluationInterval defines the interval between rule evaluations.\nDefault: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleQueryOffset\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleQueryOffset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past.\nIt requires Prometheus \u0026gt;= v2.53.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableAdminAPI\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableAdminAPI defines access to the Prometheus web admin API.\u003c/p\u003e\n\u003cp\u003eWARNING: Enabling the admin APIs enables mutating endpoints, to delete data,\nshutdown Prometheus, and more. Enabling this should be done with care and the\nuser is advised to add additional authentication authorization via a proxy to\nensure only clients authorized to perform these actions can do so.\u003c/p\u003e\n\u003cp\u003eFor more information:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\"\u003ehttps://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusStatus\"\u003e\nPrometheusStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the most recent observed status of the Prometheus cluster. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PrometheusRule\"\u003ePrometheusRule\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheusRule\u003c/code\u003e custom resource definition (CRD) defines \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/\"\u003ealert
130ing\u003c/a\u003e and \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/\"\u003erecording\u003c/a\u003e rules to be evaluated by \u003ccode\u003ePrometheus\u003c/code\u003e or \u003ccode\u003eThanosRuler\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003eThanosRuler\u003c/code\u003e objects select \u003ccode\u003ePrometheusRule\u003c/code\u003e objects using label and namespace selectors.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePrometheusRule\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusRuleSpec\"\u003e\nPrometheusRuleSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of desired alerting rule definitions for Prometheus.\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroups\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RuleGroup\"\u003e\n[]RuleGroup\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroups defines the content of Prometheus rule file\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceStatus\"\u003e\nConfigResourceStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the status subresource. It is under active development and is updated only when the\n\u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\u003c/p\u003e\n\u003cp\u003eMost recent observed status of the PrometheusRule. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ServiceMonitor\"\u003eServiceMonitor\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003eServiceMonitor\u003c/code\u003e custom resource definition (CRD) defines how \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e can scrape metrics from a group of services.\nAmong 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.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e objects select \u003ccode\u003eServiceMonitor\u003c/code\u003e objects using label and namespace selectors.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eServiceMonitor\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003e\nServiceMonitorSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of desired Service selection for target discovery by\nPrometheus.\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejobLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejobLabel selects the label from the associated Kubernetes \u003ccode\u003eService\u003c/code\u003e\nobject which will be used as the \u003ccode\u003ejob\u003c/code\u003e label for all metrics.\u003c/p\u003e\n\u003cp\u003eFor example if \u003ccode\u003ejobLabel\u003c/code\u003e is set to \u003ccode\u003efoo\u003c/code\u003e and the Kubernetes \u003ccode\u003eService\u003c/code\u003e\nobject is labeled with \u003ccode\u003efoo: bar\u003c/code\u003e, then Prometheus adds the \u003ccode\u003ejob=\u0026quot;bar\u0026quot;\u003c/code\u003e\nlabel to all ingested metrics.\u003c/p\u003e\n\u003cp\u003eIf the value of this field is empty or if the label doesn\u0026rsquo;t exist for\nthe given Service, the \u003ccode\u003ejob\u003c/code\u003e label of the metrics defaults to the name\nof the associated Kubernetes \u003ccode\u003eService\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLabels defines the labels which are transferred from the\nassociated Kubernetes \u003ccode\u003eService\u003c/code\u003e object onto the ingested metrics.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels defines the labels which are transferred from the\nassociated Kubernetes \u003ccode\u003ePod\u003c/code\u003e object onto the ingested metrics.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eendpoints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Endpoint\"\u003e\n[]Endpoint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eendpoints defines the list of endpoints part of this ServiceMonitor.\nDefines how to scrape metrics from Kubernetes \u003ca href=\"https://kubernetes.io/docs/concepts/services-networking/service/#endpoints\"\u003eEndpoints\u003c/a\u003e objects.\nIn most cases, an Endpoints object is backed by a Kubernetes \u003ca href=\"https://kubernetes.io/docs/concepts/services-networking/service/\"\u003eService\u003c/a\u003e object with the same name and labels.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eselector defines the label selector to select the Kubernetes \u003ccode\u003eEndpoints\u003c/code\u003e objects to scrape metrics from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselectorMechanism\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SelectorMechanism\"\u003e\nSelectorMechanism\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselectorMechanism defines the mechanism used to select the endpoints to scrape.\nBy default, the selection process relies on relabel configurations to filter the discovered targets.\nAlternatively, you can opt in for role selectors, which may offer better efficiency in large cluster
130s.\nWhich strategy is best for your use case needs to be carefully evaluated.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.17.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NamespaceSelector\"\u003e\nNamespaceSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespaceSelector defines in which namespace(s) Prometheus should discover the services.\nBy default, the services are discovered in the same namespace as the \u003ccode\u003eServiceMonitor\u003c/code\u003e object but it is possible to select pods across different/all namespaces.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines a per-scrape limit on the number of scraped samples\nthat will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will\nbe accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\
130nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eattachMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AttachMetadata\"\u003e\nAttachMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eattachMetadata defines additional metadata which is added to the\ndiscovered targets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.37.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClass defines the scrape class to apply.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit when defined, bodySizeLimit specifies a job level limit on the size\nof uncompressed response body that will be accepted by Prometheus.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceDiscoveryRole\"\u003e\nServiceDiscoveryRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceDiscoveryRole defines the service discovery role used to discover targets.\u003c/p\u003e\n\u003cp\u003eIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;.\nOtherwise it defaults to the value defined in the\nPrometheus/PrometheusAgent resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceStatus\"\u003e\nConfigResourceStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the status subresource. It is under active development and is updated only when the\n\u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\u003c/p\u003e\n\u003cp\u003eMost recent observed status of the ServiceMonitor. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ThanosRuler\"\u003eThanosRuler\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003eThanosRuler\u003c/code\u003e custom resource definition (CRD) defines a desired \u003ca href=\"https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md\"\u003eThanos Ruler\u003c/a\u003e setup to run in a Kubernetes cluster.\u003c/p\u003e\n\u003cp\u003eA \u003ccode\u003eThanosRuler\u003c/code\u003e instance requires at least one compatible Prometheus API endpoint (either Thanos Querier or Prometheus services).\u003c/p\u003e\n\u003cp\u003eThe resource defines via label and namespace selectors which \u003ccode\u003ePrometheusRule\u003c/code\u003e objects should be associated to the deployed Thanos Ruler instances.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eThanosRuler\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003e\nThanosRulerSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of the desired behavior of the ThanosRuler cluster. More info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion of Thanos to be deployed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the ThanosRuler pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;thanos-ruler\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the ThanosRuler instance.\n* \u0026ldquo;thanos-ruler\u0026rdquo; label, set to the name of the ThanosRuler instance.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;thanos-ruler\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage defines Thanos container image URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy defines for the \u0026lsquo;thanos\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets defines an optional list of references to secrets in the same namespace\nto use for pulling thanos images from registries\nsee \u003ca href=\"http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\"\u003ehttp://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines when a ThanosRuler deployment is paused, no actions except for deleti
130on\nwill be performed on the underlying objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the number of thanos ruler instances to deploy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines which Nodes the Pods are scheduled on.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resource requirements for single Pods.\nIf not provided, no requests/limits will be set\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines when specified, the pod\u0026rsquo;s scheduling constraints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines when specified, the pod\u0026rsquo;s tolerations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#topologyspreadconstraint-v1-core\"\u003e\n[]Kubernetes core/v1.TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext defines the pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines Defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName defines the priority class assigned to the Pods\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003ethanos-ruler-
130operated\u003c/code\u003e for ThanosRuler resources.\nWhen deploying multiple ThanosRuler resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName defines the name of the ServiceAccount to use to run the\nThanos Ruler Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the specification of how storage shall be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes defines how configuration of additional volumes on the output StatefulSet definition. Volumes specified will\nbe appended to other volumes that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts defines how the configuration of additional VolumeMounts on the output StatefulSet definition.\nVolumeMounts specified will be appended to other VolumeMounts in the ruler container,\nthat are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eobjectStorageConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eobjectStorageConfig defines the configuration format is defined at \u003ca href=\"https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\"\u003ehttps://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eobjectStorageConfigFile\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eobjectStorageConfigFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eobjectStorageConfigFile defines the path of the object storage configuration file.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\"\u003ehttps://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration file.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003eobjectStorageConfig\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal defines the Thanos ruler listen on loopback, so that it\ndoes not bind against the Pod IP.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equeryEndpoints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equeryEndpoints defines the list of Thanos Query endpoints from which to query metrics.\u003c/p\u003e\n\u003cp\u003eFor Thanos \u0026gt;= v0.11.0, it is recommended to use \u003ccode\u003equeryConfig\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003equeryConfig\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equeryConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equeryConfig defines the list of Thanos Query endpoints from which to query metrics.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/components/rule.md/#query-api\"\u003ehttps://thanos.io/tip/components/rule.md/#query-api\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= v0.11.0.\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003equeryEndpoints\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagersUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagersUrl defines the list of Alertmanager endpoints to send alerts to.\u003c/p\u003e\n\u003cp\u003eFor Thanos \u0026gt;= v0.10.0, it is recommended to use \u003ccode\u003ealertmanagersConfig\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ealertmanagersConfig\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagersConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagersConfig defines the list of Alertmanager endpoints to send alerts to.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/components/rule.md/#alertmanager\"\u003ehttps://thanos.io/tip/components/rule.md/#alertmanager\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= v0.10.0.\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003ealertmanagersUrl\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleSelector defines the PrometheusRule objects to be selected for rule evaluation. An empty\nlabel selector matches all objects. A null label selector matches no\nobjects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleNamespaceSelector defines the namespaces to be selected for Rules discovery. If unspecified, only\nthe same namespace as the ThanosRuler object is in is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedNamespaceLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedNamespaceLabel enforces adding a namespace label of origin for each alert\nand metric that is user created. The label value will always be the namespace of the object that is\nbeing created.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexcludedFromEnforcement\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ObjectReference\"\u003e\n[]ObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexcludedFromEnforcement defines the list of references to PrometheusRule objects\nto be excluded from enforcing a namespace label of origin.\nApplies only if enforcedNamespaceLabel set to true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusRulesExcludedFromEnforce\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusRuleExcludeConfig\"\u003e\n[]PrometheusRuleExcludeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusRulesExcludedFromEnforce defines a list of Prometheus rules to be excluded from enforcing\nof adding namespace labels. Works only if enforcedNamespaceLabel set to true.\nMake sure both ruleNamespace and ruleName are set for each pair\nDeprecated: use excludedFromEnforcement instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for ThanosRuler to be configured with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for ThanosRuler to be configured with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName defines the port name used for the pods and governing service.\nDefaults to \u003ccode\u003eweb\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eevaluationInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eevaluationInterval defines the interval between consecutive evaluations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresendDelay\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresendDelay defines the minimum amount of time to wait before resending an alert to Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleOutageTolerance\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleOutageTolerance defines the max time to tolerate prometheus outage for restoring \u0026ldquo;for\u0026rdquo; state of alert.\nIt requires Thanos \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleQueryOffset\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleQueryOffset defines the default rule group\u0026rsquo;s query offset duration to use.\nIt requires Thanos \u0026gt;= v0.38.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleConcurrentEval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleConcurrentEval defines how many rules can be evaluated concurrently.\nIt requires Thanos \u0026gt;= v0.37.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleGracePeriod\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleGracePeriod defines the minimum duration between alert and restored \u0026ldquo;for\u0026rdquo; state.\nThis is maintained only for alerts with configured \u0026ldquo;for\u0026rdquo;
130 time greater than grace period.\nIt requires Thanos \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretention\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretention defines the time duration ThanosRuler shall retain data for. Default is \u0026lsquo;24h\u0026rsquo;, and\nmust match the regular expression \u003ccode\u003e[0-9]+(ms|s|m|h|d|w|y)\u003c/code\u003e (milliseconds\nseconds minutes hours days weeks years).\u003c/p\u003e\n\u003cp\u003eThe field has no effect when remote-write is configured since the Ruler\noperates in stateless mode.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers described here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003ethanos-ruler\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting initContainers to the Pod definition.\nThose can be used to e.g. fetch secrets for injection into the\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfig defines the tracing configuration.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/thanos/tracing.md/#configuration\"\u003ehttps://thanos.io/tip/thanos/tracing.md/#configuration\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003etracingConfigFile\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfigFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfigFile defines the path of the tracing configuration file.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/thanos/tracing.md/#configuration\"\u003ehttps://thanos.io/tip/thanos/tracing.md/#configuration\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration file.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003etracingConfig\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabels defines the external label pairs of the ThanosRuler resource.\u003c/p\u003e\n\u003cp\u003eA default replica label \u003ccode\u003ethanos_ruler_replica\u003c/code\u003e will be always added as a\nlabel with the value of the pod\u0026rsquo;s name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertDropLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertDropLabels defines the label names which should be dropped in Thanos Ruler\n
130alerts.\u003c/p\u003e\n\u003cp\u003eThe replica label \u003ccode\u003ethanos_ruler_replica\u003c/code\u003e will always be dropped from the alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalPrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalPrefix defines the Thanos Ruler instances will be available under. This is\nnecessary to generate correct URLs. This is necessary if Thanos Ruler is not\nserved from root of a DNS name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix defines the route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egrpcServerTlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GRPCServerTLSConfig\"\u003e\nGRPCServerTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egrpcServerTlsConfig defines the gRPC server from which Thanos Querier reads\nrecorded rule data.\u003c/p\u003e\n\u003cp\u003eNote: Currently only the \u003ccode\u003eminVersion\u003c/code\u003e, \u003ccode\u003ecaFile\u003c/code\u003e, \u003ccode\u003ecertFile\u003c/code\u003e, \u003ccode\u003ekeyFile\u003c/code\u003e, \u003ccode\u003ecipherSuites\u003c/code\u003e and \u003ccode\u003ecurves\u003c/code\u003e fields are supported.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertQueryUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertQueryUrl defines how Thanos Ruler will set in the \u0026lsquo;Source\u0026rsquo; field\nof all alerts.\nMaps to the \u0026lsquo;\u0026ndash;alert.query-url\u0026rsquo; CLI arg.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly created pod should be ready\nwithout any of its container crashing for it to be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertRelabelConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertRelabelConfigs defines the alert relabeling in Thanos Ruler.\u003c/p\u003e\n\u003cp\u003eAlert relabel configuration must have the form as specified in the\nofficial Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ealertRelabelConfigFile\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertRelabelConfigFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertRelabelConfigFile defines the path to the alert relabeling configuration file.\u003c/p\u003e\n\u003cp\u003eAlert relabel configuration must have the form as specified in the\nofficial Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration file.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003ealertRelabelConfig\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases defines pods\u0026rsquo; hostAliases configuration\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs defines how to add additional arguments for the ThanosRuler container.\nIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nThanosRuler container which may cause issues if they are invalid or not supported\nby the given ThanosRuler version.\nIn case of an argument conflict (e.g. an argument which is already set by the\noperator itself) or when providing an invali
130d argument the reconciliation will\nfail and an error will be logged.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerWebSpec\"\u003e\nThanosRulerWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the configuration of the ThanosRuler web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWrite\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003e\n[]RemoteWriteSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWrite defines the list of remote write configurations.\u003c/p\u003e\n\u003cp\u003eWhen the list isn\u0026rsquo;t empty, the ruler is configured with stateless mode.\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= 0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 120 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EnableFeature\"\u003e\n[]EnableFeature\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures defines how to setup Thanos Ruler feature flags. By default, no features are enabled.\u003c/p\u003e\n\u003cp\u003eEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eFor more information see \u003ca href=\"https://thanos.io/tip/components/rule.md/\"\u003ehttps://thanos.io/tip/components/rule.md/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= 0.39.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerStatus\"\u003e\nThanosRulerStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the most recent observed status of the ThanosRuler cluster. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.APIServerConfig\"\u003eAPIServerConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAPIServerConfig defines how the Prometheus server connects to the Kubernetes API server.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ehost defines the Kubernetes API address consisting of a hostname or IP address followed\nby an optional port number.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth configuration for the API server.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerToken\u003c/code\u003e, or\n\u003ccode\u003ebearerTokenFile\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenFile defines the file to read bearer token for accessing apiserver.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebearerToken\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: this will be removed in a future release. Prefer using \u003ccode\u003eauthorization\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig to use for the API server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Authorization\"\u003e\nAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization section for the API server.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerToken\u003c/code\u003e, or\n\u003ccode\u003ebearerTokenFile\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerToken is deprecated: this will be removed in a future release.\n\u003cem\u003eWarning: this field shouldn\u0026rsquo;t be used because the token value appears\nin clear-text. Prefer using \u003ccode\u003eauthorization\u003c/code\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AdditionalLabelSelectors\"\u003eAdditionalLabelSelectors\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.TopologySpreadConstraint\"\u003eTopologySpreadConstraint\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OnResource\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eAutomatically add a label selector that will select all pods matching the same Prometheus/PrometheusAgent resource (irrespective of their shards).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OnShard\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eAutomatically add a label selector that will select all pods matching the same shard.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertingSpec\"\u003eAlertingSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertingSpec defines parameters for alerting configuration of Prometheus servers.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003e\n[]AlertmanagerEndpoints\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ealertmanagers endpoints where Prometheus should send alerts to.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerAPIVersion\"\u003eAlertmanagerAPIVersion\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;V1\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;V2\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerConfigMatcherStrategy\"\u003eAlertmanagerConfigMatcherStrategy\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerConfigMatcherStrategyType\"\u003e\nAlertmanagerConfigMatcherStrategyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etype defines the strategy used by\nAlertmanagerConfig objects to match alerts in the routes and inhibition\nrules.\u003c/p\u003e\n\u003cp\u003eThe default value is \u003ccode\u003eOnNamespace\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerConfigMatcherStrategyType\"\u003eAlertmanagerConfigMatcherStrategyType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerConfigMatcherStrategy\"\u003eAlertmanagerConfigMatcherStrategy\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;None\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eWith \u003ccode\u003eNone\u003c/code\u003e, the route and inhibition rules of an AlertmanagerConfig\nobject process all incoming alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OnNamespace\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eWith \u003ccode\u003eOnNamespace\u003c/code\u003e, the route and inhibition rules of an\nAlertmanagerConfig object only process alerts that have a \u003ccode\u003enamespace\u003c/code\u003e\nlabel equal to the namespace of the object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OnNamespaceExceptForAlertmanagerNamespace\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eWith \u003ccode\u003eOnNamespaceExceptForAlertmanagerNamespace\u003c/code\u003e, the route and inhibition rules of an\nAlertmanagerConfig object only process alerts that have a \u003ccode\u003enamespace\u003c/code\u003e\nlabel equal to the namespace of the object, unless the AlertmanagerConfig object\nis in the same namespace as the Alertmanager object, where it will process all alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerConfiguration\"\u003eAlertmanagerConfiguration\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerConfiguration defines the Alertmanager configuration.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename defines the name of the AlertmanagerConfig custom resource which is used to generate the Alertmanager configuration.\nIt must be defined in the same namespace as the Alertmanager object.\nThe operator will not enforce a \u003ccode\u003enamespace\u003c/code\u003e label for routes and inhibition rules.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eglobal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003e\nAlertmanagerGlobalConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eglobal defines the global parameters of the Alertmanager configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etemplates\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\n[]SecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etemplates defines the custom notification templates.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertingSpec\"\u003eAlertingSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerEndpoints defines a selection of a single Endpoints object\ncontaining Alertmanager IPs to fire alerts against.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespace of the Endpoints object.\u003c/p\u003e\n\u003cp\u003eIf not set, the object will be discovered in the namespace of the\nPrometheus object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename of the Endpoints object in the namespace.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString\"\u003e\nk8s.io/apimachinery/pkg/util/intstr.IntOrString\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eport on which the Alertmanager API is exposed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Scheme\"\u003e\nScheme\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escheme defines the HTTP scheme to use when sending alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epathPrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epathPrefix defines the prefix for the HTTP path alerts are pushed to.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig to use for Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth configuration for Alertmanager.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebearerTokenFile\u003c/code\u003e, \u003ccode\u003eauthorization\u003c/code\u003e or \u003ccode\u003esigv4\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenFile defines the file to read bearer token for Alertmanager.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003esigv4\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: this will be removed in a future release. Prefer using \u003ccode\u003eauthorization\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization section for Alertmanager.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenFile\u003c/code\u003e or \u003ccode\u003esigv4\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esigv4\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Sigv4\"\u003e\nSigv4\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esigv4 defines AWS\u0026rsquo;s Signature Verification 4 for the URL.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.48.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenFile\u003c/code\u003e or \u003ccode\u003eauthorization\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerAPIVersion\"\u003e\nAlertmanagerAPIVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiVersion defines the version of the Alertmanager API that Prometheus uses to send alerts.\nIt can be \u0026ldquo;V1\u0026rdquo; or \u0026ldquo;V2\u0026rdquo;.\nThe field has no effect for Prometheus \u0026gt;= v3.0.0 because only the v2 API is supported.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout defines a per-target Alertmanager timeout when pushing alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erelabelings defines the relabel configuration applied to the discovered Alertmanagers.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertRelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertRelabelings defines the relabeling configs applied before sending alerts to a
130specific Alertmanager.\nIt requires Prometheus \u0026gt;= v2.51.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerConfiguration\"\u003eAlertmanagerConfiguration\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerGlobalConfig configures parameters that are valid in all other configuration contexts.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#configuration-file\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#configuration-file\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esmtp\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GlobalSMTPConfig\"\u003e\nGlobalSMTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esmtp defines global SMTP parameters.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresolveTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresolveTimeout defines the default value used by alertmanager if the alert does\nnot include EndsAt, after this time passes it can declare the alert as resolved if it has not been updated.\nThis has no impact on alerts from Prometheus, as they always include EndsAt.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithProxy\"\u003e\nHTTPConfigWithProxy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the default HTTP configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eslackApiUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eslackApiUrl defines the default Slack API URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eopsGenieApiUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eopsGenieApiUrl defines the default OpsGenie API URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eopsGenieApiKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eopsGenieApiKey defines the default OpsGenie API Key.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epagerdutyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epagerdutyUrl defines the default Pagerduty URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etelegram\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GlobalTelegramConfig\"\u003e\nGlobalTelegramConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etelegram defines the default Telegram config\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejira\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GlobalJiraConfig\"\u003e\nGlobalJiraConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejira defines the default configuration for Jira.\u
130003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evictorops\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GlobalVictorOpsConfig\"\u003e\nGlobalVictorOpsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evictorops defines the default configuration for VictorOps.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erocketChat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GlobalRocketChatConfig\"\u003e\nGlobalRocketChatConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erocketChat defines the default configuration for Rocket Chat.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebex\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GlobalWebexConfig\"\u003e\nGlobalWebexConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewebex defines the default configuration for Webex.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewechat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GlobalWeChatConfig\"\u003e\nGlobalWeChatConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewechat defines the default WeChat Config\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emattermost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GlobalMattermostConfig\"\u003e\nGlobalMattermostConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emattermost defines the default Mattermost Config\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerLimitsSpec\"\u003eAlertmanagerLimitsSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerLimitsSpec defines the limits command line flags when starting Alertmanager.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxSilences\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxSilences defines the maximum number active and pending silences. This corresponds to the\nAlertmanager\u0026rsquo;s \u003ccode\u003e--silences.max-silences\u003c/code\u003e flag.\nIt requires Alertmanager \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxPerSilenceBytes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxPerSilenceBytes defines the maximum size of an individual silence as stored on disk. This corresponds to the Alertmanager\u0026rsquo;s\n\u003ccode\u003e--silences.max-per-silence-bytes\u003c/code\u003e flag.\nIt requires Alertmanager \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Alertmanager\"\u003eAlertmanager\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerSpec is a specification of the desired behavior of the Alertmanager cluster. More info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the Alertmanager pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;alertmanager\u0026rdquo; label, set to the name of the Alertmanager instance.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Alertmanager instance.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;alertmanager\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Alertmanager version.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;alertmanager\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage if specified has precedence over baseImage, tag and sha\ncombinations. Specifying the version is still necessary to ensure the\nPrometheus Operator knows what version of Alertmanager is being\nconfigured.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy for the \u0026lsquo;alertmanager\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion the cluster should be on.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etag\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etag of Alertmanager container image to be deployed. Defaults to the value of \u003ccode\u003eversion\u003c/code\u003e.\nVersion is ignored if Tag is set.\nDeprecated: use \u0026lsquo;image\u0026rsquo; instead. The image tag can be specified as part of the image URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esha\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esha of Alertmanager container image to be deployed. Defaults to the value of \u003ccode\u003eversion\u003c/code\u003e.\nSimilar to a tag, but the SHA explicitly deploys an immutable container image.\nVersion and Tag are ignored if SHA is set.\nDeprecated: use \u0026lsquo;image\u0026rsquo; instead. The image digest can be specified as part of the image URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebaseImage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebaseImage that is used to deploy pods, without tag.\nDeprecated: use \u0026lsquo;image\u0026rsquo; instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets An optional list of references to secrets in the same namespace\nto use for pulling prometheus and alertmanager images from registries\nsee \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecrets is a list of Secrets in the same namespace as the Alertmanager\nobject, which shall be mounted
130into the Alertmanager Pods.\nEach Secret is added to the StatefulSet definition as a volume named \u003ccode\u003esecret-\u0026lt;secret-name\u0026gt;\u003c/code\u003e.\nThe Secrets are mounted into \u003ccode\u003e/etc/alertmanager/secrets/\u0026lt;secret-name\u0026gt;\u003c/code\u003e in the \u0026lsquo;alertmanager\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigMaps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigMaps defines a list of ConfigMaps in the same namespace as the Alertmanager\nobject, which shall be mounted into the Alertmanager Pods.\nEach ConfigMap is added to the StatefulSet definition as a volume named \u003ccode\u003econfigmap-\u0026lt;configmap-name\u0026gt;\u003c/code\u003e.\nThe ConfigMaps are mounted into \u003ccode\u003e/etc/alertmanager/configmaps/\u0026lt;configmap-name\u0026gt;\u003c/code\u003e in the \u0026lsquo;alertmanager\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigSecret defines the name of a Kubernetes Secret in the same namespace as the\nAlertmanager object, which contains the configuration for this Alertmanager\ninstance. If empty, it defaults to \u003ccode\u003ealertmanager-\u0026lt;alertmanager-name\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe Alertmanager configuration should be available under the\n\u003ccode\u003ealertmanager.yaml\u003c/code\u003e key. Additional keys from the original secret are\ncopied to the generated secret and mounted into the\n\u003ccode\u003e/etc/alertmanager/config\u003c/code\u003e directory in the \u003ccode\u003ealertmanager\u003c/code\u003e container.\u003c/p\u003e\n\u003cp\u003eIf either the secret or the \u003ccode\u003ealertmanager.yaml\u003c/code\u003e key is missing, the\noperator provisions a minimal Alertmanager configuration with one empty\nreceiver (effectively dropping alert notifications).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for Alertmanager to be configured with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for Alertmanager to be configured with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the expected size of the alertmanager cluster. The controller will\neventually make the size of the running cluster equal to the expected\nsize.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretention\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GoDuration\"\u003e\nGoDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretention defines the time duration Alertmanager shall retain data for. Default is \u0026lsquo;120h\u0026rsquo;,\nand must match the regular expression \u003ccode\u003e[0-9]+(ms|s|m|h)\u003c/code\u003e (milliseconds seconds minutes hours).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the definition of how storage will be used by the Alertmanager\ninstances.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes allows configuration of additional volumes on the output StatefulSet definition.\nVolumes specified will be appended to other volumes that are generated as a result of\nStorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition.\nVolumeMounts specified will be appended to other VolumeMounts in the alertmanager container,\nthat are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epersistentVolumeClaimRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#statefulsetpersistentvolumeclaimretentionpolicy-v1-apps\"\u003e\nKubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epersistentVolumeClaimRetentionPolicy controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\nThe default behavior is all PVCs are retained.\nThis is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\nIt requires enabling the StatefulSetAutoDeletePVC feature gate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalUrl defines the URL used to access the Alertmanager web service. This is\nnecessary to generate correct URLs. This is necessary if Alertmanager is not\nserved from root of a DNS name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix Alertmanager registers HTTP handlers for. This is useful,\nif using ExternalURL and a proxy is rewriting HTTP routes of a request,\nand the actual ExternalURL is still true, but the server serves requests\nunder a different route prefix. For example for use with \u003ccode\u003ekubectl proxy\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused if set to true all actions on the underlying managed objects are not\ngoing to be performed, except for delete actions.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines which Nodes the Pods are scheduled on.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resource requests and limits of the Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines the pod\u0026rsquo;s scheduling constraints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines the pod\u0026rsquo;s tolerations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#topologyspreadconstraint-v1-core\"\u003e\n[]Kubernetes core/v1.TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the Pod\u0026rsquo;s topology spread constraints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext holds pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003ealertmanager-operated\u003c/code\u003e for Alertmanager resources.\nWhen deploying multiple Alertmanager resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName is the name of the ServiceAccount to use to run the\nPrometheus Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal defines the Alertmanager server listen on loopback, so that it\ndoes not bind against the Pod IP. Note this is only for the Alertmanager\nUI, not the gossip communication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers descr
130ibed here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003ealertmanager\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\n* \u003ccode\u003ethanos-sidecar\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting initContainers to the Pod definition. Those\ncan be used to e.g. fetch secrets for injection into the Prometheus\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\nInitContainers described here modify an operator generated init\ncontainers if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of init container name managed by the operator are:\n* \u003ccode\u003einit-config-reloader\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOverriding init containers which are managed by the operator require\ncareful testing, especially when upgrading to a new version of the\noperator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName assigned to the Pods\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalPeers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterAdvertiseAddress\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterAdvertiseAddress defines the explicit address to advertise in cluster.\nNeeds to be provided for non RFC1918 \u003ca href=\"public\"\u003e1\u003c/a\u003e addresses.\n[1] RFC1918: \u003ca href=\"https://tools.ietf.org/html/rfc1918\"\u003ehttps://tools.ietf.org/html/rfc1918\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterGossipInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GoDuration\"\u003e\nGoDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterGossipInterval defines the interval between gossip attempts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterLabel defines the identifier that uniquely identifies the Alertmanager cluster.\nYou 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 \u
130003ccode\u003e.spec.additionalPeers\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterPushpullInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GoDuration\"\u003e\nGoDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterPushpullInterval defines the interval between pushpull attempts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterPeerTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GoDuration\"\u003e\nGoDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterPeerTimeout defines the timeout for cluster peering.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterPeerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterPeerName defines the name that this Alertmanager instance uses to\nadvertise itself to other cluster peers (the \u003ccode\u003e--cluster.peer-name\u003c/code\u003e flag,\navailable since Alertmanager v0.30.0).\u003c/p\u003e\n\u003cp\u003eIf not set, the operator defaults to the pod\u0026rsquo;s name (\u003ccode\u003e$(POD_NAME)\u003c/code\u003e),\nwhich is injected via the Kubernetes downward API. Setting this field\nlets you override that default with either a literal value or a string\nreferencing environment variables that are already available in the\nAlertmanager container (for example \u003ccode\u003e$(POD_NAME).$(NAMESPACE)\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003e/ It requires Alertmanager \u0026gt;= 0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName defines the port\u0026rsquo;s name for the pods and governing service.\nDefaults to \u003ccode\u003eweb\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eforceEnableClusterMode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eforceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica.\nUse case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagerConfigSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagerConfigSelector defines the selector to be used for to merge and configure Alertmanager with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagerConfigNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagerConfigNamespaceSelector defines the namespaces to be selected for AlertmanagerConfig discovery. If nil, only\ncheck own namespace.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagerConfigMatcherStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerConfigMatcherStrategy\"\u003e\nAlertmanagerConfigMatcherStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagerConfigMatcherStrategy defines how AlertmanagerConfig objects\nprocess incoming alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly\ncreated pod should be ready without any of its container crashing for it\nto be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003cp\u003eWhen the Alertmanager version is greater than or equal to v0.30.0, the\nduration is also used to delay the first flush of the aggregation\ngroups. This delay helps ensuring that all alerts have been resent by\nthe Prometheus instances to Alertmanager after a roll-out. It is\npossible to override this behavior passing a custom value via\n\u003ccode\u003e.spec.additionalArgs\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases Pods configuration\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostNetwork\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostNetwork controls whether the pod may use the node network namespace.\u003c/p\u003e\n\u003cp\u003eMake sure to understand the security implications if you want to enable\nit (\u003ca href=\"https://kubernetes.io/docs/concepts/configuration/overview/\"\u003ehttps://kubernetes.io/docs/concepts/configuration/overview/\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eWhen hostNetwork is enabled, this will set the DNS policy to\n\u003ccode\u003eClusterFirstWithHostNet\u003c/code\u003e automatically (unless \u003ccode\u003e.spec.dnsPolicy\u003c/code\u003e is set\nto a different value).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerWebSpec\"\u003e\nAlertmanagerWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the web command line flags when starting Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elimits\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerLimitsSpec\"\u003e\nAlertmanagerLimitsSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elimits defines the limits command line flags when starting Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclusterTLS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ClusterTLSConfig\"\u003e\nClusterTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclusterTLS defines the mutual TLS configuration for the Alertmanager cluster\u0026rsquo;s gossip protocol.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= 0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagerConfiguration\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerConfiguration\"\u003e\nAlertmanagerConfiguration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagerConfiguration defines the configuration of Alertmanager.\u003c/p\u003e\n\u003cp\u003eIf defined, it takes precedence over the \u003ccode\u003econfigSecret\u003c/code\u003e field.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eautomountServiceAccountToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eautomountServiceAccountToken defines whether a service account token should be automatically mounted
130in the pod.\nIf the service account has \u003ccode\u003eautomountServiceAccountToken: true\u003c/code\u003e, set the field to \u003ccode\u003efalse\u003c/code\u003e to opt out of automounting API credentials.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures defines the Alertmanager\u0026rsquo;s feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= 0.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs allows setting additional arguments for the \u0026lsquo;Alertmanager\u0026rsquo; container.\nIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nAlertmanager container which may cause issues if they are invalid or not supported\nby the given Alertmanager version.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the Optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 120 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerStatus\"\u003eAlertmanagerStatus\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Alertmanager\"\u003eAlertmanager\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerStatus is the most recent observed status of the Alertmanager cluster. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines whether any actions on the underlying managed objects are\nbeing performed. Only delete actions will be performed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the total number of non-terminated pods targeted by this Alertmanager\nobject (their labels match the selector).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdatedReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdatedReplicas defines the total number of non-terminated pods targeted by this Alertmanager\nobject that have the desired version spec.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eavailableReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eavailableReplicas defines the total number of available pods (ready for at least minReadySeconds)\ntargeted by this Alertmanager cluster.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eunavailableReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eunavailableReplicas defines the total number of unavailable pods targeted by this Alertmanager object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselector used to match the pods targeted by this Alertmanager object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econditions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Condition\"\u003e\n[]Condition\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econditions defines the current state of the Alertmanager object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AlertmanagerWebSpec\"\u003eAlertmanagerWebSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerWebSpec defines the web command line flags when starting Alertmanager.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebTLSConfig\"\u003e\nWebTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS parameters for HTTPS.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebHTTPConfig\"\u003e\nWebHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines HTTP parameters for web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egetConcurrency\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nuint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egetConcurrency defines the maximum number of GET requests processed concurrently. This corresponds to the\nAlertmanager\u0026rsquo;s \u003ccode\u003e--web.get-concurrency\u003c/code\u003e flag.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nuint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout for HTTP requests. This corresponds to the Alertmanager\u0026rsquo;s\n\u003ccode\u003e--web.timeout\u003c/code\u003e flag.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ArbitraryFSAccessThroughSMsConfig\"\u003eArbitraryFSAccessThroughSMsConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eArbitraryFSAccessThroughSMsConfig enables users to configure, whether\na service monitor selected by the Prometheus instance is allowed to use\narbitrary files on the file system of the Prometheus container. This is the case\nwhen e.g. a service monitor specifies a BearerTokenFile in an endpoint. A\nmalicious user could create a service monitor selecting arbitrary secret files\nin the Prometheus container. Those secrets w
130ould then be sent with a scrape\nrequest by Prometheus to a malicious target. Denying the above would prevent the\nattack, users can instead use the BearerTokenSecret field.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edeny\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edeny prevents service monitors from accessing arbitrary files on the file system.\nWhen true, service monitors cannot use file-based configurations like BearerTokenFile\nthat could potentially access sensitive files. When false (default), such access is allowed.\nSetting this to true enhances security by preventing potential credential theft attacks.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Argument\"\u003eArgument\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosSpec\"\u003eThanosSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eArgument as part of the AdditionalArgs list.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename of the argument, e.g. \u0026ldquo;scrape.discovery-reload-interval\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalue defines the argument value, e.g. 30s. Can be empty for name-only arguments (e.g. \u0026ndash;storage.tsdb.no-lockfile)\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AttachMetadata\"\u003eAttachMetadata\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PodMonitorSpec\"\u003ePodMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003eScrapeClass\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enode when set to true, Prometheus attaches node metadata to the discovered\ntargets.\u003c/p\u003e\n\u003cp\u003eThe Prometheus service account must have the \u003ccode\u003elist\u003c/code\u003e and \u003ccode\u003ewatch\u003c/code\u003e\npermissions on the \u003ccode\u003eNodes\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eNode metadata labels are not automatically added to scraped metrics. They are\nexposed as \u003ccode\u003e__meta_kubernetes_node_*\u003c/code\u003e labels and can be copied to timeseries\nwith relabeling configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Authorization\"\u003eAuthorization\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003eAPIServerConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003eRemoteReadSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003eScrapeClass\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etype defines the authentication type. The value is case-insensitive.\u003c/p\u003e\n\u003cp\u003e\u0026ldquo;Basic\u0026rdquo; is not a supported value.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;Bearer\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecredentials\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecredentials defines a key of a Secret in the namespace that c
130ontains the credentials for authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecredentialsFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecredentialsFile defines the file to read a secret from, mutually exclusive with \u003ccode\u003ecredentials\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AzureAD\"\u003eAzureAD\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAzureAD defines the configuration for remote write\u0026rsquo;s azuread parameters.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecloud\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecloud defines the Azure Cloud. Options are \u0026lsquo;AzurePublic\u0026rsquo;, \u0026lsquo;AzureChina\u0026rsquo;, or \u0026lsquo;AzureGovernment\u0026rsquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emanagedIdentity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ManagedIdentity\"\u003e\nManagedIdentity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emanagedIdentity defines the Azure User-assigned Managed identity.\nCannot be set at the same time as \u003ccode\u003eoauth\u003c/code\u003e, \u003ccode\u003esdk\u003c/code\u003e or \u003ccode\u003eworkloadIdentity\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AzureOAuth\"\u003e\nAzureOAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth defines the oauth config that is being used to authenticate.\nCannot be set at the same time as \u003ccode\u003emanagedIdentity\u003c/code\u003e, \u003ccode\u003esdk\u003c/code\u003e or \u003ccode\u003eworkloadIdentity\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.48.0 or Thanos \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esdk\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AzureSDK\"\u003e\nAzureSDK\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esdk defines the Azure SDK config that is being used to authenticate.\nSee \u003ca href=\"https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\"\u003ehttps://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\u003c/a\u003e\nCannot be set at the same time as \u003ccode\u003eoauth\u003c/code\u003e, \u003ccode\u003emanagedIdentity\u003c/code\u003e or \u003ccode\u003eworkloadIdentity\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.52.0 or Thanos \u0026gt;= v0.36.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eworkloadIdentity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AzureWorkloadIdentity\"\u003e\nAzureWorkloadIdentity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eworkloadIdentity defines the Azure Workload Identity authentication.\nCannot be set at the same time as \u003ccode\u003eoauth\u003c/code\u003e, \u003ccode\u003emanagedIdentity\u003c/code\u003e, or \u003ccode\u003esdk\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;
130= 3.7.0. Currently not supported by Thanos.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escope\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escope is the custom OAuth 2.0 scope to request when acquiring tokens.\nIt requires Prometheus \u0026gt;= 3.9.0. Currently not supported by Thanos.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AzureOAuth\"\u003eAzureOAuth\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AzureAD\"\u003eAzureAD\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAzureOAuth defines the Azure OAuth settings.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eclientId defines the clientId of the Azure Active Directory application that is being used to authenticate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eclientSecret specifies a key of a Secret containing the client secret of the Azure Active Directory application that is being used to authenticate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etenantId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etenantId is the tenant ID of the Azure Active Directory application that is being used to authenticate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AzureSDK\"\u003eAzureSDK\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AzureAD\"\u003eAzureAD\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAzureSDK is used to store azure SDK config values.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etenantId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etenantId defines the tenant ID of the azure active directory application that is being used to authenticate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.AzureWorkloadIdentity\"\u003eAzureWorkloadIdentity\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AzureAD\"\u003eAzureAD\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAzureWorkloadIdentity defines the Azure Workload Identity authentication configuration.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eclientId is the clientID of the Azure Active Directory application.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etenantId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etenantId is the tenant ID of the Azure Active Directory application.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.BasicAuth\"\u003eBasicAuth\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003eAPIServerConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithoutTLS\"\u003eHTTPConfigWithoutTLS\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003eRemoteReadSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003eAzureSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003eConsulSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003eDockerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003eEurekaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003eHTTPSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003eHetznerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003eKumaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003eLightSailSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003eNomadSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003ePuppetDBSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eBasicAuth configures HTTP Basic Authentication settings.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eusername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eusername defines a key of a Secret containing the username for\nauthentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epassword\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epassword defines a key of a Secret containing the password for\nauthentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ByteSize\"\u003eByteSize\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerLimitsSpec\"\u003eAlertmanagerLimitsSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PodMonitorSpec\"\u003ePodMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eByteSize is a valid memory size type based on powers-of-2, so 1KB is 1024B.\nSupported units: B, KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB Ex: \u003ccode\u003e512MB\u003c/code\u003e.\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ChunkEncodingFloats\"\u003eChunkEncodingFloats\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ChunkEncodingSpec\"\u003eChunkEncodingSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Xor\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Xor2\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ChunkEncodingSpec\"\u003eChunkEncodingSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.TSDBSpec\"\u003eTSDBSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eChunkEncodingSpec configures per-chunk-type encoding overrides.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efloats\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ChunkEncodingFloats\"\u003e\nChunkEncodingFloats\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efloats selects the encoding used for float chunks.\nValid values are \u0026ldquo;Xor\u0026rdquo; and \u0026ldquo;Xor2\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eNotice:\n* Setting \u0026ldquo;Xor\u0026rdquo; is incompatible with \u0026ndash;enable-feature=st-storage\n(XOR chunks do not store start timestamps).\n* Setting \u0026ldquo;Xor2\u0026rdquo; automatically adds the \u003ccode\u003exor2-encoding\u003c/code\u003e feature flag.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.13.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ClientAuthType\"\u003eClientAuthType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.WebTLSConfig\"\u003eWebTLSConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTaken from \u003ca href=\"https://golang.org/pkg/crypto/tls/#ClientAuthType\"\u003ehttps://golang.org/pkg/crypto/tls/#ClientAuthType\u003c/a\u003e.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;NoClientCert\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eNoClientCert indicates that no client certificate should be requested\nduring the handshake, and if any certificates are sent they will not\nbe verified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;RequestClientCert\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eRequestClientCert indicates that a client certificate should be requested\nduring the handshake, but does not require that the client send any\ncertificates.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;RequireAndVerifyClientCert\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eRequireAndVerifyClientCert indicates that a client certificate should be requested\nduring the handshake, and that at least one valid certificate is required\nto be sent by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;RequireAnyClientCert\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eRequireAnyClientCert indicates that a client certificate should be requested\nduring the handshake, and that at least one certificate is required to be\nsent by the client, but that certificate is not required to be valid.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;VerifyClientCertIfGiven\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eVerifyClientCertIfGiven indicates that a client certificate should be requested\nduring the handshake, but does not require that the client sends a\ncertificate. If the client does send a certificate it is required to be\nvalid.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ClusterTLSConfig\"\u003eClusterTLSConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eClusterTLSConfig defines the mutual TLS configuration for the Alertmanager cluster TLS protocol.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebTLSConfig\"\u003e\nWebTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eserver defines the server-side configuration for mutual TLS.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclient\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eclient defines the client-side configuration for mutual TLS.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PrometheusAgentSpec\"\u003ePrometheusAgentSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eCommonPrometheusFields are the options available to both the Prometheus server and agent.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the Prometheus pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version.\n* \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeSelector defines the probes to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label\nselector matches all namespaces. A null label selector matches the\ncurrent namespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alp
130ha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion of Prometheus being deployed. The operator uses this information\nto generate the Prometheus StatefulSet + configuration files.\u003c/p\u003e\n\u003cp\u003eIf not specified, the operator assumes the latest upstream version of\nPrometheus available at the time when the version of the operator was\nreleased.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines when a Prometheus deployment is paused, no actions except for deletion\nwill be performed on the underlying objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage defines the container image name for Prometheus. If specified, it takes precedence\nover the \u003ccode\u003espec.baseImage\u003c/code\u003e, \u003ccode\u003espec.tag\u003c/code\u003e and \u003ccode\u003espec.sha\u003c/code\u003e fields.\u003c/p\u003e\n\u003cp\u003eSpecifying \u003ccode\u003espec.version\u003c/code\u003e is still necessary to ensure the Prometheus\nOperator knows which version of Prometheus is being configured.\u003c/p\u003e\n\u003cp\u003eIf neither \u003ccode\u003espec.image\u003c/code\u003e nor \u003ccode\u003espec.baseImage\u003c/code\u003e are defined, the operator\nwill use the latest upstream version of Prometheus available at the time\nwhen the operator was released.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets defines an optional list of references to Secrets in the same namespace\nto use for pulling images from registries.\nSee \u003ca href=\"http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\"\u003ehttp://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the number of replicas of each shard to deploy for a Prometheus deployment.\n\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\ncreated.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshards\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshards defines the number of shards to distribute the scraped targets onto.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\nbeing created.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator assumes only one shard.\u003c/p\u003e\n\u003cp\u003eNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. 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.\u003c/p\u003e\n\u003cp\u003eBy default, the sharding of targets is performed on:\n* The \u003ccode\u003e__address__\u
130003c/code\u003e target\u0026rsquo;s metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The \u003ccode\u003e__param_target__\u003c/code\u003e label for Probe resources.\u003c/p\u003e\n\u003cp\u003eUsers can define their own sharding implementation by setting the\n\u003ccode\u003e__tmp_hash\u003c/code\u003e label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\u003c/p\u003e\n\u003cp\u003eYou can also disable sharding on a specific target by setting the\n\u003ccode\u003e__tmp_disable_sharding\u003c/code\u003e label with relabeling configuration. When\nthe label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardingStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardingStrategy\"\u003e\nShardingStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes\ntargets based on a hash of the target address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicaExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicaExternalLabelName defines the name of Prometheus external label used to denote the replica name.\nThe external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to the\nempty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance\nname. The external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to\nthe empty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for Log level for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeInterval defines interval between consecutive scrapes.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the number of seconds to wait until a scrape request times out.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheusText1.0.0\u003c/code\u003e requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalLabels defines the labels to add to any time series or alerts when communicating with\nexternal systems (federation, remote storage, Alertmanager).\nLabels defined by \u003ccode\u003espec.replicaExternalLabelName\u003c/code\u003e and\n\u003ccode\u003espec.prometheusExternalLabelName\u003c/code\u003e take precedence over this list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableRemoteWriteReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote\nwrite protocol.\u003c/p\u003e\n\u003cp\u003eWARNING: This is not considered an efficie
130nt way of ingesting samples.\nUse it with caution for specific low-volume use cases.\nIt is not suitable for replacing the ingestion via scraping and turning\nPrometheus into a push-based metrics collection system.\nFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\"\u003ehttps://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.33.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableOTLPReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\u003c/p\u003e\n\u003cp\u003eNote that the OTLP receiver endpoint is automatically enabled if \u003ccode\u003e.spec.otlpConfig\u003c/code\u003e is defined.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWriteReceiverMessageVersions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteMessageVersion\"\u003e\n[]RemoteWriteMessageVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the\nremote writes.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EnableFeature\"\u003e\n[]EnableFeature\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\u003c/p\u003e\n\u003cp\u003eEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/feature_flags/\"\u003ehttps://prometheus.io/docs/prometheus/latest/feature_flags/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalUrl defines the external URL under which the Prometheus service is externally\navailable. This is necessary to generate correct URLs (for instance if\nPrometheus is accessible behind an Ingress resource).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix defines the route prefix Prometheus registers HTTP handlers for.\u003c/p\u003e\n\u003cp\u003eThis is useful when using \u003ccode\u003espec.externalURL\u003c/code\u003e, and a proxy is rewriting\nHTTP routes of a request, and the actual ExternalURL is still true, but\nthe server serves requests under a different route prefix. For example\nfor use with \u003ccode\u003ekubectl proxy\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the storage used by Prometheus.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes allows the configuration of additional volumes on the output\nStatefulSet definition. Volumes specified will be appended to other\nvolumes that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts allows the configuration of additional VolumeMounts.\u003c/p\u003e\n\u003cp\u003eVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo;\ncontainer, that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epersistentVolumeClaimRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#statefulsetpersistentvolumeclaimretentionpolicy-v1-apps\"\u003e\nKubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epersistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\nThe default behavior is all PVCs are retained.\nThis is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\nIt requires enabling the StatefulSetAutoDeletePVC feature gate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusWebSpec\"\u003e\nPrometheusWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the configuration of the Prometheus web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines on which Nodes the Pods are scheduled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName is the name of the ServiceAccount to use to run the\nPrometheus Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eautomountServiceAccountToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eautomountServiceAccountToken defines whether a service account token should be automatically mounted
130in the pod.\nIf the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWarning:\u003c/strong\u003e be aware that by default, Prometheus requires the service account token for Kubernetes service discovery.\nIt is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecrets defines a list of Secrets in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach Secret is added to the StatefulSet definition as a volume named \u003ccode\u003esecret-\u0026lt;secret-name\u0026gt;\u003c/code\u003e.\nThe Secrets are mounted into /etc/prometheus/secrets/\u003csecret-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigMaps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigMaps defines a list of ConfigMaps in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach ConfigMap is added to the StatefulSet definition as a volume named \u003ccode\u003econfigmap-\u0026lt;configmap-name\u0026gt;\u003c/code\u003e.\nThe ConfigMaps are mounted into /etc/prometheus/configmaps/\u003cconfigmap-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines the Pods\u0026rsquo; tolerations if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TopologySpreadConstraint\"\u003e\n[]TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWrite\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003e\n[]RemoteWriteSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWrite defines the list of remote write configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eotlp\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OTLPConfig\"\u003e\nOTLPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eotlp defines the settings related to the OTLP receiver feature.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext holds pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal when true, the Prometheus server listens on the loopback address\ninstead of the Pod IP\u0026rsquo;s address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers described here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003eprometheus\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\n* \u003ccode\u003ethanos-sidecar\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting init
130Containers to the Pod definition. Those\ncan be used to e.g. fetch secrets for injection into the Prometheus\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\nInitContainers described here modify an operator generated init\ncontainers if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of init container name managed by the operator are:\n* \u003ccode\u003einit-config-reloader\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOverriding init containers which are managed by the operator require\ncareful testing, especially when upgrading to a new version of the\noperator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalScrapeConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalScrapeConfigs allows specifying a key of a Secret containing\nadditional Prometheus scrape configurations. Scrape configurations\nspecified are appended to the configurations generated by the Prometheus\nOperator. Job configurations specified must have the form as specified\nin the official Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\u003c/a\u003e.\nAs scrape configs are appended, the user is responsible to make sure it\nis valid. Note that using this feature may expose the possibility to\nbreak upgrades of Prometheus. It is advised to review Prometheus release\nnotes to ensure that no incompatible scrape configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiserverConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003e\nAPIServerConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiserverConfig allows specifying a host and auth methods to access the\nKuberntees API server.\nIf null, Prometheus is assumed to run inside of the cluster: it will\ndiscover the API servers automatically and use the Pod\u0026rsquo;s CA certificate\nand bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName assigned to the Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName used for the pods and governing service.\nDefault: \u0026ldquo;web\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003earbitraryFSAccessThroughSMs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ArbitraryFSAccessThroughSMsConfig\"\u003e\nArbitraryFSAccessThroughSMsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003earbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to\nreference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo;\ncontainer.\nWhen a ServiceMonitor\u0026rsquo;s endpoint specifies a \u003ccode\u003ebearerTokenFile\u003c/code\u003e value\n(e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a\nmalicious target can get access to the Prometheus service account\u0026rsquo;s\ntoken in the Prometheus\u0026rsquo; scrape request. Setting\n\u003ccode\u003espec.arbitraryFSAccessThroughSM\u003c/code\u003e to \u0026lsquo;true\u0026rsquo; would prevent the attack.\nUsers should instead provide the credentials using the\n\u003ccode\u003espec.bearerTokenSecret\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data\nto âexported_â for all targets created from ServiceMonitor, PodMonitor and\nScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies.\nIn practice,\u003ccode\u003eOverrideHonorLabels:true\u003c/code\u003e enforces \u003ccode\u003ehonorLabels:false\u003c/code\u003e\nfor all ServiceMonitor, PodMonitor and ScrapeConfig objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created\nfrom service and pod monitors.\nOtherwise the HonorTimestamps field of the service or pod monitor applies.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eignoreNamespaceSelectors\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eignoreNamespaceSelectors when true, \u003ccode\u003espec.namespaceSelector\u003c/code\u003e from all PodMonitor, ServiceMonitor\nand Probe objects will be ignored. They will only discover targets\nwithin the namespace of the PodMonitor, ServiceMonitor and Probe\nobject.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedNamespaceLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedNamespaceLabel when not empty, a label will be added to:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAll metrics scraped from \u
130003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e and \u003ccode\u003eScrapeConfig\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll metrics generated from recording rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll alerts generated from alerting rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll vector selectors of PromQL expressions defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe label will not added for objects referenced in \u003ccode\u003espec.excludedFromEnforcement\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe label\u0026rsquo;s name is this field\u0026rsquo;s value.\nThe label\u0026rsquo;s value is the namespace of the \u003ccode\u003eServiceMonitor\u003c/code\u003e,\n\u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e, \u003ccode\u003ePrometheusRule\u003c/code\u003e or \u003ccode\u003eScrapeConfig\u003c/code\u003e object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedSampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedSampleLimit when defined specifies a global limit on the number\nof scraped samples that will be accepted. This overrides any\n\u003ccode\u003espec.sampleLimit\u003c/code\u003e set by ServiceMonitor, PodMonitor, Probe objects\nunless \u003ccode\u003espec.sampleLimit\u003c/code\u003e is greater than zero and less than\n\u003ccode\u003espec.enforcedSampleLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to keep the overall number of\nsamples/series under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e and \u003ccode\u003esampleLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e is greater than the \u003ccode\u003esampleLimit\u003c/code\u003e, the \u003ccode\u003esampleLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedTargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedTargetLimit when defined specifies a global limit on the number\nof scraped targets. The value overrides any \u003ccode\u003espec.targetLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.targetLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedTargetLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to to keep the overall number of\ntargets under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e and \u003ccode\u003etargetLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e is greater than the \u003ccode\u003etargetLimit\u003c/code\u003e, the \u003ccode\u003etargetLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelLimit when defined specifies a global limit on the number\nof labels per sample. The value overrides any \u003ccode\u003espec.labelLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e and \u003ccode\u003elabelLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelLimit\u003c/code\u003e, the \u003ccode\u003elabelLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelNameLengthLimit when defined specifies a global limit on the length\nof labels name per sample. The value overrides any \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelNameLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e and \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelValueLengthLimit when not null defines a global limit on the length\nof labels value per sample. The value overrides any \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelValueLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e and \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedKeepDroppedTargets when defined specifies a global limit on the number of targets\ndropped by relabeling that will be kept in memory. The value overrides\nany \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedKeepDroppedTargets\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e and \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e is greater than the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e, the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e will be set to \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedBodySizeLimit when defined specifies a global limit on the size\nof uncompressed response body that will be accepted by Prometheus.\nTargets responding with a body larger than this many bytes will cause\nthe scrape to fail.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e and \u003ccode\u003ebodySizeLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e is greater than the \u003ccode\u003ebodySizeLimit\u003c/code\u003e, the \u003ccode\u003ebodySizeLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameValidationScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameValidationSchemeOptions\"\u003e\nNameValidationSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameValidationScheme defines the validation scheme for metric and label names.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameEscapingScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameEscapingSchemeOptions\"\u003e\nNameEscapingSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameEscapingScheme defines the character escaping scheme that will be requested when scraping\nfor metric and label names that do not conform to the legacy Prometheus\ncharacter set.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native\nhistogram with custom buckets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.5.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready\nwithout any of its container crashing for it to be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s\nhosts file if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003cp\u003eIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nPrometheus container which may cause issues if they are invalid or not supported\nby the given Prometheus version.\u003c/p\u003e\n\u003cp\u003eIn case of an argument conflict (e.g. an argument which is already set by the\noperator itself) or when providing an invali
130d argument, the reconciliation will\nfail and an error will be logged.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewalCompression\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewalCompression defines the compression of the write-ahead log (WAL) using Snappy.\u003c/p\u003e\n\u003cp\u003eWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\u003c/p\u003e\n\u003cp\u003eRequires Prometheus v2.11.0 and above.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexcludedFromEnforcement\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ObjectReference\"\u003e\n[]ObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexcludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects\nto be excluded from enforcing a namespace label of origin.\u003c/p\u003e\n\u003cp\u003eIt is only applicable if \u003ccode\u003espec.enforcedNamespaceLabel\u003c/code\u003e set to true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostNetwork\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostNetwork defines the host\u0026rsquo;s network namespace if true.\u003c/p\u003e\n\u003cp\u003eMake sure to understand the security implications if you want to enable\nit (\u003ca href=\"https://kubernetes.io/docs/concepts/configuration/overview/\"\u003ehttps://kubernetes.io/docs/concepts/configuration/overview/\u003c/a\u003e ).\u003c/p\u003e\n\u003cp\u003eWhen hostNetwork is enabled, this will set the DNS policy to\n\u003ccode\u003eClusterFirstWithHostNet\u003c/code\u003e automatically (unless \u003ccode\u003e.spec.DNSPolicy\u003c/code\u003e is set\nto a different value).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels are appended to the \u003ccode\u003espec.podTargetLabels\u003c/code\u003e field of all\nPodMonitor and ServiceMonitor objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TracingConfig\"\u003e\nTracingConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfig defines tracing in Prometheus.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit defines per-scrape on response body size.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\nOnl
130y valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereloadStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ReloadStrategyType\"\u003e\nReloadStrategyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereloadStrategy defines the strategy used to reload the Prometheus configuration.\nIf not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaximumStartupDurationSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaximumStartupDurationSeconds defines the maximum time that the \u003ccode\u003eprometheus\u003c/code\u003e container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete.\nIf set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClasses\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003e\n[]ScrapeClass\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClasses defines the list of scrape classes to expose to scraping objects such as\nPodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceDiscoveryRole\"\u003e\nServiceDiscoveryRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceDiscoveryRole defines the service discovery role used to discover targets from\n\u003ccode\u003eServiceMonitor\u003c/code\u003e objects and Alertmanager endpoints.\u003c/p\u003e\n\u003cp\u003eIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
130.\nIf unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etsdb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TSDBSpec\"\u003e\nTSDBSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etsdb defines the runtime reloadable configuration of the timeseries database(TSDB).\nIt requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeFailureLogFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeFailureLogFile defines the file to which scrape failures are logged.\nReloading the configuration will reopen the file.\u003c/p\u003e\n\u003cp\u003eIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods\nwill mount the file into an emptyDir volume at \u003ccode\u003e/var/log/prometheus\u003c/code\u003e.\nIf a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you\nmust mount a volume in the specified directory and it must be writable.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003eprometheus-operated\u003c/code\u003e for Prometheus resources,\nor \u003ccode\u003eprometheus-agent-operated\u003c/code\u003e for PrometheusAgent resources.\nWhen deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruntime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RuntimeConfig\"\u003e\nRuntimeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruntime defines the values for the Prometheus process behavior\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 600 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Condition\"\u003eCondition\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerStatus\"\u003eAlertmanagerStatus\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PrometheusStatus\"\u003ePrometheusStatus\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerStatus\"\u003eThanosRulerStatus\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eCondition represents the state of the resources associated with the\nPrometheus, Alertmanager or ThanosRuler resource.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConditionType\"\u003e\nConditionType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etype of the condition being reported.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConditionStatus\"\u003e\nConditionStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003estatus of the condition.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elastTransitionTime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#time-v1-meta\"\u003e\nKubernetes meta/v1.Time\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003elastTransitionTime is the time of the last update to the current status property.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereason\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereason for the condition\u0026rsquo;s last transition.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines human-readable message indicating details for the condition\u0026rsquo;s last transition.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eobservedGeneration\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eobservedGeneration defines the .metadata.generation that the\ncondition was set based upon. For instance, if \u003ccode\u003e.metadata.generation\u003c/code\u003e is\ncurrently 12, but the \u003ccode\u003e.status.conditions[].observedGeneration\u003c/code\u003e is 9, the\ncondition is out of date with respect to the current state of the\ninstance.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ConditionStatus\"\u003eConditionStatus\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Condition\"\u003eCondition\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceCondition\"\u003eConfigResourceCondition\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Degraded\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;False\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;True\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Unknown\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ConditionType\"\u003eConditionType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Condition\"\u003eCondition\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceCondition\"\u003eConfigResourceCondition\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Accepted\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eAccepted indicates whether the workload controller has successfully accepted\nthe configuration resource and updated the configuration of the workload accordingly.\nThe possible status values for this condition type are:\n- True: the configuration resource was successfully accepted by the controller and written to the configuration secret.\n- False: the controller rejected the configuration due to an error.\n- Unknown: the operator couldn\u0026rsquo;t determine the condition status.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Available\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eAvailable indicates whether enough pods are ready to provide the\nservice.\nThe possible status values for this condition type are:\n- True: all pods are running and ready, the service is fully available.\n- Degraded: some pods aren\u0026rsquo;t ready, the service is partially available.\n- False: no pods are running, the service is totally unavailable.\n- Unknown: the operator couldn\u0026rsquo;t determine the condition status.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Reconciled\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eReconciled indicates whether the operator has reconciled the state of\nthe underlying resources with the object\u0026rsquo;s spec.\nThe possible status values for this condition type are:\n- True: the reconciliation was successful.\n- False: the reconciliation failed.\n- Unknown: the operator couldn\u0026rsquo;t determine the condition status.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ConfigResourceCondition\"\u003eConfigResourceCondition\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.WorkloadBinding\"\u003eWorkloadBinding\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConditionType\"\u003e\nConditionType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etype of the condition being reported.\nCurrently, only \u0026ldquo;Accepted\u0026rdquo; is supported.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConditionStatus\"\u003e\nConditionStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003estatus of the condition.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elastTransitionTime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#time-v1-meta\"\u003e\nKubernetes meta/v1.Time\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003elastTransitionTime defines the time of the last update to the current status property.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereason\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereason for the condition\u0026rsquo;s last transition.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the human-readable message indicating details for the condition\u0026rsquo;s last transition.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eobservedGeneration\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eobservedGeneration defines the .metadata.generation that the\ncondition was set based upon. For instance, if \u003ccode\u003e.metadata.generation\u003c/code\u003e is\ncurrently 12, but the \u003ccode\u003e.status.conditions[].observedGeneration\u003c/code\u003e is 9, the\ncondition is out of date with respect to the current state of the object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ConfigResourceStatus\"\u003eConfigResourceStatus\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PodMonitor\"\u003ePodMonitor\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.Probe\"\u003eProbe\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PrometheusRule\"\u003ePrometheusRule\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitor\"\u003eServiceMonitor\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.AlertmanagerConfig\"\u003eAlertmanagerConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfig\"\u003eScrapeConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.AlertmanagerConfig\"\u003eAlertmanagerConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eConfigResourceStatus is the most recent observed status of the Configuration Resource (ServiceMonitor, PodMonitor, Probes, ScrapeConfig, PrometheusRule or AlertmanagerConfig). Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebindings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WorkloadBinding\"\u003e\n[]WorkloadBinding\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.CoreV1TopologySpreadConstraint\"\u003eCoreV1TopologySpreadConstraint\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.TopologySpreadConstraint\"\u003eTopologySpreadConstraint\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxSkew\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eMaxSkew describes the degree to which pods may be unevenly distributed.\nWhen \u003ccode\u003ewhenUnsatisfiable=DoNotSchedule\u003c/code\u003e, it is the maximum permitted difference\nbetween the number of matching pods in the target topology and the global minimum.\nThe global minimum is the minimum number of matching pods in an eligible domain\nor zero if the number of eligible domains is less than MinDomains.\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\nlabelSelector spread as 2/2/1:\nIn 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;\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\nviolate MaxSkew(1).\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\nWhen \u003ccode\u003ewhenUnsatisfiable=ScheduleAnyway\u003c/code\u003e, it is used to give higher precedence\nto topologies that satisfy it.\nIt\u0026rsquo;s a required field. Default value is 1 and 0 is not allowed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologyKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eTopologyKey is the key of node labels. Nodes that have a label with this key\nand identical values are considered to be in the same topology.\nWe consider each \u003ckey, value\u003e as a \u0026ldquo;bucket\u0026rdquo;, and try to put balanced number\nof pods into each bucket.\nWe define a domain as a particular instance of a topology.\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\nnodeAffinityPolicy and nodeTaintsPolicy.\ne.g. If TopologyKey is \u0026ldquo;kubernetes.io/hostname\u0026rdquo;, each Node is a domain of that topology.\nAnd, if TopologyKey is \u0026ldquo;
130topology.kubernetes.io/zone\u0026rdquo;, each zone is a domain of that topology.\nIt\u0026rsquo;s a required field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewhenUnsatisfiable\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#unsatisfiableconstraintaction-v1-core\"\u003e\nKubernetes core/v1.UnsatisfiableConstraintAction\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eWhenUnsatisfiable indicates how to deal with a pod if it doesn\u0026rsquo;t satisfy\nthe spread constraint.\n- DoNotSchedule (default) tells the scheduler not to schedule it.\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\nbut giving higher precedence to topologies that would help reduce the\nskew.\nA constraint is considered \u0026ldquo;Unsatisfiable\u0026rdquo; for an incoming pod\nif and only if every possible node assignment for that pod would violate\n\u0026ldquo;MaxSkew\u0026rdquo; on some topology.\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\nlabelSelector spread as 3/1/1:\n| zone1 | zone2 | zone3 |\n| P P P | P | P |\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\nwon\u0026rsquo;t make it \u003cem\u003emore\u003c/em\u003e imbalanced.\nIt\u0026rsquo;s a required field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eLabelSelector is used to find matching pods.\nPods that match this label selector are counted to determine the number of pods\nin their corresponding topology domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminDomains\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eMinDomains indicates a minimum number of eligible domains.\nWhen the number of eligible domains with matching topology keys is less than minDomains,\nPod Topology Spread treats \u0026ldquo;global minimum\u0026rdquo; as 0, and then the calculation of Skew is performed.\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\nthis value has no effect on scheduling.\nAs a result, when the number of eligible domains is less than minDomains,\nscheduler won\u0026rsquo;t schedule more than maxSkew Pods to those domains.\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\nValid values are integers greater than 0.\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\u003c/p\u003e\n\u003cp\u003eFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\nlabelSelector spread as 2/2/2:\n| zone1 | zone2 | zone3 |\n| P P | P P | P P |\nThe number of domains is less than 5(MinDomains), so \u0026ldquo;global minimum\u0026rdquo; is treated as 0.\nIn this situation, new pod with the same labelSelector cannot be scheduled,\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\nit will violate MaxSkew.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeAffinityPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#nodeinclusionpolicy-v1-core\"\u003e\nKubernetes core/v1.NodeInclusionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eNodeAffinityPolicy indicates how we will treat Pod\u0026rsquo;s nodeAffinity/nodeSelector\nwhen 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.\u003c/p\u003e\n\u003cp\u003eIf this value is nil, the behavior is equivalent to the Honor policy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeTaintsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#nodeinclusionpolicy-v1-core\"\u003e\nKubernetes core/v1.NodeInclusionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eNodeTaintsPolicy indicates how we will treat node taints when calculating\npod topology spread skew. Options are:\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\nhas a toleration, are included.\n- Ignore: node taints are ignored. All nodes are included.\u003c/p\u003e\n\u003cp\u003eIf this value is nil, the behavior is equivalent to the Ignore policy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ematchLabelKeys\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eMatchLabelKeys is a set of pod label keys to select the pods over which\nspreading will be calculated. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are ANDed with labelSelector\nto select the group of existing pods over which spreading will be calculated\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nMatchLabelKeys cannot be set when L
130abelSelector isn\u0026rsquo;t set.\nKeys that don\u0026rsquo;t exist in the incoming pod labels will\nbe ignored. A null or empty list means only match against labelSelector.\u003c/p\u003e\n\u003cp\u003eThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.DNSPolicy\"\u003eDNSPolicy\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDNSPolicy specifies the DNS policy for the pod.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;ClusterFirst\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eDNSClusterFirst defines that the pod should use cluster DNS\nfirst unless hostNetwork is true, if it is available, then\nfall back on the default (as determined by kubelet) DNS settings.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;ClusterFirstWithHostNet\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eDNSClusterFirstWithHostNet defines that the pod should use cluster DNS\nfirst, if it is available, then fall back on the default\n(as determined by kubelet) DNS settings.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Default\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eDNSDefault defines that the pod should use the default (as\ndetermined by kubelet) DNS settings.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;None\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eDNSNone defines that the pod should use empty DNS settings. DNS\nparameters such as nameservers and search paths should be defined via\nDNSConfig.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Duration\"\u003eDuration\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.Endpoint\"\u003eEndpoint\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.MetadataConfig\"\u003eMetadataConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PodMetricsEndpoint\"\u003ePodMetricsEndpoint\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.QuerySpec\"\u003eQuerySpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.QueueConfig\"\u003eQueueConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003eRemoteReadSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RetainConfig\"\u003eRetainConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.Rule\"\u003eRule\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RuleGroup\"\u003eRuleGroup\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.TSDBSpec\"\u003eTSDBSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosSpec\"\u003eThanosSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.TracingConfig\"\u003eTracingConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003eAzureSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003eConsulSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DNSSDConfig\"\u003eDNSSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DigitalOceanSDConfig\"\u003eDigitalOceanSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003eDockerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EC2SDConfig\"\u003eEC2SDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003eEurekaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.FileSDConfig\"\u003eFileSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.GCESDConfig\"\u003eGCESDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003eHTTPSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003eHetznerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.IonosSDConfig\"\u003eIonosSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003eKumaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003eLightSailSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LinodeSDConfig\"\u003eLinodeSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003eNomadSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.OVHCloudSDConfig\"\u003eOVHCloudSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackSDConfig\"\u003eOpenStackSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003ePuppetDBSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PushoverConfig\"\u003ePushoverConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScalewaySDConfig\"\u003eScalewaySDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.WebhookConfig\"\u003eWebhookConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.PushoverConfig\"\u003ePushoverConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.WebhookConfig\"\u003eWebhookConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDuration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function.\nSupported units: y, w, d, h, m, s, ms\nExamples: \u003ccode\u003e30s\u003c/code\u003e, \u003ccode\u003e1m\u003c/code\u003e, \u003ccode\u003e1h20m15s\u003c/code\u003e, \u003ccode\u003e15d\u003c/code\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003eEmbeddedObjectMetadata\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.EmbeddedPersistentVolumeClaim\"\u003eEmbeddedPersistentVolumeClaim\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eEmbeddedObjectMetadata contains a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta\nOnly fields which are relevant to embedded resources are included.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/
130overview/working-with-objects/names/\"\u003ehttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabels 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\nand services.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\"\u003ehttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eannotations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eannotations defines an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\"\u003ehttps://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.EmbeddedPersistentVolumeClaim\"\u003eEmbeddedPersistentVolumeClaim\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003eStorageSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eEmbeddedPersistentVolumeClaim is an embedded version of k8s.io/api/core/v1.PersistentVolumeClaim.\nIt contains TypeMeta and a reduced ObjectMeta.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#persistentvolumeclaimspec-v1-core\"\u003e\nKubernetes core/v1.PersistentVolumeClaimSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003espec defines the specification of the characteristics of a volume requested by a pod author.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\"\u003ehttps://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\u003c/a\u003e\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaccessModes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#persistentvolumeaccessmode-v1-core\"\u003e\n[]Kubernetes core/v1.PersistentVolumeAccessMode\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaccessModes contains the desired access modes the volume should have.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\"\u003ehttps://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselector is a label query over volumes to consider for binding.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumeresourcerequirements-v1-core\"\u003e\nKubernetes core/v1.VolumeResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources represents the minimum resources the volume should have.\nUsers are allowed to specify resource requirements\nthat are lower than previous value but must still be higher than capacity recorded in the\nstatus field of the claim.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\"\u003ehttps://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeName is the binding reference to the PersistentVolume backing this claim.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorageClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorageClassName is the name of the StorageClass required by the claim.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\"\u003ehttps://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#persistentvolumemode-v1-core\"\u003e\nKubernetes core/v1.PersistentVolumeMode\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMode defines what type of volume is required by the claim.\nValue of Filesystem is implied when not included in claim spec.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edataSource\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#typedlocalobjectreference-v1-core\"\u003e\nKubernetes core/v1.TypedLocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edataSource field can be used to specify either:\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n* An existing PVC (PersistentVolumeClaim)\nIf the provisioner or an external
130controller can support the specified data source,\nit will create a new volume based on the contents of the specified data source.\ndataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be\ncopied to dataSource when dataSourceRef.namespace is not specified.\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edataSourceRef\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#typedobjectreference-v1-core\"\u003e\nKubernetes core/v1.TypedObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edataSourceRef specifies the object from which to populate the volume with data, if a non-empty\nvolume is desired. This may be any object from a non-empty API group (non\ncore object) or a PersistentVolumeClaim object.\nWhen this field is specified, volume binding will only succeed if the type of\nthe specified object matches some installed volume populator or dynamic\nprovisioner.\nThis field will replace the functionality of the dataSource field and as such\nif both fields are non-empty, they must have the same value. For backwards\ncompatibility, when namespace isn\u0026rsquo;t specified in dataSourceRef,\nboth fields (dataSource and dataSourceRef) will be set to the same\nvalue automatically if one of them is empty and the other is non-empty.\nWhen namespace is specified in dataSourceRef,\ndataSource isn\u0026rsquo;t set to the same value and must be empty.\nThere are three important differences between dataSource and dataSourceRef:\n* While dataSource only allows two specific types of objects, dataSourceRef\nallows any non-core object, as well as PersistentVolumeClaim objects.\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\npreserves all values, and generates an error if a disallowed value is\nspecified.\n* While dataSource only allows local objects, dataSourceRef allows objects\nin any namespaces.\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeAttributesClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\nIf specified, the CSI driver will create or update the volume with the attributes defined\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\nit can be changed after the claim is created. An empty string or nil value indicates that no\nVolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\nthis field can be reset to its previous value (including nil) to cancel the modification.\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\nexists.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\"\u003ehttps://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#persistentvolumeclaimstatus-v1-core\"\u003e\nKubernetes core/v1.PersistentVolumeClaimStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus is deprecated: this field is never set.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.EnableFeature\"\u003eEnableFeature\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Endpoint\"\u003eEndpoint\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eEndpoint defines an endpoint serving Prometheus metrics to be scraped by\nPrometheus.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the name of the Service port which this endpoint refers to\n(e.g. \u003ccode\u003e.spec.ports[].name\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eIt takes precedence over \u003ccode\u003etargetPort\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetPort\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString\"\u003e\nk8s.io/apimachinery/pkg/util/intstr.IntOrString\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetPort defines the name or number of a container port on Pods selected\nby the Service.\nIf a name, it matches against \u003ccode\u003e.spec.containers[].ports[].name\u003c/code\u003e of the Pods.\nIf a number, it matches against \u003ccode\u003e.spec.containers[].ports[].containerPort\u003c/code\u003e of the Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epath\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epath defines the HTTP path from which to scrape for metrics.\u003c/p\u003e\n\u003cp\u003eIf empty, Prometheus uses the default value (e.g. \u003ccode\u003e/metrics\u003c/code\u003e).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Scheme\"\u003e\nScheme\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escheme defines the HTTP scheme to use when scraping the metrics.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eparams\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string][]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eparams define optional HTTP URL parameters.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einterval at which Prometheus scrapes the metrics from the target.\u003c/p\u003e\n\u003cp\u003eIf empty, Prometheus uses the global scrape interval.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the timeout after which Prometheus considers the scrape to be failed.\u003c/p\u003e\n\u003cp\u003eIf empty, Prometheus uses the global scrape timeout unless it is less\nthan the target\u0026rsquo;s scrape interval value in which the latter is used.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehonorLabels defines when true the metric\u0026rsquo;s labels when they collide\nwith the target\u0026rsquo;s labels.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehonorTimestamps defines whether Prometheus preserves the timestamps\nwhen exposed by the target.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etrackTimestampsStaleness\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etrackTimestampsStaleness defines whether Prometheus tracks staleness of\nthe metrics that have an explicit timestamp present in scraped data.\nHas no effect if \u003ccode\u003ehonorTimestamps\u003c/code\u003e is false.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.48.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricRelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricRelabelings defines the relabeling rules to apply to the\nsamples before ingestion.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erelabelings defines the relabeling rules to apply the target\u0026rsquo;s\nmetadata labels.\u003c/p\u003e\n\u003cp\u003eThe Operator automatically adds relabelings for a few standard Kubernetes fields.\u003c/p\u003e\n\u003cp\u003eThe original scrape job\u0026rsquo;
130s name is available via the \u003ccode\u003e__tmp_prometheus_job_name\u003c/code\u003e label.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efilterRunning\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efilterRunning when true, the pods which are not running (e.g. either in Failed or\nSucceeded state) are dropped during the target discovery.\u003c/p\u003e\n\u003cp\u003eIf unset, the filtering is enabled.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenFile defines the file to read bearer token for scraping the target.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines TLS configuration used by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Exemplars\"\u003eExemplars\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxSize\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxSize defines the maximum number of exemplars stored in memory for all series.\u003c/p\u003e\n\u003cp\u003eexemplar-storage itself must be enabled using the \u003ccode\u003espec.enableFeature\u003c/code\u003e\noption for exemplars to be scraped in the first place.\u003c/p\u003e\n\u003cp\u003eIf not set, Prometheus uses its default value. A value of zero or less\nthan zero disables the storage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GRPCServerTLSConfig\"\u003eGRPCServerTLSConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosSpec\"\u003eThanosSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGRPCServerTLSConfig defines TLS configuration for a gRP
130C server.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eca\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eca defines the Certificate authority used when verifying server certificates.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecert\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecert defines the Client certificate to present when doing client-authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeySecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeySecret defines the Secret containing the client key file for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserverName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserverName is used to verify the hostname for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einsecureSkipVerify\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einsecureSkipVerify defines how to disable target certificate validation.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSVersion\"\u003e\nTLSVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminVersion defines the minimum acceptable TLS version.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.35.0 or Thanos \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSVersion\"\u003e\nTLSVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxVersion defines the maximum acceptable TLS version.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.41.0 or Thanos \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecaFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecaFile defines the path to the CA cert in the Prometheus container to use for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecertFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecertFile defines the path to the client cert file in the Prometheus container for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeyFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeyFile defines the path to the client key file in the Prometheus container for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecipherSuites\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecipherSuites defines the list of supported cipher suites for TLS\nversions up to TLS 1.2.\u003c/p\u003e\n\u003cp\u003eIf not defined, the Go default cipher suites are used.\nAvailable cipher suites are documented in the Go documentation:\n\u003ca href=\"https://golang.org/pkg/crypto/tls/#pkg-constants\"\u003ehttps://golang.org/pkg/crypto/tls/#pkg-constants\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= v0.42.0. Note that the operator doesn\u0026rsquo;t verify if\nthe Thanos version supports the provided values.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecurves\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecurves defines the list of preferred elliptic curves for\nTLS handshakes.\u003c/p\u003e\n\u003cp\u003eIf not defined, the Go default curves are used.\nAvailable curves are documented in the Go documentation:\n\u003ca href=\"https://golang.org/pkg/crypto/tls/#CurveID\"\u003ehttps://golang.org/pkg/crypto/tls/#CurveID\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= v0.42.0. Note that the operator doesn\u0026rsquo;t verify if\nthe Thanos version supports the provided values.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GlobalJiraConfig\"\u003eGlobalJiraConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGlobalJiraConfig configures global Jira parameters.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the default Jira API URL.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GlobalMattermost
130Config\"\u003eGlobalMattermostConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGlobalMattermostConfig configures global Mattermost parameters.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebhookURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewebhookURL defines the default Mattermost Webhook URL.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GlobalRocketChatConfig\"\u003eGlobalRocketChatConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGlobalRocketChatConfig configures global Rocket Chat parameters.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the default Rocket Chat API URL.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoken defines the default Rocket Chat token.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etokenID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etokenID defines the default Rocket Chat Token ID.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GlobalSMTPConfig\"\u003eGlobalSMTPConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGlobalSMTPConfig configures global SMTP parameters.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#configuration-file\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#configuration-file\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efrom\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efrom defines the default SMTP From header field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esmartHost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostPort\"\u003e\nHostPort\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esmartHost defines the default SMTP smarthost used for sending emails.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehello\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehello defines the default hostname to identify to the SMTP server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthUsername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthUsername represents SMTP Auth using CRAM-MD5, LOGIN and PLAIN. If empty, Alertmanager doesn\u0026rsquo;t authenticate to the SMTP server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthPassword\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthPassword represents SMTP Auth using LOGIN and PLAIN.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthIdentity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthIdentity represents SMTP Auth using PLAIN\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthSecret represents SMTP Auth using CRAM-MD5.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erequireTLS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erequireTLS defines the default SMTP TLS requirement.\nNote that Go does not support unencrypted connections to remote SMTP endpoints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the default TLS configuration for SMTP receivers\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eforceImplicitTLS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eforceImplicitTLS defines whether to force use of implicit TLS (direct TLS connection) for better security.\ntrue: force use of implicit TLS (direct TLS connection on any port)\nfalse: force disable implicit TLS (use explicit TLS/STARTTLS if required)\nnil (default): auto-detect based on port (465=implicit, other=explicit) for backward compatibility\nIt requires Alertmanager \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GlobalTelegramConfig\"\u003eGlobalTelegramConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGlobalTelegramConfig configures global Telegram parameters.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines he default Telegram API URL.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= v0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GlobalVictorOpsConfig\"\u003eGlobalVictorOpsConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGlobalVictorOpsConfig configures global VictorOps parameters.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the default VictorOps API URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiKey defines the default VictorOps API Key.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GlobalWeChatConfig\"\u003eGlobalWeChatConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines he default WeChat API URL.\nThe default value is \u0026ldquo;\u003ca href=\"https://qyapi.weixin.qq.com/cgi-bin/\u0026quot;\"\u003ehttps://qyapi.weixin.qq.com/cgi-bin/\u0026rdquo;\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiSecret defines the default WeChat API Secret.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiCorpID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiCorpID defines the default WeChat API Corporate ID.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GlobalWebexConfig\"\u003eGlobalWebexConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGlobalWebexConfig configures global Webex parameters.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#configuration-file\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#configuration-file\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the is the default Webex API URL.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= v0.25.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.GoDuration\"\u003eGoDuration\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGoDuration is a valid time duration that can be parsed by Go\u0026rsquo;s time.ParseDuration() function.\nSupported units: h, m, s, ms\nExamples: \u003ccode\u003e45ms\u003c/code\u003e, \u003ccode\u003e30s\u003c/code\u003e, \u003ccode\u003e1m\u003c/code\u003e, \u003ccode\u003e1h20m15s\u003c/code\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.HTTPConfig\"\u003eHTTPConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithProxy\"\u003eHTTPConfigWithProxy\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHTTPConfig defines the HTTP configuration + TLS configuration (only from\nsecret/configmap references).\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Basic
130Auth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration used by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.HTTPConfigWithProxy\"\u003eHTTPConfigWithProxy\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PodMetricsEndpoint\"\u003ePodMetricsEndpoint\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHTTPConfigWithProxy defines the configuration for the HTTP client with proxy\nconfiguration. It is used for PodMonitor endpoints and Probes.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration used by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.HTTPConfigWithProxyAndTLSFiles\"\u003eHTTPConfigWithProxyAndTLSFiles\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Endpoint\"\u003eEndpoint\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHTTPConfigWithProxyAndTLSFiles defines the configuration for the HTTP client\nwith proxy configuration and TLS configuration. It is used for\nServiceMonitor endpoints.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines TLS configuration used by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003
130e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.HTTPConfigWithTLSFiles\"\u003eHTTPConfigWithTLSFiles\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithProxyAndTLSFiles\"\u003eHTTPConfigWithProxyAndTLSFiles\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHTTPConfigWithTLSFiles defines HTTP configuration + TLS configuration\n(from secret/configmap references as well as files).\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines TLS configuration used by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.HTTPConfigWithoutTLS\"\u003eHTTPConfigWithoutTLS\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithTLSFiles\"\u003eHTTPConfigWithTLSFiles\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHTTPConfigWithoutTLS defines the configuration for the HTTP client.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.HostAlias\"\u003eHostAlias\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\npod\u0026rsquo;s hosts file.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eip\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eip defines the IP address of the host file entry.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostnames\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ehostnames defines hostnames for the above IP address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.HostPort\"\u003eHostPort\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.GlobalSMTPConfig\"\u003eGlobalSMTPConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHostPort represents a \u0026ldquo;host:port\u0026rdquo; network address.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ehost defines the host\u0026rsquo;s address, it can be a DNS name or a literal IP address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eport defines the host\u0026rsquo;s port, it can be a literal port number or a port name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.LabelName\"\u003eLabelName\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003eRelabelConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eLabelName is a valid Prometheus label name.\nFor Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\nFor Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ManagedIdentity\"\u003eManagedIdentity\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AzureAD\"\u003eAzureAD\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eManagedIdentity defines the Azure User-assigned Managed
130identity.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientId defines the Azure User-assigned Managed identity.\u003c/p\u003e\n\u003cp\u003eFor Prometheus \u0026gt;= 3.5.0 and Thanos \u0026gt;= 0.40.0, this field is allowed to be empty to support system-assigned managed identities.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.MetadataConfig\"\u003eMetadataConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMetadataConfig configures the sending of series metadata to the remote storage.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esend defines whether metric metadata is sent to the remote storage or not.\u003c/p\u003e\n\u003cp\u003eThe setting is ignored when Remote Write message\u0026rsquo;s version 2.0 is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendInterval defines how frequently metric metadata is sent to the remote storage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxSamplesPerSend\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxSamplesPerSend defines the maximum number of metadata samples per send.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.29.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.NameEscapingSchemeOptions\"\u003eNameEscapingSchemeOptions\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSpecifies the character escaping scheme that will be applied when scraping\nfor metric and label names that do not conform to the legacy Prometheus\ncharacter set.\u003c/p\u003e\n\u003cp\u003eSupported values are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAllowUTF8\u003c/code\u003e, full UTF-8 support, no escaping needed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUnderscores\u003c/code\u003e, legacy-invalid characters are escaped to underscores.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDots\u003c/code\u003e, dot characters are escaped to \u003ccode\u003e_dot_\u003c/code\u003e, underscores to \u003ccode\u003e__\u003c/code\u003e, and\nall other legacy-invalid characters to underscores.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eValues\u003c/code\u003e, the string is prefixed by \u003ccode\u003eU__\u003c/code\u003e and all invalid characters are\nescaped to their unicode value, surrounded by underscores.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;AllowUTF8\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Dots\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Underscores\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Values\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.NameValidationSchemeOptions\"\u003eNameValidationSchemeOptions\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSpecifies the validation scheme for metric and label names.\u003c/p\u003e\n\u003cp\u003eSupported values are:\n- \u003ccode\u003eUTF8NameValidationScheme\u003c/code\u003e for UTF-8 support.\n- \u003ccode\u003eLegacyNameValidationScheme\u003c/code\u003e for letters, numbers, colons, and underscores.\u003c/p\u003e\n\u003cp\u003eNote that \u003ccode\u003eLegacyNameValidationScheme\u003c/code\u003e cannot be used along with the\nOpenTelemetry \u003ccode\u003eNoUTF8EscapingWithSuffixes\u003c/code\u003e translation strategy (if\nenabled).\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Legacy\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;UTF8\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.NamespaceSelector\"\u003eNamespaceSelector\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PodMonitorSpec\"\u003ePodMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeTargetIngress\"\u003eProbeTargetIngress\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eNamespaceSelector is a selector for selecting either all namespaces or a\nlist of namespaces.\nIf \u003ccode\u003eany\u003c/code\u003e is true, it takes precedence over \u003ccode\u003ematchNames\u003c/code\u003e.\nIf \u003ccode\u003ematchNames\u003c/code\u003e is empty and \u003ccode\u003eany\u003c/code\u003e is false, it means that the objects are\nselected from the current namespace.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eany\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eany defines the boolean describing whether all namespaces are selected in contrast to a\nlist restricting them.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ematchNames\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ematchNames defines the list of namespace names to select from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.NativeHistogramConfig\"\u003eNativeHistogramConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PodMonitorSpec\"\u003ePodMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eNativeHistogramConfig extends the native histogram configuration settings.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.NonEmptyDuration\"\u003eNonEmptyDuration\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Rule\"\u003eRule\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.Route\"\u003eRoute\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.Route\"\u003eRoute\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eNonEmptyDuration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function.\nCompared to Duration, NonEmptyDuration enforces a minimum length of 1.\nSupported units: y, w, d, h, m, s, ms\nExamples: \u003ccode\u003e30s\u003c/code\u003e, \u003ccode\u003e1m\u003c/code\u003e, \u003ccode\u003e1h20m15s\u003c/code\u003e, \u003ccode\u003e15d\u003c/code\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.OAuth2\"\u003eOAuth2\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithoutTLS\"\u003eHTTPConfigWithoutTLS\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003eRemoteReadSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003eAzureSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003eConsulSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DigitalOceanSDConfig\"\u003eDigitalOceanSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003eDockerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003eEurekaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003eHTTPSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003eHetznerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.IonosSDConfig\"\u003eIonosSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003eKumaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003eLightSailSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LinodeSDConfig\"\u003eLinodeSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003eNomadSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003ePuppetDBSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOAuth2 configures OAuth2 settings.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eclientId defines a key of a Secret or
130ConfigMap containing the\nOAuth2 client\u0026rsquo;s ID.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eclientSecret defines a key of a Secret containing the OAuth2\nclient\u0026rsquo;s secret.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etokenUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etokenUrl defines the URL to fetch the token from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escopes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003escopes defines the OAuth2 scopes used for the token request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eendpointParams\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eendpointParams configures the HTTP parameters to append to the token\nURL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\nIt requires Prometheus \u0026gt;= v2.43.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.OTLPConfig\"\u003eOTLPConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOTLPConfig is the configuration for writing to the OTLP endpoint.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epromoteAllResourceAttributes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epromoteAllResourceAttributes promotes all resource attributes to metric labels except the ones defined in \u003ccode\u003eignoreResourceAttributes\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCannot be true when \u003ccode\u003epromoteResourceAttributes\u003c/code\u003e is defined.\nIt requires Prometheus \u0026gt;= v3.5.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eignoreResourceAttributes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eignoreResourceAttributes defines the list of OpenTelemetry resource attributes to ignore when \u003ccode\u003epromoteAllResourceAttributes\u003c/code\u003e is true.\u003c/p\u003e\n\u003cp\u003eIt requires \u003ccode\u003epromoteAllResourceAttributes\u003c/code\u003e to be true.\nIt requires Prometheus \u0026gt;= v3.5.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epromoteResourceAttributes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epromoteResourceAttributes defines the list of OpenTelemetry Attributes that should be promoted to metric labels, defaults to none.\nCannot be defined when \u003ccode\u003epromoteAllResourceAttributes\u003c/code\u003e is true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etranslationStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TranslationStrategyOption\"\u003e\nTranslationStrategyOption\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etranslationStrategy defines how the OTLP receiver endpoint translates the incoming metrics.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepIdentifyingResourceAttributes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepIdentifyingResourceAttributes enables adding \u003ccode\u003eservice.name\u003c/code\u003e, \u003ccode\u003eservice.namespace\u003c/code\u003e and \u003ccode\u003eservice.instance.id\u003c/code\u003e\nresource attributes to the \u003ccode\u003etarget_info\u003c/code\u003e metric, on top of converting them into the \u003ccode\u003einstance\u003c/code\u003e and \u003ccode\u003ejob\u003c/code\u003e labels.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.1.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertHistogramsToNHCB defines optional translation of OTLP explicit bucket histograms into native histograms with custom buckets.\nIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epromoteScopeMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epromoteScopeMetadata controls whether to promote OpenTelemetry scope metadata (i.e. name, version, schema URL, and attributes) to metric labels.\nAs per the OpenTelemetry specification, the aforementioned scope metadata should be identifying, i.e. made into metric labels.\nIt requires Prometheus \u0026gt;= v3.6.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameUnderscoreSanitization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameUnderscoreSanitization controls whether to enable prepending of \u0026lsquo;key\u003cem\u003e\u0026rsquo; to labels starting with \u0026lsquo;\u003c/em\u003e\u0026rsquo;.\nReserved labels starting with \u0026lsquo;__\u0026rsquo; are not modified.\nThis is only relevant when translation_strategy uses underscore escaping (e.g., \u0026ldquo;UnderscoreEscapingWithSuffixes\u0026rdquo; or \u0026ldquo;UnderscoreEscapingWithoutSuffixes\u0026rdquo;).\u003c/p\u003e\n\u003cp\u003eNotice: This one has no impact if \u003ccode\u003enameEscapingScheme\u003c/code\u003e is \u003ccode\u003eAllowUTF8\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNamePreserveMultipleUnderscores\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNamePreserveMultipleUnderscores enables preserving of multiple consecutive underscores in label names when translation_strategy uses\nunderscore escaping.\nWhen true (default), multiple consecutive underscores are preserved during label name sanitization.\u003c/p\u003e\n\u003cp\u003eNotice: This one has no impact if \u003ccode\u003enameEscapingScheme\u003c/code\u003e is \u003ccode\u003eAllowUTF8\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ObjectReference\"\u003eObjectReference\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroup\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroup of the referent. When not specified, it defaults to \u003ccode\u003emonitoring.coreos.com\u003c/code\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresource\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eresource of the referent.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003enamespace of the referent.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/
130overview/working-with-objects/namespaces/\"\u003ehttps://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename of the referent. When not set, all resources in the namespace are matched.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PodDNSConfig\"\u003ePodDNSConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePodDNSConfig defines the DNS parameters of a pod in addition to\nthose generated from DNSPolicy.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameservers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameservers defines the list of DNS name server IP addresses.\nThis will be appended to the base nameservers generated from DNSPolicy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esearches\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esearches defines the list of DNS search domains for host-name lookup.\nThis will be appended to the base search paths generated from DNSPolicy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoptions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfigOption\"\u003e\n[]PodDNSConfigOption\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoptions defines the list of DNS resolver options.\nThis will be merged with the base options generated from DNSPolicy.\nResolution options given in Options\nwill override those that appear in the base DNSPolicy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PodDNSConfigOption\"\u003ePodDNSConfigOption\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003ePodDNSConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePodDNSConfigOption defines DNS resolver options of a pod.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename is required and must be unique.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalue is optional.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PodManagementPolicyType\"\u003ePodManagementPolicyType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OrderedReady\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eOrderedReadyPodManagement will create pods in strictly increasing order on\nscale up and strictly decreasing order on scale down, progressing only when\nthe previous pod is ready or terminated. At most one pod will be changed\nat any time.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Parallel\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eParallelPodManagement will create and delete pods as soon as the stateful set\nreplica count is changed, and will not wait for pods to be ready or complete\ntermination.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PodMetricsEndpoint\"\u003ePodMetricsEndpoint\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PodMonitorSpec\"\u003ePodMonitorSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePodMetricsEndpoint defines an endpoint serving Prometheus metrics to be scraped by\nPrometheus.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the \u003ccode\u003ePod\u003c/code\u003e port name which exposes the endpoint.\u003c/p\u003e\n\u003cp\u003eIf the pod doesn\u0026rsquo;t expose a port with the same name, it will result\nin no targets being discovered.\u003c/p\u003e\n\u003cp\u003eIf a \u003ccode\u003ePod\u003c/code\u003e has multiple \u003ccode\u003ePort\u003c/code\u003es with the same name (which is not\nrecommended), one target instance per unique port number will be\ngenerated.\u003c/p\u003e\n\u003cp\u003eIt takes precedence over the \u003ccode\u003eportNumber\u003c/code\u003e and \u003ccode\u003etargetPort\u003c/code\u003e fields.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportNumber\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportNumber defines the \u003ccode\u003ePod\u003c/code\u003e port number which exposes the endpoint.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ePod\u003c/code\u003e must declare the specified \u003ccode\u003ePort\u003c/code\u003e in its spec or the\ntarget will be dropped by Prometheus.\u003c/p\u003e\n\u003cp\u003eThis cannot be used to enable scraping of an undeclared port.\nTo scrape targets on a port which isn\u0026rsquo;t exposed, you need to use\nrelabeling to override the \u003ccode\u003e__address__\u003c/code\u003e label (but beware of\nduplicate targets if the \u003ccode\u003ePod\u003c/code\u003e has other declared ports).\u003c/p\u003e\n\u003cp\u003eIn practice Prometheus will select targets for which the\nmatches the target\u0026rsquo;s __meta_kubernetes_pod_container_port_number.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetPort\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString\"\u003e\nk8s.io/apimachinery/pkg/util/intstr.IntOrString\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetPort defines the name or number of the target port of the \u003ccode\u003ePod\u003c/code\u003e object behind the Service, the\nport must be specified with container port property.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u0026lsquo;port\u0026rsquo; or \u0026lsquo;portNumber\u0026rsquo; instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epath\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epath defines the HTTP path from which to scrape for metrics.\u003c/p\u003e\n\u003cp\u003eIf empty, Prometheus uses the default value (e.g. \u003ccode\u003e/metrics\u003c/code\u003e).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Scheme\"\u003e\nScheme\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escheme defines the HTTP scheme to use for scraping.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eparams\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string][]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eparams define optional HTTP URL parameters.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einterval at which Prometheus scrapes the metrics from the target.\u003c/p\u003e\n\u003cp\u003eIf empty, Prometheus uses the global scrape interval.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the timeout after which Prometheus considers the scrape to be failed.\u003c/p\u003e\n\u003cp\u003eIf empty, Prometheus uses the global scrape timeout unless it is less\nthan the target\u0026rsquo;s scrape interval value in which the latter is used.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehonorLabels when true preserves the metric\u0026rsquo;s labels when they collide\nwith the target\u0026rsquo;s labels.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehonorTimestamps defines whether Prometheus preserves the timestamps\nwhen exposed by the target.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etrackTimestampsStaleness\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etrackTimestampsStaleness defines whether Prometheus tracks staleness of\nthe metrics that have an explicit timestamp present in scraped data.\nHas no effect if \u003ccode\u003ehonorTimestamps\u003c/code\u003e is false.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.48.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricRelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricRelabelings defines the relabeling rules to apply to the\nsamples before ingestion.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erelabelings defines the relabeling rules to apply the target\u0026rsquo;s\nmetadata labels.\u003c/p\u003e\n\u003cp\u003eThe Operator automatically adds relabelings for a few standard Kubernetes fields.\u003c/p\u003e\n\u003cp\u003eThe original scrape job\u0026rsquo;
130s name is available via the \u003ccode\u003e__tmp_prometheus_job_name\u003c/code\u003e label.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efilterRunning\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efilterRunning when true, the pods which are not running (e.g. either in Failed or\nSucceeded state) are dropped during the target discovery.\u003c/p\u003e\n\u003cp\u003eIf unset, the filtering is enabled.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration used by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PodMonitorSpec\"\u003ePodMonitorSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PodMonitor\"\u003ePodMonitor\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePodMonitorSpec contains specification parameters for a PodMonitor.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejobLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejobLabel defines the label to use to retrieve the job name from.\n\u003ccode\u003ejobLabel\u003c/code\u003e selects the label from the associated Kubernetes \u003ccode\u003ePod\u003c/code\u003e\nobject which will be used as the \u003ccode\u003ejob\u003c/code\u003e label for all metrics.\u003c/p\u003e\n\u003cp\u003eFor example if \u003ccode\u003ejobLabel\u003c/code\u003e is set to \u003ccode\u003efoo\u003c/code\u003e and the Kubernetes \u003ccode\u003ePod\u003c/code\u003e\nobject is labeled with \u003ccode\u003efoo: bar\u003c/code\u003e, then Prometheus adds the \u003ccode\u003ejob=\u0026quot;bar\u0026quot;\u003c/code\u003e\nlabel to all ingested metrics.\u003c/p\u003e\n\u003cp\u003eIf the value of this field is empty, the \u003ccode\u003ejob\u003c/code\u003e label of the metrics\ndefaults to the namespace and name of the PodMonitor object (e.g. \u003ccode\u003e\u0026lt;namespace\u0026gt;/\u0026lt;name\u0026gt;\u003c/code\u003e).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels defines the labels which are transferred from the\nassociated Kubernetes \u003ccode\u003ePod\u003c/code\u003e object onto the ingested metrics.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetricsEndpoints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodMetricsEndpoint\"\u003e\n[]PodMetricsEndpoint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetricsEndpoints defines how to scrape metrics from the selected pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eselector defines the label selector to select the Kubernetes \u003ccode\u003ePod\u003c/code\u003e objects to scrape metrics from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselectorMechanism\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SelectorMechanism\"\u003e\nSelectorMechanism\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselectorMechanism defines the mechanism used to select the endpoints to scrape.\nBy default, the selection process relies on relabel configurations to filter the discovered targets.\nAlternatively, you can opt in for role selectors, which may offer better efficiency in large cluster
130s.\nWhich strategy is best for your use case needs to be carefully evaluated.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.17.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NamespaceSelector\"\u003e\nNamespaceSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespaceSelector defines in which namespace(s) Prometheus should discover the pods.\nBy default, the pods are discovered in the same namespace as the \u003ccode\u003ePodMonitor\u003c/code\u003e object but it is possible to select pods across different/all namespaces.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines a per-scrape limit on the number of scraped samples\nthat will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will\nbe accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\
130nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eattachMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AttachMetadata\"\u003e\nAttachMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eattachMetadata defines additional metadata which is added to the\ndiscovered targets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.35.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClass defines the scrape class to apply.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit when defined specifies a job level limit on the size\nof uncompressed response body that will be accepted by Prometheus.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ProbeParam\"\u003eProbeParam\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eProbeParam defines specification of extra parameters for a Probe.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename defines the parameter name\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalues\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalues defines the parameter values\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Probe\"\u003eProbe\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eProbeSpec contains specification parameters for a Probe.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejobName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejobName assigned to scraped metrics by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprober\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProberSpec\"\u003e\nProberSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprober defines the specification for the prober to use for probing targets.\nThe prober.URL parameter is required. Targets cannot be probed if left empty.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emodule\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emodule to use for probing specifying how to probe the target.\nExample module configuring in the blackbox exporter:\n\u003ca href=\"https://github.com/prometheus/blackbox_exporter/blob/master/example.yml\"\u003ehttps://github.com/prometheus/blackbox_exporter/blob/master/example.yml\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProbeTargets\"\u003e\nProbeTargets\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargets defines a set of static or dynamically discovered targets to probe.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einterval at which targets are probed using the configured prober.\nIf not specified Prometheus\u0026rsquo; global scrape interval is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the timeout for scraping metrics from the Prometheus exporter.\nIf not specified, the Prometheus global scrape timeout is used.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricRelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricRelabelings defines the RelabelConfig to apply to samples before ingestion.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization section for this endpoint\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\
130nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClass defines the scrape class to apply.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eparams\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProbeParam\"\u003e\n[]ProbeParam\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eparams defines the list of HTTP query parameters for the scrape.\nPlease note that the \u003ccode\u003e.spec.module\u003c/code\u003e field takes precedence over the \u003ccode\u003emodule\u003c/code\u003e parameter from this list when both are defined.\nThe module name must be added using Module under ProbeSpec.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization configures the Authorization header credentials used by\nthe client.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the Basic Authentication credentials used by the\nclient.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebearerTokenSecret\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 settings used by the client.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003ebearerTokenSecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines a key of a Secret containing the bearer token\nused by the client for authentication. The secret needs to be in the\nsame namespace as the custom resource and readable by the Prometheus\nOperator.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eDeprecated: use \u003ccode\u003eauthorization\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether the client should follow HTTP 3xx\nredirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration used by the client.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ProbeTargetIngress\"\u003eProbeTargetIngress\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ProbeTargets\"\u003eProbeTargets\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eProbeTargetIngress defines the set of Ingress objects considered for probing.\nThe operator configures a target for each host/path combination of each ingress object.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselector to select the Ingress objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NamespaceSelector\"\u003e\nNamespaceSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespaceSelector defines from which namespaces to select Ingress objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erelabelingConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erelabelingConfigs to apply to the label set of the target before it gets\nscraped.\nThe original ingress address is available via the\n\u003ccode\u003e__tmp_prometheus_ingress_address\u003c/code\u003e label. It can be used to customize the\nprobed URL.\nThe original scrape job\u0026rsquo;
130s name is available via the \u003ccode\u003e__tmp_prometheus_job_name\u003c/code\u003e label.\nMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ProbeTargetStaticConfig\"\u003eProbeTargetStaticConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ProbeTargets\"\u003eProbeTargets\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eProbeTargetStaticConfig defines the set of static targets considered for probing.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatic\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatic defines the list of hosts to probe.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabels defines all labels assigned to all metrics scraped from the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erelabelingConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erelabelingConfigs defines relabelings to be apply to the label set of the targets before it gets\nscraped.\nMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ProbeTargets\"\u003eProbeTargets\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eProbeTargets defines how to discover the probed targets.\nOne of the \u003ccode\u003estaticConfig\u003c/code\u003e or \u003ccode\u003eingress\u003c/code\u003e must be defined.\nIf both are defined, \u003ccode\u003estaticConfig\u003c/code\u003e takes precedence.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estaticConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProbeTargetStaticConfig\"\u003e\nProbeTargetStaticConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estaticConfig defines the static list of targets to probe and the\nrelabeling configuration.\nIf \u003ccode\u003eingress\u003c/code\u003e is also defined, \u003ccode\u003estaticConfig\u003c/code\u003e takes precedence.\nMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config\u003c/a\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eingress\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ProbeTargetIngress\"\u003e\nProbeTargetIngress\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eingress defines the Ingress objects to probe and the relabeling\
130nconfiguration.\nIf \u003ccode\u003estaticConfig\u003c/code\u003e is also defined, \u003ccode\u003estaticConfig\u003c/code\u003e takes precedence.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ProberSpec\"\u003eProberSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eProberSpec contains specification parameters for the Prober used for probing.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eurl defines the address of the prober.\u003c/p\u003e\n\u003cp\u003eUnlike what the name indicates, the value should be in the form of\n\u003ccode\u003eaddress:port\u003c/code\u003e without any scheme which should be specified in the\n\u003ccode\u003escheme\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Scheme\"\u003e\nScheme\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escheme defines the HTTP scheme to use when scraping the prober.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epath\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epath to collect metrics from.\nDefaults to \u003ccode\u003e/probe\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PrometheusRuleExcludeConfig\"\u003ePrometheusRuleExcludeConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePrometheusRuleExcludeConfig enables users to configure excluded\nPrometheusRule names and their namespaces to be ignored while enforcing\nnamespace label for alerts and metrics.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleNamespace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eruleNamespace defines the namespace of the excluded PrometheusRule object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eruleName defines the name of the excluded PrometheusRule object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PrometheusRuleSpec\"\u003ePrometheusRuleSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusRule\"\u003ePrometheusRule\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePrometheusRuleSpec contains specification parameters for a Rule.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroups\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RuleGroup\"\u003e\n[]RuleGroup\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroups defines the content of Prometheus rule file\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Prometheus\"\u003ePrometheus\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePrometheusSpec is a specification of the desired behavior of the Prometheus cluster. More info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the Prometheus pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version.\n* \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeSelector defines the probes to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label\nselector matches all namespaces. A null label selector matches the\ncurrent namespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the ne
130xt major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion of Prometheus being deployed. The operator uses this information\nto generate the Prometheus StatefulSet + configuration files.\u003c/p\u003e\n\u003cp\u003eIf not specified, the operator assumes the latest upstream version of\nPrometheus available at the time when the version of the operator was\nreleased.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines when a Prometheus deployment is paused, no actions except for deletion\nwill be performed on the underlying objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage defines the container image name for Prometheus. If specified, it takes precedence\nover the \u003ccode\u003espec.baseImage\u003c/code\u003e, \u003ccode\u003espec.tag\u003c/code\u003e and \u003ccode\u003espec.sha\u003c/code\u003e fields.\u003c/p\u003e\n\u003cp\u003eSpecifying \u003ccode\u003espec.version\u003c/code\u003e is still necessary to ensure the Prometheus\nOperator knows which version of Prometheus is being configured.\u003c/p\u003e\n\u003cp\u003eIf neither \u003ccode\u003espec.image\u003c/code\u003e nor \u003ccode\u003espec.baseImage\u003c/code\u003e are defined, the operator\nwill use the latest upstream version of Prometheus available at the time\nwhen the operator was released.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets defines an optional list of references to Secrets in the same namespace\nto use for pulling images from registries.\nSee \u003ca href=\"http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\"\u003ehttp://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the number of replicas of each shard to deploy for a Prometheus deployment.\n\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\ncreated.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshards\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshards defines the number of shards to distribute the scraped targets onto.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\nbeing created.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator assumes only one shard.\u003c/p\u003e\n\u003cp\u003eNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. 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.\u003c/p\u003e\n\u003cp\u003eBy default, the sharding of targets is performed on:\n* The \u003ccode\u003e__address__\u
130003c/code\u003e target\u0026rsquo;s metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The \u003ccode\u003e__param_target__\u003c/code\u003e label for Probe resources.\u003c/p\u003e\n\u003cp\u003eUsers can define their own sharding implementation by setting the\n\u003ccode\u003e__tmp_hash\u003c/code\u003e label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\u003c/p\u003e\n\u003cp\u003eYou can also disable sharding on a specific target by setting the\n\u003ccode\u003e__tmp_disable_sharding\u003c/code\u003e label with relabeling configuration. When\nthe label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardingStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardingStrategy\"\u003e\nShardingStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes\ntargets based on a hash of the target address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicaExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicaExternalLabelName defines the name of Prometheus external label used to denote the replica name.\nThe external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to the\nempty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance\nname. The external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to\nthe empty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for Log level for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeInterval defines interval between consecutive scrapes.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the number of seconds to wait until a scrape request times out.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheusText1.0.0\u003c/code\u003e requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalLabels defines the labels to add to any time series or alerts when communicating with\nexternal systems (federation, remote storage, Alertmanager).\nLabels defined by \u003ccode\u003espec.replicaExternalLabelName\u003c/code\u003e and\n\u003ccode\u003espec.prometheusExternalLabelName\u003c/code\u003e take precedence over this list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableRemoteWriteReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote\nwrite protocol.\u003c/p\u003e\n\u003cp\u003eWARNING: This is not considered an efficie
130nt way of ingesting samples.\nUse it with caution for specific low-volume use cases.\nIt is not suitable for replacing the ingestion via scraping and turning\nPrometheus into a push-based metrics collection system.\nFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\"\u003ehttps://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.33.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableOTLPReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\u003c/p\u003e\n\u003cp\u003eNote that the OTLP receiver endpoint is automatically enabled if \u003ccode\u003e.spec.otlpConfig\u003c/code\u003e is defined.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWriteReceiverMessageVersions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteMessageVersion\"\u003e\n[]RemoteWriteMessageVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the\nremote writes.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EnableFeature\"\u003e\n[]EnableFeature\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\u003c/p\u003e\n\u003cp\u003eEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/feature_flags/\"\u003ehttps://prometheus.io/docs/prometheus/latest/feature_flags/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalUrl defines the external URL under which the Prometheus service is externally\navailable. This is necessary to generate correct URLs (for instance if\nPrometheus is accessible behind an Ingress resource).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix defines the route prefix Prometheus registers HTTP handlers for.\u003c/p\u003e\n\u003cp\u003eThis is useful when using \u003ccode\u003espec.externalURL\u003c/code\u003e, and a proxy is rewriting\nHTTP routes of a request, and the actual ExternalURL is still true, but\nthe server serves requests under a different route prefix. For example\nfor use with \u003ccode\u003ekubectl proxy\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the storage used by Prometheus.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes allows the configuration of additional volumes on the output\nStatefulSet definition. Volumes specified will be appended to other\nvolumes that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts allows the configuration of additional VolumeMounts.\u003c/p\u003e\n\u003cp\u003eVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo;\ncontainer, that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epersistentVolumeClaimRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#statefulsetpersistentvolumeclaimretentionpolicy-v1-apps\"\u003e\nKubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epersistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\nThe default behavior is all PVCs are retained.\nThis is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\nIt requires enabling the StatefulSetAutoDeletePVC feature gate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusWebSpec\"\u003e\nPrometheusWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the configuration of the Prometheus web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines on which Nodes the Pods are scheduled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName is the name of the ServiceAccount to use to run the\nPrometheus Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eautomountServiceAccountToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eautomountServiceAccountToken defines whether a service account token should be automatically mounted
130in the pod.\nIf the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWarning:\u003c/strong\u003e be aware that by default, Prometheus requires the service account token for Kubernetes service discovery.\nIt is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecrets defines a list of Secrets in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach Secret is added to the StatefulSet definition as a volume named \u003ccode\u003esecret-\u0026lt;secret-name\u0026gt;\u003c/code\u003e.\nThe Secrets are mounted into /etc/prometheus/secrets/\u003csecret-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigMaps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigMaps defines a list of ConfigMaps in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach ConfigMap is added to the StatefulSet definition as a volume named \u003ccode\u003econfigmap-\u0026lt;configmap-name\u0026gt;\u003c/code\u003e.\nThe ConfigMaps are mounted into /etc/prometheus/configmaps/\u003cconfigmap-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines the Pods\u0026rsquo; tolerations if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TopologySpreadConstraint\"\u003e\n[]TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWrite\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003e\n[]RemoteWriteSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWrite defines the list of remote write configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eotlp\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OTLPConfig\"\u003e\nOTLPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eotlp defines the settings related to the OTLP receiver feature.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext holds pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal when true, the Prometheus server listens on the loopback address\ninstead of the Pod IP\u0026rsquo;s address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers described here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003eprometheus\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\n* \u003ccode\u003ethanos-sidecar\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting init
130Containers to the Pod definition. Those\ncan be used to e.g. fetch secrets for injection into the Prometheus\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\nInitContainers described here modify an operator generated init\ncontainers if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of init container name managed by the operator are:\n* \u003ccode\u003einit-config-reloader\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOverriding init containers which are managed by the operator require\ncareful testing, especially when upgrading to a new version of the\noperator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalScrapeConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalScrapeConfigs allows specifying a key of a Secret containing\nadditional Prometheus scrape configurations. Scrape configurations\nspecified are appended to the configurations generated by the Prometheus\nOperator. Job configurations specified must have the form as specified\nin the official Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\u003c/a\u003e.\nAs scrape configs are appended, the user is responsible to make sure it\nis valid. Note that using this feature may expose the possibility to\nbreak upgrades of Prometheus. It is advised to review Prometheus release\nnotes to ensure that no incompatible scrape configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiserverConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003e\nAPIServerConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiserverConfig allows specifying a host and auth methods to access the\nKuberntees API server.\nIf null, Prometheus is assumed to run inside of the cluster: it will\ndiscover the API servers automatically and use the Pod\u0026rsquo;s CA certificate\nand bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName assigned to the Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName used for the pods and governing service.\nDefault: \u0026ldquo;web\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003earbitraryFSAccessThroughSMs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ArbitraryFSAccessThroughSMsConfig\"\u003e\nArbitraryFSAccessThroughSMsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003earbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to\nreference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo;\ncontainer.\nWhen a ServiceMonitor\u0026rsquo;s endpoint specifies a \u003ccode\u003ebearerTokenFile\u003c/code\u003e value\n(e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a\nmalicious target can get access to the Prometheus service account\u0026rsquo;s\ntoken in the Prometheus\u0026rsquo; scrape request. Setting\n\u003ccode\u003espec.arbitraryFSAccessThroughSM\u003c/code\u003e to \u0026lsquo;true\u0026rsquo; would prevent the attack.\nUsers should instead provide the credentials using the\n\u003ccode\u003espec.bearerTokenSecret\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data\nto âexported_â for all targets created from ServiceMonitor, PodMonitor and\nScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies.\nIn practice,\u003ccode\u003eOverrideHonorLabels:true\u003c/code\u003e enforces \u003ccode\u003ehonorLabels:false\u003c/code\u003e\nfor all ServiceMonitor, PodMonitor and ScrapeConfig objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created\nfrom service and pod monitors.\nOtherwise the HonorTimestamps field of the service or pod monitor applies.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eignoreNamespaceSelectors\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eignoreNamespaceSelectors when true, \u003ccode\u003espec.namespaceSelector\u003c/code\u003e from all PodMonitor, ServiceMonitor\nand Probe objects will be ignored. They will only discover targets\nwithin the namespace of the PodMonitor, ServiceMonitor and Probe\nobject.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedNamespaceLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedNamespaceLabel when not empty, a label will be added to:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAll metrics scraped from \u
130003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e and \u003ccode\u003eScrapeConfig\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll metrics generated from recording rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll alerts generated from alerting rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll vector selectors of PromQL expressions defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe label will not added for objects referenced in \u003ccode\u003espec.excludedFromEnforcement\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe label\u0026rsquo;s name is this field\u0026rsquo;s value.\nThe label\u0026rsquo;s value is the namespace of the \u003ccode\u003eServiceMonitor\u003c/code\u003e,\n\u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e, \u003ccode\u003ePrometheusRule\u003c/code\u003e or \u003ccode\u003eScrapeConfig\u003c/code\u003e object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedSampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedSampleLimit when defined specifies a global limit on the number\nof scraped samples that will be accepted. This overrides any\n\u003ccode\u003espec.sampleLimit\u003c/code\u003e set by ServiceMonitor, PodMonitor, Probe objects\nunless \u003ccode\u003espec.sampleLimit\u003c/code\u003e is greater than zero and less than\n\u003ccode\u003espec.enforcedSampleLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to keep the overall number of\nsamples/series under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e and \u003ccode\u003esampleLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e is greater than the \u003ccode\u003esampleLimit\u003c/code\u003e, the \u003ccode\u003esampleLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedTargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedTargetLimit when defined specifies a global limit on the number\nof scraped targets. The value overrides any \u003ccode\u003espec.targetLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.targetLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedTargetLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to to keep the overall number of\ntargets under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e and \u003ccode\u003etargetLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e is greater than the \u003ccode\u003etargetLimit\u003c/code\u003e, the \u003ccode\u003etargetLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelLimit when defined specifies a global limit on the number\nof labels per sample. The value overrides any \u003ccode\u003espec.labelLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e and \u003ccode\u003elabelLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelLimit\u003c/code\u003e, the \u003ccode\u003elabelLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelNameLengthLimit when defined specifies a global limit on the length\nof labels name per sample. The value overrides any \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelNameLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e and \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelValueLengthLimit when not null defines a global limit on the length\nof labels value per sample. The value overrides any \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelValueLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e and \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedKeepDroppedTargets when defined specifies a global limit on the number of targets\ndropped by relabeling that will be kept in memory. The value overrides\nany \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedKeepDroppedTargets\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e and \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e is greater than the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e, the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e will be set to \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedBodySizeLimit when defined specifies a global limit on the size\nof uncompressed response body that will be accepted by Prometheus.\nTargets responding with a body larger than this many bytes will cause\nthe scrape to fail.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e and \u003ccode\u003ebodySizeLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e is greater than the \u003ccode\u003ebodySizeLimit\u003c/code\u003e, the \u003ccode\u003ebodySizeLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameValidationScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameValidationSchemeOptions\"\u003e\nNameValidationSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameValidationScheme defines the validation scheme for metric and label names.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameEscapingScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameEscapingSchemeOptions\"\u003e\nNameEscapingSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameEscapingScheme defines the character escaping scheme that will be requested when scraping\nfor metric and label names that do not conform to the legacy Prometheus\ncharacter set.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native\nhistogram with custom buckets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.5.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready\nwithout any of its container crashing for it to be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s\nhosts file if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003cp\u003eIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nPrometheus container which may cause issues if they are invalid or not supported\nby the given Prometheus version.\u003c/p\u003e\n\u003cp\u003eIn case of an argument conflict (e.g. an argument which is already set by the\noperator itself) or when providing an invali
130d argument, the reconciliation will\nfail and an error will be logged.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewalCompression\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewalCompression defines the compression of the write-ahead log (WAL) using Snappy.\u003c/p\u003e\n\u003cp\u003eWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\u003c/p\u003e\n\u003cp\u003eRequires Prometheus v2.11.0 and above.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexcludedFromEnforcement\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ObjectReference\"\u003e\n[]ObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexcludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects\nto be excluded from enforcing a namespace label of origin.\u003c/p\u003e\n\u003cp\u003eIt is only applicable if \u003ccode\u003espec.enforcedNamespaceLabel\u003c/code\u003e set to true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostNetwork\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostNetwork defines the host\u0026rsquo;s network namespace if true.\u003c/p\u003e\n\u003cp\u003eMake sure to understand the security implications if you want to enable\nit (\u003ca href=\"https://kubernetes.io/docs/concepts/configuration/overview/\"\u003ehttps://kubernetes.io/docs/concepts/configuration/overview/\u003c/a\u003e ).\u003c/p\u003e\n\u003cp\u003eWhen hostNetwork is enabled, this will set the DNS policy to\n\u003ccode\u003eClusterFirstWithHostNet\u003c/code\u003e automatically (unless \u003ccode\u003e.spec.DNSPolicy\u003c/code\u003e is set\nto a different value).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels are appended to the \u003ccode\u003espec.podTargetLabels\u003c/code\u003e field of all\nPodMonitor and ServiceMonitor objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TracingConfig\"\u003e\nTracingConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfig defines tracing in Prometheus.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit defines per-scrape on response body size.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\nOnl
130y valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereloadStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ReloadStrategyType\"\u003e\nReloadStrategyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereloadStrategy defines the strategy used to reload the Prometheus configuration.\nIf not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaximumStartupDurationSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaximumStartupDurationSeconds defines the maximum time that the \u003ccode\u003eprometheus\u003c/code\u003e container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete.\nIf set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClasses\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003e\n[]ScrapeClass\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClasses defines the list of scrape classes to expose to scraping objects such as\nPodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceDiscoveryRole\"\u003e\nServiceDiscoveryRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceDiscoveryRole defines the service discovery role used to discover targets from\n\u003ccode\u003eServiceMonitor\u003c/code\u003e objects and Alertmanager endpoints.\u003c/p\u003e\n\u003cp\u003eIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
130.\nIf unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etsdb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TSDBSpec\"\u003e\nTSDBSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etsdb defines the runtime reloadable configuration of the timeseries database(TSDB).\nIt requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeFailureLogFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeFailureLogFile defines the file to which scrape failures are logged.\nReloading the configuration will reopen the file.\u003c/p\u003e\n\u003cp\u003eIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods\nwill mount the file into an emptyDir volume at \u003ccode\u003e/var/log/prometheus\u003c/code\u003e.\nIf a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you\nmust mount a volume in the specified directory and it must be writable.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003eprometheus-operated\u003c/code\u003e for Prometheus resources,\nor \u003ccode\u003eprometheus-agent-operated\u003c/code\u003e for PrometheusAgent resources.\nWhen deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruntime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RuntimeConfig\"\u003e\nRuntimeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruntime defines the values for the Prometheus process behavior\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 600 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebaseImage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebaseImage is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etag\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etag is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead. The image\u0026rsquo;s tag can be specified as part of the image name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esha\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esha is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead. The image\u0026rsquo;s digest can be specified as part of the image name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretention\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretention defines how long to retain the Prometheus data.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;24h\u0026rdquo; if \u003ccode\u003espec.retention\u003c/code\u003e, \u003ccode\u003espec.retentionSize\u003c/code\u003e and\n\u003ccode\u003espec.retentionPercentage\u003c/code\u003e are empty.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretentionSize\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretentionSize defines the maximum number of bytes used by the Prometheus data.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretentionPercentage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretentionPercentage defines the maximum percentage of the data volume\u0026rsquo;s\ncapacity used by the Prometheus data.\u003c/p\u003e\n\u003cp\u003eThe value is a number between 0 and 100. If set to 0, percentage-based\nretention is disabled.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.11.0 and is ignored by older versions.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardRetentionPolicy\"\u003e\nShardRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshardRetentionPolicy defines the retention policy for the Prometheus shards.\u003c/p\u003e\n\u003cp\u003e(Beta) Using this mode requires the \u
130003ccode\u003ePrometheusShardRetentionPolicy\u003c/code\u003e feature gate (enabled by default).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edisableCompaction\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edisableCompaction when true, the Prometheus compaction is disabled.\u003c/p\u003e\n\u003cp\u003eWhen \u003ccode\u003espec.thanos.objectStorageConfig\u003c/code\u003e or \u003ccode\u003espec.thanos.objectStorageConfigFile\u003c/code\u003e are defined, the operator\u0026rsquo;s\ndefault handling depends on the Prometheus and Thanos sidecar versions:\n- With Prometheus \u0026lt; v3.9.0 or a Thanos sidecar \u0026lt; v0.42.0, block compaction is disabled to avoid race\nconditions during block uploads (as the Thanos documentation recommends).\n- With Prometheus \u0026gt;= v3.9.0 and a Thanos sidecar \u0026gt;= v0.42.0, local compaction is kept enabled and coordinated\nwith the sidecar through the shipper meta file (\u003ccode\u003e--storage.tsdb.delay-compact-file.path\u003c/code\u003e), so blocks are only\ncompacted after they have been uploaded.\nSetting this field to true always disables local compaction regardless of the versions.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erules\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Rules\"\u003e\nRules\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erules defines the configuration of the Prometheus rules\u0026rsquo; engine.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusRulesExcludedFromEnforce\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusRuleExcludeConfig\"\u003e\n[]PrometheusRuleExcludeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusRulesExcludedFromEnforce defines the list of PrometheusRule objects to which the namespace label\nenforcement doesn\u0026rsquo;t apply.\nThis is only relevant when \u003ccode\u003espec.enforcedNamespaceLabel\u003c/code\u003e is set to true.\nDeprecated: use \u003ccode\u003espec.excludedFromEnforcement\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleSelector defines the prometheusRule objects to be selected for rule evaluation. An empty\nlabel selector matches all objects. A null label selector matches no\nobjects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleNamespaceSelector defines the namespaces to match for PrometheusRule discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equery\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.QuerySpec\"\u003e\nQuerySpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equery defines the configuration of the Prometheus query service.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealert
130ing\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AlertingSpec\"\u003e\nAlertingSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealerting defines the settings related to Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalAlertRelabelConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalAlertRelabelConfigs defines a key of a Secret containing\nadditional Prometheus alert relabel configurations. The alert relabel\nconfigurations are appended to the configuration generated by the\nPrometheus Operator. They must be formatted according to the official\nPrometheus documentation:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe user is responsible for making sure that the configurations are valid\u003c/p\u003e\n\u003cp\u003eNote that using this feature may expose the possibility to break\nupgrades of Prometheus. It is advised to review Prometheus release notes\nto ensure that no incompatible alert relabel configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalAlertManagerConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalAlertManagerConfigs defines a key of a Secret containing\nadditional Prometheus Alertmanager configurations. The Alertmanager\nconfigurations are appended to the configuration generated by the\nPrometheus Operator. They must be formatted according to the official\nPrometheus documentation:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe user is responsible for making sure that the configurations are valid\u003c/p\u003e\n\u003cp\u003eNote that using this feature may expose the possibility to break\nupgrades of Prometheus. It is advised to review Prometheus release notes\nto ensure that no incompatible AlertManager configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteRead\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003e\n[]RemoteReadSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteRead defines the list of remote read configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethanos\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ThanosSpec\"\u003e\nThanosSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ethanos defines the configuration of the optional Thanos sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equeryLogFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equeryLogFile specifies where the file to which PromQL queries are logged.\u003c/p\u003e\n\u003cp\u003eIf the filename has an empty path, e.g. \u0026lsquo;query.log\u0026rsquo;
130, The Prometheus Pods\nwill mount the file into an emptyDir volume at \u003ccode\u003e/var/log/prometheus\u003c/code\u003e.\nIf a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/query.log\u0026rsquo;, you\nmust mount a volume in the specified directory and it must be writable.\nThis is because the prometheus container runs with a read-only root\nfilesystem for security reasons.\nAlternatively, the location can be set to a standard I/O stream, e.g.\n\u003ccode\u003e/dev/stdout\u003c/code\u003e, to log query information to the default Prometheus log\nstream.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eallowOverlappingBlocks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eallowOverlappingBlocks enables vertical compaction and vertical query\nmerge in Prometheus.\u003c/p\u003e\n\u003cp\u003eDeprecated: this flag has no effect for Prometheus \u0026gt;= 2.39.0 where overlapping blocks are enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexemplars\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Exemplars\"\u003e\nExemplars\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexemplars related settings that are runtime reloadable.\nIt requires to enable the \u003ccode\u003eexemplar-storage\u003c/code\u003e feature flag to be effective.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eevaluationInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eevaluationInterval defines the interval between rule evaluations.\nDefault: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleQueryOffset\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleQueryOffset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past.\nIt requires Prometheus \u0026gt;= v2.53.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableAdminAPI\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableAdminAPI defines access to the Prometheus web admin API.\u003c/p\u003e\n\u003cp\u003eWARNING: Enabling the admin APIs enables mutating endpoints, to delete data,\nshutdown Prometheus, and more. Enabling this should be done with care and the\nuser is advised to add additional authentication authorization via a proxy to\nensure only clients authorized to perform these actions can do so.\u003c/p\u003e\n\u003cp\u003eFor more information:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\"\u003ehttps://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PrometheusStatus\"\u003ePrometheusStatus\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Prometheus\"\u003ePrometheus\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PrometheusAgent\"\u003ePrometheusAgent\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePrometheusStatus is the most recent observed status of the Prometheus cluster.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines whether any actions on the underlying managed objects are\nbeing performed. Only delete actions will be performed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the total number of non-terminated pods targeted by this Prometheus deployment\n(their labels match the selector).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdatedReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdatedReplicas defines the total number of non-terminated pods targeted by this Prometheus deployment\nthat have the desired version spec.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eavailableReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eavailableReplicas defines the total number of available pods (ready for at least minReadySeconds)\ntargeted by this Prometheus deployment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eunavailableReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eunavailableReplicas defines the total number of unavailable pods targeted by this Prometheus deployment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econditions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Condition\"\u003e\n[]Condition\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econditions defines the current state of the Prometheus deployment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardStatuses\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardStatus\"\u003e\n[]ShardStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshardStatuses defines the list has one entry per shard. Each entry provides a summary of the shard status.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshards\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshards defines the most recently observed number of shards.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselector used to match the pods targeted by this Prometheus resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.PrometheusWebSpec\"\u003ePrometheusWebSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePrometheusWebSpec defines the configuration of the Prometheus web server.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebTLSConfig\"\u003e\nWebTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS parameters for HTTPS.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebHTTPConfig\"\u003e\nWebHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines HTTP parameters for web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epageTitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epageTitle defines the prometheus web page title.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxConnections\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxConnections defines the maximum number of simultaneous connections\nA zero value means that Prometheus doesn\u0026rsquo;t accept any incoming connection.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ProxyConfig\"\u003eProxyConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003eAPIServerConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithProxy\"\u003eHTTPConfigWithProxy\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithProxyAndTLSFiles\"\u003eHTTPConfigWithProxyAndTLSFiles\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003eOAuth2\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProberSpec\"\u003eProberSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003eRemoteReadSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003eAzureSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003eConsulSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DigitalOceanSDConfig\"\u003eDigitalOceanSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003eDockerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EC2SDConfig\"\u003eEC2SDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003eEurekaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003eHTTPSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003eHetznerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.IonosSDConfig\"\u003eIonosSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003eKumaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003eLightSailSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LinodeSDConfig\"\u003eLinodeSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003eNomadSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003ePuppetDBSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScalewaySDConfig\"\u003eScalewaySDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.QuerySpec\"\u003eQuerySpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eQuerySpec defines the query command line flags when starting Prometheus.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elookbackDelta\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u
130003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elookbackDelta defines the delta difference allowed for retrieving metrics during expression evaluations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxConcurrency\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxConcurrency defines the number of concurrent queries that can be run at once.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxSamples\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxSamples defines the maximum number of samples a single query can load into memory. Note that\nqueries will fail if they would load more samples than this into memory,\nso this also limits the number of samples a query can return.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout defines the maximum time a query may take before being aborted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.QueueConfig\"\u003eQueueConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eQueueConfig allows the tuning of remote write\u0026rsquo;s queue_config parameters.\nThis object is referenced in the RemoteWriteSpec object.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecapacity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecapacity defines the number of samples to buffer per shard before we start\ndropping them.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminShards\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminShards defines the minimum number of shards, i.e. amount of concurrency.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxShards\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxShards defines the maximum number of shards, i.e. amount of concurrency.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxSamplesPerSend\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxSamplesPerSend defines the maximum number of samples per send.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebatchSendDeadline\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebatchSendDeadline defines the maximum time a sample will wait in buffer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxRetries\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxRetries defines the maximum number of times to retry a batch on recoverable errors.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminBackoff\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminBackoff defines the initial retry delay. Gets doubled for every retry.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxBackoff\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxBackoff defines the maximum retry delay.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretryOnRateLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretryOnRateLimit defines the retry upon receiving a 429 status code from the remote-write storage.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleAgeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleAgeLimit drops samples older than the limit.\nIt requires Prometheus \u0026gt;= v2.50.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RelabelConfig\"\u003eRelabelConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.Endpoint\"\u003eEndpoint\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PodMetricsEndpoint\"\u003ePodMetricsEndpoint\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeTargetIngress\"\u003eProbeTargetIngress\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeTargetStaticConfig\"\u003eProbeTargetStaticConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003eScrapeClass\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRelabelConfig allows dynamic rewriting of the label set for targets, alerts,\nscraped samples and remote write samples.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esourceLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.LabelName\"\u003e\n[]LabelName\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esourceLabels defines the source labels select values from existing labels. Their content is\nconcatenated using the configured Separator and matched against the\nconfigured regular expression.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eseparator\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eseparator defines the string between concatenated SourceLabels.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLabel defines the label to which the resulting string is written in a replacement.\u003c/p\u003e\n\u003cp\u003eIt is mandatory for \u003ccode\u003eReplace\u003c/code\u003e, \u003ccode\u003eHashMod\u003c/code\u003e, \u003ccode\u003eLowercase\u003c/code\u003e, \u003ccode\u003eUppercase\u003c/code\u003e,\n\u003ccode\u003eKeepEqual\u003c/code\u003e and \u003ccode\u003eDropEqual\u003c/code\u003e actions.\u003c/p\u003e\n\u003cp\u003eRegex capture groups are available.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eregex\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eregex defines the regular expression against which the extracted value is matched.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emodulus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emodulus to take of the hash of the source label values.\u003c/p\u003e\n\u003cp\u003eOnly applicable when the action is \u003ccode\u003eHashMod\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplacement\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplacement value against which a Replace action is performed if the\nregular expression matches.\u003c/p\u003e\n\u003cp\u003eRegex capture groups are available.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaction\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaction to perform based on the regex matching.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eUppercase\u003c/code\u003e and \u003ccode\u003eLowercase\u003c/code\u003e actions require Prometheus \u0026gt;= v2.36.0.\n\u003ccode\u003eDropEqual\u003c/code\u003e and \u003ccode\u003eKeepEqual\u003c/code\u003e actions require Prometheus \u0026gt;= v2.41.0.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;Replace\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ReloadStrategyType\"\u003eReloadStrategyType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;HTTP\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eHTTPReloadStrategyType reloads the configuration using the /-/reload HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;ProcessSignal\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eProcessSignalReloadStrategyType reloads the configuration by sending a SIGHUP signal to the process.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RemoteReadSpec\"\u003eRemoteReadSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRemoteReadSpec defines the configuration for Prometheus to read back samples\nfrom a remote endpoint.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eurl defines the URL of the endpoint to query from.\u003c/p\u003e\n\u003cp\u003eIt must use the HTTP or HTTPS scheme.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename of the remote read queue, it must be unique if specified. The\nname is used in metrics and logging in order to differentiate read\nconfigurations.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.15.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erequiredMatchers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erequiredMatchers defines an optional list of equality matchers which have to be present\nin a selector to query the remote read endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteTimeout defines the timeout for requests to the remote read endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eheaders\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eheaders defines the custom HTTP headers to be sent along with each remote read request.\nBe aware that headers that are set by Prometheus itself can\u0026rsquo;t be overwritten.\nOnly valid in Prometheus versions 2.26.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereadRecent\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereadRecent defines whether reads should be made for queries for time ranges that\nthe local storage should have complete data for.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 configuration for the URL.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth configuration for the URL.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenFile defines the file from which to read the bearer token for the URL.\u003c/p\u003e\n\u003cp\u003eDeprecated: this will be removed in a future release. Prefer using \u003ccode\u003eauthorization\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Authorization\"\u003e\nAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization section for the URL.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.26.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerToken is deprecated: this will be removed in a future release.\n\u003cem\u003eWarning: this field shouldn\u0026rsquo;t be used because the token value appears\nin clear-text. Prefer using \u003ccode\u003eauthorization\u003c/code\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig to use for the URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efilterExternalLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efilterExternalLabels defines whether to use the external labels as selectors for the remote read endpoint.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.34.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RemoteWriteMessageVersion\"\u003eRemoteWriteMessageVersion\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;V1.0\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eRemote Write message\u0026rsquo;s version 1.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;V2.0\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eRemote Write message\u0026rsquo;s version 2.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRemoteWriteSpec defines the configuration to write samples from Prometheus\nto a remote endpoint.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eurl defines the URL of the endpoint to send samples to.\u003c/p\u003e\n\u003cp\u003eIt must use the HTTP or HTTPS scheme.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename of the remote write queue, it must be unique if specified. The\nname is used in metrics and logging in order to differentiate queues.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.15.0 or Thanos \u0026gt;= 0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteMessageVersion\"\u003e\nRemoteWriteMessageVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageVersion defines the Remote Write message\u0026rsquo;s version to use when writing to the endpoint.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eVersion1.0\u003c/code\u003e corresponds to the \u003ccode\u003eprometheus.WriteRequest\u003c/code\u003e protobuf message introduced in Remote Write 1.0.\n\u003ccode\u003eVersion2.0\u003c/code\u003e corresponds to the \u003ccode\u003eio.prometheus.write.v2.Request\u003c/code\u003e protobuf message introduced in Remote Write 2.0.\u003c/p\u003e\n\u003cp\u003eWhen \u003ccode\u003eVersion2.0\u003c/code\u003e is selected, Prometheus will automatically be\nconfigured to append the metadata of scraped metrics to the WAL.\u003c/p\u003e\n\u003cp\u003eBefore setting this field, consult with your remote storage provider\nwhat message version it supports.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.54.0 or Thanos \u0026gt;= v0.37.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendExemplars\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendExemplars enables sending of exemplars over remote write. Note that\nexemplar-storage itself must be enabled using the \u003ccode\u003espec.enableFeatures\u003c/code\u003e\noption for exemplars to be scraped in the first place.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0 or Thanos \u0026gt;= v0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendNativeHistograms enables sending of native histograms, also known as sparse histograms\nover remote write.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.40.0 or Thanos \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteTimeout defines the timeout for requests to the remote write endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eheaders\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eheaders defines the custom HTTP headers to be sent along with each remote write request.\nBe aware that headers that are set by Prometheus itself can\u0026rsquo;t be overwritten.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.25.0 or Thanos \u0026gt;= v0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewriteRelabelConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewriteRelabelConfigs defines the list of remote write relabel configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 configuration for the URL.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0 or Thanos \u0026gt;= v0.24.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003esigv4\u003c/code\u003e, \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e, or \u003ccode\u003eazureAd\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth configuration for the URL.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003esigv4\u003c/code\u003e, \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003eoauth2\u003c/code\u003e, or \u003ccode\u003eazureAd\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenFile defines the file from which to read bearer token for the URL.\u003c/p\u003e\n\u003cp\u003eDeprecated: this will be removed in a future release. Prefer using \u003ccode\u003eauthorization\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Authorization\"\u003e\nAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization section for the URL.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.26.0 or Thanos \u0026gt;= v0.24.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003esigv4\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003eoauth2\u003c/code\u003e, or \u003ccode\u003eazureAd\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esigv4\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Sigv4\"\u003e\nSigv4\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esigv4 defines the AWS\u0026rsquo;s Signature Verification 4 for the URL.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.26.0 or Thanos \u0026gt;= v0.24.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003eoauth2\u003c/code\u003e, or \u003ccode\u003eazureAd\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eazureAd\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AzureAD\"\u003e\nAzureAD\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eazureAd for the URL.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.45.0 or Thanos \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003cp\u003eCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, \u003ccode\u003ebasicAuth\u003c/code\u003e, \u003ccode\u003eoauth2\u003c/code\u003e, or \u003ccode\u003esigv4\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerToken is deprecated: this will be removed in a future release.\n\u003cem\u003eWarning: this field shouldn\u0026rsquo;t be used because the token value appears\nin clear-text. Prefer using \u003ccode\u003eauthorization\u003c/code\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig to use for the URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.26.0 or Thanos \u0026gt;= v0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equeueConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.QueueConfig\"\u003e\nQueueConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equeueConfig allows tuning of the remote write queue parameters.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadataConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.MetadataConfig\"\u003e\nMetadataConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadataConfig defines how to send a series metadata to the remote storage.\u003c/p\u003e\n\u003cp\u003eWhen the field is empty, \u003cstrong\u003eno metadata\u003c/strong\u003e is sent. But when the field is\nnull, metadata is sent.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroundRobinDNS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroundRobinDNS 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.\u003c/p\u003e\n\u003cp\u003eWhen disabled (default behavior):\n- The Go standard library will handle hostname resolution.\n- It will attempt connections to each resolved IP address sequentially.\u003c/p\u003e\n\u003cp\u003eNote: The connection timeout applies to the entire resolution and connection process.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eIf disabled, the timeout is distributed across all connection attempts.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.1.0 or Thanos \u0026gt;= v0.38.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RetainConfig\"\u003eRetainConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ShardRetentionPolicy\"\u003eShardRetentionPolicy\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretentionPeriod\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.
130Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eretentionPeriod defines how long the scaled-down shard(s) need to be\nkept before being deleted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RollingUpdateStatefulSetStrategy\"\u003eRollingUpdateStatefulSetStrategy\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003eStatefulSetUpdateStrategy\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRollingUpdateStatefulSetStrategy is used to communicate parameter for the RollingUpdate strategy.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxUnavailable\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString\"\u003e\nk8s.io/apimachinery/pkg/util/intstr.IntOrString\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxUnavailable is the maximum number of pods that can be unavailable\nduring the update. The value can be an absolute number (ex: 5) or a\npercentage of desired pods (ex: 10%). Absolute number is calculated from\npercentage by rounding up. This can not be 0. Defaults to 1. This field\nis alpha-level and is only honored by servers that enable the\nMaxUnavailableStatefulSet feature. The field applies to all pods in the\nrange 0 to Replicas-1. That means if there is any unavailable pod in\nthe range 0 to Replicas-1, it will be counted towards MaxUnavailable.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Rule\"\u003eRule\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.RuleGroup\"\u003eRuleGroup\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRule describes an alerting or recording rule\nSee Prometheus documentation: \u003ca href=\"https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/\"\u003ealert
130ing\u003c/a\u003e or \u003ca href=\"https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules\"\u003erecording\u003c/a\u003e rule\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erecord\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erecord defines the name of the time series to output to. Must be a valid metric name.\nOnly one of \u003ccode\u003erecord\u003c/code\u003e and \u003ccode\u003ealert\u003c/code\u003e must be set.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealert\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealert defines the name of the alert. Must be a valid label value.\nOnly one of \u003ccode\u003erecord\u003c/code\u003e and \u003ccode\u003ealert\u003c/code\u003e must be set.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexpr\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString\"\u003e\nk8s.io/apimachinery/pkg/util/intstr.IntOrString\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eexpr defines the PromQL expression to evaluate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efor defines how alerts are considered firing once they have been returned for this long.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeep_firing_for\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NonEmptyDuration\"\u003e\nNonEmptyDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeep_firing_for defines how long an alert will continue firing after the condition that triggered it has cleared.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabels defines labels to add or overwrite.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eannotations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eannotations defines annotations to add to each alert.\nOnly valid for alerting rules.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RuleGroup\"\u003eRuleGroup\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusRuleSpec\"\u003ePrometheusRuleSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRuleGroup is a list of sequentially evaluated recording and alerting rules.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename defines the name of the rule group.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabels define the labels to add or over
130write before storing the result for its rules.\nThe labels defined at the rule level take precedence.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 3.0.0.\nThe field is ignored for Thanos Ruler.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einterval defines how often rules in the group are evaluated.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equery_offset\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equery_offset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.53.0.\nIt is not supported for ThanosRuler.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erules\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Rule\"\u003e\n[]Rule\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erules defines the list of alerting and recording rules.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epartial_response_strategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epartial_response_strategy is only used by ThanosRuler and will\nbe ignored by Prometheus instances.\nMore info: \u003ca href=\"https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response\"\u003ehttps://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elimit defines the number of alerts an alerting rule and series a re
130cording\nrule can produce.\nLimit is supported starting with Prometheus \u0026gt;= 2.31 and Thanos Ruler \u0026gt;= 0.24.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Rules\"\u003eRules\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealert\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RulesAlert\"\u003e\nRulesAlert\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealert defines the parameters of the Prometheus rules\u0026rsquo; engine.\u003c/p\u003e\n\u003cp\u003eAny update to these parameters trigger a restart of the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RulesAlert\"\u003eRulesAlert\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.Rules\"\u003eRules\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eforOutageTolerance\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eforOutageTolerance defines the max time to tolerate prometheus outage for restoring \u0026lsquo;for\u0026rsquo; state of\nalert.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eforGracePeriod\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eforGracePeriod defines the minimum duration between alert and restored \u0026lsquo;for\u0026rsquo; state.\u003c/p\u003e\n\u003cp\u003eThis is maintained only for alerts with a configured \u0026lsquo;for\u0026rsquo; time greater\nthan the grace period.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresendDelay\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresendDelay defines the minimum amount of time to wait before resending an alert to\nAlertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.RuntimeConfig\"\u003eRuntimeConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRuntimeConfig configures the values for the process behavior.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egoGC\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egoGC defines the Go garbage collection target percentage. Lowering this number may increase the CPU usage.\nSee: \u003ca href=\"https://tip.golang.org/doc/gc-guide#GOGC\"\u003ehttps://tip.golang.org/doc/gc-guide#GOGC\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.SafeAuthorization\"\u003eSafeAuthorization\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.Authorization\"\u003eAuthorization\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithoutTLS\"\u003eHTTPConfigWithoutTLS\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003eAzureSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003eConsulSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DigitalOceanSDConfig\"\u003eDigitalOceanSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003eDockerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003eEurekaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003eHTTPSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003eHetznerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.IonosSDConfig\"\u003eIonosSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003eKumaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003eLightSailSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LinodeSDConfig\"\u003eLinodeSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003eNomadSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003ePuppetDBSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSafeAuthorization specifies a subset of the Authorization struct, that is\nsafe for use because it doesn\u0026rsquo;t provide access to the Prometheus container\u0026rsquo;s\nfilesystem.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etype defines the authentication type. The value is case-insensitive.\u003c/p\u003e\n\u003cp\u003e\u0026ldquo;Basic\u0026rdquo; is not a supported value.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;Bearer\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecredentials\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecredentials defines a key of a Secret in the namespace that c
130ontains the credentials for authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.SafeTLSConfig\"\u003eSafeTLSConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ClusterTLSConfig\"\u003eClusterTLSConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.GlobalSMTPConfig\"\u003eGlobalSMTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003eOAuth2\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003eTLSConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003eAzureSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003eConsulSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DigitalOceanSDConfig\"\u003eDigitalOceanSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003eDockerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EC2SDConfig\"\u003eEC2SDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EmailConfig\"\u003eEmailConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003eEurekaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003eHTTPSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003eHetznerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.IonosSDConfig\"\u003eIonosSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003eKumaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003eLightSailSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.LinodeSDConfig\"\u003eLinodeSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003eNomadSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackSDConfig\"\u003eOpenStackSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003ePuppetDBSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScalewaySDConfig\"\u003eScalewaySDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.EmailConfig\"\u003eEmailConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSafeTLSConfig defines safe TLS configurations.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eca\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eca defines the Certificate authority used when verifying server certificates.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecert\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecert defines the Client certificate to present when doing client-authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeySecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeySecret defines the Secret
130containing the client key file for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserverName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserverName is used to verify the hostname for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einsecureSkipVerify\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einsecureSkipVerify defines how to disable target certificate validation.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSVersion\"\u003e\nTLSVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminVersion defines the minimum acceptable TLS version.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.35.0 or Thanos \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSVersion\"\u003e\nTLSVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxVersion defines the maximum acceptable TLS version.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.41.0 or Thanos \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Scheme\"\u003eScheme\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.Endpoint\"\u003eEndpoint\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PodMetricsEndpoint\"\u003ePodMetricsEndpoint\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProberSpec\"\u003eProberSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003eConsulSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSupported values are \u003ccode\u003eHTTP\u003c/code\u003e and \u003ccode\u003eHTTPS\u003c/code\u003e. You can also rewrite the\n\u003ccode\u003e__scheme__\u003c/code\u003e label via relabeling configuration.\u003c/p\u003e\n\u003cp\u003eIf empty, the value defaults to \u003ccode\u003eHTTP\u003c/code\u003e.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;HTTP\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;HTTPS\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ScrapeClass\"\u003eScrapeClass\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename of the scrape class.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edefault\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edefault defines that the scrape applies to all scrape objects that\ndon\u0026rsquo;t configure an explicit scrape class name.\u003c/p\u003e\n\u003cp\u003eOnly one scrape class can be set as the default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt will only apply if the scrape resource doesn\u0026rsquo;t specify any FallbackScrapeProtocol\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS settings to use for the scrape. When the\nscrape objects define their own CA, certificate and/or key, they take\nprecedence over the corresponding scrape class fields.\u003c/p\u003e\n\u003cp\u003eFor now only the \u
130003ccode\u003ecaFile\u003c/code\u003e, \u003ccode\u003ecertFile\u003c/code\u003e and \u003ccode\u003ekeyFile\u003c/code\u003e fields are supported.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Authorization\"\u003e\nAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization section for the ScrapeClass.\nIt will only apply if the scrape resource doesn\u0026rsquo;t specify any Authorization.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erelabelings defines the relabeling rules to apply to all scrape targets.\u003c/p\u003e\n\u003cp\u003eThe Operator automatically adds relabelings for a few standard Kubernetes fields\nlike \u003ccode\u003e__meta_kubernetes_namespace\u003c/code\u003e and \u003ccode\u003e__meta_kubernetes_service_name\u003c/code\u003e.\nThen the Operator adds the scrape class relabelings defined here.\nThen the Operator adds the target-specific relabelings defined in the scrape object.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricRelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricRelabelings defines the relabeling rules to apply to all samples before ingestion.\u003c/p\u003e\n\u003cp\u003eThe Operator adds the scrape class metric relabelings defined here.\nThen the Operator adds the target-specific metric relabelings defined in ServiceMonitors, PodMonitors, Probes and ScrapeConfigs.\nThen the Operator adds namespace enforcement relabeling rule, specified in \u0026lsquo;.spec.enforcedNamespaceLabel\u0026rsquo;.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eattachMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AttachMetadata\"\u003e\nAttachMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eattachMetadata defines additional metadata to the discovered targets.\nWhen the scrape object defines its own configuration, it takes\nprecedence over the scrape class configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ScrapeProtocol\"\u003eScrapeProtocol\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PodMonitorSpec\"\u003ePodMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ProbeSpec\"\u003eProbeSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003eScrapeClass\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\nSupported values are:\n* \u003ccode\u003eOpenMetricsText0.0.1\u003c/code\u003e\n* \u003ccode\u003eOpenMetricsText1.0.0\u003c/code\u003e\n* \u003ccode\u003ePrometheusProto\u003c/code\u003e\n* \u003ccode\u003ePrometheusText0.0.4\u003c/code\u003e\n* \u003ccode\u003ePrometheusText1.0.0\u003c/code\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OpenMetricsText0.0.1\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OpenMetricsText1.0.0\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;PrometheusProto\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;PrometheusText0.0.4\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;PrometheusText1.0.0\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.SecretOrConfigMap\"\u003eSecretOrConfigMap\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerConfiguration\"\u003eAlertmanagerConfiguration\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003eOAuth2\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003eSafeTLSConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.WebTLSConfig\"\u003eWebTLSConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSecretOrConfigMap allows to specify data as a Secret or ConfigMap. Fields are mutually exclusive.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecret defines the Secret containing data to use for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigMap\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#configmapkeyselector-v1-core\"\u003e\nKubernetes core/v1.ConfigMapKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigMap defines the ConfigMap containing data to use for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.SelectorMechanism\"\u003eSelectorMechanism\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PodMonitorSpec\"\u003ePodMonitorSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;RelabelConfig\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;RoleSelector\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ServiceDiscoveryRole\"\u003eServiceDiscoveryRole\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;EndpointSlice\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Endpoints\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ServiceMonitorSpec\"\u003eServiceMonitorSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ServiceMonitor\"\u003eServiceMonitor\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eServiceMonitorSpec defines the specification parameters for a ServiceMonitor.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejobLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejobLabel selects the label from the associated Kubernetes \u003ccode\u003eService\u003c/code\u003e\nobject which will be used as the \u003ccode\u003ejob\u003c/code\u003e label for all metrics.\u003c/p\u003e\n\u003cp\u003eFor example if \u003ccode\u003ejobLabel\u003c/code\u003e is set to \u003ccode\u003efoo\u003c/code\u003e and the Kubernetes \u003ccode\u003eService\u003c/code\u003e\nobject is labeled with \u003ccode\u003efoo: bar\u003c/code\u003e, then Prometheus adds the \u003ccode\u003ejob=\u0026quot;bar\u0026quot;\u003c/code\u003e\nlabel to all ingested metrics.\u003c/p\u003e\n\u003cp\u003eIf the value of this field is empty or if the label doesn\u0026rsquo;t exist for\nthe given Service, the \u003ccode\u003ejob\u003c/code\u003e label of the metrics defaults to the name\nof the associated Kubernetes \u003ccode\u003eService\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLabels defines the labels which are transferred from the\nassociated Kubernetes \u003ccode\u003eService\u003c/code\u003e object onto the ingested metrics.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels defines the labels which are transferred from the\nassociated Kubernetes \u003ccode\u003ePod\u003c/code\u003e object onto the ingested metrics.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eendpoints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Endpoint\"\u003e\n[]Endpoint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eendpoints defines the list of endpoints part of this ServiceMonitor.\nDefines how to scrape metrics from Kubernetes \u003ca href=\"https://kubernetes.io/docs/concepts/services-networking/service/#endpoints\"\u003eEndpoints\u003c/a\u003e objects.\nIn most cases, an Endpoints object is backed by a Kubernetes \u003ca href=\"https://kubernetes.io/docs/concepts/services-networking/service/\"\u003eService\u003c/a\u003e object with the same name and labels.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eselector defines the label selector to select the Kubernetes \u003ccode\u003eEndpoints\u003c/code\u003e objects to scrape metrics from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselectorMechanism\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SelectorMechanism\"\u003e\nSelectorMechanism\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselectorMechanism defines the mechanism used to select the endpoints to scrape.\nBy default, the selection process relies on relabel configurations to filter the discovered targets.\nAlternatively, you can opt in for role selectors, which may offer better efficiency in large cluster
130s.\nWhich strategy is best for your use case needs to be carefully evaluated.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.17.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NamespaceSelector\"\u003e\nNamespaceSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespaceSelector defines in which namespace(s) Prometheus should discover the services.\nBy default, the services are discovered in the same namespace as the \u003ccode\u003eServiceMonitor\u003c/code\u003e object but it is possible to select pods across different/all namespaces.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines a per-scrape limit on the number of scraped samples\nthat will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will\nbe accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\
130nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eattachMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AttachMetadata\"\u003e\nAttachMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eattachMetadata defines additional metadata which is added to the\ndiscovered targets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.37.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClass defines the scrape class to apply.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit when defined, bodySizeLimit specifies a job level limit on the size\nof uncompressed response body that will be accepted by Prometheus.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceDiscoveryRole\"\u003e\nServiceDiscoveryRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceDiscoveryRole defines the service discovery role used to discover targets.\u003c/p\u003e\n\u003cp\u003eIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;.\nOtherwise it defaults to the value defined in the\nPrometheus/PrometheusAgent resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ShardRetentionPolicy\"\u003eShardRetentionPolicy\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewhenScaled\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WhenScaledRetentionType\"\u003e\nWhenScaledRetentionType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewhenScaled defines the retention policy when the Prometheus shards are scaled down.\n* \u003ccode\u003eDelete\u003c/code\u003e, the operator will delete the pods from the scaled-down shard(s).\n* \u003ccode\u003eRetain\u003c/code\u003e, the operator will keep the pods from the scaled-down shard(s), so the data can still be queried.\u003c/p\u003e\n\u003cp\u003eIf not defined, the operator assumes the \u
130003ccode\u003eDelete\u003c/code\u003e value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretain\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RetainConfig\"\u003e\nRetainConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretain defines the config for retention when the retention policy is set\nto \u003ccode\u003eRetain\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf not defined, the operator will use the retention duration configured\nfor the Prometheus data. If the resource uses size-based retention, the\nshard(s) are kept forever (unless manually deleted).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ShardStatus\"\u003eShardStatus\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusStatus\"\u003ePrometheusStatus\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eshardID defines the identifier of the shard.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ereplicas defines the total number of pods targeted by this shard.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdatedReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eupdatedReplicas defines the total number of non-terminated pods targeted by this shard\nthat have the desired spec.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eavailableReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eavailableReplicas defines the total number of available pods (ready for at least minReadySeconds)\ntargeted by this shard.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eunavailableReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eunavailableReplicas defines the Total number of unavailable pods targeted by this shard.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ShardingStrategy\"\u003eShardingStrategy\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eShardingStrategy defines the sharding strategy for Prometheus.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardingStrategyMode\"\u003e\nShardingStrategyMode\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emode defines the sharding mode. Can be \u0026lsquo;Address\u0026rsquo; or \u0026lsquo;Topology\u0026rsquo;.\u003c/p\u003e\n\u003cp\u003e\u0026lsquo;Address\u0026rsquo; is the default mode and distributes targets across shards\nbased on a hash of the target address.\u003c/p\u003e\n\u003cp\u003e\u0026lsquo;Topology\u0026rsquo; enables zone-aware sharding where each shard is assigned to a\nspecific topology zone and only scrapes targets in that zone.\n(Alpha) Using the \u0026lsquo;Topology\u0026rsquo;
130 mode requires the \u003ccode\u003ePrometheusTopologySharding\u003c/code\u003e\nfeature gate to be enabled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopology\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TopologyShardingStrategy\"\u003e\nTopologyShardingStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopology defines the configuration for topology-aware sharding.\nThis field is only valid when mode is set to \u0026lsquo;Topology\u0026rsquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ShardingStrategyMode\"\u003eShardingStrategyMode\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ShardingStrategy\"\u003eShardingStrategy\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eShardingStrategyMode defines the sharding mode for Prometheus.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Address\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eAddressShardingStrategyMode is the default sharding mode.\nTargets are distributed across shards based on a hash of the target address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Topology\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eTopologyShardingStrategyMode enables zone-aware sharding.\nEach shard is assigned to a specific topology zone and only scrapes targets in that zone.\u003c/p\u003e\n\u003cp\u003e(Beta) Using this mode requires the \u003ccode\u003ePrometheusTopologySharding\u003c/code\u003e feature gate (enabled by default).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.Sigv4\"\u003eSigv4\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.SNSConfig\"\u003eSNSConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.SNSConfig\"\u003eSNSConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSigv4 defines AWS\u0026rsquo;s Signature Verification 4 signing process to\nsign requests.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eregion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eregion defines the AWS region. If blank, the region from the default credentials chain used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaccessKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaccessKey defines the AWS API key. If not specified, the environment variable\n\u003ccode\u003eAWS_ACCESS_KEY_ID\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecretKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecretKey defines the AWS API secret. If not specified, the environment\nvariable \u003ccode\u003eAWS_SECRET_ACCESS_KEY\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprofile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprofile defines the named AWS profile used to authenticate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroleArn\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroleArn defines the named AWS profile used to authenticate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus \u0026gt;= v3.11.0 or Alertmanager \u0026gt;
130= v0.34.0. Currently not supported by Thanos.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003euseFIPSSTSEndpoint\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003euseFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint.\nIt requires Prometheus \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003eStatefulSetUpdateStrategy\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eStatefulSetUpdateStrategy indicates the strategy used when updating the\nStatefulSet. It includes any additional parameters necessary to perform the\nupdate for the indicated strategy.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategyType\"\u003e\nStatefulSetUpdateStrategyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etype indicates the type of the StatefulSetUpdateStrategy.\u003c/p\u003e\n\u003cp\u003eDefault is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erollingUpdate\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RollingUpdateStatefulSetStrategy\"\u003e\nRollingUpdateStatefulSetStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erollingUpdate is used to communicate parameters when type is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.StatefulSetUpdateStrategyType\"\u003eStatefulSetUpdateStrategyType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003eStatefulSetUpdateStrategy\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eStatefulSetUpdateStrategyType is a string enumeration type that enumerates\nall possible update strategies for the StatefulSet pods.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OnDelete\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eOnDeleteStatefulSetStrategyType triggers the legacy behavior. Version\ntracking and ordered rolling restarts are disabled. Pods are recreated\nfrom the StatefulSetSpec when they are manually deleted. When a scale\noperation is performed with this strategy, new Pods will be created from\nthe the specification version indicated by the StatefulSet\u0026rsquo;s\ncurrentRevision.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;RollingUpdate\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eRollingUpdateStatefulSetStrategyType indicates that update will be\napplied to all Pods in the StatefulSet with respect to the StatefulSet\nordering constraints. When a scale operation is performed with this\nstrategy, new Pods will be created from the specification version indicated\nby the StatefulSet\u0026rsquo;s updateRevision.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.StorageSpec\"\u003eStorageSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerSpec\"\u003eAlertmanagerSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eStorageSpec defines the configured storage for a group Prometheus servers.\nIf no storage option is specified, then by default an \u003ca href=\"https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\"\u003eEmptyDir\u003c/a\u003e will be used.\u003c/p\u003e\n\u003cp\u003eIf multiple storage options are specified, priority will be given as follows:\n1. emptyDir\n2. ephemeral\n3. volumeClaimTemplate\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edisableMountSubPath\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edisableMountSubPath deprecated: subPath usage will be removed in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eemptyDir\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#emptydirvolumesource-v1-core\"\u003e\nKubernetes core/v1.EmptyDirVolumeSource\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eemptyDir to be used by the StatefulSet.\nIf specified, it takes precedence over \u003ccode\u003eephemeral\u003c/code\u003e and \u003ccode\u003evolumeClaimTemplate\u003c/code\u003e.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\"\u003ehttps://kubernetes.io/docs/concepts/storage/volumes/#emptydir\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eephemeral\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#ephemeralvolumesource-v1-core\"\u003e\nKubernetes core/v1.EphemeralVolumeSource\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eephemeral to be used by the StatefulSet.\nThis is a beta field in k8s 1.21 and GA in 1.15.\nFor lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate.\nMore info: \u003ca href=\"https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes\"\u003ehttps://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeClaimTemplate\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedPersistentVolumeClaim\"\u003e\nEmbeddedPersistentVolumeClaim\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeClaimTemplate defines the PVC spec to be used by the Prometheus StatefulSets.\nThe easiest way to use a volume that cannot be automatically provisioned\nis to use a label selector alongside manually created PersistentVolumes.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.TLSConfig\"\u003eTLSConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003eAPIServerConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerEndpoints\"\u003eAlertmanagerEndpoints\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.GRPCServerTLSConfig\"\u003eGRPCServerTLSConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.HTTPConfigWithTLSFiles\"\u003eHTTPConfigWithTLSFiles\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003eRemoteReadSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003eScrapeClass\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.TracingConfig\"\u003eTracingConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTLSConfig defines full TLS configuration.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eca\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eca defines the Certificate authority used when verifying server certificates.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecert\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecert defines the Client certificate to present when doing client-authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeySecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeySecret defines the Secret
130containing the client key file for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserverName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserverName is used to verify the hostname for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einsecureSkipVerify\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einsecureSkipVerify defines how to disable target certificate validation.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSVersion\"\u003e\nTLSVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminVersion defines the minimum acceptable TLS version.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.35.0 or Thanos \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSVersion\"\u003e\nTLSVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxVersion defines the maximum acceptable TLS version.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.41.0 or Thanos \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecaFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecaFile defines the path to the CA cert in the Prometheus container to use for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecertFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecertFile defines the path to the client cert file in the Prometheus container for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeyFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeyFile defines the path to the client key file in the Prometheus container for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.TLSFilesConfig\"\u003eTLSFilesConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003eTLSConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTLSFilesConfig extends the TLS configuration with file parameters.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecaFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecaFile defines the path to the CA cert in the Prometheus container to use for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecertFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecertFile defines the path to the client cert file in the Prometheus container for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeyFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeyFile defines the path to the client key file in the Prometheus container for the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.TLSVersion\"\u003eTLSVersion\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003eSafeTLSConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;TLS10\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;TLS11\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;TLS12\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;TLS13\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.TSDBSpec\"\u003eTSDBSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoutOfOrderTimeWindow\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoutOfOrderTimeWindow defines how old an out-of-order/out-of-bounds sample can be with\nrespect to the TSDB max time.\u003c/p\u003e\n\u003cp\u003eAn out-of-order/out-of-bounds sample is ingested into the TSDB as long as\nthe timestamp of the sample is \u0026gt;= (TSDB.MaxTime - outOfOrderTimeWindow).\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estaleSeriesCompactionThreshold\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estaleSeriesCompactionThreshold configures the trigger point for compacting\nstale series from memory into persistent blocks and removing those stale\nseries from memory.\u003c/p\u003e\n\u003cp\u003eThe threshold is a number between 0.0 and 1.0. It represents the ratio of\nstale series in memory to the total series in memory. The stale series\ncompaction is triggered when this ratio crosses the configured threshold.\nIt may not trigger the stale series compaction if the usual head compaction\nis about to happen soon.\u003c/p\u003e\n\u003cp\u003eIf set to 0, stale series compaction is disabled.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.10.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003echunkEncoding\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ChunkEncodingSpec\"\u003e\nChunkEncodingSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003echunkEncoding configures per-chunk-type encoding overrides.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.13.0.\u003c/p\u003e\n\u003cp\u003eNotice: Setting \u0026ldquo;Xor\u0026rdquo; is incompatible with \u0026ndash;enable-feature=st-storage\n(XOR chunks do not store start timestamps).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ThanosRuler\"\u003eThanosRuler\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eThanosRulerSpec is a specification of the desired behavior of the ThanosRuler. More info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion of Thanos to be deployed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the ThanosRuler pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;thanos-ruler\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the ThanosRuler instance.\n* \u0026ldquo;thanos-ruler\u0026rdquo; label, set to the name of the ThanosRuler instance.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;thanos-ruler\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage defines Thanos container image URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy defines for the \u0026lsquo;thanos\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets defines an optional list of references to secrets in the same namespace\nto use for pulling thanos images from registries\nsee \u003ca href=\"http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\"\u003ehttp://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines when a ThanosRuler deployment is paused, no actions except for deleti
130on\nwill be performed on the underlying objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the number of thanos ruler instances to deploy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines which Nodes the Pods are scheduled on.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resource requirements for single Pods.\nIf not provided, no requests/limits will be set\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines when specified, the pod\u0026rsquo;s scheduling constraints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines when specified, the pod\u0026rsquo;s tolerations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#topologyspreadconstraint-v1-core\"\u003e\n[]Kubernetes core/v1.TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext defines the pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines Defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName defines the priority class assigned to the Pods\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003ethanos-ruler-
130operated\u003c/code\u003e for ThanosRuler resources.\nWhen deploying multiple ThanosRuler resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName defines the name of the ServiceAccount to use to run the\nThanos Ruler Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the specification of how storage shall be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes defines how configuration of additional volumes on the output StatefulSet definition. Volumes specified will\nbe appended to other volumes that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts defines how the configuration of additional VolumeMounts on the output StatefulSet definition.\nVolumeMounts specified will be appended to other VolumeMounts in the ruler container,\nthat are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eobjectStorageConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eobjectStorageConfig defines the configuration format is defined at \u003ca href=\"https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\"\u003ehttps://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eobjectStorageConfigFile\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eobjectStorageConfigFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eobjectStorageConfigFile defines the path of the object storage configuration file.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\"\u003ehttps://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration file.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003eobjectStorageConfig\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal defines the Thanos ruler listen on loopback, so that it\ndoes not bind against the Pod IP.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equeryEndpoints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equeryEndpoints defines the list of Thanos Query endpoints from which to query metrics.\u003c/p\u003e\n\u003cp\u003eFor Thanos \u0026gt;= v0.11.0, it is recommended to use \u003ccode\u003equeryConfig\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003equeryConfig\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equeryConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003equeryConfig defines the list of Thanos Query endpoints from which to query metrics.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/components/rule.md/#query-api\"\u003ehttps://thanos.io/tip/components/rule.md/#query-api\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= v0.11.0.\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003equeryEndpoints\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagersUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagersUrl defines the list of Alertmanager endpoints to send alerts to.\u003c/p\u003e\n\u003cp\u003eFor Thanos \u0026gt;= v0.10.0, it is recommended to use \u003ccode\u003ealertmanagersConfig\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ealertmanagersConfig\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertmanagersConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertmanagersConfig defines the list of Alertmanager endpoints to send alerts to.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/components/rule.md/#alertmanager\"\u003ehttps://thanos.io/tip/components/rule.md/#alertmanager\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= v0.10.0.\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003ealertmanagersUrl\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleSelector defines the PrometheusRule objects to be selected for rule evaluation. An empty\nlabel selector matches all objects. A null label selector matches no\nobjects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleNamespaceSelector defines the namespaces to be selected for Rules discovery. If unspecified, only\nthe same namespace as the ThanosRuler object is in is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedNamespaceLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedNamespaceLabel enforces adding a namespace label of origin for each alert\nand metric that is user created. The label value will always be the namespace of the object that is\nbeing created.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexcludedFromEnforcement\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ObjectReference\"\u003e\n[]ObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexcludedFromEnforcement defines the list of references to PrometheusRule objects\nto be excluded from enforcing a namespace label of origin.\nApplies only if enforcedNamespaceLabel set to true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusRulesExcludedFromEnforce\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusRuleExcludeConfig\"\u003e\n[]PrometheusRuleExcludeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusRulesExcludedFromEnforce defines a list of Prometheus rules to be excluded from enforcing\nof adding namespace labels. Works only if enforcedNamespaceLabel set to true.\nMake sure both ruleNamespace and ruleName are set for each pair\nDeprecated: use excludedFromEnforcement instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for ThanosRuler to be configured with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for ThanosRuler to be configured with.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName defines the port name used for the pods and governing service.\nDefaults to \u003ccode\u003eweb\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eevaluationInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eevaluationInterval defines the interval between consecutive evaluations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresendDelay\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresendDelay defines the minimum amount of time to wait before resending an alert to Alertmanager.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleOutageTolerance\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleOutageTolerance defines the max time to tolerate prometheus outage for restoring \u0026ldquo;for\u0026rdquo; state of alert.\nIt requires Thanos \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleQueryOffset\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleQueryOffset defines the default rule group\u0026rsquo;s query offset duration to use.\nIt requires Thanos \u0026gt;= v0.38.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleConcurrentEval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleConcurrentEval defines how many rules can be evaluated concurrently.\nIt requires Thanos \u0026gt;= v0.37.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruleGracePeriod\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruleGracePeriod defines the minimum duration between alert and restored \u0026ldquo;for\u0026rdquo; state.\nThis is maintained only for alerts with configured \u0026ldquo;for\u0026rdquo;
130 time greater than grace period.\nIt requires Thanos \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretention\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretention defines the time duration ThanosRuler shall retain data for. Default is \u0026lsquo;24h\u0026rsquo;, and\nmust match the regular expression \u003ccode\u003e[0-9]+(ms|s|m|h|d|w|y)\u003c/code\u003e (milliseconds\nseconds minutes hours days weeks years).\u003c/p\u003e\n\u003cp\u003eThe field has no effect when remote-write is configured since the Ruler\noperates in stateless mode.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers described here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003ethanos-ruler\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting initContainers to the Pod definition.\nThose can be used to e.g. fetch secrets for injection into the\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfig defines the tracing configuration.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/thanos/tracing.md/#configuration\"\u003ehttps://thanos.io/tip/thanos/tracing.md/#configuration\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003etracingConfigFile\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfigFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfigFile defines the path of the tracing configuration file.\u003c/p\u003e\n\u003cp\u003eThe configuration format is defined at \u003ca href=\"https://thanos.io/tip/thanos/tracing.md/#configuration\"\u003ehttps://thanos.io/tip/thanos/tracing.md/#configuration\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration file.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003etracingConfig\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabels defines the external label pairs of the ThanosRuler resource.\u003c/p\u003e\n\u003cp\u003eA default replica label \u003ccode\u003ethanos_ruler_replica\u003c/code\u003e will be always added as a\nlabel with the value of the pod\u0026rsquo;s name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertDropLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertDropLabels defines the label names which should be dropped in Thanos Ruler\n
130alerts.\u003c/p\u003e\n\u003cp\u003eThe replica label \u003ccode\u003ethanos_ruler_replica\u003c/code\u003e will always be dropped from the alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalPrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalPrefix defines the Thanos Ruler instances will be available under. This is\nnecessary to generate correct URLs. This is necessary if Thanos Ruler is not\nserved from root of a DNS name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix defines the route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egrpcServerTlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GRPCServerTLSConfig\"\u003e\nGRPCServerTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egrpcServerTlsConfig defines the gRPC server from which Thanos Querier reads\nrecorded rule data.\u003c/p\u003e\n\u003cp\u003eNote: Currently only the \u003ccode\u003eminVersion\u003c/code\u003e, \u003ccode\u003ecaFile\u003c/code\u003e, \u003ccode\u003ecertFile\u003c/code\u003e, \u003ccode\u003ekeyFile\u003c/code\u003e, \u003ccode\u003ecipherSuites\u003c/code\u003e and \u003ccode\u003ecurves\u003c/code\u003e fields are supported.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertQueryUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertQueryUrl defines how Thanos Ruler will set in the \u0026lsquo;Source\u0026rsquo; field\nof all alerts.\nMaps to the \u0026lsquo;\u0026ndash;alert.query-url\u0026rsquo; CLI arg.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly created pod should be ready\nwithout any of its container crashing for it to be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertRelabelConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertRelabelConfigs defines the alert relabeling in Thanos Ruler.\u003c/p\u003e\n\u003cp\u003eAlert relabel configuration must have the form as specified in the\nofficial Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ealertRelabelConfigFile\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealertRelabelConfigFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealertRelabelConfigFile defines the path to the alert relabeling configuration file.\u003c/p\u003e\n\u003cp\u003eAlert relabel configuration must have the form as specified in the\nofficial Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe operator performs no validation of the configuration file.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003ealertRelabelConfig\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases defines pods\u0026rsquo; hostAliases configuration\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs defines how to add additional arguments for the ThanosRuler container.\nIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nThanosRuler container which may cause issues if they are invalid or not supported\nby the given ThanosRuler version.\nIn case of an argument conflict (e.g. an argument which is already set by the\noperator itself) or when providing an invali
130d argument the reconciliation will\nfail and an error will be logged.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerWebSpec\"\u003e\nThanosRulerWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the configuration of the ThanosRuler web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWrite\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003e\n[]RemoteWriteSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWrite defines the list of remote write configurations.\u003c/p\u003e\n\u003cp\u003eWhen the list isn\u0026rsquo;t empty, the ruler is configured with stateless mode.\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= 0.24.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 120 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EnableFeature\"\u003e\n[]EnableFeature\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures defines how to setup Thanos Ruler feature flags. By default, no features are enabled.\u003c/p\u003e\n\u003cp\u003eEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eFor more information see \u003ca href=\"https://thanos.io/tip/components/rule.md/\"\u003ehttps://thanos.io/tip/components/rule.md/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Thanos \u0026gt;= 0.39.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ThanosRulerStatus\"\u003eThanosRulerStatus\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ThanosRuler\"\u003eThanosRuler\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eThanosRulerStatus is the most recent observed status of the ThanosRuler. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines whether any actions on the underlying managed objects are\nbeing performed. Only delete actions will be performed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the total number of non-terminated pods targeted by this ThanosRuler deployment\n(their labels match the selector).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdatedReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdatedReplicas defines the total number of non-terminated pods targeted by this ThanosRuler deployment\nthat have the desired version spec.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eavailableReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eavailableReplicas defines the total number of available pods (ready for at least minReadySeconds)\ntargeted by this ThanosRuler deployment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eunavailableReplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eunavailableReplicas defines the total number of unavailable pods targeted by this ThanosRuler deployment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econditions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Condition\"\u003e\n[]Condition\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econditions defines the current state of the ThanosRuler object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ThanosRulerWebSpec\"\u003eThanosRulerWebSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerSpec\"\u003eThanosRulerSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eThanosRulerWebSpec defines the configuration of the ThanosRuler web server.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebTLSConfig\"\u003e\nWebTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS parameters for HTTPS.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebHTTPConfig\"\u003e\nWebHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines HTTP parameters for web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.ThanosSpec\"\u003eThanosSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.PrometheusSpec\"\u003ePrometheusSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eThanosSpec defines the configuration of the Thanos sidecar.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage defines the container image name for Thanos. If specified, it takes precedence over\nthe \u003ccode\u003espec.thanos.baseImage\u003c/code\u003e, \u003ccode\u003espec.thanos.tag\u003c/code\u003e and \u003ccode\u003espec.thanos.sha\u003c/code\u003e\nfields.\u003c/p\u003e\n\u003cp\u003eSpecifying \u003ccode\u003espec.thanos.version\u003c/code\u003e is still necessary to ensure the\nPrometheus Operator knows which version of Thanos
130is being configured.\u003c/p\u003e\n\u003cp\u003eIf neither \u003ccode\u003espec.thanos.image\u003c/code\u003e nor \u003ccode\u003espec.thanos.baseImage\u003c/code\u003e are defined,\nthe operator will use the latest upstream version of Thanos available at\nthe time when the operator was released.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion of Thanos being deployed. The operator uses this information\nto generate the Prometheus StatefulSet + configuration files.\u003c/p\u003e\n\u003cp\u003eIf not specified, the operator assumes the latest upstream release of\nThanos available at the time when the version of the operator was\nreleased.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etag\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etag is deprecated: use \u0026lsquo;image\u0026rsquo; instead. The image\u0026rsquo;s tag can be specified as as part of the image name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esha\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esha is deprecated: use \u0026lsquo;image\u0026rsquo; instead. The image digest can be specified as part of the image name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebaseImage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebaseImage is deprecated: use \u0026lsquo;image\u0026rsquo; instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resources requests and limits of the Thanos sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eobjectStorageConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eobjectStorageConfig defines the Thanos sidecar\u0026rsquo;s configuration to upload TSDB blocks to object storage.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://thanos.io/tip/thanos/storage.md/\"\u003ehttps://thanos.io/tip/thanos/storage.md/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eobjectStorageConfigFile takes precedence over this field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eobjectStorageConfigFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eobjectStorageConfigFile defines the Thanos sidecar\u0026rsquo;s configuration file to upload TSDB blocks to object storage.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://thanos.io/tip/thanos/storage.md/\"\u003ehttps://thanos.io/tip/thanos/storage.md/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over objectStorageConfig.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal is deprecated: use \u003ccode\u003egrpcListenLocal\u003c/code\u003e and \u003ccode\u003ehttpListenLocal\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egrpcListenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egrpcListenLocal defines when true, the Thanos sidecar listens on the loopback interface instead\nof the Pod IP\u0026rsquo;s address for the gRPC endpoints.\u003c/p\u003e\n\u003cp\u003eIt has no effect if \u003ccode\u003elistenLocal\u003c/code\u003e is true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpListenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpListenLocal when true, the Thanos sidecar listens on the loopback interface instead\nof the Pod IP\u0026rsquo;s address for the HTTP endpoints.\u003c/p\u003e\n\u003cp\u003eIt has no effect if \u003ccode\u003elistenLocal\u003c/code\u003e is true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfig defines the tracing configuration for the Thanos sidecar.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003etracingConfigFile\u003c/code\u003e takes precedence over this field.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://thanos.io/tip/thanos/tracing.md/\"\u003ehttps://thanos.io/tip/thanos/tracing.md/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfigFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfigFile defines the tracing configuration file for the Thanos sidecar.\u003c/p\u003e\n\u003cp\u003eThis field takes precedence over \u003ccode\u003etracingConfig\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://thanos.io/tip/thanos/tracing.md/\"\u003ehttps://thanos.io/tip/thanos/tracing.md/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egrpcServerTlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.GRPCServerTLSConfig\"\u003e\nGRPCServerTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egrpcServerTlsConfig defines the TLS parameters for the gRPC server providing the StoreAPI.\u003c/p\u003e\n\u003cp\u003eNote: Currently only the \u
130003ccode\u003eminVersion\u003c/code\u003e, \u003ccode\u003ecaFile\u003c/code\u003e, \u003ccode\u003ecertFile\u003c/code\u003e, \u003ccode\u003ekeyFile\u003c/code\u003e, \u003ccode\u003ecipherSuites\u003c/code\u003e and \u003ccode\u003ecurves\u003c/code\u003e fields are supported.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for the Thanos sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for the Thanos sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminTime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminTime defines the start of time range limit served by the Thanos sidecar\u0026rsquo;s StoreAPI.\nThe field\u0026rsquo;s value should be a constant time in RFC3339 format or a time\nduration relative to current time, such as -1d or 2h45m. Valid duration\nunits are ms, s, m, h, d, w, y.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eblockSize\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eblockSize controls the size of TSDB blocks produced by Prometheus.\nThe default value is 2h to match the upstream Prometheus defaults.\u003c/p\u003e\n\u003cp\u003eWARNING: Changing the block duration can impact the performance and\nefficiency of the entire Prometheus/Thanos stack due to how it interacts\nwith memory and Thanos compactors. It is recommended to keep this value\nset to a multiple of 120 times your longest scrape or rule interval. For\nexample, 30s * 120 = 1h.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereadyTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereadyTimeout defines the maximum time that the Thanos sidecar will wait for\nPrometheus to start.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egetConfigInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egetConfigInterval defines how often to retrieve the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egetConfigTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egetConfigTimeout defines the maximum time to wait when retrieving the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts allows configuration of additional VolumeMounts for Thanos.\nVolumeMounts specified will be appended to other VolumeMounts in the\n\u0026lsquo;thanos-sidecar\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs allows setting additional arguments for the Thanos container.\nThe arguments are passed as-is to the Thanos container which may cause issues\nif they are invalid or not supported the given Thanos version.\nIn case of an argument conflict (e.g. an argument which is already set by the\noperator itself) or when providing an invali
130d argument, the reconciliation will\nfail and an error will be logged.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.TopologyShardingStrategy\"\u003eTopologyShardingStrategy\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ShardingStrategy\"\u003eShardingStrategy\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTopologyShardingStrategy defines the configuration for topology-aware sharding.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalLabelName defines the name of the Prometheus external label used\nto communicate the topology zone assigned to the Prometheus instance.\nIf not defined, it defaults to \u0026ldquo;zone\u0026rdquo;.\nIf set to the empty string, no external label is added to the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalues\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalues defines the list of topology values (e.g. zone names) to be used\nfor sharding. The configured number of shards must be greater than or\nequal to the number of values.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.TopologySpreadConstraint\"\u003eTopologySpreadConstraint\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxSkew\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eMaxSkew describes the degree to which pods may be unevenly distributed.\nWhen \u003ccode\u003ewhenUnsatisfiable=DoNotSchedule\u003c/code\u003e, it is the maximum permitted difference\nbetween the number of matching pods in the target topology and the global minimum.\nThe global minimum is the minimum number of matching pods in an eligible domain\nor zero if the number of eligible domains is less than MinDomains.\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\nlabelSelector spread as 2/2/1:\nIn 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;\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\nviolate MaxSkew(1).\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\nWhen \u003ccode\u003ewhenUnsatisfiable=ScheduleAnyway\u003c/code\u003e, it is used to give higher precedence\nto topologies that satisfy it.\nIt\u0026rsquo;s a required field. Default value is 1 and 0 is not allowed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologyKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eTopologyKey is the key of node labels. Nodes that have a label with this key\nand identical values are considered to be in the same topology.\nWe consider each \u003ckey, value\u003e as a \u0026ldquo;bucket\u0026rdquo;, and try to put balanced number\nof pods into each bucket.\nWe define a domain as a particular instance of a topology.\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\nnodeAffinityPolicy and nodeTaintsPolicy.\ne.g. If TopologyKey is \u0026ldquo;kubernetes.io/hostname\u0026rdquo;, each Node is a domain of that topology.\nAnd, if TopologyKey is \u0026ldquo;
130topology.kubernetes.io/zone\u0026rdquo;, each zone is a domain of that topology.\nIt\u0026rsquo;s a required field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewhenUnsatisfiable\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#unsatisfiableconstraintaction-v1-core\"\u003e\nKubernetes core/v1.UnsatisfiableConstraintAction\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eWhenUnsatisfiable indicates how to deal with a pod if it doesn\u0026rsquo;t satisfy\nthe spread constraint.\n- DoNotSchedule (default) tells the scheduler not to schedule it.\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\nbut giving higher precedence to topologies that would help reduce the\nskew.\nA constraint is considered \u0026ldquo;Unsatisfiable\u0026rdquo; for an incoming pod\nif and only if every possible node assignment for that pod would violate\n\u0026ldquo;MaxSkew\u0026rdquo; on some topology.\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\nlabelSelector spread as 3/1/1:\n| zone1 | zone2 | zone3 |\n| P P P | P | P |\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\nwon\u0026rsquo;t make it \u003cem\u003emore\u003c/em\u003e imbalanced.\nIt\u0026rsquo;s a required field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eLabelSelector is used to find matching pods.\nPods that match this label selector are counted to determine the number of pods\nin their corresponding topology domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminDomains\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eMinDomains indicates a minimum number of eligible domains.\nWhen the number of eligible domains with matching topology keys is less than minDomains,\nPod Topology Spread treats \u0026ldquo;global minimum\u0026rdquo; as 0, and then the calculation of Skew is performed.\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\nthis value has no effect on scheduling.\nAs a result, when the number of eligible domains is less than minDomains,\nscheduler won\u0026rsquo;t schedule more than maxSkew Pods to those domains.\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\nValid values are integers greater than 0.\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\u003c/p\u003e\n\u003cp\u003eFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\nlabelSelector spread as 2/2/2:\n| zone1 | zone2 | zone3 |\n| P P | P P | P P |\nThe number of domains is less than 5(MinDomains), so \u0026ldquo;global minimum\u0026rdquo; is treated as 0.\nIn this situation, new pod with the same labelSelector cannot be scheduled,\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\nit will violate MaxSkew.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeAffinityPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#nodeinclusionpolicy-v1-core\"\u003e\nKubernetes core/v1.NodeInclusionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eNodeAffinityPolicy indicates how we will treat Pod\u0026rsquo;s nodeAffinity/nodeSelector\nwhen 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.\u003c/p\u003e\n\u003cp\u003eIf this value is nil, the behavior is equivalent to the Honor policy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeTaintsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#nodeinclusionpolicy-v1-core\"\u003e\nKubernetes core/v1.NodeInclusionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eNodeTaintsPolicy indicates how we will treat node taints when calculating\npod topology spread skew. Options are:\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\nhas a toleration, are included.\n- Ignore: node taints are ignored. All nodes are included.\u003c/p\u003e\n\u003cp\u003eIf this value is nil, the behavior is equivalent to the Ignore policy.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ematchLabelKeys\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eMatchLabelKeys is a set of pod label keys to select the pods over which\nspreading will be calculated. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are ANDed with labelSelector\nto select the group of existing pods over which spreading will be calculated\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nMatchLabelKeys cannot be set when L
130abelSelector isn\u0026rsquo;t set.\nKeys that don\u0026rsquo;t exist in the incoming pod labels will\nbe ignored. A null or empty list means only match against labelSelector.\u003c/p\u003e\n\u003cp\u003eThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalLabelSelectors\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.AdditionalLabelSelectors\"\u003e\nAdditionalLabelSelectors\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalLabelSelectors Defines what Prometheus Operator managed labels should be added to labelSelector on the topologySpreadConstraint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.TracingConfig\"\u003eTracingConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.CommonPrometheusFields\"\u003eCommonPrometheusFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientType\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientType defines the client used to export the traces. Supported values are \u003ccode\u003eHTTP\u003c/code\u003e and \u003ccode\u003eGRPC\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eendpoint\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eendpoint to send the traces to. Should be provided in format \u003chost\u003e:\u003cport\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esamplingFraction\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esamplingFraction defines the probability a given trace will be sampled. Must be a float from 0 through 1.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einsecure\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einsecure if disabled, the client will use a secure connection.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eheaders\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eheaders defines the key-value pairs to be used as headers associated with gRPC or HTTP requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecompression\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecompression key for supported compression types. The only supported value is \u003ccode\u003eGzip\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout defines the maximum time the exporter will wait for each batch export.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TLSConfig\"\u003e\nTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig to use when sending traces.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.TranslationStrategyOption\"\u003eTranslationStrategyOption\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.OTLPConfig\"\u003eOTLPConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTranslationStrategyOption represents a translation strategy option for the OTLP endpoint.\nSupported values are:\n* \u003ccode\u003eNoUTF8EscapingWithSuffixes\u003c/code\u003e\n* \u003ccode\u003eUnderscoreEscapingWithSuffixes\u003c/code\u003e\n* \u003ccode\u003eUnderscoreEscapingWithoutSuffixes\u003c/code\u003e\n* \u003ccode\u003eNoTranslation\u003c/code\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;NoTranslation\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;NoUTF8EscapingWithSuffixes\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;UnderscoreEscapingWithSuffixes\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;UnderscoreEscapingWithoutSuffixes\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eIt requires Prometheus \u0026gt;= v3.6.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.URL\"\u003eURL\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerGlobalConfig\"\u003eAlertmanagerGlobalConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.GlobalJiraConfig\"\u003eGlobalJiraConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.GlobalRocketChatConfig\"\u003eGlobalRocketChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.GlobalTelegramConfig\"\u003eGlobalTelegramConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.GlobalVictorOpsConfig\"\u003eGlobalVictorOpsConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.GlobalWeChatConfig\"\u003eGlobalWeChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.GlobalWebexConfig\"\u003eGlobalWebexConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003eOAuth2\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteReadSpec\"\u003eRemoteReadSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003eRemoteWriteSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eURL represents a valid URL\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.WebConfigFileFields\"\u003eWebConfigFileFields\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.AlertmanagerWebSpec\"\u003eAlertmanagerWebSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.PrometheusWebSpec\"\u003ePrometheusWebSpec\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.ThanosRulerWebSpec\"\u003eThanosRulerWebSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWebConfigFileFields defines the file content for \u0026ndash;web.config.file flag.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebTLSConfig\"\u003e\nWebTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS parameters for HTTPS.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebHTTPConfig\"\u003e\nWebHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines HTTP parameters for web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.WebHTTPConfig\"\u003eWebHTTPConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.WebConfigFileFields\"\u003eWebConfigFileFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWebHTTPConfig defines HTTP parameters for web server.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttp2 enable HTTP/2 support. Note that HTTP/2 is only supported with TLS.\nWhen TLSConfig is not configured, HTTP/2 will be disabled.\nWhenever the value of the field changes, a rolling update will be triggered.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eheaders\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.WebHTTPHeaders\"\u003e\nWebHTTPHeaders\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eheaders defines a list of headers that can be added to HTTP responses.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.WebHTTPHeaders\"\u003eWebHTTPHeaders\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.WebHTTPConfig\"\u003eWebHTTPConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWebHTTPHeaders defines the list of headers that can be added to HTTP responses.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtentSecurityPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtentSecurityPolicy defines the C
130ontent-Security-Policy header to HTTP responses.\nUnset if blank.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003exFrameOptions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003exFrameOptions defines the X-Frame-Options header to HTTP responses.\nUnset if blank. Accepted values are deny and sameorigin.\n\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\"\u003ehttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003exContentTypeOptions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003exContentTypeOptions defines the X-Content-Type-Options header to HTTP responses.\nUnset if blank. Accepted value is nosniff.\n\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\"\u003ehttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003exXSSProtection\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003exXSSProtection defines the X-XSS-Protection header to all responses.\nUnset if blank.\n\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\"\u003ehttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estrictTransportSecurity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estrictTransportSecurity defines the Strict-Transport-Security header to HTTP responses.\nUnset if blank.\nPlease make sure that you use this with care as this header might force\nbrowsers to load Prometheus and the other applications hosted on the same\ndomain and subdomains over HTTPS.\n\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\"\u003ehttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.WebTLSConfig\"\u003eWebTLSConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ClusterTLSConfig\"\u003eClusterTLSConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1.WebConfigFileFields\"\u003eWebConfigFileFields\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWebTLSConfig defines the TLS parameters for HTTPS.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecert\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecert defines the Secret or ConfigMap containing the TLS certificate for the web server.\u003c/p\u003e\n\u003cp\u003eEither \u003ccode\u003ekeySecret\u003c/code\u003e or \u003ccode\u003ekeyFile\u003c/code\u003e must be defined.\u003c/p\u003e\n\u003cp\u003eIt is mutually exclusive with \u003ccode\u003ecertFile\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecertFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecertFile defines the path to the TLS certificate file in the container for the web server.\u003c/p\u003e\n\u003cp\u003eEither \u003ccode\u003ekeySecret\u003c/code\u003e or \u003ccode\u003ekeyFile\u003c/code\u003e must be defined.\u003c/p\u003e\n\u003cp\u003eIt is mutually exclusive with \u003ccode\u003ecert\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeySecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeySecret defines the secret
130containing the TLS private key for the web server.\u003c/p\u003e\n\u003cp\u003eEither \u003ccode\u003ecert\u003c/code\u003e or \u003ccode\u003ecertFile\u003c/code\u003e must be defined.\u003c/p\u003e\n\u003cp\u003eIt is mutually exclusive with \u003ccode\u003ekeyFile\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeyFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeyFile defines the path to the TLS private key file in the container for the web server.\u003c/p\u003e\n\u003cp\u003eIf defined, either \u003ccode\u003ecert\u003c/code\u003e or \u003ccode\u003ecertFile\u003c/code\u003e must be defined.\u003c/p\u003e\n\u003cp\u003eIt is mutually exclusive with \u003ccode\u003ekeySecret\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclient_ca\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SecretOrConfigMap\"\u003e\nSecretOrConfigMap\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclient_ca defines the Secret or ConfigMap containing the CA certificate for client certificate\nauthentication to the server.\u003c/p\u003e\n\u003cp\u003eIt is mutually exclusive with \u003ccode\u003eclientCAFile\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientCAFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientCAFile defines the path to the CA certificate file for client certificate authentication to\nthe server.\u003c/p\u003e\n\u003cp\u003eIt is mutually exclusive with \u003ccode\u003eclient_ca\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientAuthType\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ClientAuthType\"\u003e\nClientAuthType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientAuthType defines the server policy for client TLS authentication.\u003c/p\u003e\n\u003cp\u003eFor more detail on clientAuth options:\n\u003ca href=\"https://golang.org/pkg/crypto/tls/#ClientAuthType\"\u003ehttps://golang.org/pkg/crypto/tls/#ClientAuthType\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminVersion defines the minimum TLS version that is acceptable.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxVersion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxVersion defines the Maximum TLS version that is acceptable.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecipherSuites\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.\u003c/p\u003e\n\u003cp\u003eIf not defined, the Go default cipher suites are used.\nAvailable cipher suites are documented in the Go documentation:\n\u003ca href=\"https://golang.org/pkg/crypto/tls/#pkg-constants\"\u003ehttps://golang.org/pkg/crypto/tls/#pkg-constants\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epreferServerCipherSuites\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epreferServerCipherSuites defines whether the server selects the client\u0026rsquo;s most preferred cipher\nsuite, or the server\u0026rsquo;s most preferred cipher suite.\u003c/p\u003e\n\u003cp\u003eIf true then the server\u0026rsquo;s preference, as expressed in\nthe order of elements in cipherSuites, is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecurvePreferences\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecurvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference\norder.\u003c/p\u003e\n\u003cp\u003eAvailable curves are documented in the Go documentation:\n\u003ca href=\"https://golang.org/pkg/crypto/tls/#CurveID\"\u003ehttps://golang.org/pkg/crypto/tls/#CurveID\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.WhenScaledRetentionType\"\u003eWhenScaledRetentionType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ShardRetentionPolicy\"\u003eShardRetentionPolicy\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1.WorkloadBinding\"\u003eWorkloadBinding\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceStatus\"\u003eConfigResourceStatus\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWorkloadBinding is a link between a configuration resource and a workload resource.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroup\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003egroup defines the group of the referenced resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresource\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eresource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename defines the name of the referenced object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003enamespace defines the namespace of the referenced object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econditions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceCondition\"\u003e\n[]ConfigResourceCondition\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econditions defines the current state of the configuration resource when bound to the referenced Workload object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr/\u003e\n\u003ch2 id=\"monitoring.coreos.com/v1alpha1\"\u003emonitoring.coreos.com/v1alpha1\u003c/h2\u003e\nResource Types:\n\u003cul\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.AlertmanagerConfig\"\u003eAlertmanagerConfig\u003c/a\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PrometheusAgent\"\u003ePrometheusAgent\u003c/a\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfig\"\u003eScrapeConfig\u003c/a\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.AlertmanagerConfig\"\u003eAlertmanagerConfig\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerConfig configures the Prometheus Alertmanager,\nspecifying how alerts should be grouped, inhibited and notified to external systems.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1alpha1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eAlertmanagerConfig\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.AlertmanagerConfigSpec\"\u003e\nAlertmanagerConfigSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of AlertmanagerConfigSpec\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroute\u
130003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Route\"\u003e\nRoute\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroute defines the Alertmanager route definition for alerts matching the resource\u0026rsquo;s\nnamespace. If present, it will be added to the generated Alertmanager\nconfiguration as a first-level route.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereceivers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003e\n[]Receiver\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereceivers defines the list of receivers.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einhibitRules\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.InhibitRule\"\u003e\n[]InhibitRule\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching\nthe resource\u0026rsquo;s namespace.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emuteTimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.MuteTimeInterval\"\u003e\n[]MuteTimeInterval\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emuteTimeIntervals defines the list of MuteTimeInterval specifying when the routes should be muted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceStatus\"\u003e\nConfigResourceStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the status subresource. It is under active development and is updated only when the\n\u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\u003c/p\u003e\n\u003cp\u003eMost recent observed status of the ServiceMonitor. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.PrometheusAgent\"\u003ePrometheusAgent\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheusAgent\u003c/code\u003e custom resource definition (CRD) defines a desired \u003ca href=\"https://prometheus.io/blog/2021/11/16/agent/\"\u003ePrometheus Agent\u003c/a\u003e setup to run in a Kubernetes cluster.\u003c/p\u003e\n\u003cp\u003eThe CRD is very similar to the \u003ccode\u003ePrometheus\u003c/code\u003e CRD except for features which aren\u0026rsquo;t available in agent mode like rule evaluation, persistent storage and Thanos sidecar.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1alpha1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ePrometheusAgent\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PrometheusAgentSpec\"\u003e\nPrometheusAgentSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of the desired behavior of the Prometheus agent. More info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PrometheusAgentMode\"\u003e\nPrometheusAgentMode\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emode defines how the Prometheus operator deploys the PrometheusAgent pod(s).\u003c/p\u003e\n\u003cp\u003e(Alpha) Using this field requires the \u
130003ccode\u003ePrometheusAgentDaemonSet\u003c/code\u003e feature gate to be enabled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the Prometheus pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version.\n* \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeSelector defines the probes to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label\nselector matches all namespaces. A null label selector matches the\ncurrent namespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alp
130ha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion of Prometheus being deployed. The operator uses this information\nto generate the Prometheus StatefulSet + configuration files.\u003c/p\u003e\n\u003cp\u003eIf not specified, the operator assumes the latest upstream version of\nPrometheus available at the time when the version of the operator was\nreleased.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines when a Prometheus deployment is paused, no actions except for deletion\nwill be performed on the underlying objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage defines the container image name for Prometheus. If specified, it takes precedence\nover the \u003ccode\u003espec.baseImage\u003c/code\u003e, \u003ccode\u003espec.tag\u003c/code\u003e and \u003ccode\u003espec.sha\u003c/code\u003e fields.\u003c/p\u003e\n\u003cp\u003eSpecifying \u003ccode\u003espec.version\u003c/code\u003e is still necessary to ensure the Prometheus\nOperator knows which version of Prometheus is being configured.\u003c/p\u003e\n\u003cp\u003eIf neither \u003ccode\u003espec.image\u003c/code\u003e nor \u003ccode\u003espec.baseImage\u003c/code\u003e are defined, the operator\nwill use the latest upstream version of Prometheus available at the time\nwhen the operator was released.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets defines an optional list of references to Secrets in the same namespace\nto use for pulling images from registries.\nSee \u003ca href=\"http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\"\u003ehttp://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the number of replicas of each shard to deploy for a Prometheus deployment.\n\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\ncreated.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshards\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshards defines the number of shards to distribute the scraped targets onto.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\nbeing created.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator assumes only one shard.\u003c/p\u003e\n\u003cp\u003eNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. 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.\u003c/p\u003e\n\u003cp\u003eBy default, the sharding of targets is performed on:\n* The \u003ccode\u003e__address__\u
130003c/code\u003e target\u0026rsquo;s metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The \u003ccode\u003e__param_target__\u003c/code\u003e label for Probe resources.\u003c/p\u003e\n\u003cp\u003eUsers can define their own sharding implementation by setting the\n\u003ccode\u003e__tmp_hash\u003c/code\u003e label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\u003c/p\u003e\n\u003cp\u003eYou can also disable sharding on a specific target by setting the\n\u003ccode\u003e__tmp_disable_sharding\u003c/code\u003e label with relabeling configuration. When\nthe label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardingStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardingStrategy\"\u003e\nShardingStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes\ntargets based on a hash of the target address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicaExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicaExternalLabelName defines the name of Prometheus external label used to denote the replica name.\nThe external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to the\nempty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance\nname. The external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to\nthe empty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for Log level for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeInterval defines interval between consecutive scrapes.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the number of seconds to wait until a scrape request times out.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheusText1.0.0\u003c/code\u003e requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalLabels defines the labels to add to any time series or alerts when communicating with\nexternal systems (federation, remote storage, Alertmanager).\nLabels defined by \u003ccode\u003espec.replicaExternalLabelName\u003c/code\u003e and\n\u003ccode\u003espec.prometheusExternalLabelName\u003c/code\u003e take precedence over this list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableRemoteWriteReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote\nwrite protocol.\u003c/p\u003e\n\u003cp\u003eWARNING: This is not considered an efficie
130nt way of ingesting samples.\nUse it with caution for specific low-volume use cases.\nIt is not suitable for replacing the ingestion via scraping and turning\nPrometheus into a push-based metrics collection system.\nFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\"\u003ehttps://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.33.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableOTLPReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\u003c/p\u003e\n\u003cp\u003eNote that the OTLP receiver endpoint is automatically enabled if \u003ccode\u003e.spec.otlpConfig\u003c/code\u003e is defined.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWriteReceiverMessageVersions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteMessageVersion\"\u003e\n[]RemoteWriteMessageVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the\nremote writes.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EnableFeature\"\u003e\n[]EnableFeature\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\u003c/p\u003e\n\u003cp\u003eEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/feature_flags/\"\u003ehttps://prometheus.io/docs/prometheus/latest/feature_flags/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalUrl defines the external URL under which the Prometheus service is externally\navailable. This is necessary to generate correct URLs (for instance if\nPrometheus is accessible behind an Ingress resource).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix defines the route prefix Prometheus registers HTTP handlers for.\u003c/p\u003e\n\u003cp\u003eThis is useful when using \u003ccode\u003espec.externalURL\u003c/code\u003e, and a proxy is rewriting\nHTTP routes of a request, and the actual ExternalURL is still true, but\nthe server serves requests under a different route prefix. For example\nfor use with \u003ccode\u003ekubectl proxy\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the storage used by Prometheus.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes allows the configuration of additional volumes on the output\nStatefulSet definition. Volumes specified will be appended to other\nvolumes that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts allows the configuration of additional VolumeMounts.\u003c/p\u003e\n\u003cp\u003eVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo;\ncontainer, that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epersistentVolumeClaimRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#statefulsetpersistentvolumeclaimretentionpolicy-v1-apps\"\u003e\nKubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epersistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\nThe default behavior is all PVCs are retained.\nThis is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\nIt requires enabling the StatefulSetAutoDeletePVC feature gate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusWebSpec\"\u003e\nPrometheusWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the configuration of the Prometheus web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines on which Nodes the Pods are scheduled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName is the name of the ServiceAccount to use to run the\nPrometheus Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eautomountServiceAccountToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eautomountServiceAccountToken defines whether a service account token should be automatically mounted
130in the pod.\nIf the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWarning:\u003c/strong\u003e be aware that by default, Prometheus requires the service account token for Kubernetes service discovery.\nIt is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecrets defines a list of Secrets in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach Secret is added to the StatefulSet definition as a volume named \u003ccode\u003esecret-\u0026lt;secret-name\u0026gt;\u003c/code\u003e.\nThe Secrets are mounted into /etc/prometheus/secrets/\u003csecret-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigMaps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigMaps defines a list of ConfigMaps in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach ConfigMap is added to the StatefulSet definition as a volume named \u003ccode\u003econfigmap-\u0026lt;configmap-name\u0026gt;\u003c/code\u003e.\nThe ConfigMaps are mounted into /etc/prometheus/configmaps/\u003cconfigmap-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines the Pods\u0026rsquo; tolerations if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TopologySpreadConstraint\"\u003e\n[]TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWrite\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003e\n[]RemoteWriteSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWrite defines the list of remote write configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eotlp\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OTLPConfig\"\u003e\nOTLPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eotlp defines the settings related to the OTLP receiver feature.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext holds pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal when true, the Prometheus server listens on the loopback address\ninstead of the Pod IP\u0026rsquo;s address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers described here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003eprometheus\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\n* \u003ccode\u003ethanos-sidecar\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting init
130Containers to the Pod definition. Those\ncan be used to e.g. fetch secrets for injection into the Prometheus\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\nInitContainers described here modify an operator generated init\ncontainers if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of init container name managed by the operator are:\n* \u003ccode\u003einit-config-reloader\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOverriding init containers which are managed by the operator require\ncareful testing, especially when upgrading to a new version of the\noperator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalScrapeConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalScrapeConfigs allows specifying a key of a Secret containing\nadditional Prometheus scrape configurations. Scrape configurations\nspecified are appended to the configurations generated by the Prometheus\nOperator. Job configurations specified must have the form as specified\nin the official Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\u003c/a\u003e.\nAs scrape configs are appended, the user is responsible to make sure it\nis valid. Note that using this feature may expose the possibility to\nbreak upgrades of Prometheus. It is advised to review Prometheus release\nnotes to ensure that no incompatible scrape configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiserverConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003e\nAPIServerConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiserverConfig allows specifying a host and auth methods to access the\nKuberntees API server.\nIf null, Prometheus is assumed to run inside of the cluster: it will\ndiscover the API servers automatically and use the Pod\u0026rsquo;s CA certificate\nand bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName assigned to the Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName used for the pods and governing service.\nDefault: \u0026ldquo;web\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003earbitraryFSAccessThroughSMs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ArbitraryFSAccessThroughSMsConfig\"\u003e\nArbitraryFSAccessThroughSMsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003earbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to\nreference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo;\ncontainer.\nWhen a ServiceMonitor\u0026rsquo;s endpoint specifies a \u003ccode\u003ebearerTokenFile\u003c/code\u003e value\n(e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a\nmalicious target can get access to the Prometheus service account\u0026rsquo;s\ntoken in the Prometheus\u0026rsquo; scrape request. Setting\n\u003ccode\u003espec.arbitraryFSAccessThroughSM\u003c/code\u003e to \u0026lsquo;true\u0026rsquo; would prevent the attack.\nUsers should instead provide the credentials using the\n\u003ccode\u003espec.bearerTokenSecret\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data\nto âexported_â for all targets created from ServiceMonitor, PodMonitor and\nScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies.\nIn practice,\u003ccode\u003eOverrideHonorLabels:true\u003c/code\u003e enforces \u003ccode\u003ehonorLabels:false\u003c/code\u003e\nfor all ServiceMonitor, PodMonitor and ScrapeConfig objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created\nfrom service and pod monitors.\nOtherwise the HonorTimestamps field of the service or pod monitor applies.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eignoreNamespaceSelectors\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eignoreNamespaceSelectors when true, \u003ccode\u003espec.namespaceSelector\u003c/code\u003e from all PodMonitor, ServiceMonitor\nand Probe objects will be ignored. They will only discover targets\nwithin the namespace of the PodMonitor, ServiceMonitor and Probe\nobject.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedNamespaceLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedNamespaceLabel when not empty, a label will be added to:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAll metrics scraped from \u
130003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e and \u003ccode\u003eScrapeConfig\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll metrics generated from recording rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll alerts generated from alerting rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll vector selectors of PromQL expressions defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe label will not added for objects referenced in \u003ccode\u003espec.excludedFromEnforcement\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe label\u0026rsquo;s name is this field\u0026rsquo;s value.\nThe label\u0026rsquo;s value is the namespace of the \u003ccode\u003eServiceMonitor\u003c/code\u003e,\n\u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e, \u003ccode\u003ePrometheusRule\u003c/code\u003e or \u003ccode\u003eScrapeConfig\u003c/code\u003e object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedSampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedSampleLimit when defined specifies a global limit on the number\nof scraped samples that will be accepted. This overrides any\n\u003ccode\u003espec.sampleLimit\u003c/code\u003e set by ServiceMonitor, PodMonitor, Probe objects\nunless \u003ccode\u003espec.sampleLimit\u003c/code\u003e is greater than zero and less than\n\u003ccode\u003espec.enforcedSampleLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to keep the overall number of\nsamples/series under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e and \u003ccode\u003esampleLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e is greater than the \u003ccode\u003esampleLimit\u003c/code\u003e, the \u003ccode\u003esampleLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedTargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedTargetLimit when defined specifies a global limit on the number\nof scraped targets. The value overrides any \u003ccode\u003espec.targetLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.targetLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedTargetLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to to keep the overall number of\ntargets under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e and \u003ccode\u003etargetLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e is greater than the \u003ccode\u003etargetLimit\u003c/code\u003e, the \u003ccode\u003etargetLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelLimit when defined specifies a global limit on the number\nof labels per sample. The value overrides any \u003ccode\u003espec.labelLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e and \u003ccode\u003elabelLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelLimit\u003c/code\u003e, the \u003ccode\u003elabelLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelNameLengthLimit when defined specifies a global limit on the length\nof labels name per sample. The value overrides any \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelNameLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e and \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelValueLengthLimit when not null defines a global limit on the length\nof labels value per sample. The value overrides any \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelValueLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e and \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedKeepDroppedTargets when defined specifies a global limit on the number of targets\ndropped by relabeling that will be kept in memory. The value overrides\nany \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedKeepDroppedTargets\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e and \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e is greater than the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e, the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e will be set to \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedBodySizeLimit when defined specifies a global limit on the size\nof uncompressed response body that will be accepted by Prometheus.\nTargets responding with a body larger than this many bytes will cause\nthe scrape to fail.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e and \u003ccode\u003ebodySizeLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e is greater than the \u003ccode\u003ebodySizeLimit\u003c/code\u003e, the \u003ccode\u003ebodySizeLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameValidationScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameValidationSchemeOptions\"\u003e\nNameValidationSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameValidationScheme defines the validation scheme for metric and label names.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameEscapingScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameEscapingSchemeOptions\"\u003e\nNameEscapingSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameEscapingScheme defines the character escaping scheme that will be requested when scraping\nfor metric and label names that do not conform to the legacy Prometheus\ncharacter set.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native\nhistogram with custom buckets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.5.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready\nwithout any of its container crashing for it to be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s\nhosts file if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003cp\u003eIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nPrometheus container which may cause issues if they are invalid or not supported\nby the given Prometheus version.\u003c/p\u003e\n\u003cp\u003eIn case of an argument conflict (e.g. an argument which is already set by the\noperator itself) or when providing an invali
130d argument, the reconciliation will\nfail and an error will be logged.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewalCompression\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewalCompression defines the compression of the write-ahead log (WAL) using Snappy.\u003c/p\u003e\n\u003cp\u003eWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\u003c/p\u003e\n\u003cp\u003eRequires Prometheus v2.11.0 and above.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexcludedFromEnforcement\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ObjectReference\"\u003e\n[]ObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexcludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects\nto be excluded from enforcing a namespace label of origin.\u003c/p\u003e\n\u003cp\u003eIt is only applicable if \u003ccode\u003espec.enforcedNamespaceLabel\u003c/code\u003e set to true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostNetwork\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostNetwork defines the host\u0026rsquo;s network namespace if true.\u003c/p\u003e\n\u003cp\u003eMake sure to understand the security implications if you want to enable\nit (\u003ca href=\"https://kubernetes.io/docs/concepts/configuration/overview/\"\u003ehttps://kubernetes.io/docs/concepts/configuration/overview/\u003c/a\u003e ).\u003c/p\u003e\n\u003cp\u003eWhen hostNetwork is enabled, this will set the DNS policy to\n\u003ccode\u003eClusterFirstWithHostNet\u003c/code\u003e automatically (unless \u003ccode\u003e.spec.DNSPolicy\u003c/code\u003e is set\nto a different value).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels are appended to the \u003ccode\u003espec.podTargetLabels\u003c/code\u003e field of all\nPodMonitor and ServiceMonitor objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TracingConfig\"\u003e\nTracingConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfig defines tracing in Prometheus.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit defines per-scrape on response body size.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\nOnl
130y valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereloadStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ReloadStrategyType\"\u003e\nReloadStrategyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereloadStrategy defines the strategy used to reload the Prometheus configuration.\nIf not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaximumStartupDurationSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaximumStartupDurationSeconds defines the maximum time that the \u003ccode\u003eprometheus\u003c/code\u003e container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete.\nIf set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClasses\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003e\n[]ScrapeClass\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClasses defines the list of scrape classes to expose to scraping objects such as\nPodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceDiscoveryRole\"\u003e\nServiceDiscoveryRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceDiscoveryRole defines the service discovery role used to discover targets from\n\u003ccode\u003eServiceMonitor\u003c/code\u003e objects and Alertmanager endpoints.\u003c/p\u003e\n\u003cp\u003eIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
130.\nIf unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etsdb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TSDBSpec\"\u003e\nTSDBSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etsdb defines the runtime reloadable configuration of the timeseries database(TSDB).\nIt requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeFailureLogFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeFailureLogFile defines the file to which scrape failures are logged.\nReloading the configuration will reopen the file.\u003c/p\u003e\n\u003cp\u003eIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods\nwill mount the file into an emptyDir volume at \u003ccode\u003e/var/log/prometheus\u003c/code\u003e.\nIf a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you\nmust mount a volume in the specified directory and it must be writable.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003eprometheus-operated\u003c/code\u003e for Prometheus resources,\nor \u003ccode\u003eprometheus-agent-operated\u003c/code\u003e for PrometheusAgent resources.\nWhen deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruntime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RuntimeConfig\"\u003e\nRuntimeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruntime defines the values for the Prometheus process behavior\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 600 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusStatus\"\u003e\nPrometheusStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the most recent observed status of the Prometheus cluster. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.ScrapeConfig\"\u003eScrapeConfig\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across\nmultiple namespaces into the Prometheus configuration.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1alpha1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eScrapeConfig\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003e\nScrapeConfigSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of ScrapeConfigSpec.\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejobName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejobName defines the value of the \u003ccode\u003ejob\u003c/code\u003e label assigned to the scraped metrics by default.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ejob_name\u003c/code\u003e field in the rendered scrape configuration is always controlled by the\noperator to prevent duplicate job names, which Prometheus does not allow. Instead the\n\u003ccode\u003ejob\u003c/code\u003e label is set by means of relabeling configs.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estaticConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.StaticConfig\"\u003e\n[]StaticConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estaticConfigs defines a list of static targets with a common label set.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efileSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.FileSDConfig\"\u003e\n[]FileSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efileSDConfigs defines a list of file service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003e\n[]HTTPSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpSDConfigs defines a list of HTTP service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekubernetesSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003e\n[]KubernetesSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekubernetesSDConfigs defines a list of Kubernetes service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econsulSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003e\n[]ConsulSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econsulSDConfigs defines a list of Consul service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DNSSDConfig\"\u003e\n[]DNSSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsSDConfigs defines a list of DNS service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eec2SDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.EC2SDConfig\"\u003e\n[]EC2SDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eec2SDConfigs defines a list of EC2 service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eazureSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003e\n[]AzureSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eazureSDConfigs defines a list of Azure service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egceSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.GCESDConfig\"\u003e\n[]GCESDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egceSDConfigs defines a list of GCE service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eopenstackSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackSDConfig\"\u003e\n[]OpenStackSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eopenstackSDConfigs defines a list of OpenStack service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edigitalOceanSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DigitalOceanSDConfig\"\u003e\n[]DigitalOceanSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edigitalOceanSDConfigs defines a list of DigitalOcean service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekumaSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003e\n[]KumaSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekumaSDConfigs defines a list of Kuma service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eeurekaSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003e\n[]EurekaSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eeurekaSDConfigs defines a list of Eureka service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edockerSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003e\n[]DockerSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edockerSDConfigs defines a list of Docker service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elinodeSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.LinodeSDConfig\"\u003e\n[]LinodeSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elinodeSDConfigs defines a list of Linode service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehetznerSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003e\n[]HetznerSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehetznerSDConfigs defines a list of Hetzner service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enomadSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003e\n[]NomadSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enomadSDConfigs defines a list of Nomad service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edockerSwarmSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003e\n[]DockerSwarmSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edockerSwarmSDConfigs defines a list of Dockerswarm service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epuppetDBSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003e\n[]PuppetDBSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epuppetDBSDConfigs defines a list of PuppetDB service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u00
1303ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elightSailSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003e\n[]LightSailSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elightSailSDConfigs defines a list of Lightsail service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eovhcloudSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OVHCloudSDConfig\"\u003e\n[]OVHCloudSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eovhcloudSDConfigs defines a list of OVHcloud service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escalewaySDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScalewaySDConfig\"\u003e\n[]ScalewaySDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eionosSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.IonosSDConfig\"\u003e\n[]IonosSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eionosSDConfigs defines a list of IONOS service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erelabelings defines how to rewrite the target\u0026rsquo;s labels before scraping.\nPrometheus Operator automatically adds relabelings for a few standard Kubernetes fields.\nThe original scrape job\u0026rsquo;s name is available via the \u003ccode\u003e__tmp_prometheus_job_name\u003c/code\u003e label.\nMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricsPath\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricsPath defines the HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeInterval defines the interval between consecutive scrapes.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the number of seconds to wait until a scrape request times out.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehonorTimestamps defines whether Prometheus preserves the timestamps\nwhen exposed by the target.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etrackTimestampsStaleness\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etrackTimestampsStaleness defines whether Prometheus tracks staleness of\nthe metrics that have an explicit timestamp present in scraped data.\nHas no effect if \u003ccode\u003ehonorTimestamps\u003c/code\u003e is false.\nIt requires Prometheus \u0026gt;= v2.48.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehonorLabels defines when true the metric\u0026rsquo;s labels when they collide\nwith the target\u0026rsquo;s labels.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eparams\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string][]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eparams defines optional HTTP URL parameters\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Scheme\"\u003e\nScheme\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escheme defines the protocol scheme used for requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableCompression\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableCompression when false, Prometheus will request uncompressed response from the scraped target.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses true by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to use on every scrape request\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit defines a per-scrape limit on the size of the uncompressed\nresponse body that will be accepted by Prometheus. Targets responding with\na body larger than this many bytes will cause the scrape to fail.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\
130nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricRelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricRelabelings defines the metricRelabelings to apply to samples before ingestion.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameValidationScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameValidationSchemeOptions\"\u003e\nNameValidationSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameValidationScheme defines the validation scheme for metric and label names.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameEscapingScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameEscapingSchemeOptions\"\u003e\nNameEscapingSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameEscapingScheme defines the metric name escaping mode to request through content negotiation.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClass defines the scrape class to apply.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceStatus\"\u003e\nConfigResourceStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the status subresource. It is under active development and is updated only when the\n\u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\u003c/p\u003e\n\u003cp\u003eMost recent observed status of the ScrapeConfig. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.AlertmanagerConfig\"\u003eAlertmanagerConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerConfigSpec is a specification of the desired behavior of the\nAlertmanager configuration.\nBy default, the Alertmanager configuration only applies to alerts for which\nthe \u003ccode\u003enamespace\u003c/code\u003e label is equal to the namespace of the AlertmanagerConfig\nresource (see the \u003ccode\u003e.spec.alertmanagerConfigMatcherStrategy\u003c/code\u003e field of the\nAlertmanager CRD).\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroute\u
130003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Route\"\u003e\nRoute\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroute defines the Alertmanager route definition for alerts matching the resource\u0026rsquo;s\nnamespace. If present, it will be added to the generated Alertmanager\nconfiguration as a first-level route.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereceivers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003e\n[]Receiver\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereceivers defines the list of receivers.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einhibitRules\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.InhibitRule\"\u003e\n[]InhibitRule\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching\nthe resource\u0026rsquo;s namespace.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emuteTimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.MuteTimeInterval\"\u003e\n[]MuteTimeInterval\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emuteTimeIntervals defines the list of MuteTimeInterval specifying when the routes should be muted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.AttachMetadata\"\u003eAttachMetadata\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enode attaches node metadata to discovered targets.\nWhen set to true, Prometheus must have the \u003ccode\u003eget\u003c/code\u003e permission on the\n\u003ccode\u003eNodes\u003c/code\u003e objects.\nOnly valid for Pod, Endpoint and Endpointslice roles.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.AuthenticationMethodType\"\u003eAuthenticationMethodType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003eAzureSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;ManagedIdentity\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;OAuth\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;SDK\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;WorkloadIdentity\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003eAzureSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAzureSDConfig allow retrieving scrape targets from Azure VMs.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#azure_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#azure_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenvironment defines the Azure environment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthenticationMethod\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.AuthenticationMethodType\"\u003e\nAuthenticationMethodType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthenticationMethod defines the authentication method, either \u003ccode\u003eOAuth\u003c/code\u003e or \u003ccode\u003eManagedIdentity\u003c/code\u003e or \u003ccode\u003eSDK\u003c/code\u003e.\nSee \u003ca href=\"https://docs.microsoft.com/en-us
130/azure/active-directory/managed-identities-azure-resources/overview\"\u003ehttps://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview\u003c/a\u003e\nSDK authentication method uses environment variables by default.\nSee \u003ca href=\"https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\"\u003ehttps://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esubscriptionID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003esubscriptionID defines subscription ID. Always required.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etenantID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etenantID defines tenant ID. Only required with the OAuth authentication method.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientID defines client ID. Only required with the OAuth authentication method.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientSecret defines client secret. Only required with the OAuth authentication method.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresourceGroup\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresourceGroup defines resource group name. Limits discovery to this resource group.\nRequires Prometheus v2.35.0 and above\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\ninstead be specified in the relabeling rule.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the information to authenticate against the target HTTP endpoint.\nMore info: \u003ca href=\"https://prometheus.io/docs/operating/configuration/#endpoints\"\u003ehttps://prometheus.io/docs/operating/configuration/#endpoints\u003c/a\u003e\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003eoAuth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the authorization header configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eoAuth2\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration applying to the target HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003eConsulSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eConsulSDConfig defines a Consul service discovery configuration\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#consul_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#consul_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eserver defines the consul server address. A valid string consisting of a hostname or IP followed by an optional port number.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epathPrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epathPrefix defines the prefix for URIs for when consul is behind an API gateway (reverse proxy).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoken
130Ref\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etokenRef defines the consul ACL TokenRef, if not provided it will use the ACL from the local Consul Agent.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edatacenter\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edatacenter defines the consul Datacenter name, if not provided it will use the local Consul Agent Datacenter.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespace are only supported in Consul Enterprise.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= 2.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epartition\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epartition defines the admin Partitions are only supported in Consul Enterprise.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Scheme\"\u003e\nScheme\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escheme defines the HTTP Scheme.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eservices\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eservices defines a list of services for which targets are retrieved. If omitted, all services are scraped.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etags\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etags defines an optional list of tags used to filter nodes for a given service. Services must contain all tags in the list.\nStarting with Consul 1.14, it is recommended to use \u003ccode\u003efilter\u003c/code\u003e with the \u003ccode\u003eServiceTags\u003c/code\u003e selector instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etagSeparator\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etagSeparator defines the string by which Consul tags are joined into the tag label.\nIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeMeta\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeMeta defines the node metadata key/value pairs to filter nodes for a given service.\nStarting with Consul 1.14, it is recommended to use \u003ccode\u003efilter\u003c/code\u003e with the \u003ccode\u003eNodeMeta\u003c/code\u003e selector instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efilter\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efilter defines the filter expression used to filter the catalog results.\nSee \u003ca href=\"https://developer.hashicorp.com/consul/api-docs/catalog#filtering\"\u003ehttps://developer.hashicorp.com/consul/api-docs/catalog#filtering\u003c/a\u003e\nIt requires Prometheus \u0026gt;= 3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehealthFilter\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehealthFilter defines the filter expression used to filter the health results.\nSee \u003ca href=\"https://developer.hashicorp.com/consul/api-docs/health#filtering\"\u003ehttps://developer.hashicorp.com/consul/api-docs/health#filtering\u003c/a\u003e\nIt requires Prometheus \u0026gt;= 3.11.2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eallowStale\u
130003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eallowStale Consul results (see \u003ca href=\"https://www.consul.io/api/features/consistency.html\"\u003ehttps://www.consul.io/api/features/consistency.html\u003c/a\u003e). Will reduce load on Consul.\nIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the information to authenticate against the Consul Server.\nMore info: \u003ca href=\"https://prometheus.io/docs/operating/configuration/#endpoints\"\u003ehttps://prometheus.io/docs/operating/configuration/#endpoints\u003c/a\u003e\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Consul Server.\nCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Consul API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.DNSRecordType\"\u003eDNSRecordType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.DNSSDConfig\"\u003eDNSSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;A\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;AAAA\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;MX\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;NS\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;SRV\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.DNSSDConfig\"\u003eDNSSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDNSSDConfig allows specifying a set of DNS domain names which are periodically queried to discover a list of targets.\nThe DNS servers to be contacted are read from /etc/resolv.conf.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dns_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#dns_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enames\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003enames defines a list of DNS domain names to be queried.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DNSRecordType\"\u003e\nDNSRecordType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etype defines the type of DNS query to perform. One of SRV, A, AAAA, MX or NS.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eWhen set to NS, it requires Prometheus \u0026gt;= v2.49.0.\nWhen set to MX, it requires Prometheus \u0026gt;= v2.38.0\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\nIgnored for SRV records\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.DayOfMonthRange\"\u003eDayOfMonthRange\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.TimeInterval\"\u003eTimeInterval\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDayOfMonthRange is an inclusive range of days of the month beginning at 1\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estart\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estart of the inclusive range\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eend\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eend of the inclusive range\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.DigitalOceanSDConfig\"\u003eDigitalOceanSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDigitalOceanSDConfig allow retrieving scrape targets from DigitalOcean\u0026rsquo;s Droplets API.\nThis service discovery uses the public IPv4 address by default, by that can be changed with relabeling\
130nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#digitalocean_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#digitalocean_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the DigitalOcean API.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the DigitalOcean API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.DiscordConfig\"\u003eDiscordConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDiscordConfig configures notifications via Discord.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#discord_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#discord_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eapiURL defines the secret\u0026rsquo;s key that contains the Discord webhook URL.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the template of the message\u0026rsquo;s title.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the template of the message\u0026rsquo;s body.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtent\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtent defines the template of the content\u0026rsquo;s body.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eusername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eusername defines the username of the message sender.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eavatarURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eavatarURL defines the avatar url of the message sender.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003eDockerSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDocker SD configurations allow retrieving scrape targets from Docker Engine hosts.\nThis SD discovers \u0026ldquo;containers\u0026rdquo; and will create a target for each network IP and\nport the container is configured to expose.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#docker_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#docker_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ehost defines the address of the docker daemon.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Docker daemon.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostNetworkingHost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostNetworkingHost defines the host to use if the container is in host networking mode.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ematchFirstNetwork\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ematchFirstNetwork defines whether to match the first network if the container has multiple networks defined.\nIf unset, Prometheus uses true by default.\nIt requires Prometheus \u0026gt;= v2.54.1.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efilters\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Filters\"\u003e\nFilters\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efilters defines filters to limit the discovery process to a subset of the available resources.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Docker daemon.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.DockerSwarmRole\"\u003eDockerSwarmRole\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDockerSwarmRole defines the role of Docker Swarm targets to retrieve.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Nodes\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Services\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Tasks\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDockerSwarmSDConfig configurations allow retrieving scrape targets from Docker Swarm engine.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dockerswarm_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#dockerswarm_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ehost defines the address of the Docker daemon\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmRole\"\u003e\nDockerSwarmRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003erole of the targets to retrieve. Must be \u003ccode\u003eServices\u003c/code\u003e, \u003ccode\u003eTasks\u003c/code\u003e, or \u003ccode\u003eNodes\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\ntasks and services that don\u0026rsquo;t have published ports.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efilters\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Filters\"\u003e\nFilters\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efilters defines the filters to limit the discovery process to a subset of available\nresources.\nThe available filters are listed in the upstream documentation:\nServices: \u003ca href=\"https://docs.docker.com/engine/api/v1.40/#operation/ServiceList\"\u003ehttps://docs.docker.com/engine/api/v1.40/#operation/ServiceList\u003c/a\u003e\nTasks: \u003ca href=\"https://docs.docker.com/engine/api/v1.40/#operation/TaskList\"\u003ehttps://docs.docker.com/engine/api/v1.40/#operation/TaskList\u003c/a\u003e\nNodes: \u003ca href=\"https://docs.docker.com/engine/api/v1.40/#operation/NodeList\"\u003ehttps://docs.docker.com/engine/api/v1.40/#operation/NodeList\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Docker Swarm API.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Docker Swarm daemon.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.EC2SDConfig\"\u003eEC2SDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eEC2SDConfig allow retrieving scrape targets from AWS EC2 instances.\nThe private IP address is used by default, but may be changed to the public IP address with relabeling.\nThe IAM credentials used must have the ec2:DescribeInstances permission to discover scrape targets\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ec2_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#ec2_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe EC2 service discovery requires AWS API keys or role ARN for authentication.\nBasicAuth, Authorization and OAuth2 fields are not present on purpose.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eregion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eregion defines the AWS region.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaccessKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaccessKey defines the AWS API key.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecretKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecretKey defines the AWS API secret.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroleARN\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroleARN defines an alternative to using AWS API keys.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\ninstead be specified in the relabeling rule.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efilters\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Filters\"\u003e\nFilters\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efilters can be used optionally to filter the instance list by other criteria.\nAvailable filter criteria can be found here:\n\u003ca href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html\"\u003ehttps://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html\u003c/a\u003e\nFilter API documentation: \u003ca href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Filter.html\"\u003ehttps://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Filter.html\u003c/a\u003e\nIt requires Prometheus \u0026gt;= v2.3.0\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the EC2 API.\nIt requires Prometheus \u0026gt;= v2.41.0\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nIt requires Prometheus \u0026gt;= v2.41.0\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u
130003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\nIt requires Prometheus \u0026gt;= v2.41.0\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.EmailConfig\"\u003eEmailConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eEmailConfig configures notifications via Email.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eto\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eto defines the email address to send notifications to.\nThis is the recipient address for alert notifications.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efrom\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efrom defines the sender address for email notifications.\nThis appears as the \u0026ldquo;From\u0026rdquo; field in the email header.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehello\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehello defines the hostname to identify to the SMTP server.\nThis is used in the SMTP HELO/EHLO command during the connection handshake.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esmarthost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esmarthost defines the SMTP host and port through which emails are sent.\nFormat should be \u0026ldquo;hostname:port\u0026rdquo;, e.g. \u0026ldquo;smtp.example.com:587\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthUsername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthUsername defines the username to use for SMTP authentication.\nThis is used for SMTP AUTH when the server requires authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthPassword\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthPassword defines the secret\u0026rsquo;s key that contains the password to use for authentication.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthSecret defines the secret\u0026rsquo;s key that contains the CRAM-MD5 secret.\nThis is used for CRAM-MD5 authentication mechanism.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthIdentity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthIdentity defines the identity to use for SMTP authentication.\nThis is typically used with PLAIN authentication mechanism.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eheaders\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KeyValue\"\u003e\n[]KeyValue\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eheaders defines additional email header key/value pairs.\nThese override any headers previously set by the notification implementation.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehtml\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehtml defines the HTML body of the email notification.\nThis allows for rich formatting in the email content.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the plain text body of the email notification.\nThis provides a fallback for email clients that don\u0026rsquo;t support HTML.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erequireTLS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erequireTLS defines the SMTP TLS requirement.\nNote that Go does not support unencrypted connections to remote SMTP endpoints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration for SMTP connections.\nThis includes settings for certificates, CA validation, and TLS protocol options.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eforceImplicitTLS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eforceImplicitTLS defines whether to force use of implicit TLS (direct TLS connection) for better security.\ntrue: force use of implicit TLS (direct TLS connection on any port)\nfalse: force disable implicit TLS (use explicit TLS/STARTTLS if required)\nnil (default): auto-detect based on port (465=implicit, other=explicit) for backward compatibility\nIt requires Alertmanager \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethreading\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.EmailThreadingConfig\"\u003e\nEmailThreadingConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ethreading defines the threading configuration for email receiver.\nIt requires Alertmanager \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.EmailThreadingConfig\"\u003eEmailThreadingConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.EmailConfig\"\u003eEmailConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethreadByDate\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.ThreadByDateType\"\u003e\nThreadByDateType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ethreadByDate defines what granularity of current date to thread by. Accepted values: Daily, None.\n(None means group by alert group key, no date).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003eEurekaSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eEureka SD configurations allow retrieving scrape targets using the Eureka REST API.\nPrometheus will periodically check the REST endpoint and create a target for every app instance.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#eureka_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#eureka_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eserver defines the URL to connect to the Eureka server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the BasicAuth information to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Eureka server.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Eureka server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.FileSDConfig\"\u003eFileSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eFileSDConfig defines a Prometheus file service discovery configuration\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/t
130h\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efiles\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.SDFile\"\u003e\n[]SDFile\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003efiles defines the list of files to be used for file discovery. Recommendation: use absolute paths. While relative paths work, the\nprometheus-operator project makes no guarantees about the working directory where the configuration file is\nstored.\nFiles must be mounted using Prometheus.ConfigMaps or Prometheus.Secrets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Filter\"\u003eFilter\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eFilter name and value pairs to limit the discovery process to a subset of available resources.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename of the Filter.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalues\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003evalues defines values to filter on.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Filters\"\u003eFilters\n(\u003ccode\u003e[]github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1alpha1.Filter\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003eDockerSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003eDockerSwarmSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EC2SDConfig\"\u003eEC2SDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.GCESDConfig\"\u003eGCESDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eGCESDConfig configures scrape targets from GCP GCE instances.\nThe private IP address is used by default, but may be changed to\nthe public IP address with relabeling.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#gce_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#gce_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe GCE service discovery will load the Google Cloud credentials\nfrom the file specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable.\nSee \u003ca href=\"https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform\"\u003ehttps://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eA pre-requisite for using GCESDConfig is that a Secret containing valid\nGoogle Cloud credentials is mounted into the Prometheus or PrometheusAgent\npod via the \u003ccode\u003e.spec.secrets\u003c/code\u003e field and that the GOOG
130LE_APPLICATION_CREDENTIALS\nenvironment variable is set to /etc/prometheus/secrets/\u003csecret-name\u003e/\u003ccredentials-filename.json\u003e.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproject\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eproject defines the Google Cloud Project ID\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ezone\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ezone defines the zone of the scrape targets. If you need multiple zones use multiple GCESDConfigs.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efilter\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efilter defines the filter that can be used optionally to filter the instance list by other criteria\nSyntax of this filter is described in the filter query parameter section:\n\u003ca href=\"https://cloud.google.com/compute/docs/reference/latest/instances/list\"\u003ehttps://cloud.google.com/compute/docs/reference/latest/instances/list\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\ninstead be specified in the relabeling rule.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etagSeparator\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etagSeparator defines the tag separator is used to separate the tags on concatenation\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003eHTTPConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.DiscordConfig\"\u003eDiscordConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.MSTeamsConfig\"\u003eMSTeamsConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.MSTeamsV2Config\"\u003eMSTeamsV2Config\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PushoverConfig\"\u003ePushoverConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.RocketChatConfig\"\u003eRocketChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.SNSConfig\"\u003eSNSConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.TelegramConfig\"\u003eTelegramConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.VictorOpsConfig\"\u003eVictorOpsConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.WeChatConfig\"\u003eWeChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.WebexConfig\"\u003eWebexConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.WebhookConfig\"\u003eWebhookConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHTTPConfig defines a client HTTP configuration.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#http_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#http_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the authorization header configuration for the client.\nThis is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the basic authentication credentials for the client.\nThis is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\nThis enables OAuth2 authentication flow for HTTP requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines the secret\u0026rsquo;s key that contains the bearer token to be used by the client\nfor authentication.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration for the client.\nThis includes settings for certificates, CA validation, and TLS protocol options.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyURL defines an optional proxy URL for HTTP requests.\nIf defined, this field takes precedence over \u003ccode\u003eproxyUrl\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects specifies whether the client should follow HTTP 3xx redirects.\nWhen true, the client will automatically follow redirect responses.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003eHTTPSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHTTPSDConfig defines a prometheus HTTP service discovery configuration\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eurl defines the URL from which the targets are fetched.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\nMore info: \u003ca href=\"https://prometheus.io/docs/operating/configuration/#endpoints\"\u003ehttps://prometheus.io/docs/operating/configuration/#endpoints\u003c/a\u003e\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003eoAuth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the authorization header configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eoAuth2\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt
130requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration applying to the target HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.HetznerRole\"\u003eHetznerRole\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003eHetznerSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHetznerRole defines the Hetzner role of entities that should be discovered.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Hcloud\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Robot\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003eHetznerSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHetznerSDConfig allow retrieving scrape targets from Hetzner Cloud API and Robot API.\nThis service discovery uses the public IPv4 address by default, but that can be changed with relabeling\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#hetzner_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#hetzner_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerRole\"\u003e\nHetznerRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003erole defines the Hetzner role of entities that should be discovered.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Hetzner API.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Hetzner API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelSelector defines the label selector used to filter the servers when fetching them from the API.\nIt requires Prometheus \u0026gt;= v3.5.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.InhibitRule\"\u003eInhibitRule\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eInhibitRule defines an inhibition rule that allows to mute alerts when other\nalerts are already firing.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetMatch\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Matcher\"\u003e\n[]Matcher\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetMatch defines matchers that have to be fulfilled
130in the alerts to be muted.\nThe operator enforces that the alert matches the resource\u0026rsquo;s namespace.\nWhen these conditions are met, matching alerts will be inhibited (silenced).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esourceMatch\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Matcher\"\u003e\n[]Matcher\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esourceMatch defines matchers for which one or more alerts have to exist for the inhibition\nto take effect. The operator enforces that the alert matches the resource\u0026rsquo;s namespace.\nThese are the \u0026ldquo;trigger\u0026rdquo; alerts that cause other alerts to be inhibited.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eequal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eequal defines labels that must have an equal value in the source and target alert\nfor the inhibition to take effect. This ensures related alerts are properly grouped.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.IonosSDConfig\"\u003eIonosSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eIonosSDConfig configurations allow retrieving scrape targets from IONOS resources.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ionos_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#ionos_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edatacenterID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003edatacenterID defines the unique ID of the IONOS data center.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the IONOS API.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the IONOS API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.K8SSelectorConfig\"\u003eK8SSelectorConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eK8SSelectorConfig is Kubernetes Selector Config\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesRole\"\u003e\nKubernetesRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003erole defines the type of Kubernetes resource to limit the service discovery to.\nAccepted values are: Node, Pod, Endpoints, EndpointSlice, Service, Ingress.\u
130003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabel defines an optional label selector to limit the service discovery to resources with specific labels and label values.\ne.g: \u003ccode\u003enode.kubernetes.io/instance-type=master\u003c/code\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efield\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efield defines an optional field selector to limit the service discovery to resources which have fields with specific values.\ne.g: \u003ccode\u003emetadata.name=foobar\u003c/code\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.KeyValue\"\u003eKeyValue\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.EmailConfig\"\u003eEmailConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.VictorOpsConfig\"\u003eVictorOpsConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eKeyValue defines a (key, value) tuple.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ekey defines the key of the tuple.\nThis is the identifier or name part of the key-value pair.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003evalue defines the value of the tuple.\nThis is the data or content associated with the key.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.KubernetesRole\"\u003eKubernetesRole\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.K8SSelectorConfig\"\u003eK8SSelectorConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Endpoints\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;EndpointSlice\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Ingress\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Node\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Pod\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Service\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eKubernetesSDConfig allows retrieving scrape targets from Kubernetes\u0026rsquo; REST API.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiServer\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiServer defines the API server address consisting of a hostname or IP address followed\nby an optional port number.\nIf left empty, Prometheus is assumed to run inside\nof the cluster. It will discover API servers automatically and use the pod\u0026rsquo;s\nCA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesRole\"\u003e\nKubernetesRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003erole defines the Kubernetes role of the entities that should be discovered.\nRole \u003ccode\u003eEndpointslice\u003c/code\u003e requires Prometheus \u0026gt;= v2.21.0\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespaces\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.NamespaceDiscovery\"\u003e\nNamespaceDiscovery\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespaces defines the namespace discovery. If omitted, Prometheus discovers targets across all namespaces.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eattachMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.AttachMetadata\"\u003e\nAttachMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eattachMetadata defines the metadata to attach to discovered targets.\nIt requires Prometheus \u0026gt;= v2.35.0 when using the \u003ccode\u003ePod\u003c/code\u003e role and\nPrometheus \u0026gt;= v2.37.0 for \u003ccode\u003eEndpoints\u003c/code\u003e and \u003ccode\u003eEndpointslice\u003c/code\u003e roles.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eselectors\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.K8SSelectorConfig\"\u003e\n[]K8SSelectorConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eselectors defines the selector to select objects.\nIt requires Prometheus \u0026gt;= v2.17.0\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the authorization header to use on every scrape request.\nCannot be set at the same time as \u003ccode\u003ebasicAuth\u003c/code\u003e, or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Kubernetes API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003eKumaSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eKumaSDConfig allow retrieving scrape targets from Kuma\u0026rsquo;s control plane.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kuma_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#kuma_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eserver defines the address of the Kuma Control Plane\u0026rsquo;s MADS xDS server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientID is used by Kuma Control Plane to compute Monitoring Assignment for specific Prometheus backend.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efetchTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efetchTimeout defines the time after which the monitoring assignments are refreshed.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c
130/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Kuma control plane.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Kuma control plane.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003eLightSailSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eLightSailSDConfig configurations allow retrieving scrape targets from AWS Lightsail instances.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#lightsail_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#lightsail_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eregion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eregion defines the AWS region.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaccessKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaccessKey defines the AWS API key.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecretKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecretKey defines the AWS API secret.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroleARN\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroleARN defines the AWS Role ARN, an alternative to using AWS API keys.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eendpoint\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eendpoint defines the custom endpoint to be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Lightsail API.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Lightsail API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.LinodeSDConfig\"\u003eLinodeSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eLinodeSDConfig configurations allow retrieving scrape targets from Linode\u0026rsquo;s Linode APIv4.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#linode_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#linode_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eregion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eregion defines the region to filter on.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etagSeparator\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etagSeparator defines the string by which Linode Instance tags are joined into the tag label.el.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Linode API.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnv
130ironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Linode API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.MSTeamsConfig\"\u003eMSTeamsConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMSTeamsConfig configures notifications via Microsoft Teams.\nIt requires Alertmanager \u0026gt;= 0.26.0.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebhookUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ewebhookUrl defines the MSTeams webhook URL for sending notifications.\nThis is the incoming webhook URL configured in your Teams channel.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the message title template for Teams notifications.\nThis appears as the main heading of the Teams message card.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esummary\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esummary defines the message summary template for Teams notifications.\nThis provides a brief overview that appears in Teams notification previews.\nIt requires Alertmanager \u0026gt;= 0.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the message body template for Teams notifications.\nThis contains the detailed content of the Teams message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for Teams webhook requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.MSTeamsV2Config\"\u003eMSTeamsV2Config\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMSTeamsV2Config configures notifications via Microsoft Teams using the new message format with adaptive cards as required by flows.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#msteamsv2_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#msteamsv2_config\u003c/a\u003e\nIt requires Alertmanager \u0026gt;= 0.28.0.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebhookURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewebhookURL defines the MSTeams incoming webhook URL for adaptive card notifications.\nThis webhook must support the newer adaptive cards format required by Teams flows.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the message title template for adaptive card notifications.\nThis appears as the main heading in the Teams adaptive card.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the message body template for adaptive card notifications.\nThis contains the detailed content displayed in the Teams adaptive card format.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for Teams webhook requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.MatchType\"\u003eMatchType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Matcher\"\u003eMatcher\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMatchType is a comparison operator on a Matcher\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;=\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;!=\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;!~\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;=~\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Matcher\"\u003eMatcher\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.InhibitRule\"\u003eInhibitRule\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.Route\"\u003eRoute\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMatcher defines how to match on alert\u0026rsquo;s labels.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename defines the label to match.\nThis specifies which alert label should be evaluated.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalue defines the label value to match.\nThis is the expected value for the specified label.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ematchType\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.MatchType\"\u003e\nMatchType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ematchType defines the match operation available with AlertManager \u0026gt;= v0.22.0.\nTakes precedence over Regex (deprecated) if non-empty.\nValid values: \u0026ldquo;=\u0026rdquo; (equality), \u0026ldquo;!=\u0026rdquo; (inequality), \u0026ldquo;=~\u0026rdquo; (regex match), \u0026ldquo;!~\u0026rdquo; (regex non-match).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eregex\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eregex defines whether to match on equality (false) or regular-expression (true).\nDeprecated: for AlertManager \u0026gt;= v0.22.0, \u003ccode\u003ematchType\u003c/code\u003e should be used instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Month\"\u003eMonth\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eMonth of the year\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;april\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;august\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;december\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;february\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;january\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;july\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;june\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;march\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;may\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;november\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;october\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;september\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.MonthRange\"\u003eMonthRange\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.TimeInterval\"\u003eTimeInterval\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMonthRange is an inclusive range of months of the year beginning in January\nMonths can be specified by name (e.g \u0026lsquo;January\u0026rsquo;) by numerical month (e.g \u0026lsquo;1\u0026rsquo;) or as an inclusive range (e.g \u0026lsquo;January:March\u0026rsquo;, \u0026lsquo;1:3\u0026rsquo;, \u0026lsquo;1:March\u0026rsquo;)\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.MuteTimeInterval\"\u003eMuteTimeInterval\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMuteTimeInterval specifies the periods in time when notifications will be muted\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename of the time interval\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.TimeInterval\"\u003e\n[]TimeInterval\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeIntervals defines a list of TimeInterval\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.NamespaceDiscovery\"\u003eNamespaceDiscovery\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eKubernetesSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eNamespaceDiscovery is the configuration for discovering\nKubernetes namespaces.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eownNamespace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eownNamespace includes the namespace in which the Prometheus pod runs to the list of watched namespaces.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enames\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enames defines a list of namespaces where to watch for resources.\nIf empty and \u003ccode\u003eownNamespace\u003c/code\u003e isn\u0026rsquo;t true, Prometheus watches for resources in all namespaces.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003eNomadSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eNomadSDConfig configurations allow retrieving scrape targets from Nomad\u0026rsquo;s Service API.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#nomad_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#nomad_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eallowStale\u
130003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eallowStale defines the information to access the Nomad API. It is to be defined\nas the Nomad documentation requires.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enamespace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enamespace defines the Nomad namespace to query for service discovery.\nWhen specified, only resources within this namespace will be discovered.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eregion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eregion defines the Nomad region to query for service discovery.\nWhen specified, only resources within this region will be discovered.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eserver defines the Nomad server address to connect to for service discovery.\nThis should be the full URL including protocol (e.g., \u0026ldquo;\u003ca href=\"https://nomad.example.com:4646\u0026quot;\"\u003ehttps://nomad.example.com:4646\u0026rdquo;\u003c/a\u003e).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etagSeparator\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etagSeparator defines the separator used to join multiple tags.\nThis determines how Nomad service tags are concatenated into Prometheus labels.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the Nomad API.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Nomad API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.OVHCloudSDConfig\"\u003eOVHCloudSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOVHCloudSDConfig configurations allow retrieving scrape targets from OVHcloud\u0026rsquo;s dedicated servers and VPS using their API.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ovhcloud_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#ovhcloud_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapplicationKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eapplicationKey defines the access key to use for OVHCloud API authentication.\nThis is obtained from the OVHCloud API credentials at \u003ca href=\"https://api.ovh.com\"\u003ehttps://api.ovh.com\u003c/a\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapplicationSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eapplicationSecret defines the secret key for OVHCloud API authentication.\nThis contains the application secret obtained during OVHCloud API credential creation.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econsumerKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003econsumerKey defines the consumer key for OVHCloud API authentication.\nThis is the third component of OVHCloud\u0026rsquo;s three-key authentication system.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eservice\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OVHService\"\u003e\nOVHService\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eservice defines the service type of the targets to retrieve.\nMust be either \u003ccode\u003eVPS\u003c/code\u003e or \u003ccode\u003eDedicatedServer\u003c/code\u003e to specify which OVHCloud resources to discover.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eendpoint\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eendpoint defines a custom API endpoint to be used.\nWhen not specified, defaults to the standard OVHCloud API endpoint for the region.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.OVHService\"\u003eOVHService\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.OVHCloudSDConfig\"\u003eOVHCloudSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eService of the targets to retrieve. Must be \u003ccode\u003eVPS\u003c/code\u003e or \u003ccode\u003eDedicatedServer\u003c/code\u003e.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;DedicatedServer\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;VPS\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.OpenStackAvailability\"\u003eOpenStackAvailability\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackSDConfig\"\u003eOpenStackSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOpenStackAvailability defines the availability of the endpoint to connect to.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Admin\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Internal\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Public\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.OpenStackRole\"\u003eOpenStackRole\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackSDConfig\"\u003eOpenStackSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Hypervisor\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Instance\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;LoadBalancer\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.OpenStackSDConfig\"\u003eOpenStackSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOpenStackSDConfig allow retrieving scrape targets from OpenStack Nova instances.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#openstack_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#openstack_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackRole\"\u003e\nOpenStackRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003erole defines the OpenStack role of entities that should be discovered.\u003c/p\u003e\n\u003cp\u003eNote: The \u003ccode\u003eLoadBalancer\u003c/code\u003e role requires Prometheus \u0026gt;= v3.2.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eregion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eregion defines the OpenStack Region.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eidentityEndpoint\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eidentityEndpoint defines the HTTP endpoint that is required to work with\nthe Identity API of the appropriate version.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eusername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eusername defines the username required if using Identity V2 API. Consult with your provider\u0026rsquo;s\ncontrol panel to discover your account\u0026rsquo;s username.\nIn Identity V3, either userid or a combination of username\nand domainId or domainName are needed\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003euserid\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003euserid defines the OpenStack userid.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epassword\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epassword defines the password for the Identity V2 and V3 APIs. Consult with your provider\u0026rsquo;s\ncontrol panel to discover your account\u0026rsquo;s preferred method of authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edomainName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edomainName defines at most one of domainId and domainName that must be provided if using username\nwith Identity V3. Otherwise, either are optional.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edomainID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edomainID defines The OpenStack domainID.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprojectName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprojectName defines an optional field for the Identity V2 API.\nSome providers allow you to specify a ProjectName instead of the ProjectId.\nSome require both. Your provider\u0026rsquo;s authentication policies will determine\nhow these fields influence authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprojectID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprojectID defines the OpenStack projectID.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapplicationCredentialName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapplicationCredentialName defines the ApplicationCredentialID or ApplicationCredentialName fields are\nrequired if using an application credential to authenticate. Some providers\nallow you to create an application credential to authenticate rather than a\npassword.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapplicationCredentialId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapplicationCredentialId defines the OpenStack applicationCredentialId.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapplicationCredentialSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapplicationCredentialSecret defines the required field if using an application\ncredential to authenticate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eallTenants\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eallTenants defines whether the service discovery should list all instances for all projects.\nIt is only relevant for the \u0026lsquo;instance\u0026rsquo; role and usually requires admin permissions.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\ninstead be specified in the relabeling rule.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eavailability\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackAvailability\"\u003e\nOpenStackAvailability\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eavailability defines the availability of the endpoint to connect to.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration applying to the target HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.OpsGenieConfig\"\u003eOpsGenieConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOpsGenieConfig configures notifications via OpsGenie.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiKey defines the secret\u0026rsquo;s key that contains the OpsGenie API key.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the URL to send OpsGenie API requests to.\nWhen not specified, defaults to the standard OpsGenie API endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the alert text limited to 130 characters.\nThis appears as the main alert title in OpsGenie.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edescription\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edescription defines the detailed description of the incident.\nThis provides additional context beyond the message field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esource\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esource defines the backlink to the sender of the notification.\nThis helps identify where the alert originated from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etags\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etags defines a comma separated list of tags attached to the notifications.\nThese help categorize and filter alerts within OpsGenie.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enote\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enote defines an additional alert note.\nThis provides supplementary information about the alert.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriority\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriority defines the priority level of alert.\nPossible values are P1, P2, P3, P4, and P5, where P1 is highest priority.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateAlerts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateAlerts defines Whether to update message and description of the alert in OpsGenie if it already exists\nBy default, the alert is never updated in OpsGenie, the new message only appears in activity log.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edetails\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KeyValue\"\u003e\n[]KeyValue\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edetails defines a set of arbitrary key/value pairs that provide further detail about the incident.\nThese appear as additional fields in the OpsGenie alert.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresponders\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpsGenieConfigResponder\"\u003e\n[]OpsGenieConfigResponder\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresponders defines the list of responders responsible for notifications.\nThese determine who gets notified when the alert is created.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for OpsGenie API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eentity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eentity defines an optional field that can be used to specify which domain alert is related to.\nThis helps group related alerts together in OpsGenie.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eactions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eactions defines a comma separated list of actions that will be available for the alert.\nThese appear as action buttons in the OpsGenie interface.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.OpsGenieConfigResponder\"\u003eOpsGenieConfigResponder\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOpsGenieConfigResponder defines a responder to an incident.\nOne of \u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e or \u003ccode\u003eusername\u003c/code\u003e has to be defined.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eid\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eid defines the unique identifier of the responder.\nThis corresponds to the responder\u0026rsquo;s ID within OpsGenie.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename defines the display name of the responder.\nThis is used when the responder is identified by name rather than ID.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eusername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eusername defines the username of the responder.\nThis is typically used for user-type responders when identifying by username.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etype defines the type of responder.\nValid values include \u0026ldquo;user\u0026rdquo;, \u0026ldquo;team\u0026rdquo;, \u0026ldquo;schedule\u0026rdquo;, and \u0026ldquo;escalation\u0026rdquo;.\nThis determines how OpsGenie interprets the other identifier fields.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.PagerDutyConfig\"\u003ePagerDutyConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePagerDutyConfig configures notifications via PagerDuty.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutingKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutingKey defines the secret\u0026rsquo;s key that contains the PagerDuty integration key (when using\nEvents API v2). Either this field or \u003ccode\u003eserviceKey\u003c/code\u003e needs to be defined.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceKey defines the secret\u0026rsquo;s key that contains the PagerDuty service key (when using\nintegration type \u0026ldquo;Prometheus\u0026rdquo;). Either this field or \u003ccode\u003eroutingKey\u003c/code\u003e needs to\nbe defined.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines the URL to send requests to.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclient\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclient defines the client identification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientURL defines the backlink to the sender of notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edescription\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edescription of the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eseverity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eseverity of the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclass defines the class/type of the event.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroup\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroup defines a cluster or grouping of sources.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecomponent\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecomponent defines the part or component of the affected system that is broken.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edetails\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KeyValue\"\u003e\n[]KeyValue\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edetails defines the arbitrary key/value pairs that provide further detail about the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epagerDutyImageConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyImageConfig\"\u003e\n[]PagerDutyImageConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epagerDutyImageConfigs defines a list of image details to attach that provide further detail about an incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epagerDutyLinkConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyLinkConfig\"\u003e\n[]PagerDutyLinkConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epagerDutyLinkConfigs defines a list of link details to attach that provide further detail about an incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esource\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esource defines the unique location of the affected system.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout is the maximum time allowed to invoke the pagerduty\nIt requires Alertmanager \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.PagerDutyImageConfig\"\u003ePagerDutyImageConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePagerDutyImageConfig attaches images to an incident\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esrc\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esrc of the image being attached to the incident\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehref\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehref defines the optional URL; makes the image a clickable link.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealt\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealt is the optional alternative text for the image.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.PagerDutyLinkConfig\"\u003ePagerDutyLinkConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePagerDutyLinkConfig attaches text links to an incident\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehref\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehref defines the URL of the link to be attached\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealt\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealt defines the text that describes the purpose of the link, and can be used as the link\u0026rsquo;s text.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.ParsedRange\"\u003eParsedRange\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eParsedRange is an integer representation of a range\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estart\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estart defines the beginning of the range\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eend\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eend defines the end of the range\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.PrometheusAgentMode\"\u003ePrometheusAgentMode\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.PrometheusAgentSpec\"\u003ePrometheusAgentSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;DaemonSet\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eDeploys PrometheusAgent as DaemonSet.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;StatefulSet\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eDeploys PrometheusAgent as StatefulSet.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.PrometheusAgentSpec\"\u003ePrometheusAgentSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.PrometheusAgent\"\u003ePrometheusAgent\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePrometheusAgentSpec is a specification of the desired behavior of the Prometheus agent. More info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PrometheusAgentMode\"\u003e\nPrometheusAgentMode\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emode defines how the Prometheus operator deploys the PrometheusAgent pod(s).\u003c/p\u003e\n\u003cp\u003e(Alpha) Using this field requires the \u003ccode\u003ePrometheusAgentDaemonSet\u003c/code\u003e feature gate to be enabled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EmbeddedObjectMetadata\"\u003e\nEmbeddedObjectMetadata\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMetadata defines labels and annotations which are propagated to the Prometheus pods.\u003c/p\u003e\n\u003cp\u003eThe following items are reserved and cannot be overridden:\n* \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;.\n* \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version.\n* \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object.\n* \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object.\n* \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodMonitorNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector\nmatches all namespaces. A null label selector (default value) matches the current\nnamespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeSelector defines the probes to be selected for target discovery. An empty label selector\nmatches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprobeNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprobeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label\nselector matches all namespaces. A null label selector matches the\ncurrent namespace only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.podMonitorSelector\u003c/code\u003e, \u003ccode\u003espec.probeSelector\u003c/code\u003e\nand \u003ccode\u003espec.scrapeConfigSelector\u003c/code\u003e are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the \u003ccode\u003eprometheus.yaml.gz\u003c/code\u003e key.\nThis behavior is \u003cem\u003edeprecated\u003c/em\u003e and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n\u003ccode\u003espec.additionalScrapeConfigs\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alp
130ha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#labelselector-v1-meta\"\u003e\nKubernetes meta/v1.LabelSelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\u003c/p\u003e\n\u003cp\u003eNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eversion\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eversion of Prometheus being deployed. The operator uses this information\nto generate the Prometheus StatefulSet + configuration files.\u003c/p\u003e\n\u003cp\u003eIf not specified, the operator assumes the latest upstream version of\nPrometheus available at the time when the version of the operator was\nreleased.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epaused\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epaused defines when a Prometheus deployment is paused, no actions except for deletion\nwill be performed on the underlying objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimage defines the container image name for Prometheus. If specified, it takes precedence\nover the \u003ccode\u003espec.baseImage\u003c/code\u003e, \u003ccode\u003espec.tag\u003c/code\u003e and \u003ccode\u003espec.sha\u003c/code\u003e fields.\u003c/p\u003e\n\u003cp\u003eSpecifying \u003ccode\u003espec.version\u003c/code\u003e is still necessary to ensure the Prometheus\nOperator knows which version of Prometheus is being configured.\u003c/p\u003e\n\u003cp\u003eIf neither \u003ccode\u003espec.image\u003c/code\u003e nor \u003ccode\u003espec.baseImage\u003c/code\u003e are defined, the operator\nwill use the latest upstream version of Prometheus available at the time\nwhen the operator was released.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#pullpolicy-v1-core\"\u003e\nKubernetes core/v1.PullPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\"\u003ehttps://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#localobjectreference-v1-core\"\u003e\n[]Kubernetes core/v1.LocalObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimagePullSecrets defines an optional list of references to Secrets in the same namespace\nto use for pulling images from registries.\nSee \u003ca href=\"http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\"\u003ehttp://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicas\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicas defines the number of replicas of each shard to deploy for a Prometheus deployment.\n\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\ncreated.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshards\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshards defines the number of shards to distribute the scraped targets onto.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003espec.replicas\u003c/code\u003e multiplied by \u003ccode\u003espec.shards\u003c/code\u003e is the total number of Pods\nbeing created.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator assumes only one shard.\u003c/p\u003e\n\u003cp\u003eNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. 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.\u003c/p\u003e\n\u003cp\u003eBy default, the sharding of targets is performed on:\n* The \u003ccode\u003e__address__\u
130003c/code\u003e target\u0026rsquo;s metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The \u003ccode\u003e__param_target__\u003c/code\u003e label for Probe resources.\u003c/p\u003e\n\u003cp\u003eUsers can define their own sharding implementation by setting the\n\u003ccode\u003e__tmp_hash\u003c/code\u003e label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\u003c/p\u003e\n\u003cp\u003eYou can also disable sharding on a specific target by setting the\n\u003ccode\u003e__tmp_disable_sharding\u003c/code\u003e label with relabeling configuration. When\nthe label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\u003c/p\u003e\n\u003cp\u003eDefault: 1\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshardingStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ShardingStrategy\"\u003e\nShardingStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\u003c/p\u003e\n\u003cp\u003eWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes\ntargets based on a hash of the target address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereplicaExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereplicaExternalLabelName defines the name of Prometheus external label used to denote the replica name.\nThe external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to the\nempty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprometheusExternalLabelName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eprometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance\nname. The external label will \u003cem\u003enot\u003c/em\u003e be added when the field is set to\nthe empty string (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;prometheus\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogLevel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogLevel for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elogFormat\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elogFormat for Log level for Prometheus and the config-reloader sidecar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeInterval defines interval between consecutive scrapes.\u003c/p\u003e\n\u003cp\u003eDefault: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the number of seconds to wait until a scrape request times out.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePrometheusText1.0.0\u003c/code\u003e requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalLabels defines the labels to add to any time series or alerts when communicating with\nexternal systems (federation, remote storage, Alertmanager).\nLabels defined by \u003ccode\u003espec.replicaExternalLabelName\u003c/code\u003e and\n\u003ccode\u003espec.prometheusExternalLabelName\u003c/code\u003e take precedence over this list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableRemoteWriteReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote\nwrite protocol.\u003c/p\u003e\n\u003cp\u003eWARNING: This is not considered an efficie
130nt way of ingesting samples.\nUse it with caution for specific low-volume use cases.\nIt is not suitable for replacing the ingestion via scraping and turning\nPrometheus into a push-based metrics collection system.\nFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\"\u003ehttps://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.33.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableOTLPReceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\u003c/p\u003e\n\u003cp\u003eNote that the OTLP receiver endpoint is automatically enabled if \u003ccode\u003e.spec.otlpConfig\u003c/code\u003e is defined.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWriteReceiverMessageVersions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteMessageVersion\"\u003e\n[]RemoteWriteMessageVersion\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the\nremote writes.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableFeatures\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.EnableFeature\"\u003e\n[]EnableFeature\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\u003c/p\u003e\n\u003cp\u003eEnabling features which are disabled by default is entirely outside the\nscope of what the maintainers will support and by doing so, you accept\nthat this behaviour may break at any time without notice.\u003c/p\u003e\n\u003cp\u003eFor more information see \u003ca href=\"https://prometheus.io/docs/prometheus/latest/feature_flags/\"\u003ehttps://prometheus.io/docs/prometheus/latest/feature_flags/\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexternalUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexternalUrl defines the external URL under which the Prometheus service is externally\navailable. This is necessary to generate correct URLs (for instance if\nPrometheus is accessible behind an Ingress resource).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutePrefix\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutePrefix defines the route prefix Prometheus registers HTTP handlers for.\u003c/p\u003e\n\u003cp\u003eThis is useful when using \u003ccode\u003espec.externalURL\u003c/code\u003e, and a proxy is rewriting\nHTTP routes of a request, and the actual ExternalURL is still true, but\nthe server serves requests under a different route prefix. For example\nfor use with \u003ccode\u003ekubectl proxy\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estorage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StorageSpec\"\u003e\nStorageSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estorage defines the storage used by Prometheus.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volume-v1-core\"\u003e\n[]Kubernetes core/v1.Volume\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumes allows the configuration of additional volumes on the output\nStatefulSet definition. Volumes specified will be appended to other\nvolumes that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evolumeMounts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#volumemount-v1-core\"\u003e\n[]Kubernetes core/v1.VolumeMount\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evolumeMounts allows the configuration of additional VolumeMounts.\u003c/p\u003e\n\u003cp\u003eVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo;\ncontainer, that are generated as a result of StorageSpec objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epersistentVolumeClaimRetentionPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#statefulsetpersistentvolumeclaimretentionpolicy-v1-apps\"\u003e\nKubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epersistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\nThe default behavior is all PVCs are retained.\nThis is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\nIt requires enabling the StatefulSetAutoDeletePVC feature gate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PrometheusWebSpec\"\u003e\nPrometheusWebSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweb defines the configuration of the Prometheus web server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresources\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#resourcerequirements-v1-core\"\u003e\nKubernetes core/v1.ResourceRequirements\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enodeSelector\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enodeSelector defines on which Nodes the Pods are scheduled.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eschedulerName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eschedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceAccountName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceAccountName is the name of the ServiceAccount to use to run the\nPrometheus Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eautomountServiceAccountToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eautomountServiceAccountToken defines whether a service account token should be automatically mounted
130in the pod.\nIf the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWarning:\u003c/strong\u003e be aware that by default, Prometheus requires the service account token for Kubernetes service discovery.\nIt is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecrets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecrets defines a list of Secrets in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach Secret is added to the StatefulSet definition as a volume named \u003ccode\u003esecret-\u0026lt;secret-name\u0026gt;\u003c/code\u003e.\nThe Secrets are mounted into /etc/prometheus/secrets/\u003csecret-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfigMaps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfigMaps defines a list of ConfigMaps in the same namespace as the Prometheus\nobject, which shall be mounted into the Prometheus Pods.\nEach ConfigMap is added to the StatefulSet definition as a volume named \u003ccode\u003econfigmap-\u0026lt;configmap-name\u0026gt;\u003c/code\u003e.\nThe ConfigMaps are mounted into /etc/prometheus/configmaps/\u003cconfigmap-name\u003e in the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaffinity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#affinity-v1-core\"\u003e\nKubernetes core/v1.Affinity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eaffinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etolerations\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#toleration-v1-core\"\u003e\n[]Kubernetes core/v1.Toleration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etolerations defines the Pods\u0026rsquo; tolerations if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopologySpreadConstraints\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TopologySpreadConstraint\"\u003e\n[]TopologySpreadConstraint\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eremoteWrite\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RemoteWriteSpec\"\u003e\n[]RemoteWriteSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eremoteWrite defines the list of remote write configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eotlp\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OTLPConfig\"\u003e\nOTLPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eotlp defines the settings related to the OTLP receiver feature.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecurityContext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#podsecuritycontext-v1-core\"\u003e\nKubernetes core/v1.PodSecurityContext\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esecurityContext holds pod-level security attributes and common container settings.\nThis defaults to the default PodSecurityContext.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.DNSPolicy\"\u003e\nDNSPolicy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsPolicy defines the DNS policy for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodDNSConfig\"\u003e\nPodDNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsConfig defines the DNS configuration for the pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elistenLocal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elistenLocal when true, the Prometheus server listens on the loopback address\ninstead of the Pod IP\u0026rsquo;s address.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodManagementPolicy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.PodManagementPolicyType\"\u003e\nPodManagementPolicyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodManagementPolicy defines the policy for creating/deleting pods when\nscaling up and down.\u003c/p\u003e\n\u003cp\u003eUnlike the default StatefulSet behavior, the default policy is\n\u003ccode\u003eParallel\u003c/code\u003e to avoid manual intervention in case a pod gets stuck during\na rollout.\u003c/p\u003e\n\u003cp\u003eNote that updating this value implies the recreation of the StatefulSet\nwhich incurs a service outage.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.StatefulSetUpdateStrategy\"\u003e\nStatefulSetUpdateStrategy\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateStrategy indicates the strategy that will be employed to update\nPods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod\nTemplate.\u003c/p\u003e\n\u003cp\u003eThe default strategy is RollingUpdate.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableServiceLinks\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtainers allows injecting additional containers or modifying operator\ngenerated containers. This can be used to allow adding an authentication\nproxy to the Pods or to change the behavior of an operator generated\ncontainer. Containers described here modify an operator generated\ncontainer if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of containers managed by the operator are:\n* \u003ccode\u003eprometheus\u003c/code\u003e\n* \u003ccode\u003econfig-reloader\u003c/code\u003e\n* \u003ccode\u003ethanos-sidecar\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eOverriding containers which are managed by the operator require careful\ntesting, especially when upgrading to a new version of the operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einitContainers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#container-v1-core\"\u003e\n[]Kubernetes core/v1.Container\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einitContainers allows injecting init
130Containers to the Pod definition. Those\ncan be used to e.g. fetch secrets for injection into the Prometheus\nconfiguration from external sources. Any errors during the execution of\nan initContainer will lead to a restart of the Pod. More info:\n\u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\u003ehttps://kubernetes.io/docs/concepts/workloads/pods/init-containers/\u003c/a\u003e\nInitContainers described here modify an operator generated init\ncontainers if they share the same name and modifications are done via a\nstrategic merge patch.\u003c/p\u003e\n\u003cp\u003eThe names of init container name managed by the operator are:\n* \u003ccode\u003einit-config-reloader\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOverriding init containers which are managed by the operator require\ncareful testing, especially when upgrading to a new version of the\noperator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalScrapeConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalScrapeConfigs allows specifying a key of a Secret containing\nadditional Prometheus scrape configurations. Scrape configurations\nspecified are appended to the configurations generated by the Prometheus\nOperator. Job configurations specified must have the form as specified\nin the official Prometheus documentation:\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\u003c/a\u003e.\nAs scrape configs are appended, the user is responsible to make sure it\nis valid. Note that using this feature may expose the possibility to\nbreak upgrades of Prometheus. It is advised to review Prometheus release\nnotes to ensure that no incompatible scrape configs are going to break\nPrometheus after the upgrade.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiserverConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.APIServerConfig\"\u003e\nAPIServerConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiserverConfig allows specifying a host and auth methods to access the\nKuberntees API server.\nIf null, Prometheus is assumed to run inside of the cluster: it will\ndiscover the API servers automatically and use the Pod\u0026rsquo;s CA certificate\nand bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriorityClassName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriorityClassName assigned to the Pods.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eportName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eportName used for the pods and governing service.\nDefault: \u0026ldquo;web\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003earbitraryFSAccessThroughSMs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ArbitraryFSAccessThroughSMsConfig\"\u003e\nArbitraryFSAccessThroughSMsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003earbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to\nreference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo;\ncontainer.\nWhen a ServiceMonitor\u0026rsquo;s endpoint specifies a \u003ccode\u003ebearerTokenFile\u003c/code\u003e value\n(e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a\nmalicious target can get access to the Prometheus service account\u0026rsquo;s\ntoken in the Prometheus\u0026rsquo; scrape request. Setting\n\u003ccode\u003espec.arbitraryFSAccessThroughSM\u003c/code\u003e to \u0026lsquo;true\u0026rsquo; would prevent the attack.\nUsers should instead provide the credentials using the\n\u003ccode\u003espec.bearerTokenSecret\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data\nto âexported_â for all targets created from ServiceMonitor, PodMonitor and\nScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies.\nIn practice,\u003ccode\u003eOverrideHonorLabels:true\u003c/code\u003e enforces \u003ccode\u003ehonorLabels:false\u003c/code\u003e\nfor all ServiceMonitor, PodMonitor and ScrapeConfig objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoverrideHonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoverrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created\nfrom service and pod monitors.\nOtherwise the HonorTimestamps field of the service or pod monitor applies.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eignoreNamespaceSelectors\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eignoreNamespaceSelectors when true, \u003ccode\u003espec.namespaceSelector\u003c/code\u003e from all PodMonitor, ServiceMonitor\nand Probe objects will be ignored. They will only discover targets\nwithin the namespace of the PodMonitor, ServiceMonitor and Probe\nobject.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedNamespaceLabel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedNamespaceLabel when not empty, a label will be added to:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAll metrics scraped from \u
130003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e and \u003ccode\u003eScrapeConfig\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll metrics generated from recording rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll alerts generated from alerting rules defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003cli\u003eAll vector selectors of PromQL expressions defined in \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe label will not added for objects referenced in \u003ccode\u003espec.excludedFromEnforcement\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe label\u0026rsquo;s name is this field\u0026rsquo;s value.\nThe label\u0026rsquo;s value is the namespace of the \u003ccode\u003eServiceMonitor\u003c/code\u003e,\n\u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e, \u003ccode\u003ePrometheusRule\u003c/code\u003e or \u003ccode\u003eScrapeConfig\u003c/code\u003e object.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedSampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedSampleLimit when defined specifies a global limit on the number\nof scraped samples that will be accepted. This overrides any\n\u003ccode\u003espec.sampleLimit\u003c/code\u003e set by ServiceMonitor, PodMonitor, Probe objects\nunless \u003ccode\u003espec.sampleLimit\u003c/code\u003e is greater than zero and less than\n\u003ccode\u003espec.enforcedSampleLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to keep the overall number of\nsamples/series under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e and \u003ccode\u003esampleLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e is greater than the \u003ccode\u003esampleLimit\u003c/code\u003e, the \u003ccode\u003esampleLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedTargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedTargetLimit when defined specifies a global limit on the number\nof scraped targets. The value overrides any \u003ccode\u003espec.targetLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.targetLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedTargetLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt is meant to be used by admins to to keep the overall number of\ntargets under a desired limit.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e and \u003ccode\u003etargetLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e is greater than the \u003ccode\u003etargetLimit\u003c/code\u003e, the \u003ccode\u003etargetLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedTargetLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelLimit when defined specifies a global limit on the number\nof labels per sample. The value overrides any \u003ccode\u003espec.labelLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e and \u003ccode\u003elabelLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelLimit\u003c/code\u003e, the \u003ccode\u003elabelLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelNameLengthLimit when defined specifies a global limit on the length\nof labels name per sample. The value overrides any \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelNameLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelNameLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e and \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelNameLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelNameLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedLabelValueLengthLimit when not null defines a global limit on the length\nof labels value per sample. The value overrides any \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.labelValueLengthLimit\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedLabelValueLengthLimit\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.27.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e and \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e is greater than the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e, the \u003ccode\u003elabelValueLengthLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedLabelValueLengthLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedKeepDroppedTargets when defined specifies a global limit on the number of targets\ndropped by relabeling that will be kept in memory. The value overrides\nany \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e set by\nServiceMonitor, PodMonitor, Probe objects unless \u003ccode\u003espec.keepDroppedTargets\u003c/code\u003e is\ngreater than zero and less than \u003ccode\u003espec.enforcedKeepDroppedTargets\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e and \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;
130= 2.45.0 and the \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e is greater than the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e, the \u003ccode\u003ekeepDroppedTargets\u003c/code\u003e will be set to \u003ccode\u003eenforcedKeepDroppedTargets\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenforcedBodySizeLimit when defined specifies a global limit on the size\nof uncompressed response body that will be accepted by Prometheus.\nTargets responding with a body larger than this many bytes will cause\nthe scrape to fail.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003cp\u003eWhen both \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e and \u003ccode\u003ebodySizeLimit\u003c/code\u003e 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 \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0).\nIf Prometheus version is \u0026gt;= 2.45.0 and the \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e is greater than the \u003ccode\u003ebodySizeLimit\u003c/code\u003e, the \u003ccode\u003ebodySizeLimit\u003c/code\u003e will be set to \u003ccode\u003eenforcedBodySizeLimit\u003c/code\u003e.\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.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameValidationScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameValidationSchemeOptions\"\u003e\nNameValidationSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameValidationScheme defines the validation scheme for metric and label names.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameEscapingScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameEscapingSchemeOptions\"\u003e\nNameEscapingSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameEscapingScheme defines the character escaping scheme that will be requested when scraping\nfor metric and label names that do not conform to the legacy Prometheus\ncharacter set.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native\nhistogram with custom buckets.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.5.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eminReadySeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eminReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready\nwithout any of its container crashing for it to be considered available.\u003c/p\u003e\n\u003cp\u003eIf unset, pods will be considered available as soon as they are ready.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostAliases\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.HostAlias\"\u003e\n[]HostAlias\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s\nhosts file if specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eadditionalArgs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Argument\"\u003e\n[]Argument\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eadditionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\u003c/p\u003e\n\u003cp\u003eIt is intended for e.g. activating hidden flags which are not supported by\nthe dedicated configuration options yet. The arguments are passed as-is to the\nPrometheus container which may cause issues if they are invalid or not supported\nby the given Prometheus version.\u003c/p\u003e\n\u003cp\u003eIn case of an argument conflict (e.g. an argument which is already set by the\noperator itself) or when providing an invali
130d argument, the reconciliation will\nfail and an error will be logged.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewalCompression\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewalCompression defines the compression of the write-ahead log (WAL) using Snappy.\u003c/p\u003e\n\u003cp\u003eWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\u003c/p\u003e\n\u003cp\u003eRequires Prometheus v2.11.0 and above.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexcludedFromEnforcement\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ObjectReference\"\u003e\n[]ObjectReference\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexcludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects\nto be excluded from enforcing a namespace label of origin.\u003c/p\u003e\n\u003cp\u003eIt is only applicable if \u003ccode\u003espec.enforcedNamespaceLabel\u003c/code\u003e set to true.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostNetwork\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostNetwork defines the host\u0026rsquo;s network namespace if true.\u003c/p\u003e\n\u003cp\u003eMake sure to understand the security implications if you want to enable\nit (\u003ca href=\"https://kubernetes.io/docs/concepts/configuration/overview/\"\u003ehttps://kubernetes.io/docs/concepts/configuration/overview/\u003c/a\u003e ).\u003c/p\u003e\n\u003cp\u003eWhen hostNetwork is enabled, this will set the DNS policy to\n\u003ccode\u003eClusterFirstWithHostNet\u003c/code\u003e automatically (unless \u003ccode\u003e.spec.DNSPolicy\u003c/code\u003e is set\nto a different value).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epodTargetLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epodTargetLabels are appended to the \u003ccode\u003espec.podTargetLabels\u003c/code\u003e field of all\nPodMonitor and ServiceMonitor objects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etracingConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TracingConfig\"\u003e\nTracingConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etracingConfig defines tracing in Prometheus.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit defines per-scrape on response body size.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\nOnl
130y valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.45.0 and newer.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003cp\u003eNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value.\nIf you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereloadStrategy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ReloadStrategyType\"\u003e\nReloadStrategyType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereloadStrategy defines the strategy used to reload the Prometheus configuration.\nIf not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaximumStartupDurationSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaximumStartupDurationSeconds defines the maximum time that the \u003ccode\u003eprometheus\u003c/code\u003e container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete.\nIf set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClasses\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeClass\"\u003e\n[]ScrapeClass\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClasses defines the list of scrape classes to expose to scraping objects such as\nPodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\u003c/p\u003e\n\u003cp\u003eThis is an \u003cem\u003eexperimental feature\u003c/em\u003e, it may change in any upcoming release\nin a breaking way.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ServiceDiscoveryRole\"\u003e\nServiceDiscoveryRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceDiscoveryRole defines the service discovery role used to discover targets from\n\u003ccode\u003eServiceMonitor\u003c/code\u003e objects and Alertmanager endpoints.\u003c/p\u003e\n\u003cp\u003eIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
130.\nIf unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etsdb\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.TSDBSpec\"\u003e\nTSDBSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etsdb defines the runtime reloadable configuration of the timeseries database(TSDB).\nIt requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeFailureLogFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeFailureLogFile defines the file to which scrape failures are logged.\nReloading the configuration will reopen the file.\u003c/p\u003e\n\u003cp\u003eIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods\nwill mount the file into an emptyDir volume at \u003ccode\u003e/var/log/prometheus\u003c/code\u003e.\nIf a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you\nmust mount a volume in the specified directory and it must be writable.\nIt requires Prometheus \u0026gt;= v2.55.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\nIf 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.\nIf empty, the operator will create and manage a headless service named \u003ccode\u003eprometheus-operated\u003c/code\u003e for Prometheus resources,\nor \u003ccode\u003eprometheus-agent-operated\u003c/code\u003e for PrometheusAgent resources.\nWhen deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each.\nSee \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\"\u003ehttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eruntime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RuntimeConfig\"\u003e\nRuntimeConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eruntime defines the values for the Prometheus process behavior\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eterminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down) which may lead to data corruption.\u003c/p\u003e\n\u003cp\u003eDefaults to 600 seconds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehostUsers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehostUsers supports the user space in Kubernetes.\u003c/p\u003e\n\u003cp\u003eMore info: \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\"\u003ehttps://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe feature requires at least Kubernetes 1.28 with the \u003ccode\u003eUserNamespacesSupport\u003c/code\u003e feature gate enabled.\nStarting Kubernetes 1.33, the feature is enabled by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003ePuppetDBSDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePuppetDBSDConfig configurations allow retrieving scrape targets from PuppetDB resources.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#puppetdb_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#puppetdb_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eurl defines the URL of the PuppetDB root query endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003equery\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003equery defines the Puppet Query Language (PQL) query. Only resources are supported.\n\u003ca href=\"https://puppet.com/docs/puppetdb/latest/api/query/v4/pql.html\"\u003ehttps://puppet.com/docs/puppetdb/latest/api/query/v4/pql.html\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eincludeParameters\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eincludeParameters defines whether to include the parameters as meta labels.\nNote: Enabling this exposes parameters in the Prometheus UI and API. Make sure\nthat you don\u0026rsquo;t have secrets exposed as parameters if you enable this.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header configuration to authenticate against the PuppetDB API.\nCannot be set at the same time as \u003ccode\u003eoauth2\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\nCannot be set at the same time as \u003ccode\u003eauthorization\u003c/code\u003e, or \u003ccode\u003ebasicAuth\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the PuppetDB server.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.PushoverConfig\"\u003ePushoverConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePushoverConfig configures notifications via Pushover.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#pushover_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003euserKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003euserKey defines the secret\u0026rsquo;s key that contains the recipient user\u0026rsquo;s user key.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\nEither \u003ccode\u003euserKey\u003c/code\u003e or \u003ccode\u003euserKeyFile\u003c/code\u003e is required.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003euserKeyFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003euserKeyFile defines the user key file that contains the recipient user\u0026rsquo;s user key.\nEither \u003ccode\u003euserKey\u003c/code\u003e or \u003ccode\u003euserKeyFile\u003c/code\u003e is required.\nIt requires Alertmanager \u0026gt;= v0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoken defines the secret\u0026rsquo;s key that contains the registered application\u0026rsquo;s API token.\nSee \u003ca href=\"https://pushover.net/apps\"\u003ehttps://pushover.net/apps\u003c/a\u003e for application registration.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\nEither \u003ccode\u003etoken\u003c/code\u003e or \u003ccode\u003etokenFile\u003c/code\u003e is required.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etokenFile defines the token file that contains the registered application\u0026rsquo;s API token.\nSee \u003ca href=\"https://pushover.net/apps\"\u003ehttps://pushover.net/apps\u003c/a\u003e for application registration.\nEither \u003ccode\u003etoken\u003c/code\u003e or \u003ccode\u003etokenFile\u003c/code\u003e is required.\nIt requires Alertmanager \u0026gt;= v0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the notification title displayed in the Pushover message.\nThis appears as the bold header text in the notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the notification message content.\nThis is the main body text of the Pushover notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines a supplementary URL shown alongside the message.\nThis creates a clickable link within the Pushover notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurlTitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurlTitle defines a title for the supplementary URL.\nIf not specified, the raw URL is shown instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ettl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ettl defines the time to live for the alert notification.\nThis determines how long the notification remains active before expiring.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edevice\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edevice defines the name of a specific device to send the notification to.\nIf not specified, the notification is sent to all user\u0026rsquo;s devices.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esound\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esound defines the name of one of the sounds supported by device clients.\nThis overrides the user\u0026rsquo;s default sound choice for this notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriority\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriority defines the notification priority level.\nSee \u003ca href=\"https://pushover.net/api#priority\"\u003ehttps://pushover.net/api#priority\u003c/a\u003e for valid values and behavior.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretry\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretry defines how often the Pushover servers will send the same notification to the user.\nMust be at least 30 seconds. Only applies to priority 2 notifications.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexpire\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexpire defines how long your notification will continue to be retried for,\nunless the user acknowledges the notification. Only applies to priority 2 notifications.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehtml\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehtml defines whether notification message is HTML or plain text.\nWhen true, the message can include HTML formatting tags.\nhtml and monospace formatting are mutually exclusive.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emonospace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emonospace optional HTML/monospace formatting for the message, see \u003ca href=\"https://pushover.net/api#html\"\u003ehttps://pushover.net/api#html\u003c/a\u003e\nhtml and monospace formatting are mutually exclusive.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for Pushover API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eReceiver defines one or more notification integrations.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename defines the name of the receiver. Must be unique across all items from the list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eopsgenieConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpsGenieConfig\"\u003e\n[]OpsGenieConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eopsgenieConfigs defines the list of OpsGenie configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epagerdutyConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyConfig\"\u003e\n[]PagerDutyConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epagerdutyConfigs defines the List of PagerDuty configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ediscordConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DiscordConfig\"\u003e\n[]DiscordConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ediscordConfigs defines the list of Slack configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eslackConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackConfig\"\u003e\n[]SlackConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eslackConfigs defines the list of Slack configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebhookConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.WebhookConfig\"\u003e\n[]WebhookConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewebhookConfigs defines the List of webhook configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewechatConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.WeChatConfig\"\u003e\n[]WeChatConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewechatConfigs defines the list of WeChat configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eemailConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.EmailConfig\"\u003e\n[]EmailConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eemailConfigs defines the list of Email configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evictoropsConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.VictorOpsConfig\"\u003e\n[]VictorOpsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evictoropsConfigs defines the list of VictorOps configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epushoverConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PushoverConfig\"\u003e\n[]PushoverConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epushoverConfigs defines the list of Pushover configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esnsConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.SNSConfig\"\u003e\n[]SNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esnsConfigs defines the list of SNS configurations\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etelegramConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.TelegramConfig\"\u003e\n[]TelegramConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etelegramConfigs defines the list of Telegram configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebexConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.WebexConfig\"\u003e\n[]WebexConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewebexConfigs defines the list of Webex configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emsteamsConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.MSTeamsConfig\"\u003e\n[]MSTeamsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emsteamsConfigs defines the list of MSTeams configurations.\nIt requires Alertmanager \u0026gt;= 0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emsteamsv2Configs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.MSTeamsV2Config\"\u003e\n[]MSTeamsV2Config\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emsteamsv2Configs defines the list of MSTeamsV2 configurations.\nIt requires Alertmanager \u0026gt;= 0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erocketchatConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.RocketChatConfig\"\u003e\n[]RocketChatConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erocketchatConfigs defines the list of RocketChat configurations.\nIt requires Alertmanager \u0026gt;= 0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.RocketChatActionConfig\"\u003eRocketChatActionConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.RocketChatConfig\"\u003eRocketChatConfig\u003c/a\u003e
130)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRocketChatActionConfig defines actions for RocketChat messages.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the button text displayed to users.\nThis is the label that appears on the interactive button.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines the URL the button links to when clicked.\nThis creates a clickable button that opens the specified URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emsg\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emsg defines the message to send when the button is clicked.\nThis allows the button to post a predefined message to the channel.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.RocketChatConfig\"\u003eRocketChatConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRocketChatConfig configures notifications via RocketChat.\nIt requires Alertmanager \u0026gt;= 0.28.0.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the API URL for RocketChat.\nDefaults to \u003ca href=\"https://open.rocket.chat/\"\u003ehttps://open.rocket.chat/\u003c/a\u003e if not specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003echannel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003echannel defines the channel to send alerts to.\nThis can be a channel name (e.g., \u0026ldquo;#alerts\u0026rdquo;) or a direct message recipient.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etoken defines the sender token for RocketChat authentication.\nThis is the personal access token or bot token used to authenticate API requests.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etokenID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etokenID defines the sender token ID for RocketChat authentication.\nThis is the user ID associated with the token used for API requests.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecolor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecolor defines the message color displayed in RocketChat.\nThis appears as a colored bar alongside the message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eemoji\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eemoji defines the emoji to be displayed as an avatar.\nIf provided, this emoji will be used instead of the default avatar or iconURL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eiconURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eiconURL defines the icon URL for the message avatar.\nThis displays a custom image as the message sender\u0026rsquo;s avatar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the message text to send.\nThis is optional because attachments can be used instead of or alongside text.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the message title displayed prominently in the message.\nThis appears as bold text at the top of the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitleLink\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitleLink defines the URL that the title will link to when clicked.\nThis makes the message title clickable in the RocketChat interface.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.RocketChatFieldConfig\"\u003e\n[]RocketChatFieldConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efields defines additional fields for the message attachment.\nThese appear as structured key-value pairs within the message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshortFields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshortFields defines whether to use short fields in the message layout.\nWhen true, fields may be displayed side by side to save space.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimageURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimageURL defines the image URL to display within the message.\nThis embeds an image directly in the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethumbURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ethumbURL defines the thumbnail URL for the message.\nThis displays a
130small thumbnail image alongside the message content.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elinkNames\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elinkNames defines whether to enable automatic linking of usernames and channels.\nWhen true, @username and #channel references become clickable links.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eactions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.RocketChatActionConfig\"\u003e\n[]RocketChatActionConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eactions defines interactive actions to include in the message.\nThese appear as buttons that users can click to trigger responses.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for RocketChat API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.RocketChatFieldConfig\"\u003eRocketChatFieldConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.RocketChatConfig\"\u003eRocketChatConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRocketChatFieldConfig defines additional fields for RocketChat messages.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the title of this field.\nThis appears as bold text labeling the field content.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalue defines the value of this field, displayed underneath the title.\nThis contains the actual data or content for the field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshort\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshort defines whether this field should be a short field.\nWhen true, the field may be displayed inline with other short fields to save space.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Route\"\u003eRoute\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRoute defines a node in the routing tree.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereceiver defines the name of the receiver for this route. If not empty, it should be listed in\nthe \u003ccode\u003ereceivers\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroupBy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroupBy defines the list of labels to group by.\nLabels must not be repeated (unique list).\nSpecial label \u0026ldquo;\u0026hellip;\u0026rdquo; (aggregate by all possible labels), if provided, must be the only element in the list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroupWait\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NonEmptyDuration\"\u003e\nNonEmptyDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroupWait defines how long to wait before sending the initial notification.\nExample: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroupInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NonEmptyDuration\"\u003e\nNonEmptyDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroupInterval defines how long to wait before sending an updated notification.\nMust be greater than 0.\nExample: \u0026ldquo;5m\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erepeatInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NonEmptyDuration\"\u003e\nNonEmptyDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erepeatInterval defines how long to wait before repeating the last notification.\nMust be greater than 0.\nExample: \u0026ldquo;4h\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ematchers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Matcher\"\u003e\n[]Matcher\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ematchers defines the list of matchers that the alert\u0026rsquo;s labels should match. For the first\nlevel route, the operator removes any existing equality and regexp\nmatcher on the \u003ccode\u003enamespace\u003c/code\u003e label and adds a \u003ccode\u003enamespace: \u0026lt;object\nnamespace\u0026gt;\u003c/code\u003e matcher.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtinue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtinue defines the boolean indicating whether an alert should continue matching subsequent\nsibling nodes. It will always be overridden to true for the first-level\nroute by the Prometheus operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1#JSON\"\u003e\n[]k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1.JSON\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutes defines the child routes.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emuteTimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emuteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eactiveTimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eactiveTimeIntervals is a list of MuteTimeInterval names when this route should be active.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.SDFile\"\u003eSDFile\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.FileSDConfig\"\u003eFileSDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSDFile represents a file used for service discovery\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.SNSConfig\"\u003eSNSConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSNSConfig configures notifications via AWS SNS.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#sns_configs\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the SNS API URL, e.g. \u003ca href=\"https://sns.us-east-2.amazonaws.com\"\u003ehttps://sns.us-east-2.amazonaws.com\u003c/a\u003e.\nIf not specified, the SNS API URL from the SNS SDK will be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esigv4\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Sigv4\"\u003e\nSigv4\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esigv4 configures AWS\u0026rsquo;s Signature Verification 4 signing process to sign requests.\nThis includes AWS credentials and region configuration for authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopicARN\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopicARN defines the SNS topic ARN, e.g. arn:aws:sns:us-east-2:698519295917:My-Topic.\nIf you don\u0026rsquo;t specify this value, you must specify a value for the PhoneNumber or TargetARN.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esubject\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esubject defines the subject line when the message is delivered to email endpoints.\nThis field is only used when sending to email subscribers of an SNS topic.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ephoneNumber\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ephoneNumber defines the phone number if message is delivered via SMS in E.164 format.\nIf you don\u0026rsquo;t specify this value, you must specify a value for the TopicARN or TargetARN.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetARN\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetARN defines the mobile platform endpoint ARN if message is delivered via mobile notifications.\nIf you don\u0026rsquo;t specify this value, you must specify a value for the TopicARN or PhoneNumber.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the message content of the SNS notification.\nThis is the actual notification text that will be sent to subscribers.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eattributes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eattributes defines SNS message attributes as key-value pairs.\nThese provide additional metadata that can be used for message filtering and routing.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for SNS API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003euseAWSHTTPClient\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003euseAWSHTTPClient forces the AWS SDK\u0026rsquo;s BuildableClient instead of\nalertmanager\u0026rsquo;s tracing-wrapped HTTP client. Auto-enabled when AWS_CA_BUNDLE\nis set; set explicitly when configuring ca_bundle via shared AWS config.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= 0.33.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.ScalewayRole\"\u003eScalewayRole\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScalewaySDConfig\"\u003eScalewaySDConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRole of the targets to retrieve. Must be \u003ccode\u003eInstance\u003c/code\u003e or \u003ccode\u003eBaremetal\u003c/code\u003e.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Baremetal\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Instance\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.ScalewaySDConfig\"\u003eScalewaySDConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eScalewaySDConfig configurations allow retrieving scrape targets from Scaleway instances and baremetal services.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scaleway_sd_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scaleway_sd_config\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNote: The \u003ccode\u003e_file\u003c/code\u003e variants of credential fields (e.g. \u003ccode\u003esecret_key_file\u003c/code\u003e)\nfrom the Prometheus configuration are not supported. Use Kubernetes secrets via \u003ccode\u003esecretKey\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eaccessKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eaccessKey defines the access key to use. \u003ca href=\"https://console.scaleway.com/project/credentials\"\u003ehttps://console.scaleway.com/project/credentials\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esecretKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003esecretKey defines the secret key to use when listing targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eprojectID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eprojectID defines the Project ID of the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erole\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScalewayRole\"\u003e\nScalewayRole\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003erole defines the service of the targets to retrieve. Must be \u003ccode\u003eInstance\u003c/code\u003e or \u003ccode\u003eBaremetal\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eport\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eport defines the port to scrape metrics from. If using the public IP address, this must\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the API URL to use when doing the server listing requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ezone\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ezone defines the availability zone of your targets (e.g. fr-par-1).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameFilter\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameFilter defines a name filter (works as a
130LIKE) to apply on the server listing request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etagsFilter\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etagsFilter defines a tag filter (a server needs to have all defined tags to be listed) to apply on the server listing request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erefreshInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erefreshInterval defines the time after which the provided names are refreshed.\nIf not set, Prometheus uses its default value.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to connect to the Scaleway API.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfig\"\u003eScrapeConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eScrapeConfigSpec is a specification of the desired configuration for a scrape configuration.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ejobName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ejobName defines the value of the \u003ccode\u003ejob\u003c/code\u003e label assigned to the scraped metrics by default.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ejob_name\u003c/code\u003e field in the rendered scrape configuration is always controlled by the\noperator to prevent duplicate job names, which Prometheus does not allow. Instead the\n\u003ccode\u003ejob\u003c/code\u003e label is set by means of relabeling configs.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estaticConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.StaticConfig\"\u003e\n[]StaticConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estaticConfigs defines a list of static targets with a common label set.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efileSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.FileSDConfig\"\u003e\n[]FileSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efileSDConfigs defines a list of file service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003e\n[]HTTPSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpSDConfigs defines a list of HTTP service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekubernetesSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003e\n[]KubernetesSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekubernetesSDConfigs defines a list of Kubernetes service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econsulSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.ConsulSDConfig\"\u003e\n[]ConsulSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econsulSDConfigs defines a list of Consul service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ednsSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DNSSDConfig\"\u003e\n[]DNSSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ednsSDConfigs defines a list of DNS service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eec2SDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.EC2SDConfig\"\u003e\n[]EC2SDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eec2SDConfigs defines a list of EC2 service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eazureSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.AzureSDConfig\"\u003e\n[]AzureSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eazureSDConfigs defines a list of Azure service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egceSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.GCESDConfig\"\u003e\n[]GCESDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egceSDConfigs defines a list of GCE service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eopenstackSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackSDConfig\"\u003e\n[]OpenStackSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eopenstackSDConfigs defines a list of OpenStack service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edigitalOceanSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DigitalOceanSDConfig\"\u003e\n[]DigitalOceanSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edigitalOceanSDConfigs defines a list of DigitalOcean service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekumaSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003e\n[]KumaSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekumaSDConfigs defines a list of Kuma service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eeurekaSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003e\n[]EurekaSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eeurekaSDConfigs defines a list of Eureka service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edockerSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSDConfig\"\u003e\n[]DockerSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edockerSDConfigs defines a list of Docker service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elinodeSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.LinodeSDConfig\"\u003e\n[]LinodeSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elinodeSDConfigs defines a list of Linode service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehetznerSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HetznerSDConfig\"\u003e\n[]HetznerSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehetznerSDConfigs defines a list of Hetzner service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enomadSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003e\n[]NomadSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enomadSDConfigs defines a list of Nomad service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edockerSwarmSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DockerSwarmSDConfig\"\u003e\n[]DockerSwarmSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edockerSwarmSDConfigs defines a list of Dockerswarm service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epuppetDBSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003e\n[]PuppetDBSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epuppetDBSDConfigs defines a list of PuppetDB service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elightSailSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.LightSailSDConfig\"\u003e\n[]LightSailSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elightSailSDConfigs defines a list of Lightsail service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eovhcloudSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.OVHCloudSDConfig\"\u003e\n[]OVHCloudSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eovhcloudSDConfigs defines a list of OVHcloud service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escalewaySDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScalewaySDConfig\"\u003e\n[]ScalewaySDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eionosSDConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.IonosSDConfig\"\u003e\n[]IonosSDConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eionosSDConfigs defines a list of IONOS service discovery configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erelabelings defines how to rewrite the target\u0026rsquo;s labels before scraping.\nPrometheus Operator automatically adds relabelings for a few standard Kubernetes fields.\nThe original scrape job\u0026rsquo;s nam
130e is available via the \u003ccode\u003e__tmp_prometheus_job_name\u003c/code\u003e label.\nMore info: \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricsPath\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricsPath defines the HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeInterval defines the interval between consecutive scrapes.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeTimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeTimeout defines the number of seconds to wait until a scrape request times out.\nThe value cannot be greater than the scrape interval otherwise the operator will reject the resource.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeProtocols\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\n[]ScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses its default value.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallbackScrapeProtocol\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ScrapeProtocol\"\u003e\nScrapeProtocol\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehonorTimestamps\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehonorTimestamps defines whether Prometheus preserves the timestamps\nwhen exposed by the target.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etrackTimestampsStaleness\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etrackTimestampsStaleness defines whether Prometheus tracks staleness of\nthe metrics that have an explicit timestamp present in scraped data.\nHas no effect if \u003ccode\u003ehonorTimestamps\u003c/code\u003e is false.\nIt requires Prometheus \u0026gt;= v2.48.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehonorLabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehonorLabels defines when true the metric\u0026rsquo;s labels when they collide\nwith the target\u0026rsquo;s labels.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eparams\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string][]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eparams defines optional HTTP URL parameters\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Scheme\"\u003e\nScheme\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escheme defines the protocol scheme used for requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableCompression\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableCompression when false, Prometheus will request uncompressed response from the scraped target.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.49.0.\u003c/p\u003e\n\u003cp\u003eIf unset, Prometheus uses true by default.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHTTP2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHTTP2 defines whether to enable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines information to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the header to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the configuration to use on every scrape request.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration to use on every scrape request\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esampleLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetLimit defines a limit on the number of scraped targets that will be accepted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelNameLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabelValueLengthLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebodySizeLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ByteSize\"\u003e\nByteSize\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebodySizeLimit defines a per-scrape limit on the size of the uncompressed\nresponse body that will be accepted by Prometheus. Targets responding with\na body larger than this many bytes will cause the scrape to fail.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeNativeHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeNativeHistograms defines whether to enable scraping of native histograms.\nIt requires Prometheus \u0026gt;= v3.8.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClassicHistograms\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003cp\u003eNotice: \u003ccode\u003escrapeClassicHistograms\u003c/code\u003e corresponds to the \u003ccode\u003ealways_scrape_classic_histograms\u003c/code\u003e field in the Prometheus configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramBucketLimit\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\nbuckets will be merged to stay within the limit.\nIt requires Prometheus \u0026gt;= v2.45.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enativeHistogramMinBucketFactor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity\"\u003e\nk8s.io/apimachinery/pkg/api/resource.Quantity\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\nbuckets will be merged to increase the factor sufficiently.\nIt requires Prometheus \u0026gt;= v2.50.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econvertClassicHistogramsToNHCB\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econvertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekeepDroppedTargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ekeepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\
130nthat will be kept in memory. 0 means no limit.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.47.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetricRelabelings\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.RelabelConfig\"\u003e\n[]RelabelConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetricRelabelings defines the metricRelabelings to apply to samples before ingestion.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameValidationScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameValidationSchemeOptions\"\u003e\nNameValidationSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameValidationScheme defines the validation scheme for metric and label names.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.0.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enameEscapingScheme\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NameEscapingSchemeOptions\"\u003e\nNameEscapingSchemeOptions\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enameEscapingScheme defines the metric name escaping mode to request through content negotiation.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v3.4.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003escrapeClass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003escrapeClass defines the scrape class to apply.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.SlackAction\"\u003eSlackAction\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSlackAction configures a single Slack action that is sent with each\nnotification.\nSee \u003ca href=\"https://api.slack.com/docs/message-attachments#action_fields\"\u003ehttps://api.slack.com/docs/message-attachments#action_fields\u003c/a\u003e and\n\u003ca href=\"https://api.slack.com/docs/message-buttons\"\u003ehttps://api.slack.com/docs/message-buttons\u003c/a\u003e for more information.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etype defines the type of interactive component.\nCommon values include \u0026ldquo;button\u0026rdquo; for clickable buttons and \u0026ldquo;select\u0026rdquo; for dropdown menus.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etext defines the user-visible label displayed on the action element.\nFor buttons, this is the button text. For select menus, this is the placeholder text.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines the URL to open when the action is triggered.\nOnl
130y applicable for button-type actions. When set, clicking the button opens this URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estyle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estyle defines the visual appearance of the action element.\nValid values include \u0026ldquo;default\u0026rdquo;, \u0026ldquo;primary\u0026rdquo; (green), and \u0026ldquo;danger\u0026rdquo; (red).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename defines a unique identifier for the action within the message.\nThis value is sent back to your application when the action is triggered.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalue defines the payload sent when the action is triggered.\nThis data is included in the callback sent to your application.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfirm\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackConfirmationField\"\u003e\nSlackConfirmationField\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfirm defines an optional confirmation dialog that appears before the action is executed.\nWhen set, users must confirm their intent before the action proceeds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.SlackConfig\"\u003eSlackConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSlackConfig configures notifications via Slack.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#slack_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#slack_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the secret\u0026rsquo;s key that contains the Slack webhook URL.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003echannel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003echannel defines the channel or user to send notifications to.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eusername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eusername defines the slack bot user name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecolor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecolor defines the color of the left border of the Slack message attachment.\nCan be a hex color code (e.g., \u0026ldquo;#ff0000\u0026rdquo;) or a predefined color name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the title text displayed in the Slack message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitleLink\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitleLink defines the URL that the title will link to when clicked.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epretext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epretext defines optional text that appears above the message attachment block.\u
130003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the main text content of the Slack message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackField\"\u003e\n[]SlackField\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efields defines a list of Slack fields that are sent with each notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshortFields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshortFields determines whether fields are displayed in a compact format.\nWhen true, fields are shown side by side when possible.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efooter\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efooter defines small text displayed at the bottom of the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallback\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallback defines a plain-text summary of the attachment for clients that don\u0026rsquo;t support attachments.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecallbackId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecallbackId defines an identifier for the message used in interactive components.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eiconEmoji\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eiconEmoji defines the emoji to use as the bot\u0026rsquo;s avatar (e.g., \u0026ldquo;ð»\u0026rdquo;).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eiconURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eiconURL defines the URL to an image to use as the bot\u0026rsquo;s avatar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimageURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimageURL defines the URL to an image file that will be displayed inside the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethumbURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ethumbURL defines the URL to an image file that will be displayed as a thumbnail\non the right side of the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elinkNames\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elinkNames enables automatic linking of channel names and usernames in the message.\nWhen true, @channel and @username will be converted to clickable links.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emrkdwnIn\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emrkdwnIn defines which fields should be parsed as Slack markdown.\nValid values include \u0026ldquo;pretext\u0026rdquo;, \u0026ldquo;text\u0026rdquo;, and \u0026ldquo;fields\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eactions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackAction\"\u003e\n[]SlackAction\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eactions defines a list of Slack actions that are sent with each notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout defines the maximum time to wait for a webhook request to complete,\nbefore failing the request and allowing it to be retried.\nIt requires Alertmanager \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageText\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageText defines text content of the Slack message.\nIf set, this is sent as the top-level \u0026lsquo;text\u0026rsquo; field in the Slack payload.\nIt requires Alertmanager \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateMessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateMessage enables updating existing Slack messages instead of creating new ones\nwhen alert state changes. Please note that Webhook URLs do not support updates.\
130nIt requires Alertmanager \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.SlackConfirmationField\"\u003eSlackConfirmationField\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackAction\"\u003eSlackAction\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSlackConfirmationField protect users from destructive actions or\nparticularly distinguished decisions by asking them to confirm their button\nclick one more time.\nSee \u003ca href=\"https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields\"\u003ehttps://api.slack.com/docs/interactive-message-field-guide#confirmation_fields\u003c/a\u003e\nfor more information.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etext defines the main message displayed in the confirmation dialog.\nThis should be a clear question or statement asking the user to confirm their action.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the title text displayed at the top of the confirmation dialog.\nWhen not specified, a default title will be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eokText\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eokText defines the label for the confirmation button in the dialog.\nWhen not specified, defaults to \u0026ldquo;Okay\u0026rdquo;. This button proceeds with the action.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edismissText\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edismissText defines the label for the cancel button in the dialog.\nWhen not specified, defaults to \u0026ldquo;Cancel\u0026rdquo;. This button cancels the action.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.SlackField\"\u003eSlackField\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSlackField configures a single Slack field that is sent with each notification.\nEach field must contain a title, value, and optionally, a boolean value to indicate if the field\nis short enough to be displayed next to other fields designated as short.\nSee \u003ca href=\"https://api.slack.com/docs/message-attachments#fields\"\u003ehttps://api.slack.com/docs/message-attachments#fields\u003c/a\u003e for more information.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etitle defines the label or header text displayed for this field.\nThis appears as bold text above the field value in the Slack message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003evalue defines the content or data displayed for this field.\nThis appears below the title and can contain plain text or Slack markdown.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshort\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshort determines whether this field can be displayed alongside other short fields.\nWhen true, Slack may display this field side by side with other short fields.\nWhen false or not specified, the field takes the full width of the message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.StaticConfig\"\u003eStaticConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.ScrapeConfigSpec\"\u003eScrapeConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eStaticConfig defines a Prometheus static configuration.\nSee \u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\"\u003ehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargets\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Target\"\u003e\n[]Target\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etargets defines the list of targets for this static configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elabels\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elabels defines labels assigned to all metrics scraped from the targets.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Target\"\u003eTarget\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.StaticConfig\"\u003eStaticConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTarget represents a target for Prometheus to scrape\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.TelegramConfig\"\u003eTelegramConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTelegramConfig configures notifications via Telegram.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#telegram_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the Telegram API URL, e.g. \u003ca href=\"https://api.telegram.org\"\u003ehttps://api.telegram.org\u003c/a\u003e.\nIf not specified, the default Telegram API URL will be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebotToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebotToken defines the Telegram bot token. It is mutually exclusive with \u003ccode\u003ebotTokenFile\u003c/code\u003e.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\nEither \u003ccode\u003ebotToken\u003c/code\u003e or \u003ccode\u003ebotTokenFile\u003c/code\u003e is required.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebotTokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebotTokenFile defines the file to read the Telegram bot token from.\nIt is mutually exclusive with \u003ccode\u003ebotToken\u003c/code\u003e.\nEither \u003ccode\u003ebotToken\u003c/code\u003e or \u003ccode\u003ebotTokenFile\u003c/code\u003e is required.\nIt requires Alertmanager \u0026gt;= v0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003echatID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003echatID defines the Telegram chat ID where messages will be sent.\nThis can be a user ID, group ID, or channel ID (with @ prefix for public channels).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageThreadID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageThreadID defines the Telegram Group Topic ID for threaded messages.\nThis allows sending messages to specific topics within Telegram groups.\nIt requires Alertmanager \u0026gt;= 0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the message template for the Telegram notification.\nThis is the content that will be sent to the specified chat.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edisableNotifications\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edisableNotifications controls whether Telegram notifications are sent silently.\nWhen true, users will receive the message without notification sounds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eparseMode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eparseMode defines the parse mode for telegram message formatting.\nValid values are \u0026ldquo;MarkdownV2\u0026rdquo;, \u0026ldquo;Markdown\u0026rdquo;, and \u0026ldquo;HTML\u0026rdquo;.\nThis determines how text formatting is interpreted in the message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for Telegram API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.ThreadByDateType\"\u003eThreadByDateType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.EmailThreadingConfig\"\u003eEmailThreadingConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Daily\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;None\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Time\"\u003eTime\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.TimeRange\"\u003eTimeRange\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTime defines a time in 24hr format\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.TimeInterval\"\u003eTimeInterval\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.MuteTimeInterval\"\u003eMuteTimeInterval\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTimeInterval describes intervals of time\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.TimeRange\"\u003e\n[]TimeRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimes defines a list of TimeRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweekdays\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.WeekdayRange\"\u003e\n[]WeekdayRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweekdays defines a list of WeekdayRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edaysOfMonth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.DayOfMonthRange\"\u003e\n[]DayOfMonthRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edaysOfMonth defines a list of DayOfMonthRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emonths\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.MonthRange\"\u003e\n[]MonthRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emonths defines a list of MonthRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eyears\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.YearRange\"\u003e\n[]YearRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eyears defines a list of YearRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.TimeRange\"\u003eTimeRange\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.TimeInterval\"\u003eTimeInterval\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTimeRange defines a start and end time in 24hr format\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estartTime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Time\"\u003e\nTime\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estartTime defines the start time in 24hr format.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eendTime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.Time\"\u003e\nTime\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eendTime defines the end time in 24hr format.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.URL\"\u003eURL\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.DiscordConfig\"\u003eDiscordConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.EurekaSDConfig\"\u003eEurekaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPSDConfig\"\u003eHTTPSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.KumaSDConfig\"\u003eKumaSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.NomadSDConfig\"\u003eNomadSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.OpenStackSDConfig\"\u003eOpenStackSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.PuppetDBSDConfig\"\u003ePuppetDBSDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.RocketChatConfig\"\u003eRocketChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.ScalewaySDConfig\"\u003eScalewaySDConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.TelegramConfig\"\u003eTelegramConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.VictorOpsConfig\"\u003eVictorOpsConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.WeChatConfig\"\u003eWeChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1alpha1.WebexConfig\"\u003eWebexConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eURL represents a valid URL\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.VictorOpsConfig\"\u003eVictorOpsConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eVictorOpsConfig configures notifications via VictorOps.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#victorops_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiKey defines the secret\u0026rsquo;s key that contains the API key to use when talking to the VictorOps API.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiUrl defines the VictorOps API URL.\nWhen not specified, defaults to the standard VictorOps API endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutingKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eroutingKey defines a key used to map the alert to a team.\nThis determines which VictorOps team will receive the alert notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageType\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageType describes the behavior of the alert.\nValid values are \u0026ldquo;CRITICAL\u0026rdquo;, \u0026ldquo;WARNING\u0026rdquo;, and \u0026ldquo;INFO\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eentityDisplayName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eentityDisplayName contains a summary of the alerted problem.\nThis appears as the main title or identifier for the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estateMessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estateMessage contains a long explanation of the alerted problem.\nThis provides detailed context about the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emonitoringTool\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emonitoringTool defines the monitoring tool the state message is from.\nThis helps identify the source system that generated the alert.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecustomFields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.KeyValue\"\u003e\n[]KeyValue\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecustomFields defines additional custom fields for notification.\nThese provide extra metadata that will be included with the VictorOps incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client\u0026rsquo;s configuration for VictorOps API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.WeChatConfig\"\u003eWeChatConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWeChatConfig configures notifications via WeChat.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#wechat_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiSecret defines the secret\u0026rsquo;s key that contains the WeChat API key.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the WeChat API URL.\nWhen not specified, defaults to the standard WeChat Work API endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecorpID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecorpID defines the corp id for authentication.\nThis is the unique identifier for your WeChat Work organization.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eagentID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eagentID defines the application agent ID within WeChat Work.\nThis identifies which WeChat Work application will send the notifications.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoUser\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoUser defines the target user(s) to receive the notification.\nCan be a single user ID or multiple user IDs separated by \u0026lsquo;|\u0026rsquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoParty\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoParty defines the target department(s) to receive the notification.\nCan be a single department ID or multiple department IDs separated by \u0026lsquo;|\u0026rsquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoTag\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoTag defines the target tag(s) to receive the notification.\nCan be a single tag ID or multiple tag IDs separated by \u0026lsquo;|\u0026rsquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the API request data as defined by the WeChat API.\nThis contains the actual notification content to be sent.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageType\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageType defines the type of message to send.\nValid values include \u0026ldquo;text\u0026rdquo;, \u0026ldquo;markdown\u0026rdquo;, and other WeChat Work supported message types.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for WeChat API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.WebexConfig\"\u003eWebexConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWebexConfig configures notification via Cisco Webex\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#webex_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#webex_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the Webex Teams API URL i.e. \u003ca href=\"https://webexapis.com/v1/messages\"\u003ehttps://webexapis.com/v1/messages\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client\u0026rsquo;s configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the message template\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroomID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eroomID defines the ID of the Webex Teams room where to send the messages.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.WebhookConfig\"\u003eWebhookConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWebhookConfig configures notifications via a generic receiver supporting the webhook payload.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#webhook_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines the URL to send HTTP POST requests to.\nurlSecret takes precedence over url. One of urlSecret and url should be defined.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurlSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurlSecret defines the secret\u0026rsquo;s key that contains the webhook URL to send HTTP requests to.\nurlSecret takes precedence over url. One of urlSecret and url should be defined.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1alpha1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for webhook requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxAlerts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxAlerts defines the maximum number of alerts to be sent per webhook message.\nWhen 0, all alerts are included in the webhook payload.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout defines the maximum time to wait for a webhook request to complete,\nbefore failing the request and allowing it to be retried.\nIt requires Alertmanager \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epayload\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epayload define custom payload to be sent to the webhook endpoint.\nThis is an advanced configuration option that allows you\nto define a custom payload using Go templates.\nIt requires Alertmanager \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.Weekday\"\u003eWeekday\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eWeekday is day of the week\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;friday\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;monday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;saturday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;sunday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;thursday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;tuesday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;wednesday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.WeekdayRange\"\u003eWeekdayRange\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.TimeInterval\"\u003eTimeInterval\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWeekdayRange is an inclusive range of days of the week beginning on Sunday\nDays can be specified by name (e.g \u0026lsquo;Sunday\u0026rsquo;) or as an inclusive range (e.g \u0026lsquo;Monday:Friday\u0026rsquo;)\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1alpha1.YearRange\"\u003eYearRange\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1alpha1.TimeInterval\"\u003eTimeInterval\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eYearRange is an inclusive range of years\u003c/p\u003e\n\u003c/div\u003e\n\u003chr/\u003e\n\u003ch2 id=\"monitoring.coreos.com/v1beta1\"\u003emonitoring.coreos.com/v1beta1\u003c/h2\u003e\nResource Types:\n\u003cul\u003e\u003cli\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.AlertmanagerConfig\"\u003eAlertmanagerConfig\u003c/a\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.AlertmanagerConfig\"\u003eAlertmanagerConfig\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e custom resource definition (CRD) defines how \u003ccode\u003eAlertmanager\u003c/code\u003e objects process Prometheus alerts. It allows to specify alert grouping and routing, notification receivers and inhibition rules.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eAlertmanager\u003c/code\u003e objects select \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e objects using label and namespace selectors.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiVersion\u003c/code\u003e\u003cbr/\u003e\nstring\u003c/td\u003e\n\u003ctd\u003e\n\u003ccode\u003e\nmonitoring.coreos.com/v1beta1\n\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekind\u003c/code\u003e\u003cbr/\u003e\nstring\n\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eAlertmanagerConfig\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emetadata\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#objectmeta-v1-meta\"\u003e\nKubernetes meta/v1.ObjectMeta\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emetadata defines ObjectMeta as the metadata that all persisted resources.\u003c/p\u003e\nRefer to the Kubernetes API documentation for the fields of the\n\u003ccode\u003emetadata\u003c/code\u003e field.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003espec\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.AlertmanagerConfigSpec\"\u003e\nAlertmanagerConfigSpec\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003espec defines the specification of AlertmanagerConfigSpec\u003c/p\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroute\u
130003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Route\"\u003e\nRoute\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroute defines the Alertmanager route definition for incoming alerts. It will be added to the\ngenerated Alertmanager configuration as a first-level route. The matching behavior of the\nroute depends on the Alertmanager\u0026rsquo;s AlertmanagerConfigMatcherStrategyType.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereceivers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003e\n[]Receiver\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereceivers defines the list of receivers.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einhibitRules\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.InhibitRule\"\u003e\n[]InhibitRule\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching\nthe resource\u0026rsquo;s namespace.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.TimeInterval\"\u003e\n[]TimeInterval\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeIntervals defines the list of timeIntervals specifying when the routes should be muted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estatus\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.ConfigResourceStatus\"\u003e\nConfigResourceStatus\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estatus defines the status subresource. It is under active development and is updated only when the\n\u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\u003c/p\u003e\n\u003cp\u003eMost recent observed status of the ServiceMonitor. Read-only.\nMore info:\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.AlertmanagerConfig\"\u003eAlertmanagerConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eAlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration.\nBy definition, the Alertmanager configuration only applies to alerts for which\nthe \u003ccode\u003enamespace\u003c/code\u003e label is equal to the namespace of the AlertmanagerConfig resource.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroute\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Route\"\u003e\nRoute\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroute defines the Alertmanager route definition for incoming alerts. It will be added to the\ngenerated Alertmanager configuration as a first-level route. The matching behavior of the\nroute depends on the Alertmanager\u0026rsquo;s AlertmanagerConfigMatcherStrategyType.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereceivers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003e\n[]Receiver\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereceivers defines the list of receivers.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003einhibitRules\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.InhibitRule\"\u003e\n[]InhibitRule\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003einhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching\nthe resource\u0026rsquo;s namespace.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.TimeInterval\"\u003e\n[]TimeInterval\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeIntervals defines the list of timeIntervals specifying when the routes should be muted.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.DayOfMonthRange\"\u003eDayOfMonthRange\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.TimePeriod\"\u003eTimePeriod\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDayOfMonthRange is an inclusive range of days of the month beginning at 1\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estart\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estart of the inclusive range\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eend\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eend of the inclusive range\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.DiscordConfig\"\u003eDiscordConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eDiscordConfig configures notifications via Discord.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#discord_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#discord_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eapiURL defines the secret\u0026rsquo;s key that contains the Discord webhook URL.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the template of the message\u0026rsquo;s title.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the template of the message\u0026rsquo;s body.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtent\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtent defines the template of the content\u0026rsquo;s body.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eusername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eusername defines the username of the message sender.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eavatarURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eavatarURL defines the avatar url of the message sender.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines HTTP client configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.EmailConfig\"\u003eEmailConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eEmailConfig configures notifications via Email.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eto\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eto defines the email address to send notifications to.\nThis is the recipient address for alert notifications.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efrom\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efrom defines the sender address for email notifications.\nThis appears as the \u0026ldquo;From\u0026rdquo; field in the email header.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehello\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehello defines the hostname to identify to the SMTP server.\nThis is used in the SMTP HELO/EHLO command during the connection handshake.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esmarthost\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esmarthost defines the SMTP host and port through which emails are sent.\nFormat should be \u0026ldquo;hostname:port\u0026rdquo;, e.g. \u0026ldquo;smtp.example.com:587\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthUsername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthUsername defines the username to use for SMTP authentication.\nThis is used for SMTP AUTH when the server requires authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthPassword\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthPassword defines the secret\u0026rsquo;s key that contains the password to use for authentication.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthSecret defines the secret\u0026rsquo;s key that contains the CRAM-MD5 secret.\nThis is used for CRAM-MD5 authentication mechanism.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthIdentity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthIdentity defines the identity to use for SMTP authentication.\nThis is typically used with PLAIN authentication mechanism.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eheaders\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.KeyValue\"\u003e\n[]KeyValue\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eheaders defines additional email header key/value pairs.\nThese override any headers previously set by the notification implementation.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehtml\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehtml defines the HTML body of the email notification.\nThis allows for rich formatting in the email content.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the plain text body of the email notification.\nThis provides a fallback for email clients that don\u0026rsquo;t support HTML.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erequireTLS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erequireTLS defines the SMTP TLS requirement.\nNote that Go does not support unencrypted connections to remote SMTP endpoints.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etlsConfig defines the TLS configuration for SMTP connections.\nThis includes settings for certificates, CA validation, and TLS protocol options.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eforceImplicitTLS\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eforceImplicitTLS defines whether to force use of implicit TLS (direct TLS connection) for better security.\ntrue: force use of implicit TLS (direct TLS connection on any port)\nfalse: force disable implicit TLS (use explicit TLS/STARTTLS if required)\nnil (default): auto-detect based on port (465=implicit, other=explicit) for backward compatibility\nIt requires Alertmanager \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethreading\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.EmailThreadingConfig\"\u003e\nEmailThreadingConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ethreading defines the threading configuration for email receiver.\nIt requires Alertmanager \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.EmailThreadingConfig\"\u003eEmailThreadingConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.EmailConfig\"\u003eEmailConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethreadByDate\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.ThreadByDateType\"\u003e\nThreadByDateType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ethreadByDate defines what granularity of current date to thread by. Accepted values: Daily, None.\n(None means group by alert group key, no date).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.HTTPConfig\"\u003eHTTPConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.DiscordConfig\"\u003eDiscordConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.MSTeamsConfig\"\u003eMSTeamsConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.MSTeamsV2Config\"\u003eMSTeamsV2Config\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.PushoverConfig\"\u003ePushoverConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.RocketChatConfig\"\u003eRocketChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.SNSConfig\"\u003eSNSConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.TelegramConfig\"\u003eTelegramConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.VictorOpsConfig\"\u003eVictorOpsConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.WeChatConfig\"\u003eWeChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.WebexConfig\"\u003eWebexConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.WebhookConfig\"\u003eWebhookConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eHTTPConfig defines a client HTTP configuration.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#http_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#http_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eauthorization\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeAuthorization\"\u003e\nSafeAuthorization\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eauthorization defines the authorization header configuration for the client.\nThis is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebasicAuth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.BasicAuth\"\u003e\nBasicAuth\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebasicAuth defines the basic authentication credentials for the client.\nThis is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eoauth2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.OAuth2\"\u003e\nOAuth2\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eoauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\nThis enables OAuth2 authentication flow for HTTP requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebearerTokenSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebearerTokenSecret defines the secret\u0026rsquo;s key that contains the bearer token to be used by the client\nfor authentication.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etlsConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.SafeTLSConfig\"\u003e\nSafeTLSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp
130\u003etlsConfig defines the TLS configuration for the client.\nThis includes settings for certificates, CA validation, and TLS protocol options.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyURL defines an optional proxy URL for HTTP requests.\nIf defined, this field takes precedence over \u003ccode\u003eproxyUrl\u003c/code\u003e.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyUrl defines the HTTP proxy server to use.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enoProxy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enoProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyFromEnvironment\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eproxyConnectHeader\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nmap[string][]Kubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eproxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\u003c/p\u003e\n\u003cp\u003eIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efollowRedirects\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efollowRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nWhen true, the client will automatically follow redirect responses.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eenableHttp2\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eenableHttp2 can be used to disable HTTP2.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.InhibitRule\"\u003eInhibitRule\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eInhibitRule defines an inhibition rule that allows to mute alerts when other\nalerts are already firing.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetMatch\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Matcher\"\u003e\n[]Matcher\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetMatch defines matchers that have to be fulfilled
130in the alerts to be muted.\nThe operator enforces that the alert matches the resource\u0026rsquo;s namespace.\nWhen these conditions are met, matching alerts will be inhibited (silenced).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esourceMatch\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Matcher\"\u003e\n[]Matcher\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esourceMatch defines matchers for which one or more alerts have to exist for the inhibition\nto take effect. The operator enforces that the alert matches the resource\u0026rsquo;s namespace.\nThese are the \u0026ldquo;trigger\u0026rdquo; alerts that cause other alerts to be inhibited.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eequal\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eequal defines labels that must have an equal value in the source and target alert\nfor the inhibition to take effect. This ensures related alerts are properly grouped.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.KeyValue\"\u003eKeyValue\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.EmailConfig\"\u003eEmailConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.VictorOpsConfig\"\u003eVictorOpsConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eKeyValue defines a (key, value) tuple.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ekey defines the key of the tuple.\nThis is the identifier or name part of the key-value pair.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003evalue defines the value of the tuple.\nThis is the data or content associated with the key.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.MSTeamsConfig\"\u003eMSTeamsConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMSTeamsConfig configures notifications via Microsoft Teams.\nIt requires Alertmanager \u0026gt;= 0.26.0.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebhookUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ewebhookUrl defines the MSTeams webhook URL for sending notifications.\nThis is the incoming webhook URL configured in your Teams channel.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the message title template for Teams notifications.\nThis appears as the main heading of the Teams message card.\u
130003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esummary\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esummary defines the message summary template for Teams notifications.\nThis provides a brief overview that appears in Teams notification previews.\nIt requires Alertmanager \u0026gt;= 0.27.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the message body template for Teams notifications.\nThis contains the detailed content of the Teams message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for Teams webhook requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.MSTeamsV2Config\"\u003eMSTeamsV2Config\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMSTeamsV2Config configures notifications via Microsoft Teams using the new message format with adaptive cards as required by flows.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#msteamsv2_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#msteamsv2_config\u003c/a\u003e\nIt requires Alertmanager \u0026gt;= 0.28.0.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebhookURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewebhookURL defines the MSTeams incoming webhook URL for adaptive card notifications.\nThis webhook must support the newer adaptive cards format required by Teams flows.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the message title template for adaptive card notifications.\nThis appears as the main heading in the Teams adaptive card.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the message body template for adaptive card notifications.\nThis contains the detailed content displayed in the Teams adaptive card format.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for Teams webhook requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.MatchType\"\u003eMatchType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Matcher\"\u003eMatcher\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMatchType is a comparison operator on a Matcher\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;=\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;!=\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;!~\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;=~\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.Matcher\"\u003eMatcher\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.InhibitRule\"\u003eInhibitRule\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.Route\"\u003eRoute\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMatcher defines how to match on alert\u0026rsquo;s labels.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename defines the label to match.\nThis specifies which alert label should be evaluated.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalue defines the label value to match.\nThis is the expected value for the specified label.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ematchType\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.MatchType\"\u003e\nMatchType\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ematchType defines the match operation available with AlertManager \u0026gt;= v0.22.0.\nTakes precedence over Regex (deprecated) if non-empty.\nValid values: \u0026ldquo;=\u0026rdquo; (equality), \u0026ldquo;!=\u0026rdquo; (inequality), \u0026ldquo;=~\u0026rdquo; (regex match), \u0026ldquo;!~\u0026rdquo; (regex non-match).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.Month\"\u003eMonth\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eMonth of the year\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;april\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;
130august\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;december\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;february\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;january\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;july\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;june\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;march\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;may\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;november\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;october\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;september\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.MonthRange\"\u003eMonthRange\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.TimePeriod\"\u003eTimePeriod\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eMonthRange is an inclusive range of months of the year beginning in January\nMonths can be specified by name (e.g \u0026lsquo;January\u0026rsquo;) by numerical month (e.g \u0026lsquo;1\u0026rsquo;) or as an inclusive range (e.g \u0026lsquo;January:March\u0026rsquo;, \u0026lsquo;1:3\u0026rsquo;, \u0026lsquo;1:March\u0026rsquo;)\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.OpsGenieConfig\"\u003eOpsGenieConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOpsGenieConfig configures notifications via OpsGenie.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiKey defines the secret\u0026rsquo;s key that contains the OpsGenie API key.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the URL to send OpsGenie API requests to.\nWhen not specified, defaults to the standard OpsGenie API endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the alert text limited to 130 characters.\nThis appears as the main alert title in OpsGenie.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edescription\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edescription defines the detailed description of the incident.\nThis provides additional context beyond the message field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esource\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esource defines the backlink to the sender of the notification.\nThis helps identify where the alert originated from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etags\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etags defines a comma separated list of tags attached to the notifications.\nThese help categorize and filter alerts within OpsGenie.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003enote\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003enote defines an additional alert note.\nThis provides supplementary information about the alert.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriority\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriority defines the priority level of alert.\nPossible values are P1, P2, P3, P4, and P5, where P1 is highest priority.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edetails\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.KeyValue\"\u003e\n[]KeyValue\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edetails defines a set of arbitrary key/value pairs that provide further detail about the incident.\nThese appear as additional fields in the OpsGenie alert.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eresponders\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.OpsGenieConfigResponder\"\u003e\n[]OpsGenieConfigResponder\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eresponders defines the list of responders responsible for notifications.\nThese determine who gets notified when the alert is created.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for OpsGenie API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eentity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eentity defines an optional field that can be used to specify which domain alert is related to.\nThis helps group related alerts together in OpsGenie.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eactions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eactions defines a comma separated list of actions that will be available for the alert.\nThese appear as action buttons in the OpsGenie interface.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.OpsGenieConfigResponder\"\u003eOpsGenieConfigResponder\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eOpsGenieConfigResponder defines a responder to an incident.\nOne of \u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e or \u003ccode\u003eusername\u003c/code\u003e has to be defined.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eid\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eid defines the unique identifier of the responder.\nThis corresponds to the responder\u0026rsquo;s ID within OpsGenie.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename defines the display name of the responder.\nThis is used when the responder is identified by name rather than ID.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eusername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eusername defines the username of the responder.\nThis is typically used for user-type responders when identifying by username.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etype defines the type of responder.\nValid values include \u0026ldquo;user\u0026rdquo;, \u0026ldquo;team\u0026rdquo;, \u0026ldquo;schedule\u0026rdquo;, and \u0026ldquo;escalation\u0026rdquo;.\nThis determines how OpsGenie interprets the other identifier fields.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003ePagerDutyConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePagerDutyConfig configures notifications via PagerDuty.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutingKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutingKey defines the secret\u0026rsquo;s key that contains the PagerDuty integration key (when using\nEvents API v2). Either this field or \u003ccode\u003eserviceKey\u003c/code\u003e needs to be defined.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eserviceKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eserviceKey defines the secret\u0026rsquo;s key that contains the PagerDuty service key (when using\nintegration type \u0026ldquo;Prometheus\u0026rdquo;). Either this field or \u003ccode\u003eroutingKey\u003c/code\u003e needs to\nbe defined.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines the URL to send requests to.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclient\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclient defines the client identification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclientURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclientURL defines the backlink to the sender of notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edescription\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edescription of the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eseverity\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eseverity of the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eclass\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eclass defines the class/type of the event.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroup\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroup defines a cluster or grouping of sources.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecomponent\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecomponent defines the part or component of the affected system that is broken.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edetails\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.KeyValue\"\u003e\n[]KeyValue\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edetails defines the arbitrary key/value pairs that provide further detail about the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epagerDutyImageConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyImageConfig\"\u003e\n[]PagerDutyImageConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epagerDutyImageConfigs defines a list of image details to attach that provide further detail about an incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epagerDutyLinkConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyLinkConfig\"\u003e\n[]PagerDutyLinkConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epagerDutyLinkConfigs defines a list of link details to attach that provide further detail about an incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esource\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esource defines the unique location of the affected system.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout is the maximum time allowed to invoke the pagerduty\nIt requires Alertmanager \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.PagerDutyImageConfig\"\u003ePagerDutyImageConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePagerDutyImageConfig attaches images to an incident\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esrc\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esrc of the image being attached to the incident\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehref\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehref defines the optional URL; makes the image a clickable link.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealt\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealt is the optional alternative text for the image.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.PagerDutyLinkConfig\"\u003ePagerDutyLinkConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePagerDutyLinkConfig attaches text links to an incident\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehref\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehref defines the URL of the link to be attached\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ealt\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ealt defines the text that describes the purpose of the link, and can be used as the link\u0026rsquo;s text.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.ParsedRange\"\u003eParsedRange\n\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eParsedRange is an integer representation of a range\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estart\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estart defines the beginning of the range\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eend\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eend defines the end of the range\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.PushoverConfig\"\u003ePushoverConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003ePushoverConfig configures notifications via Pushover.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#pushover_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003euserKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003euserKey defines the secret\u0026rsquo;s key that contains the recipient user\u0026rsquo;s user key.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\nEither \u003ccode\u003euserKey\u003c/code\u003e or \u003ccode\u003euserKeyFile\u003c/code\u003e is required.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003euserKeyFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003euserKeyFile defines the user key file that contains the recipient user\u0026rsquo;s user key.\nEither \u003ccode\u003euserKey\u003c/code\u003e or \u003ccode\u003euserKeyFile\u003c/code\u003e is required.\nIt requires Alertmanager \u0026gt;= v0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoken defines the secret\u0026rsquo;s key that contains the registered application\u0026rsquo;s API token.\nSee \u003ca href=\"https://pushover.net/apps\"\u003ehttps://pushover.net/apps\u003c/a\u003e for application registration.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\nEither \u003ccode\u003etoken\u003c/code\u003e or \u003ccode\u003etokenFile\u003c/code\u003e is required.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etokenFile defines the token file that contains the registered application\u0026rsquo;s API token.\nSee \u003ca href=\"https://pushover.net/apps\"\u003ehttps://pushover.net/apps\u003c/a\u003e for application registration.\nEither \u003ccode\u003etoken\u003c/code\u003e or \u003ccode\u003etokenFile\u003c/code\u003e is required.\nIt requires Alertmanager \u0026gt;= v0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the notification title displayed in the Pushover message.\nThis appears as the bold header text in the notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the notification message content.\nThis is the main body text of the Pushover notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines a supplementary URL shown alongside the message.\nThis creates a clickable link within the Pushover notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurlTitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurlTitle defines a title for the supplementary URL.\nIf not specified, the raw URL is shown instead.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ettl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ettl defines the time to live for the alert notification.\nThis determines how long the notification remains active before expiring.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edevice\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edevice defines the name of a specific device to send the notification to.\nIf not specified, the notification is sent to all user\u0026rsquo;s devices.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esound\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esound defines the name of one of the sounds supported by device clients.\nThis overrides the user\u0026rsquo;s default sound choice for this notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epriority\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epriority defines the notification priority level.\nSee \u003ca href=\"https://pushover.net/api#priority\"\u003ehttps://pushover.net/api#priority\u003c/a\u003e for valid values and behavior.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eretry\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eretry defines how often the Pushover servers will send the same notification to the user.\nMust be at least 30 seconds. Only applies to priority 2 notifications.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eexpire\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eexpire defines how long your notification will continue to be retried for,\nunless the user acknowledges the notification. Only applies to priority 2 notifications.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehtml\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehtml defines whether notification message is HTML or plain text.\nWhen true, the message can include HTML formatting tags.\nhtml and monospace formatting are mutually exclusive.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emonospace\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emonospace optional HTML/monospace formatting for the message, see \u003ca href=\"https://pushover.net/api#html\"\u003ehttps://pushover.net/api#html\u003c/a\u003e\nhtml and monospace formatting are mutually exclusive.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for Pushover API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eReceiver defines one or more notification integrations.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename defines the name of the receiver. Must be unique across all items from the list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eopsgenieConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.OpsGenieConfig\"\u003e\n[]OpsGenieConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eopsgenieConfigs defines the list of OpsGenie configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epagerdutyConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003e\n[]PagerDutyConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epagerdutyConfigs defines the List of PagerDuty configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ediscordConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.DiscordConfig\"\u003e\n[]DiscordConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ediscordConfigs defines the list of Discord configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eslackConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SlackConfig\"\u003e\n[]SlackConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eslackConfigs defines the list of Slack configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebhookConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.WebhookConfig\"\u003e\n[]WebhookConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewebhookConfigs defines the List of webhook configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewechatConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.WeChatConfig\"\u003e\n[]WeChatConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewechatConfigs defines the list of WeChat configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eemailConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.EmailConfig\"\u003e\n[]EmailConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eemailConfigs defines the list of Email configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evictoropsConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.VictorOpsConfig\"\u003e\n[]VictorOpsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evictoropsConfigs defines the list of VictorOps configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epushoverConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.PushoverConfig\"\u003e\n[]PushoverConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epushoverConfigs defines the list of Pushover configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esnsConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SNSConfig\"\u003e\n[]SNSConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esnsConfigs defines the list of SNS configurations\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etelegramConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.TelegramConfig\"\u003e\n[]TelegramConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etelegramConfigs defines the list of Telegram configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ewebexConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.WebexConfig\"\u003e\n[]WebexConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ewebexConfigs defines the list of Webex configurations.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emsteamsConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.MSTeamsConfig\"\u003e\n[]MSTeamsConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emsteamsConfigs defines the list of MSTeams configurations.\nIt requires Alertmanager \u0026gt;= 0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emsteamsv2Configs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.MSTeamsV2Config\"\u003e\n[]MSTeamsV2Config\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emsteamsv2Configs defines the list of MSTeamsV2 configurations.\nIt requires Alertmanager \u0026gt;= 0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erocketchatConfigs\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.RocketChatConfig\"\u003e\n[]RocketChatConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erocketchatConfigs defines the list of RocketChat configurations.\nIt requires Alertmanager \u0026gt;= 0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.RocketChatActionConfig\"\u003eRocketChatActionConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.RocketChatConfig\"\u003eRocketChatConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRocketChatActionConfig defines actions for RocketChat messages.\u003c/p\u003e\n\u003c/div\u003e\n\u
130003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the button text displayed to users.\nThis is the label that appears on the interactive button.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines the URL the button links to when clicked.\nThis creates a clickable button that opens the specified URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emsg\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emsg defines the message to send when the button is clicked.\nThis allows the button to post a predefined message to the channel.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.RocketChatConfig\"\u003eRocketChatConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRocketChatConfig configures notifications via RocketChat.\nIt requires Alertmanager \u0026gt;= 0.28.0.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the API URL for RocketChat.\nDefaults to \u003ca href=\"https://open.rocket.chat/\"\u003ehttps://open.rocket.chat/\u003c/a\u003e if not specified.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003echannel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003echannel defines the channel to send alerts to.\nThis can be a channel name (e.g., \u0026ldquo;#alerts\u0026rdquo;) or a direct message recipient.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etoken defines the sender token for RocketChat authentication.\nThis is the personal access token or bot token used to authenticate API requests.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etokenID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#secretkeyselector-v1-core\"\u003e\nKubernetes core/v1.SecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etokenID defines the sender token ID for RocketChat authentication.\nThis is the user ID associated with the token used for API requests.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecolor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecolor defines the message color displayed in RocketChat.\nThis appears as a colored bar alongside the message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eemoji\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eemoji defines the emoji to be displayed as an avatar.\nIf provided, this emoji will be used instead of the default avatar or iconURL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eiconURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eiconURL defines the icon URL for the message avatar.\nThis displays a custom image as the message sender\u0026rsquo;s avatar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the message text to send.\nThis is optional because attachments can be used instead of or alongside text.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the message title displayed prominently in the message.\nThis appears as bold text at the top of the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitleLink\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitleLink defines the URL that the title will link to when clicked.\nThis makes the message title clickable in the RocketChat interface.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.RocketChatFieldConfig\"\u003e\n[]RocketChatFieldConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efields defines additional fields for the message attachment.\nThese appear as structured key-value pairs within the message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshortFields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshortFields defines whether to use short fields in the message layout.\nWhen true, fields may be displayed side by side to save space.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimageURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimageURL defines the image URL to display within the message.\nThis embeds an image directly in the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethumbURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ethumbURL defines the thumbnail URL for the message.\nThis displays a
130small thumbnail image alongside the message content.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elinkNames\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elinkNames defines whether to enable automatic linking of usernames and channels.\nWhen true, @username and #channel references become clickable links.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eactions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.RocketChatActionConfig\"\u003e\n[]RocketChatActionConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eactions defines interactive actions to include in the message.\nThese appear as buttons that users can click to trigger responses.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for RocketChat API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.RocketChatFieldConfig\"\u003eRocketChatFieldConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.RocketChatConfig\"\u003eRocketChatConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRocketChatFieldConfig defines a field for RocketChat messages.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the title of this field.\nThis appears as bold text labeling the field content.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalue defines the value of this field, displayed underneath the title.\nThis contains the actual data or content for the field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshort\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshort defines whether this field should be a short field.\nWhen true, the field may be displayed inline with other short fields to save space.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.Route\"\u003eRoute\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eRoute defines a node in the routing tree.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ereceiver\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ereceiver defines the name of the receiver for this route. If not empty, it should be listed in\nthe \u003ccode\u003ereceivers\u003c/code\u003e field.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroupBy\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroupBy defines the list of labels to group by.\nLabels must not be repeated (unique list).\nSpecial label \u0026ldquo;\u0026hellip;\u0026rdquo; (aggregate by all possible labels), if provided, must be the only element in the list.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroupWait\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NonEmptyDuration\"\u003e\nNonEmptyDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroupWait defines how long to wait before sending the initial notification.\nExample: \u0026ldquo;30s\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003egroupInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NonEmptyDuration\"\u003e\nNonEmptyDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003egroupInterval defines how long to wait before sending an updated notification.\nMust be greater than 0.\nExample: \u0026ldquo;5m\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003erepeatInterval\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.NonEmptyDuration\"\u003e\nNonEmptyDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003erepeatInterval defines how long to wait before repeating the last notification.\nMust be greater than 0.\nExample: \u0026ldquo;4h\u0026rdquo;\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ematchers\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Matcher\"\u003e\n[]Matcher\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ematchers defines the list of matchers that the alert\u0026rsquo;s labels should match. For the first\nlevel route, the operator removes any existing equality and regexp\nmatcher on the \u003ccode\u003enamespace\u003c/code\u003e label and adds a \u003ccode\u003enamespace: \u0026lt;object namespace\u0026gt;\u003c/code\u003e matcher,\nunless configured otherwise in Alertmanager\u0026rsquo;s AlertmanagerConfigMatcherStrategyType.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econtinue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econtinue defines the boolean indicating whether an alert should continue matching subsequent\nsibling nodes. It will always be overridden to true for the first-level\nroute by the Prometheus operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"https://pkg.go.dev/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1#JSON\"\u003e\n[]k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1.JSON\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eroutes defines the child routes.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emuteTimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emuteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eactiveTimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eactiveTimeIntervals is a list of TimeInterval names when this route should be active.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.SNSConfig\"\u003eSNSConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSNSConfig configures notifications via AWS SNS.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#sns_configs\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the SNS API URL, e.g. \u003ca href=\"https://sns.us-east-2.amazonaws.com\"\u003ehttps://sns.us-east-2.amazonaws.com\u003c/a\u003e.\nIf not specified, the SNS API URL from the SNS SDK will be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esigv4\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Sigv4\"\u003e\nSigv4\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esigv4 configures AWS\u0026rsquo;s Signature Verification 4 signing process to sign requests.\nThis includes AWS credentials and region configuration for authentication.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etopicARN\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etopicARN defines the SNS topic ARN, e.g. arn:aws:sns:us-east-2:698519295917:My-Topic.\nIf you don\u0026rsquo;t specify this value, you must specify a value for the PhoneNumber or TargetARN.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esubject\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esubject defines the subject line when the message is delivered to email endpoints.\nThis field is only used when sending to email subscribers of an SNS topic.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ephoneNumber\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ephoneNumber defines the phone number if message is delivered via SMS in E.164 format.\nIf you don\u0026rsquo;t specify this value, you must specify a value for the TopicARN or TargetARN.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etargetARN\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etargetARN defines the mobile platform endpoint ARN if message is delivered via mobile notifications.\nIf you don\u0026rsquo;t specify this value, you must specify a value for the TopicARN or PhoneNumber.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the message content of the SNS notification.\nThis is the actual notification text that will be sent to subscribers.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eattributes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nmap[string]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eattributes defines SNS message attributes as key-value pairs.\nThese provide additional metadata that can be used for message filtering and routing.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for SNS API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003euseAWSHTTPClient\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003euseAWSHTTPClient forces the AWS SDK\u0026rsquo;s BuildableClient instead of\nalertmanager\u0026rsquo;s tracing-wrapped HTTP client. Auto-enabled when AWS_CA_BUNDLE\nis set; set explicitly when configuring ca_bundle via shared AWS config.\u003c/p\u003e\n\u003cp\u003eIt requires Alertmanager \u0026gt;= 0.33.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003eSecretKeySelector\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.EmailConfig\"\u003eEmailConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003eHTTPConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.PushoverConfig\"\u003ePushoverConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.TelegramConfig\"\u003eTelegramConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.VictorOpsConfig\"\u003eVictorOpsConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.WeChatConfig\"\u003eWeChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.WebhookConfig\"\u003eWebhookConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSecretKeySelector selects a key of a Secret.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename defines the name of the secret in the object\u0026rsquo;s namespace to select from.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ekey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ekey defines the key of the secret to select from. Must be a valid secret key.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.SlackAction\"\u003eSlackAction\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSlackAction configures a single Slack action that is sent with each\nnotification.\nSee \u003ca href=\"https://api.slack.com/docs/message-attachments#action_fields\"\u003ehttps://api.slack.com/docs/message-attachments#action_fields\u003c/a\u003e and\n\u003ca href=\"https://api.slack.com/docs/message-buttons\"\u003ehttps://api.slack.com/docs/message-buttons\u003c/a\u003e for more information.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etype\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etype defines the type of interactive component.\nCommon values include \u0026ldquo;button\u0026rdquo; for clickable buttons and \u0026ldquo;select\u0026rdquo; for dropdown menus.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etext defines the user-visible label displayed on the action element.\nFor buttons, this is the button text. For select menus, this is the placeholder text.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines the URL to open when the action is triggered.\nOnl
130y applicable for button-type actions. When set, clicking the button opens this URL.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estyle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estyle defines the visual appearance of the action element.\nValid values include \u0026ldquo;default\u0026rdquo;, \u0026ldquo;primary\u0026rdquo; (green), and \u0026ldquo;danger\u0026rdquo; (red).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ename defines a unique identifier for the action within the message.\nThis value is sent back to your application when the action is triggered.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003evalue defines the payload sent when the action is triggered.\nThis data is included in the callback sent to your application.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003econfirm\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SlackConfirmationField\"\u003e\nSlackConfirmationField\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003econfirm defines an optional confirmation dialog that appears before the action is executed.\nWhen set, users must confirm their intent before the action proceeds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.SlackConfig\"\u003eSlackConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSlackConfig configures notifications via Slack.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#slack_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#slack_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the secret\u0026rsquo;s key that contains the Slack webhook URL.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003echannel\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003echannel defines the channel or user to send notifications to.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eusername\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eusername defines the slack bot user name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecolor\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecolor defines the color of the left border of the Slack message attachment.\nCan be a hex color code (e.g., \u0026ldquo;#ff0000\u0026rdquo;) or a predefined color name.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the title text displayed in the Slack message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitleLink\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitleLink defines the URL that the title will link to when clicked.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epretext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epretext defines optional text that appears above the message attachment block.\u
130003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etext defines the main text content of the Slack message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SlackField\"\u003e\n[]SlackField\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efields defines a list of Slack fields that are sent with each notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshortFields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshortFields determines whether fields are displayed in a compact format.\nWhen true, fields are shown side by side when possible.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efooter\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efooter defines small text displayed at the bottom of the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003efallback\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003efallback defines a plain-text summary of the attachment for clients that don\u0026rsquo;t support attachments.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecallbackId\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecallbackId defines an identifier for the message used in interactive components.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eiconEmoji\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eiconEmoji defines the emoji to use as the bot\u0026rsquo;s avatar (e.g., \u0026ldquo;ð»\u0026rdquo;).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eiconURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eiconURL defines the URL to an image to use as the bot\u0026rsquo;s avatar.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eimageURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eimageURL defines the URL to an image file that will be displayed inside the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ethumbURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ethumbURL defines the URL to an image file that will be displayed as a thumbnail\non the right side of the message attachment.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003elinkNames\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003elinkNames enables automatic linking of channel names and usernames in the message.\nWhen true, @channel and @username will be converted to clickable links.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emrkdwnIn\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n[]string\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emrkdwnIn defines which fields should be parsed as Slack markdown.\nValid values include \u0026ldquo;pretext\u0026rdquo;, \u0026ldquo;text\u0026rdquo;, and \u0026ldquo;fields\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eactions\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SlackAction\"\u003e\n[]SlackAction\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eactions defines a list of Slack actions that are sent with each notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout defines the maximum time to wait for a webhook request to complete,\nbefore failing the request and allowing it to be retried.\nIt requires Alertmanager \u0026gt;= v0.30.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageText\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageText defines text content of the Slack message.\nIf set, this is sent as the top-level \u0026lsquo;text\u0026rsquo; field in the Slack payload.\nIt requires Alertmanager \u0026gt;= v0.31.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eupdateMessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eupdateMessage enables updating existing Slack messages instead of creating new ones\nwhen alert state changes. Please note that Webhook URLs do not support updates.\
130nIt requires Alertmanager \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.SlackConfirmationField\"\u003eSlackConfirmationField\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.SlackAction\"\u003eSlackAction\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSlackConfirmationField protect users from destructive actions or\nparticularly distinguished decisions by asking them to confirm their button\nclick one more time.\nSee \u003ca href=\"https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields\"\u003ehttps://api.slack.com/docs/interactive-message-field-guide#confirmation_fields\u003c/a\u003e\nfor more information.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etext\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etext defines the main message displayed in the confirmation dialog.\nThis should be a clear question or statement asking the user to confirm their action.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etitle defines the title text displayed at the top of the confirmation dialog.\nWhen not specified, a default title will be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eokText\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eokText defines the label for the confirmation button in the dialog.\nWhen not specified, defaults to \u0026ldquo;Okay\u0026rdquo;. This button proceeds with the action.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edismissText\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edismissText defines the label for the cancel button in the dialog.\nWhen not specified, defaults to \u0026ldquo;Cancel\u0026rdquo;. This button cancels the action.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.SlackField\"\u003eSlackField\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.SlackConfig\"\u003eSlackConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eSlackField configures a single Slack field that is sent with each notification.\nEach field must contain a title, value, and optionally, a boolean value to indicate if the field\nis short enough to be displayed next to other fields designated as short.\nSee \u003ca href=\"https://api.slack.com/docs/message-attachments#fields\"\u003ehttps://api.slack.com/docs/message-attachments#fields\u003c/a\u003e for more information.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etitle\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003etitle defines the label or header text displayed for this field.\nThis appears as bold text above the field value in the Slack message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003evalue\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003evalue defines the content or data displayed for this field.\nThis appears below the title and can contain plain text or Slack markdown.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eshort\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eshort determines whether this field can be displayed alongside other short fields.\nWhen true, Slack may display this field side by side with other short fields.\nWhen false or not specified, the field takes the full width of the message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.TelegramConfig\"\u003eTelegramConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTelegramConfig configures notifications via Telegram.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#telegram_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the Telegram API URL, e.g. \u003ca href=\"https://api.telegram.org\"\u003ehttps://api.telegram.org\u003c/a\u003e.\nIf not specified, the default Telegram API URL will be used.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebotToken\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebotToken defines the Telegram bot token. It is mutually exclusive with \u003ccode\u003ebotTokenFile\u003c/code\u003e.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\nEither \u003ccode\u003ebotToken\u003c/code\u003e or \u003ccode\u003ebotTokenFile\u003c/code\u003e is required.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ebotTokenFile\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ebotTokenFile defines the file to read the Telegram bot token from.\nIt is mutually exclusive with \u003ccode\u003ebotToken\u003c/code\u003e.\nEither \u003ccode\u003ebotToken\u003c/code\u003e or \u003ccode\u003ebotTokenFile\u003c/code\u003e is required.\nIt requires Alertmanager \u0026gt;= v0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003echatID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003echatID defines the Telegram chat ID where messages will be sent.\nThis can be a user ID, group ID, or channel ID (with @ prefix for public channels).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageThreadID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint64\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageThreadID defines the Telegram Group Topic ID for threaded messages.\nThis allows sending messages to specific topics within Telegram groups.\nIt requires Alertmanager \u0026gt;= 0.26.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the message template for the Telegram notification.\nThis is the content that will be sent to the specified chat.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edisableNotifications\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edisableNotifications controls whether Telegram notifications are sent silently.\nWhen true, users will receive the message without notification sounds.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eparseMode\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eparseMode defines the parse mode for telegram message formatting.\nValid values are \u0026ldquo;MarkdownV2\u0026rdquo;, \u0026ldquo;Markdown\u0026rdquo;, and \u0026ldquo;HTML\u0026rdquo;.\nThis determines how text formatting is interpreted in the message.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for Telegram API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.ThreadByDateType\"\u003eThreadByDateType\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.EmailThreadingConfig\"\u003eEmailThreadingConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;Daily\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;None\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.Time\"\u003eTime\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.TimeRange\"\u003eTimeRange\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTime defines a time in 24hr format\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.TimeInterval\"\u003eTimeInterval\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.AlertmanagerConfigSpec\"\u003eAlertmanagerConfigSpec\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTimeInterval specifies the periods in time when notifications will be muted or active.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ename\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003ename of the time interval.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeIntervals\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.TimePeriod\"\u003e\n[]TimePeriod\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeIntervals defines a list of TimePeriod.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.TimePeriod\"\u003eTimePeriod\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.TimeInterval\"\u003eTimeInterval\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTimePeriod describes periods of time.\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimes\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.TimeRange\"\u003e\n[]TimeRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimes defines a list of TimeRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eweekdays\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.WeekdayRange\"\u003e\n[]WeekdayRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eweekdays defines a list of WeekdayRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003edaysOfMonth\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.DayOfMonthRange\"\u003e\n[]DayOfMonthRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003edaysOfMonth defines a list of DayOfMonthRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emonths\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.MonthRange\"\u003e\n[]MonthRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emonths defines a list of MonthRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eyears\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.YearRange\"\u003e\n[]YearRange\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eyears defines a list of YearRange\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.TimeRange\"\u003eTimeRange\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.TimePeriod\"\u003eTimePeriod\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eTimeRange defines a start and end time in 24hr format\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estartTime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Time\"\u003e\nTime\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estartTime defines the start time in 24hr format.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eendTime\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.Time\"\u003e\nTime\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eendTime defines the end time in 24hr format.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.URL\"\u003eURL\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.DiscordConfig\"\u003eDiscordConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.OpsGenieConfig\"\u003eOpsGenieConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.PagerDutyConfig\"\u003ePagerDutyConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.RocketChatConfig\"\u003eRocketChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.TelegramConfig\"\u003eTelegramConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.VictorOpsConfig\"\u003eVictorOpsConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.WeChatConfig\"\u003eWeChatConfig\u003c/a\u003e, \u003ca href=\"#monitoring.coreos.com/v1beta1.WebexConfig\"\u003eWebexConfig\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eURL represents a valid URL\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.VictorOpsConfig\"\u003eVictorOpsConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eVictorOpsConfig configures notifications via VictorOps.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#victorops_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiKey defines the secret\u0026rsquo;s key that contains the API key to use when talking to the VictorOps API.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiUrl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiUrl defines the VictorOps API URL.\nWhen not specified, defaults to the standard VictorOps API endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroutingKey\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eroutingKey defines a key used to map the alert to a team.\nThis determines which VictorOps team will receive the alert notification.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageType\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageType describes the behavior of the alert.\nValid values are \u0026ldquo;CRITICAL\u0026rdquo;, \u0026ldquo;WARNING\u0026rdquo;, and \u0026ldquo;INFO\u0026rdquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eentityDisplayName\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eentityDisplayName contains a summary of the alerted problem.\nThis appears as the main title or identifier for the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003estateMessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003estateMessage contains a long explanation of the alerted problem.\nThis provides detailed context about the incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emonitoringTool\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emonitoringTool defines the monitoring tool the state message is from.\nThis helps identify the source system that generated the alert.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecustomFields\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.KeyValue\"\u003e\n[]KeyValue\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecustomFields defines additional custom fields for notification.\nThese provide extra metadata that will be included with the VictorOps incident.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client\u0026rsquo;s configuration for VictorOps API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.WeChatConfig\"\u003eWeChatConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWeChatConfig configures notifications via WeChat.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#wechat_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiSecret defines the secret\u0026rsquo;s key that contains the WeChat API key.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the WeChat API URL.\nWhen not specified, defaults to the standard WeChat Work API endpoint.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ecorpID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ecorpID defines the corp id for authentication.\nThis is the unique identifier for your WeChat Work organization.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eagentID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eagentID defines the application agent ID within WeChat Work.\nThis identifies which WeChat Work application will send the notifications.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoUser\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoUser defines the target user(s) to receive the notification.\nCan be a single user ID or multiple user IDs separated by \u0026lsquo;|\u0026rsquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoParty\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoParty defines the target department(s) to receive the notification.\nCan be a single department ID or multiple department IDs separated by \u0026lsquo;|\u0026rsquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etoTag\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etoTag defines the target tag(s) to receive the notification.\nCan be a single tag ID or multiple tag IDs separated by \u0026lsquo;|\u0026rsquo;.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the API request data as defined by the WeChat API.\nThis contains the actual notification content to be sent.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessageType\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessageType defines the type of message to send.\nValid values include \u0026ldquo;text\u0026rdquo;, \u0026ldquo;markdown\u0026rdquo;, and other WeChat Work supported message types.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for WeChat API requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.WebexConfig\"\u003eWebexConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWebexConfig configures notification via Cisco Webex\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#webex_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#webex_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esend
130Resolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eapiURL\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.URL\"\u003e\nURL\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eapiURL defines the Webex Teams API URL i.e. \u003ca href=\"https://webexapis.com/v1/messages\"\u003ehttps://webexapis.com/v1/messages\u003c/a\u003e\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client\u0026rsquo;s configuration.\nYou must use this configuration to supply the bot token as part of the HTTP \u003ccode\u003eAuthorization\u003c/code\u003e header.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emessage\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emessage defines the message template\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eroomID\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eroomID defines the ID of the Webex Teams room where to send the messages.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.WebhookConfig\"\u003eWebhookConfig\n\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.Receiver\"\u003eReceiver\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWebhookConfig configures notifications via a generic receiver supporting the webhook payload.\nSee \u003ca href=\"https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\"\u003ehttps://prometheus.io/docs/alerting/latest/configuration/#webhook_config\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003esendResolved\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nbool\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003esendResolved defines whether or not to notify about resolved alerts.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurl\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurl defines the URL to send HTTP POST requests to.\nurlSecret takes precedence over url. One of urlSecret and url should be defined.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003eurlSecret\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.SecretKeySelector\"\u003e\nSecretKeySelector\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003eurlSecret defines the secret\u0026rsquo;s key that contains the webhook URL to send HTTP requests to.\nurlSecret takes precedence over url. One of urlSecret and url should be defined.\nThe secret needs to be in the same namespace as the AlertmanagerConfig\nobject and accessible by the Prometheus Operator.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003ehttpConfig\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1beta1.HTTPConfig\"\u003e\nHTTPConfig\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003ehttpConfig defines the HTTP client configuration for webhook requests.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003emaxAlerts\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nint32\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003emaxAlerts defines the maximum number of alerts to be sent per webhook message.\nWhen 0, all alerts are included in the webhook payload.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etimeout\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\n\u003ca href=\"#monitoring.coreos.com/v1.Duration\"\u003e\nDuration\n\u003c/a\u003e\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003etimeout defines the maximum time to wait for a webhook request to complete,\nbefore failing the request and allowing it to be retried.\nIt requires Alertmanager \u0026gt;= v0.28.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003epayload\u003c/code\u003e\u003cbr/\u003e\n\u003cem\u003e\nstring\n\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003cem\u003e(Optional)\u003c/em\u003e\n\u003cp\u003epayload define custom payload to be sent to the webhook endpoint.\nThis is an advanced configuration option that allows you\nto define a custom payload using Go templates.\nIt requires Alertmanager \u0026gt;= v0.32.0.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.Weekday\"\u003eWeekday\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cdiv\u003e\n\u003cp\u003eWeekday is day of the week\u003c/p\u003e\n\u003c/div\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eValue\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;friday\u0026#34;
130\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;monday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;saturday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;sunday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;thursday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;tuesday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e\u0026#34;wednesday\u0026#34;\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.WeekdayRange\"\u003eWeekdayRange\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.TimePeriod\"\u003eTimePeriod\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eWeekdayRange is an inclusive range of days of the week beginning on Sunday\nDays can be specified by name (e.g \u0026lsquo;Sunday\u0026rsquo;) or as an inclusive range (e.g \u0026lsquo;Monday:Friday\u0026rsquo;)\u003c/p\u003e\n\u003c/div\u003e\n\u003ch3 id=\"monitoring.coreos.com/v1beta1.YearRange\"\u003eYearRange\n(\u003ccode\u003estring\u003c/code\u003e alias)\u003c/h3\u003e\n\u003cp\u003e\n(\u003cem\u003eAppears on:\u003c/em\u003e\u003ca href=\"#monitoring.coreos.com/v1beta1.TimePeriod\"\u003eTimePeriod\u003c/a\u003e)\n\u003c/p\u003e\n\u003cdiv\u003e\n\u003cp\u003eYearRange is an inclusive range of years\u003c/p\u003e\n\u003c/div\u003e\n\u003chr/\u003e\n" 131 }, 132 { 133 id: 7, 134 href: "https://prometheus-operator.dev/docs/platform/", 135 title: "Platform Guide", 136 description: "Help Prometheus Operator.", 137 content: "" 138 }, 139 { 140 id: 8, 141 href: "https://prometheus-operator.dev/docs/platform/platform-guide/", 142 title: "Getting Started", 143 description: "Getting started page for Platform Guide", 144 content: "\u003cp\u003eThis guide assumes you have a basic understanding of the Prometheus Operator. If you are new to it, please start with the \u003ca href=\"https://prometheus-operator.dev/docs/getting-started/introduction/\"\u003eIntroduction\u003c/a\u003e page before proceeding. This guide will walk you through deploying Prometheus and Alertmanager instances.\u003c/p\u003e\n\u003ch2 id=\"deploying-prometheus\"\u003eDeploying Prometheus \u003ca href=\"#deploying-prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eTo deploy a Prometheus instance, you must create the \u003ca href=\"https://kubernetes.io/docs/reference/access-authn-authz/authorization/\"\u003eRBAC\u003c/a\u003e rules for the Prometheus service account.\u003c/p\u003e\n\u003cp\u003eFirst, create a ServiceAccount for Prometheus.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eNext, create a ClusterRole that grants Prometheus the necessary permissions to discover and scrape the targets within the cluster.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;
144\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enodes\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enodes/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epods\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003econfigmaps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ediscovery.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpointslices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;
144\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enetworking.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eingresses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003enonResourceURLs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/metrics\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eNow, create a ClusterRoleBinding to bind the ClusterRole to the Prometheus ServiceAccount.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRoleBinding\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eroleRef\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapiGroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003esubjects\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eApply all these manifests to create the necessary RBAC resources. Now you are all set to deploy a Prometheus instance. Here is an example of a basic Prometheus instance manifest.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceAccountName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eTo verify that the instance is up and running, run:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl get -n default prometheus prometheus -w\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eFor more information, see the \u003ca href=\"https://prometheus-operator.dev/docs/platform/rbac/\"\u003ePrometheus Operator RBAC guide\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"deploying-alertmanager\"\u003eDeploying Alertmanager \u003ca href=\"#deploying-alertmanager\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eLet us take a simple example that creates 3 replicas of Alertmanager.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWait for all Alertmanager pods to be ready:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl get pods -l \u003cspan class=\"nv\"\u003ealertmanager\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003eexample -w\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eHowever, Alertmanager as it is now is of no use to us. To properly use Alertmanager, it is important to understand the relationship between Prometheus and Alertmanager. Alertmanager is used to:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeduplicate alerts received from Prometheus.\u003c/li\u003e\n\u003cli\u003eSilence alerts.\u003c/li\u003e\n\u003cli\u003eRoute and send grouped notifications to various integrations (PagerDuty, OpsGenie, mail, chat, â¦).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo, to put Alertmanager instances to use, you would need to integrate it with Prometheus.\u003c/p\u003e\n\u003ch2 id=\"integrating-alertmanager-with-prometheus\"\u003eIntegrating Alertmanager With Prometheus \u003ca href=\"#integrating-alertmanager-with-prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"exposing-the-alertmanager-service\"\u003eExposing the Alertmanager service \u003ca href=\"#exposing-the-alertmanager-service\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTo access the Alertmanager interface, you have to expose the service to the outside. For\nsimplicity, we use a \u003ccode\u003eNodePort\u003c/code\u003e Service.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c
144/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eNodePort\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enodePort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e30903\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9093\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprotocol\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eTCP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanager\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOnce the Service is created, the Alertmanager web server is available under the\nnode\u0026rsquo;s IP address on port \u003ccode\u003e30903\u003c/code\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: Exposing the Alertmanager web server this way may not be an applicable solution. Read more about the possible options in the \u003ca href=\"https://prometheus-operator.dev/docs/platform/exposing-prometheus-and-alertmanager/\"\u003eIngress guide\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"configuring-alertmanager-in-prometheus\"\u003eConfiguring Alertmanager in Prometheus \u003ca href=\"#configuring-alertmanager-in-prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe Alertmanager cluster is now fully functional and highly available, but no\nalerts are fired against it.\u003c/p\u003e\n\u003cp\u003eFirst, create a Prometheus instance that will send alerts to the Alertmanager cluster:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eapiVersion: monitoring.coreos.com/v1\nkind: Prometheus\nmetadata:\n name: example\nspec:\n serviceAccountName: prometheus\n replicas: 2\n alerting:\n alertmanagers:\n - namespace: default\n name: alertmanager-example\n port: web\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe \u003ccode\u003ePrometheus\u003c/code\u003e resource discovers all of the Alertmanager instances behind\nthe \u003ccode\u003eService\u003c/code\u003e created before (pay attention to \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003enamespace\u003c/code\u003e and \u003ccode\u003eport\u003c/code\u003e\nfields which should match with the definition of the Alertmanager Service).\u003c/p\u003e\n\u003cp\u003eOpen the Prometheus web interface, go to the \u0026ldquo;Status \u0026gt; Runtime \u0026amp; Build\nInformation\u0026rdquo; page and check that the Prometheus has discovered 3 Alertmanager\ninstances.\u003c/p\u003e\n" 145 }, 146 { 147 id: 9, 148 href: "https://prometheus-operator.dev/docs/platform/exposing-prometheus-and-alertmanager/", 149 title: "Exposing Prometheus and Alertmanager", 150 description: "Guide to exposing Prometheus and Alertmanager in Kubernetes using NodePort, ClusterIP, or Ingress for external access.", 151 content: "\u003cbr\u003e\n\u003cdiv class=\"alert alert-info\" role=\"alert\"\u003e\n \u003ci class=\"fa fa-exclamation-triangle\"\u003e\u003c/i\u003e\u003cb\u003e Note:\u003c/b\u003e Starting with v0.39.0, Prometheus Operator requires use of Kubernetes v1.16.x and up.\n\u003c/div\u003e\n\u003ch1 id=\"exposing-prometheus-and-alertmanager\"\u003eExposing Prometheus and Alertmanager \u003ca href=\"#exposing-prometheus-and-alertmanager\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eThe Prometheus Operator takes care of operating Prometheus and Alertmanagers clusters. Kubernetes provides several ways to expose these cluster
151s to the outside world. This document outlines best practices and caveats for exposing Prometheus and Alertmanager clusters.\u003c/p\u003e\n\u003ch2 id=\"nodeport\"\u003eNodePort \u003ca href=\"#nodeport\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe easiest way to expose Prometheus or Alertmanager is to use a Service of type \u003ccode\u003eNodePort\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCreate a simple Prometheus object with one replica:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ememory\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e400Mi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAll Prometheus Pods are labeled with \u003ccode\u003eprometheus: \u0026lt;prometheus-name\u0026gt;\u003c/code\u003e. If the Prometheus object\u0026rsquo;s name is \u003ccode\u003emain\u003c/code\u003e, the selector is \u003ccode\u003eprometheus: main\u003c/code\u003e. This means that the respective manifest for the \u003ccode\u003eService\u003c/code\u003e must define the selector as \u003ccode\u003eprometheus: main\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eNodePort\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enodePort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e30900\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9090\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprotocol\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eTCP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAfter creating a Service with the above manifest, the web UI of Prometheus will be accessible by browsing to any of the worker nodes using \u003ccode\u003ehttp://\u0026lt;node-ip\u0026gt;:30900/\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eExposing the Alertmanager works in the same fashion, with the selector \u003ccode\u003ealertmanager: \u0026lt;alertmanager-name\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ememory\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e400Mi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAnd the \u
151003ccode\u003eService\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eNodePort\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enodePort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e30903\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9093\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprotocol\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eTCP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanager\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe Alertmanager web UI will be available at \u003ccode\u003ehttp://\u0026lt;node-ip\u0026gt;:30903/\u003c/code\u003e.\u003c/p\u003e\n\u003ch2 id=\"kubernetes-api\"\u003eKubernetes API \u003ca href=\"#kubernetes-api\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Kubernetes API has a feature of forwarding requests from the API to a cluster internal Service. The general URL scheme to access these is:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ehttp(s)://control-plane-host/api/v1/proxy/namespaces/\u0026lt;namespace\u0026gt;/services/\u0026lt;service-name\u0026gt;:\u0026lt;port-name-or-number\u0026gt;/\n\u003c/code\u003e\u003c/pre\u003e\u003cblockquote\u003e\n\u003cp\u003eFor ease of use, use \u003ccode\u003ekubectl proxy\u003c/code\u003e. It proxies requests from a local address to the Kubernetes API server and handles authentication.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eTo be able to do so, create a Service of type \u003ccode\u003eClusterIP\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterIP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9090\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprotocol\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eTCP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ePrometheus and Alertmanager must be configured with the full URL at which they will be exposed. Therefore the Prometheus manifest requires an entry for \u003ccode\u003eexternalUrl\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexternalUrl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp://127.0.0.1:8001/api/v1/proxy/namespaces/default/services/prometheus-main:web/\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ememory\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e400Mi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eNote the \u003ccode\u003eexternalUrl\u003c/code\u003e uses the host \u003ccode\u003e127.0.0.1:8001\u003c/code\u003e, which is how \u003ccode\u003ekubectl proxy\u003c/code\u003e exposes the Kubernetes API by default.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eOnce the Prometheus Pods are running they are reachable under the specified \u003ccode\u003eexternalUrl\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe Alertmanager object\u0026rsquo;s manifest follows the same rules:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ena
151me\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexternalUrl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp://127.0.0.1:8001/api/v1/proxy/namespaces/default/services/alertmanager-main:web/\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ememory\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e400Mi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAnd the respective Service:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterIP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9093\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprotocol\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eTCP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanager\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThen it will be available under http://127.0.0.1:8001/api/v1/proxy/namespaces/default/services/alertmanager-main:web/.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote the URL for the Service uses the host \u003ccode\u003e127.0.0.1:8001\u003c/code\u003e, which is how \u003ccode\u003ekubectl proxy\u003c/code\u003e exposes the Kubernetes API by default.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"ingress\"\u003eIngress \u003ca href=\"#ingress\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eExposing the Prometheus or Alertmanager web UI through an Ingress object requires a running Ingress controller. For more information, see the Kubernetes documentation on \u003ca href=\"https://kubernetes.io/docs/concepts/services-networking/ingress/\"\u003eIngress\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis example was tested with the \u003ca href=\"https://github.com/kubernetes/ingress-nginx\"\u003eNGINX Ingress Controller\u003c/a\u003e. For a quick-start for running the NGINX Ingress Controller follow the instructions in the \u003ca href=\"https://github.com/kubernetes/ingress-nginx/blob/main/docs/deploy/index.md\"\u003eNGINX Ingress
151installation guide\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eBe certain to evaluate available Ingress controllers for the specifics of your production environment. The NGINX Ingress Controller may or may not be suitable. Consider other solutions, like HA Proxy, Traefik, GCE, or AWS.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003eWARNING: If your Ingress is exposed to the internet, everyone can have full access on your resources. It\u0026rsquo;s strongly recommend to enable an \u003ca href=\"https://github.com/kubernetes/ingress-nginx/blob/351ce5394a5ec37153344135c8112f71539b5af4/docs/examples/auth/external-auth/README.md\"\u003eexternal authentication\u003c/a\u003e or \u003ca href=\"https://github.com/kubernetes/ingress-nginx/blob/351ce5394a5ec37153344135c8112f71539b5af4/docs/user-guide/nginx-configuration/annotations.md#whitelist-source-range\"\u003ewhitelisting IP address\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAn Ingress object also requires a Service to be set up, as the requests are routed from the Ingress endpoint to the internal Service.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterIP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9090\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprotocol\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eTCP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nn\"\u003e---\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterIP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9093\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprotocol\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eTCP\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanager\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eA corresponding Ingress object would be:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eextensions/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eIngress\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eannotations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eingress.kubernetes.io/whitelist-source-range\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e10.0.0.0\u003c/span\u003e\u003cspan class=\"l\"\u003e/16\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# change this range to admin IPs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enginx.ingress.kubernetes.io/rewrite-target\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/$2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ehttp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epaths\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ebackend\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eservicePort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9090\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/prometheus(/|$)(.*)\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span
151\u003e- \u003cspan class=\"nt\"\u003ebackend\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eservicePort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9093\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/alertmanager(/|$)(.*)\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eFinally, the Prometheus and \u003ccode\u003eAlertmanager\u003c/code\u003e objects must be created, specifying the \u003ccode\u003eexternalUrl\u003c/code\u003e at which they will be found.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexternalUrl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp://monitoring.my.systems/prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ememory\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e400Mi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nn\"\u003e---\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexternalUrl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp://monitoring.my.systems/alertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ememory\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e400Mi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eNote the path \u003ccode\u003e/prometheus\u003c/code\u003e at the end of the \u003ccode\u003eexternalUrl\u003c/code\u003e, as specified in the \u003ccode\u003eIngress\u003c/code\u003e object.\u003c/p\u003e\n\u003c/blockquote\u003e\n" 152 }, 153 { 154 id: 10, 155 href: "https://prometheus-operator.dev/docs/platform/webhook/", 156 title: "Admission webhook", 157 description: "Guide to deploy and run the admission webhook service", 158 content: "\u003cp\u003eThis guide describes how to deploy and use the Prometheus operator\u0026rsquo;s admission webhook service.\u003c/p\u003e\n\u003cp\u003eThe admission webhook service is able to\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eValidate requests ensuring that \u003ccode\u003ePrometheusRule\u003c/code\u003e and \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e objects\nare semantically valid.\u003c/li\u003e\n\u003cli\u003eMutate requests enforcing that all annotations of \u003ccode\u003ePrometheusRule\u003c/code\u003e objects are\ncoerced into string values.\u003c/li\u003e\n\u003cli\u003eConvert \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e objects between \u003ccode\u003ev1alpha1\u003c/code\u003e and \u003ccode\u003ev1beta1\u003c/code\u003e versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis guide assumes that you have already \u003ca href=\"https://prometheus-operator.dev/docs/developer/getting-started/\"\u003edeployed the Prometheus\nOperator\u003c/a\u003e and that \u003ca href=\"https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#how-do-i-turn-on-an-admission-controller\"\u003eadmission controllers are\nenabled\u003c/a\u003e\non your cluster.\u003c/p\u003e\n\u003ch2 id=\"prerequisites\"\u003ePrerequisites \u003ca href=\"#prerequisites\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Kubernetes API server expects admission webhook services to communicate\nover HTTPS so we need:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eValid TLS certificate and key provisioned for the admission webhook service.\u003c/li\u003e\n\u003cli\u003eKubernetes Secret containing the TLS certificate and key.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eFor this guide, we assume that a Secret named \u003ccode\u003eadmission-webhook-certs\u003c/code\u003e exists\nin the same namespace as the webhook deployment and that it contains the\nbase64-encoded \u003ca href=\"https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail\"\u003ePEM\u003c/a\u003e\ncertificate (\u003ccode\u003etls.crt\u003c/code\u003e) and key (\u003ccode\u003etls.key\u003c/code\u003e) for the admission webhook service.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003edata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etls.crt\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eLS0tLS...LS0tCg==\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etls.key\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eLS0tLS...LS0tCg==\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eSecret\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eadmission-webhook-certs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe recommended approach is to use \u003ca href=\"https://cert-manager.io/\"\u003ecert-manager\u003c/a\u003e\nwhich manages both the lifecycle of the TLS certificates and the integration\nwith the Kubernetes API with respect to the webhook configuration (e.g.\nautomatic injection of the CA bundle).\u003c/p\u003e\n\u003cp\u003eWhile installing cert-manager is beyond the scope of this guide, below is an\nexample of a \u003ccode\u003eCertificate\u003c/code\u003e object which triggers the creation of the\n\u003ccode\u003eadmission-webhook-certs\u003c/code\u003e secret using a \u003ca href=\"https://cert-manager.io/docs/configuration/selfsigned/\"\u003eSelfSigned\nissuer\u003c/a\u003e. The\ncertificate is valid for the Kubernetes service\n\u003ccode\u003eprometheus-operator-admission-webhook\u003c/code\u003e in the \u003ccode\u003edefault\u003c/code\u003e namespace.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ecert-manager.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eCertificate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\
158u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ednsNames\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook.default.svc\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecretName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eadmission-webhook-certs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eissuerRef\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eselfsigned-cluster-issuer\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterIssuer\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"deploying-the-admission-webhook\"\u003eDeploying the admission webhook \u003ca href=\"#deploying-the-admission-webhook\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eYou can apply the following manifests to run a deployment of the webhook with 2 replicas.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eautomountServiceAccountToken\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/version\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eapps/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eDeployment\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/version\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estrategy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erollingUpdate\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emaxUnavailable\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etemplate\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eannotations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekubectl.kubernetes.io/default-container\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/version\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaffinity\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epodAntiAffinity\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequiredDuringSchedulingIgnoredDuringExecu
158tion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003elabelSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespaces\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etopologyKey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ekubernetes.io/hostname\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eautomountServiceAccountToken\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eargs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- --\u003cspan class=\"l\"\u003eweb.enable-tls=true\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- --\u003cspan class=\"l\"\u003eweb.cert-file=/etc/tls/private/tls.crt\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- --\u003cspan class=\"l\"\u003eweb.key-file=/etc/tls/private/tls.key\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003equay.io/prometheus-operator/admission-webhook:v0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003econtainerPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e8443\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elimits\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecpu\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e200m\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ememory\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e200Mi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecpu\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e50m\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ememory\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e50Mi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eallowPrivilegeEscalation\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecapabilities\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003edrop\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eALL\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereadOnlyRootFilesystem\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eterminationMessagePolicy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eFallbackToLogsOnError\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumeMounts\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003emountPath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/etc/tls/private\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003etls-certificates\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereadOnly\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceAccountName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003etls-certificates\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecret\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eitems\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003etls.crt\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u00
1583etls.crt\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003etls.key\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003etls.key\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecretName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eadmission-webhook-certs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eYou can now expose the webhook as a Kubernetes service by applying the following manifest.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/version\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e443\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"managing-webhook-configurations\"\u003eManaging webhook configurations \u003ca href=\"#managing-webhook-configurations\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eOnce the Prometheus operator\u0026rsquo;s admission webhook service is up and running, you\ncan create \u003ccode\u003eValidatingWebhookConfiguration\u003c/code\u003e and/or \u003ccode\u003eMutatingWebhookConfiguration\u003c/code\u003e\nAPI objects that defines when/how the Kubernetes API should contact the service.\u003c/p\u003e\n\u003cp\u003eFor more details, refer to the \u003ca href=\"https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#webhook-configuration\"\u003eKubernetes\ndocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"prometheusrule\"\u003ePrometheusRule \u003ca href=\"#prometheusrule\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003ch4 id=\"validating-prometheusrule-resources\"\u003eValidating PrometheusRule resources \u003ca href=\"#validating-prometheusrule-resources\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003e/admission-prometheusrules/validate\u003c/code\u003e endpoint of the admission webhook\nservice ensures that \u003ccode\u003ePrometheusRule\u003c/code\u003e objects are semantically valid.\u003c/p\u003e\n\u003cp\u003eThe following example configures a validating admission webhook rejecting\ninvalid PrometheusRule objects.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: If you\u0026rsquo;re not using cert-manager, check the \u003ca href=\"#ca-bundle\"\u003eCA Bundle\u003c/a\u003e section.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eadmissionregistration.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eValidatingWebhookConfiguration\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-rulesvalidation\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eannotations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecert-manager.io/inject-ca-from\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault/prometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ewebhooks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eclientConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eservice\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/admission-prometheusrules/validate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efailurePolicy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eFail\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheusrulevalidate.monitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s1\"\u003e\u0026#39;*\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eoperations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eCREATE\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u00
1583cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eUPDATE\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusrules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eadmissionReviewVersions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;v1beta1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esideEffects\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eNone\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"mutating-prometheusrule-resources\"\u003eMutating PrometheusRule resources \u003ca href=\"#mutating-prometheusrule-resources\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe \u003ccode\u003e/admission-prometheusrules/mutate\u003c/code\u003e endpoint mutates \u003ccode\u003ePrometheusRule\u003c/code\u003e\nobjects so that integer and boolean YAML data elements are coerced into\nstrings.\u003c/p\u003e\n\u003cp\u003eThe following example deploys a mutating admission webhook.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: If you\u0026rsquo;re not using cert-manager, check the \u003ca href=\"#ca-bundle\"\u003eCA Bundle\u003c/a\u003e section.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eadmissionregistration.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eMutatingWebhookConfiguration\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-rulesmutation\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eannotations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecert-manager.io/inject-ca-from\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault/prometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ewebhooks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eclientConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eservice\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/admission-prometheusrules/mutate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efailurePolicy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eFail\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheusrulemutate.monitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s1\"\u003e\u0026#39;*\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eoperations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eCREATE\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eUPDATE\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusrules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eadmissionReviewVersions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;v1\u0026#34;
158\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;v1beta1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esideEffects\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eNone\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"alertmanagerconfig\"\u003eAlertmanagerConfig \u003ca href=\"#alertmanagerconfig\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003e/admission-alertmanagerconfigs/validate\u003c/code\u003e endpoint rejects\n\u003ccode\u003eAlertmanagerConfig\u003c/code\u003e objects that are not semantically valid.\u003c/p\u003e\n\u003cp\u003eThe following example configures a validating admission webhook rejecting\ninvalid \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e objects.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: If you\u0026rsquo;re not using cert-manager, check the \u003ca href=\"#ca-bundle\"\u003eCA Bundle\u003c/a\u003e section.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eadmissionregistration.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eValidatingWebhookConfiguration\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-alertmanager-config-validation\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eannotations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecert-manager.io/inject-ca-from\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault/prometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ewebhooks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eclientConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eservice\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-admission-webhook\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/admission-alertmanagerconfigs/validate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efailurePolicy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eFail\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanagerconfigsvalidate.monitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ev1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eoperations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eCREATE\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eUPDATE\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagerconfigs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eadmissionReviewVersions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;v1\u0026#34;
158\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;v1beta1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esideEffects\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eNone\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"converting-alertmanagerconfig-resources\"\u003eConverting AlertmanagerConfig resources \u003ca href=\"#converting-alertmanagerconfig-resources\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003e/convert\u003c/code\u003e endpoint converts \u003ccode\u003eAlertmanagerconfig\u003c/code\u003e objects between \u003ccode\u003ev1alpha1\u003c/code\u003e\nand \u003ccode\u003ev1beta1\u003c/code\u003e versions.\u003c/p\u003e\n\u003cp\u003eFor more details, refer to the \u003ca href=\"https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#webhook-conversion\"\u003eKubernetes\ndocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe following command patches the\n\u003ccode\u003ealertmanagerconfigs.monitoring.coreos.com\u003c/code\u003e CRD to enable the conversion.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat \u003cspan class=\"s\"\u003e\u0026lt;\u0026lt;EOF | kubectl patch crds/alertmanagerconfigs.monitoring.coreos.com --patch-file /dev/stdin\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;spec\u0026#34;: {\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;conversion\u0026#34;: {\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;strategy\u0026#34;: \u0026#34;Webhook\u0026#34;,\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;webhook\u0026#34;: {\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;clientConfig\u0026#34;: {\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;service\u0026#34;: {\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;name\u0026#34;: \u0026#34;prometheus-operator-admission-webhook\u0026#34;,\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;namespace\u0026#34;: \u0026#34;default\u0026#34;,\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;path\u0026#34;: \u0026#34;/convert\u0026#34;,\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;port\u0026#34;: 443\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e }\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e },\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;conversionReviewVersions\u0026#34;: [\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;v1beta1\u0026#34;,\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e \u0026#34;v1alpha1\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e ]\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e }\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e }\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e }\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003eEOF\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAnnotate the AlertmanagerConfig CRD to let cert-manager inject the service CA bundle.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl annotate crds alertmanagerconfigs.monitoring.coreos.com cert-manager.io/inject-ca-from\u003cspan class=\"o\"\u003e=\u003c/span\u003edefault/prometheus-operator-admission-webhook\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eNote: If you\u0026rsquo;re not using cert-manager, check the \u003ca href=\"#ca-bundle\"\u003eCA Bundle\u003c/a\u003e section.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"ca-bundle\"\u003eCA bundle \u003ca href=\"#ca-bundle\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWhen contacting the webhook service during request admissions or CRD\nconversion, the Kubernetes API verifies the server certificate using the\n\u003ccode\u003ecaBundle\u003c/code\u003e field defined in \u003ccode\u003eclientConfig\u003c/code\u003e. The field should contain the\nbase64-encoded CA certificate that signed the webhook\u0026rsquo;s TLS certificate.\u003c/p\u003e\n\u003cp\u003eCertificate managers like \u003ca href=\"https://cert-manager.io/\"\u003ecert-manager\u003c/a\u003e supports\nautomatic CA injection into webhook configurations and custom resource\ndefinitions. If you are \u003cstrong\u003enot using\u003c/strong\u003e a certificate manager, you need to\nmanually specify the \u
158003ccode\u003ecaBundle\u003c/code\u003e field in \u003ccode\u003eValidatingWebhookConfiguration\u003c/code\u003e,\n\u003ccode\u003eMutatingWebhookConfiguration\u003c/code\u003e and \u003ccode\u003eCustomResourceDefinition\u003c/code\u003e.\u003c/p\u003e\n" 159 }, 160 { 161 id: 11, 162 href: "https://prometheus-operator.dev/docs/platform/prometheus-agent/", 163 title: "Prometheus Agent", 164 description: "Guide for running Prometheus in Agent mode", 165 content: "\u003cdiv class=\"alert alert-doks d-flex\" role=\"alert\"\u003e\n \u003cdiv class=\"flex-shrink-1 alert-icon\"\u003eð \u003c/div\u003e\n \n \u003cdiv class=\"w-100\"\u003ePrometheus Operator \u003e= v0.64.0 is required. \u003c/div\u003e\n \n\u003c/div\u003e\n\n\u003cp\u003eAs mentioned in \u003ca href=\"https://prometheus.io/blog/2021/11/16/agent/\"\u003ePrometheus\u0026rsquo;s blog\u003c/a\u003e, Prometheus Agent\nis a deployment model optimized for environments where all collected data is forwarded to\na long-term storage solution, e.g. Cortex, Thanos or Prometheus, that do not need storage or rule evaluation.\u003c/p\u003e\n\u003cp\u003eFirst of all, make sure that the PrometheusAgent CRD is installed in the cluster and that the operator has the proper RBAC permissions to reconcile the PrometheusAgent resources.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/component\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econtroller\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/version\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epodmonitors/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprobes/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusrules/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003escrapeconfigs/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservicemonitors/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagerconfigs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epodmonitors\u003c/span\u003e\u003cspan class=\"
165w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprobes\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusrules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservicemonitors\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003escrapeconfigs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eapps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003estatefulsets\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;
165\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003econfigmaps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003esecrets\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epods\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;
165\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservices/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enodes\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;
165\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enamespaces\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eevents.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eevents\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enetworking.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eingresses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003estorage.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003estorageclasses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;
165\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSimilarly to Prometheus, Prometheus Agent will also require permission to scrape targets. Because of this, we will create a new service account for the Agent with the necessary permissions to scrape targets.\u003c/p\u003e\n\u003cp\u003eStart with the ServiceAccount, ClusterRole and ClusterRoleBinding:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-agent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-agent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;
165\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epods\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003econfigmaps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enetworking.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eingresses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;
165\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003enonResourceURLs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/metrics\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRoleBinding\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-agent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eroleRef\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapiGroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-agent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003esubjects\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-agent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eLastly, we can deploy the Agent. The \u003ccode\u003espec\u003c/code\u003e field is very similar to the Prometheus CRD but the features that aren\u0026rsquo;
165t applicable to the agent mode (like alerting, retention, Thanos, \u0026hellip;) are not available.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheusAgent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-agent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceAccountName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-agent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eContinue with the \u003ca href=\"https://prometheus-operator.dev/docs/developer/getting-started/\"\u003eGetting Started page\u003c/a\u003e to learn how to monitor applications running on Kubernetes.\u003c/p\u003e\n" 166 }, 167 { 168 id: 12, 169 href: "https://prometheus-operator.dev/docs/platform/thanos/", 170 title: "Thanos", 171 description: "Thanos and the Prometheus Operator.", 172 content: "\u003cp\u003e\u003ca href=\"https://github.com/thanos-io/thanos/\"\u003eThanos\u003c/a\u003e is a set of components that can be composed into a highly available,\nmulti Prometheus metric system with potentially unlimited storage c
172apacity, if your Object Storage allows for it.\u003c/p\u003e\n\u003cp\u003eBefore continuing with Prometheus Operator Thanos integration, it is recommended to read more about Thanos in the official \u003ca href=\"https://thanos.io/tip/thanos/getting-started.md/\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"what-does-the-prometheus-operator-help-with\"\u003eWhat does the Prometheus Operator help with? \u003ca href=\"#what-does-the-prometheus-operator-help-with\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003ePrometheus Operator can manage:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ethe Thanos sidecar component with the \u003ccode\u003ePrometheus\u003c/code\u003e custom resource definition. Deployed within the Prometheus pod, it can hook into the Thanos querying system as well as \u003cstrong\u003eoptionally\u003c/strong\u003e back up your data to object storage.\u003c/li\u003e\n\u003cli\u003eThanos Ruler instances with the \u003ccode\u003eThanosRuler\u003c/code\u003e custom resource definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther Thanos components such the Querier, the Receiver, the Compactor and the Store Gateway should be deployed independently of the Prometheus Operator and its Thanos configuration. The\n\u003ca href=\"https://github.com/thanos-io/kube-thanos/\"\u003ekube-thanos\u003c/a\u003e project has some starting points for other Thanos components deployments.\u003c/p\u003e\n\u003ch2 id=\"prometheus-custom-resource-with-thanos-sidecar\"\u003ePrometheus Custom Resource with Thanos Sidecar \u003ca href=\"#prometheus-custom-resource-with-thanos-sidecar\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheus\u003c/code\u003e CRD has support for adding a Thanos sidecar to the Prometheus\nPod. To enable the sidecar, the \u003ccode\u003ethanos\u003c/code\u003e section must be set to a non empty value.\nFor example, the simplest c
172onfiguration is to just set a valid thanos container image url.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nn\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ethanos\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003equay.io/thanos/thanos:v0.28.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nn\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"configuring-thanos-object-storage\"\u003eConfiguring Thanos Object Storage \u003ca href=\"#configuring-thanos-object-storage\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eYou can configure the Thanos sidecar to upload TSDB blocks to object storage by providing a Kubernetes \u003ccode\u003eSecret\u003c/code\u003e containing the required configuration.\u003c/p\u003e\n\u003cp\u003eFor more information and examples about the configuration itself, take a look at the \u003ca href=\"https://github.com/thanos-io/thanos/blob/main/docs/storage.md\"\u003eThanos documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOnce you have written your configuration save it to a file.\nHere\u0026rsquo;s an example:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003es3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003econfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ebucket\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanos\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoint\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eams3.digitaloceanspaces.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaccess_key\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eXXX\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecret_key\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eXXX\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eLet\u0026rsquo;s assume you saved this file to \u003ccode\u003e/tmp/thanos-config.yaml\u003c/code\u003e. You can use the following command to create a secret called \u003ccode\u003ethanos-objstore-config\u003c/code\u003e inside your cluster in the \u003ccode\u003emonitoring\u003c/code\u003e namespace.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl -n monitoring create secret generic thanos-objstore-config --from-file\u003cspan class=\"o\"\u003e=\u003c/span\u003ethanos.yaml\u003cspan class=\"o\"\u003e=\u003c/span\u003e/tmp/thanos-config.yaml\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThen you can specify this secret inside the Thanos field of the Prometheus spec as mentioned \u003ca href=\"#prometheus-custom-resource-with-thanos-sidecar\"\u003eearlier\u003c/a\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nn\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ethanos\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003equay.io/thanos/thanos:v0.28.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobjectStorageConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanos.yaml\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanos-objstore-config\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nn\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis will attach Thanos sidecar that will backup all \u003cem\u003enew blocks\u003c/em\u003e that Prometheus produces every 2 hours to the object storage.\u003c/p\u003e\n\u003cp\u003eNOTE: With Prometheus older than \u003ccode\u003ev3.9.0\u003c/code\u003e or a Thanos sidecar older than \u003ccode\u003ev0.42.0\u003c/code\u003e, this option disables the local Prometheus compaction\n(\u003ccode\u003e--storage.tsdb.min-block-duration\u003c/code\u003e == \u003ccode\u003e--storage.tsdb.max-block-duration\u003c/code\u003e). This means that Thanos compactor is the main singleton component\nresponsible for compactions on a global, object storage level.\u003c/p\u003e\n\u003cp\u003eNOTE: With Prometheus \u003ccode\u003e\u0026gt;= v3.9.0\u003c/code\u003e and a Thanos sidecar \u003ccode\u003e\u0026gt;= v0.42.0\u003c/code\u003e, the operator keeps local Prometheus compaction enabled and instead\ncoordinates uploads through the sidecar\u0026rsquo;s shipper meta file: Prometheus is started with \u003ccode\u003e--storage.tsdb.delay-compact-file.path\u003c/code\u003e and the\nsidecar with \u003ccode\u003e--shipper.meta-file-name\u003c/code\u003e and \u003ccode\u003e--shipper.ignore-unequal-block-size\u003c/code\u003e, so that Prometheus only compacts blocks that have already\nbeen uploaded to object storage. This avoids the query/memory overhead of running Prometheus without local compaction. Set\n\u003ccode\u003espec.disableCompaction: true\u003c/code\u003e to force the old behavior of disabling local compaction.\u003c/p\u003e\n\u003ch2 id=\"thanos-ruler\"\u003eThanos Ruler \u003ca href=\"#thanos-ruler\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe \u003ca href=\"https://thanos.io/tip/components/rule.md/\"\u003eThanos Ruler\u003c/a\u003e component evaluates Prometheus recording and alerting rules against chosen query API. A \u003ccode\u003eThanosRuler\u003c/code\u003e instance requires at least one Query API server defined either by the \u
172003ccode\u003e.spec.queryConfig\u003c/code\u003e field or the \u003ccode\u003e.spec.queryEndpoints\u003c/code\u003e field. It can also be configured to send alerts to Alertmanager with the \u003ccode\u003e.spec.alertmanagersConfig\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nn\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eThanosRuler\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanos-ruler-demo\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexample\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanos-ruler\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003equay.io/thanos/thanos:v0.28.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eruleSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erole\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-thanos-rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003equeryEndpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ednssrv+_http._tcp.my-thanos-querier.monitoring.svc.cluster.local\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanagersConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-configs.yaml\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanosruler-alertmanager-config\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eMore context for your Alertmanager configuration can be found in the \u003ca href=\"https://thanos.io/tip/components/rule.md/#alertmanager\"\u003eThanos documentation\u003c/a\u003e. An example:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eSecret\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanosruler-alertmanager-config\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003estringData\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanager-configs.yaml\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e|-\u003c/span\u003e\u003cspan class=\"sd\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e alertmanagers:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e - static_configs:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e - \u0026#34;dnssrv+_web._tcp.alertmanager-operated.monitoring.svc.cluster.local\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e api_version: v2\u003c/span\u003e\u003cspan class=\"w\"\u003e \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCan be saved as \u003ccode\u003e/tmp/alertmanager-configs.yaml\u003c/code\u003e, and you can create in your namespace, for example \u003ccode\u003emonitoring\u003c/code\u003e as \u003ccode\u003ethanosruler-alertmanager-config\u003c/code\u003e imperatively with:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl -n monitoring create secret generic thanosruler-alertmanager-config --from-file\u003cspan class=\"o\"\u003e=\u003c/span\u003ealertmanager-configs.yaml\u003cspan class=\"o\"\u003e=\u003c/span\u003e/tmp/alertmanager-configs.yaml\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe recording and alerting rules used by a \u003ccode\u003eThanosRuler\u003c/code\u003e component, are configured using the same \u003ccode\u003ePrometheusRule\u003c/code\u003e objects which are used by Prometheus. In the given example, the rules contained in any \u003ccode\u003ePrometheusRule\u003c/code\u003e object which match the label \u003ccode\u003erole=my-thanos-rules\u003c/code\u003e will be loaded by the Thanos Ruler pods.\u003c/p\u003e\n\u003ch2 id=\"other-thanos-components\"\u003eOther Thanos Components \u003ca href=\"#other-thanos-components\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eDeploying the sidecar was the first step towards getting Thanos up and running, but there are more components to be deployed to get a complete Thanos setup.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://thanos.io/tip/components/query.md/\"\u003eQuerier\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, when object storage backup is desired:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://thanos.io/tip/components/store.md/\"\u003eStore\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://thanos.io/tip/components/compact.md/\"\u003eCompactor\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ekube-thanos project has already supported several thanos components.\nFor more details, please checkout \u003ca href=\"https://github.com/thanos-io/kube-thanos/\"\u003ekube-thanos\u003c/a\u003e.\u003c/p\u003e\n" 173 }, 174 { 175 id: 13, 176 href: "https://prometheus-operator.dev/docs/platform/rbac/", 177 title: "RBAC", 178 description: "Role-based access control for the Prometheus operator", 179 content: "\u003cp\u003e\u003ca href=\"https://en.wikipedia.org/wiki/R
179ole-based_access_control\"\u003eRole-based access control\u003c/a\u003e (RBAC) for the Prometheus Operator involves two parts, RBAC rules for the Operator itself and RBAC rules for the Prometheus Pods themselves created by the Operator as Prometheus requires access to the Kubernetes API for target and Alertmanager discovery.\u003c/p\u003e\n\u003ch2 id=\"prometheus-operator-rbac\"\u003ePrometheus Operator RBAC \u003ca href=\"#prometheus-operator-rbac\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIn order for the Prometheus Operator to work in an RBAC based authorization environment, a \u003ccode\u003eClusterRole\u003c/code\u003e with access to all the resources the Operator requires for the Kubernetes API needs to be created. This section is intended to describe, why the specified rules are required.\u003c/p\u003e\n\u003cp\u003eHere is a ready to use manifest of a \u003ccode\u003eClusterRole\u003c/code\u003e that can be used to start the Prometheus Operator:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/component\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econtroller\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/version\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epodmonitors/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprobes/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusrules/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003escrapeconfigs/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservicemonitors/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers/status\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ealertmanagerconfigs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epodmonitors\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprobes\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cs
179pan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusagents\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheuses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheusrules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservicemonitors\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003escrapeconfigs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ethanosrulers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eapps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003estatefulsets\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;
179\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003econfigmaps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003esecrets\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epods\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;
179\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservices/finalizers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enodes\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;
179\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enamespaces\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eevents.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eevents\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enetworking.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eingresses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003estorage.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003estorageclasses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;
179\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eNote: A cluster admin is required to create this \u003ccode\u003eClusterRole\u003c/code\u003e and create a \u003ccode\u003eClusterRoleBinding\u003c/code\u003e or \u003ccode\u003eRoleBinding\u003c/code\u003e to the \u003ccode\u003eServiceAccount\u003c/code\u003e used by the Prometheus Operator \u003ccode\u003ePod\u003c/code\u003e. The \u003ccode\u003eServiceAccount\u003c/code\u003e used by the Prometheus Operator \u003ccode\u003ePod\u003c/code\u003e can be specified in the \u003ccode\u003eDeployment\u003c/code\u003e object used to deploy it.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAs the Prometheus Operator works extensively with its \u003ccode\u003ecustomresourcedefinitions\u003c/code\u003e, it requires all actions on those objects. Those are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ealertmanagers\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epodmonitors\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprobes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprometheuses\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprometheusrules\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eservicemonitors\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ethanosrulers\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe operator materializes Alertmanager, Prometheus and ThanosRuler objects as \u003ccode\u003estatefulsets\u003c/code\u003e therefore all changes to an Alertmanager or Prometheus object result in a change to the matching \u003ccode\u003estatefulsets\u003c/code\u003e, which means all actions must be permitted.\u003c/p\u003e\n\u003cp\u003eAdditionally as the Prometheus Operator generates configurations, it requires all actions on \u003ccode\u003econfigmaps\u003c/code\u003e and \u003ccode\u003esecrets\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eWhen the Prometheus Operator performs version migrations from one version of Prometheus or Alertmanager to the other, it needs to \u003ccode\u003elist pods\u003c/code\u003e running an old version and \u003ccode\u003edelete\u003c/code\u003e those.\u003c/p\u003e\n\u003cp\u003eThe Prometheus Operator reconciles \u003ccode\u003eservices\u003c/code\u003e called \u003ccode\u003eprometheus-operated\u003c/code\u003e and \u003ccode\u003ealertmanager-operated\u003c/code\u003e, which are used as governing \u003ccode\u003eService\u003c/code\u003es for the \u003ccode\u003eStatefulSet\u003c/code\u003es. To perform this reconciliation it needs the permission to \u003ccode\u003eget\u003c/code\u003e, \u003ccode\u003ecreate\u003c/code\u003e, \u003ccode\u003eupdate\u003c/code\u003e and \u003ccode\u003edelete\u003c/code\u003e these \u003ccode\u003eservices\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAs the kubelet is currently not self-hosted, the Prometheus Operator has a feature to synchronize the IPs of the kubelets into an \u003ccode\u003eEndpoints\u003c/code\u003e object, which requires access to \u003ccode\u003elist\u003c/code\u003e and \u003ccode\u003ewatch\u003c/code\u003e of \u003ccode\u003enodes\u003c/code\u003e (kubelets) and \u003ccode\u003ecreate\u003c/code\u003e and \u003ccode\u003eupdate\u003c/code\u003e for the \u003ccode\u003eendpoints\u003c/code\u003e resource.\u003c/p\u003e\n\u003ch2 id=\"prometheus-rbac\"\u003ePrometheus RBAC \u003ca href=\"#prometheus-rbac\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus server itself accesses the Kubernetes API to discover targets and Alertmanagers. Therefore a separate \u003ccode\u003eClusterRole\u003c/code\u003e for those Prometheus servers needs to exist.\u003c/p\u003e\n\u003cp\u003eAs Prometheus does not modify any Objects in the Kubernetes API, but just reads them it simply requires the \u
179003ccode\u003eget\u003c/code\u003e, \u003ccode\u003elist\u003c/code\u003e, and \u003ccode\u003ewatch\u003c/code\u003e actions. As Prometheus can also be used to scrape metrics from the Kubernetes apiserver, it also requires access to the \u003ccode\u003e/metrics/\u003c/code\u003e endpoint of it.\u003c/p\u003e\n\u003cp\u003eIn addition to the rules for Prometheus itself, the Prometheus sidecar needs to be able to \u003ccode\u003eget\u003c/code\u003e configmaps to be able to pull in rule files from configmap objects.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enodes\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enodes/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eservices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003epods\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;
179\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003econfigmaps\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ediscovery.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpointslices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enetworking.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eingresses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;
179\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003enonResourceURLs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/metrics\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eNote: A cluster admin is required to create this \u003ccode\u003eClusterRole\u003c/code\u003e and create a \u003ccode\u003eClusterRoleBinding\u003c/code\u003e or \u003ccode\u003eRoleBinding\u003c/code\u003e to the \u003ccode\u003eServiceAccount\u003c/code\u003e used by the Prometheus \u003ccode\u003ePod\u003c/code\u003es. The \u003ccode\u003eServiceAccount\u003c/code\u003e used by the Prometheus \u003ccode\u003ePod\u003c/code\u003es can be specified in the \u003ccode\u003ePrometheus\u003c/code\u003e object.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"example\"\u003eExample \u003ca href=\"#example\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eTo demonstrate how to use a \u003ccode\u003eClusterRole\u003c/code\u003e with a \u003ccode\u003eClusterRoleBinding\u003c/code\u003e and a \u003ccode\u003eServiceAccount\u003c/code\u003e here an example. It is assumed, that both of the \u003ccode\u003eClusterRole\u003c/code\u003es described above have already been created.\u003c/p\u003e\n\u003cp\u003eSay the Prometheus Operator shall be deployed in the \u003ccode\u003edefault\u003c/code\u003e namespace. First a \u003ccode\u003eServiceAccount\u003c/code\u003e needs to be setup.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eautomountServiceAccountToken\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/component\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econtroller\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/version\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eNote that the \u003ccode\u003eServiceAccountName\u003c/code\u003e also has to actually be used in \u003ccode\u003espec.template.spec.serviceAccount\u003c/code\u003e of the \u003ccode\u003eDeployment\u003c/code\u003e of the Prometheus Operator.\u003c/p\u003e\n\u003cp\u003eAnd then a \u003ccode\u003eClusterRoleBinding\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRoleBinding\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/component\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econtroller\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/version\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0.94.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eroleRef\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapiGroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003esubjects\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eBecause the \u003ccode\u003ePod\u003c/code\u003e that the Prometheus Operator is running in uses the \u
179003ccode\u003eServiceAccount\u003c/code\u003e named \u003ccode\u003eprometheus-operator\u003c/code\u003e and the \u003ccode\u003eClusterRoleBinding\u003c/code\u003e associates it with the \u003ccode\u003eClusterRole\u003c/code\u003e named \u003ccode\u003eprometheus-operator\u003c/code\u003e, it now has the required permissions to access all the resources as described above.\u003c/p\u003e\n\u003cp\u003eWhen creating \u003ccode\u003ePrometheus\u003c/code\u003e objects the procedure is similar. It starts with a \u003ccode\u003eServiceAccount\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAnd then because the \u003ccode\u003eClusterRole\u003c/code\u003e named \u003ccode\u003eprometheus\u003c/code\u003e, as described above, is likely to be used multiple times, a \u003ccode\u003eClusterRoleBinding\u003c/code\u003e instead of a \u003ccode\u003eRoleBinding\u003c/code\u003e is used.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRoleBinding\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eroleRef\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapiGroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003esubjects\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceAccount\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eSee \u003ca href=\"https://kubernetes.io/docs/reference/access-authn-authz/authorization/\"\u003eUsing Authorization Plugins\u003c/a\u003e for further usage information on RBAC components.\u003c/p\u003e\n\u003c/blockquote\u003e\n" 180 }, 181 { 182 id: 14, 183 href: "https://prometheus-operator.dev/docs/platform/rbac-crd/", 184 title: "RBAC for CRDs", 185 description: "Aggregated roles on the Prometheus Operator CustomResourceDefinitions.", 186 content: "\u003ch2 id=\"aggregated-clusterroles\"\u003eAggregated ClusterRoles \u003ca href=\"#aggregated-clusterroles\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIt can be useful to aggregate permissions on the Prometheus Operator CustomResourceDefinitions to the default \u003ca href=\"https://kubernetes.io/docs/reference/access-authn-authz/rbac/#default-roles-and-role-bindings\"\u003euser-facing roles\u003c/a\u003e, like \u003ccode\u003eview\u003c/code\u003e, \u003ccode\u003eedit\u003c/code\u003e and \u003ccode\u003eadmin\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis can be achieved using \u003ca href=\"https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles\"\u003eaggregated ClusterRoles\u003c/a\u003e. This lets admins include rules for custom resources, such as those served by CustomResourceDefinitions or Aggregated API servers, on the default roles.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: ClusterRole aggregation is available starting Kubernetes 1.9.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"example\"\u003eExample \u003ca href=\"#example\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIn order to aggregate \u003cem\u003eread\u003c/em\u003e (resp. \u003cem\u003eedit\u003c/em\u003e) permissions for the Prometheus Operator CustomResourceDefinitions to the \u003ccode\u003eview\u003c/code\u003e (resp. \u003ccode\u003eedit\u003c/code\u003e / \u003ccode\u003eadmin\u003c/code\u003e) role(s), a cluster admin can create the \u003ccode\u003eClusterRole\u003c/code\u003es below.\u003c/p\u003e\n\u003cp\u003eThis grants:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUsers with \u003ccode\u003eview\u003c/code\u003e role permissions to view the Prometheus Operator CRDs within their namespaces,\u003c/li\u003e\n\u003cli\u003eUsers with \u003ccode\u003eedit\u003c/code\u003e and \u003ccode\u003eadmin\u003c/code\u003e roles permissions to create, edit and delete Prometheus Operator CRDs within their namespaces.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-crd-view\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erbac.authorization.k8s.io/aggregate-to-admin\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;true\u0026#34;
186\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erbac.authorization.k8s.io/aggregate-to-edit\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;true\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erbac.authorization.k8s.io/aggregate-to-view\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;true\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;monitoring.coreos.com\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;alertmanagers\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;alertmanagerconfigs\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;prometheuses\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;prometheusrules\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;servicemonitors\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;podmonitors\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;probes\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nn\"\u003e---\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eClusterRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-crd-edit\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erbac.authorization.k8s.io/aggregate-to-edit\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;true\u0026#34;
186\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erbac.authorization.k8s.io/aggregate-to-admin\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;true\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;monitoring.coreos.com\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;alertmanagers\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;alertmanagerconfigs\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;prometheuses\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;prometheusrules\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;servicemonitors\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;podmonitors\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;probes\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;get\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;list\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;watch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;create\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;update\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;patch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;delete\u0026#34;
186\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e" 187 }, 188 { 189 id: 15, 190 href: "https://prometheus-operator.dev/docs/platform/high-availability/", 191 title: "High Availability", 192 description: "High Availability is a must for the monitoring infrastructure.", 193 content: "\u003cp\u003eHigh availability is not only important for customer facing software, but if the monitoring infrastructure is not highly available, then there is a risk that operations people are not notified for alerts of the customer facing software. Therefore high availability must be just as thought through for the monitoring stack, as for anything else.\u003c/p\u003e\n\u003ch2 id=\"prometheus\"\u003ePrometheus \u003ca href=\"#prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eTo run Prometheus in a highly available manner, two (or more) instances need to be running with the same configuration except that they will have one external label with a different value to identify them. The Prometheus instances scrape the same targets and evaluate the same rules, hence they will have the same data in memory and on disk, with a slight twist that given their different external label, the scrapes and evaluations won\u0026rsquo;t happen at exactly the same time. As a consequence, query requests executed against each Prometheus instance may return slightly different results. For alert evaluation this situation does not change anything, as alerts are typically only fired when a certain query triggers for a period of time. For dashboarding, sticky sessions (using \u003ccode\u003esessionAffinity\u003c/code\u003e on the Kubernetes \u003ccode\u003eService\u003c/code\u003e) should be used, to get consistent graphs when refreshing or you can use something like \u003ca href=\"https://thanos.io/tip/components/query.md/\"\u003eThanos Querier\u003c/a\u003e to federate the data.\u003c/p\u003e\n\u003cp\u003eRunning multiple Prometheus instances avoids having a single point of failure but it doesn\u0026rsquo;t help scaling out Prometheus in case a single Prometheus instance can\u0026rsquo;t handle all the targets and rules. This is where Prometheus\u0026rsquo; sharding feature comes into play. Sharding aims at splitting the scrape targets into multiple groups, each assigned to one Prometheus shard and small enough that they can be handled by a single Prometheus instance. If possible, functional sharding is recommended: in this case, the Prometheus shard X scrapes all pods of Service A, B and C while shard Y scrapes pods from Service D, E and F. When functional sharding is not possible, the Prometheus Operator is also able to support automatic sharding: the targets will be assigned to Prometheus shards based on their addresses. The main drawback of this solution is the additional complexity: to query all data, query federation (e.g. Thanos Query) and distributed rule evaluation engine (e.g. Thanos Ruler) should be deployed to fan in the relevant data for queries and rule evaluations. Single shards of Prometheus can be run highly available as described before.\u003c/p\u003e\n\u003cp\u003eOne of the goals with the Prometheus Operator is that we want to completely automate sharding and federation. We are currently implementing some of the groundwork to make this possible, and figuring out the best approach to do so, but it is definitely on the roadmap!\u003c/p\u003e\n\u003ch2 id=\"alertmanager\"\u003eAlertmanager \u003ca href=\"#alertmanager\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eTo ensure high-availability of the Alertmanager service, Prometheus instances are configured to send their alerts to all configured Alertmanager instances (as described in the \u003ca href=\"https://prometheus.io/docs/alerting/latest/alertmanager/#high-availability\"\u003eAlertmanager documentation\u003c/a\u003e). The Alertmanager instances creates a gossip-based cluster to replicate alert silences and notification logs.\u003c/p\u003e\n\u003cp\u003eThe Prometheus Operator manages the following configuration\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlertmanager discovery using the Kubernetes API for Prometheus.\u003c/li\u003e\n\u003cli\u003eHighly-available cluster for Alertmanager when replicas \u0026gt; 1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"exporters\"\u003eExporters \u003ca href=\"#exporters\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFor exporters, high availability depends on the particular exporter. In the case of \u003ca href=\"https://github.com/kubernetes/kube-state-metrics\"\u003e\u003ccode\u003ekube-state-metrics\u003c/code\u003e\u003c/a\u003e, because it is effectively stateless, it is the same as running any other stateless service in a highly available manner. Simply run multiple replicas that are being load balanced. Key for this is that the backing service, in this case the Kubernetes API server is highly available, ensuring that the data source of \u003ccode\u003ekube-state-metrics\u003c/code\u003e is not a single point of failure.\u003c/p\u003e\n" 194 }, 195 { 196 id: 16, 197 href: "https://prometheus-operator.dev/docs/platform/sharding/", 198 title: "Sharding", 199 description: "Sharding Prometheus", 200 content: "\u003cp\u003eWhen there are too much data to ingest and process, scaling Prometheus vertically may come to an end and it might become necessary to distribute scraped targets across multiple Prometheus shards.\u003c/p\u003e\n\u003ch2 id=\"design\"\u003eDesign \u003ca href=\"#design\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus operator will create \u003ccode\u003e.spec.shards\u003c/code\u003e StatefulSets multiplied by \u003ccode\u003e.spec.replicas\u003c/code\u003e pods.\u003c/p\u003e\n\u003cp\u003eBy default, shards use the Prometheus \u003ccode\u003emodulus\u003c/code\u003e configuration which takes the hash of the source label values in order to split scraped\ntargets based on the number of shards. By default, Prometheus hashes the value of the\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__address__\u
200003c/code\u003e label for \u003ccode\u003eServiceMonitor\u003c/code\u003e and \u003ccode\u003ePodMonitor\u003c/code\u003e resources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e__param_target__\u003c/code\u003e label for \u003ccode\u003eProbe\u003c/code\u003e resources\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo query globally, deploy the Thanos querier connecting to all Thanos sidecars (in the same way, use the Thanos ruler to evaluate rules across shards). Another option is to remote write the samples to a central location.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLimitations:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eScaling down the number of shards doesn\u0026rsquo;t reshard existing data onto remaining instances. It must be manually moved (see also Scaling below).\u003c/li\u003e\n\u003cli\u003eScaling up the number of shards will not reshard existing data either. It will continue to be available from the same instances.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"configuration\"\u003eConfiguration \u003ca href=\"#configuration\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"implementing-a-custom-target-distribution\"\u003eImplementing a custom target distribution \u003ca href=\"#implementing-a-custom-target-distribution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTo implement a custom distribution, set the \u003ccode\u003e__tmp_hash\u003c/code\u003e label during target discovery using relabeling configuration. The operator uses this label\u0026rsquo;s value instead of the default labels when computing the shard assignment.\u003c/p\u003e\n\u003cp\u003eFor example, to shard targets by pod namespace and name rather than by address:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erelabelings\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003esourceLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003e__meta_kubernetes_pod_namespace, __meta_kubernetes_pod_name]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseparator\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetLabel\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e__tmp_hash\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe relabeling can also be applied at the scrape class level to affect multiple monitoring resources at once.\u003c/p\u003e\n\u003ch3 id=\"scraping-a-target-from-all-the-sh
200ards\"\u003eScraping a target from all the shards \u003ca href=\"#scraping-a-target-from-all-the-shards\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eBy default, each target is assigned to exactly one shard. To have all shards scrape the same target â useful for singleton services such as kube-state-metrics where every shard needs the full set of metrics â set the \u003ccode\u003e__tmp_disable_sharding\u003c/code\u003e label to a non-empty value using relabeling configuration.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ekube-state-metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ekube-state-metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erelabelings\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003etargetLabel\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e__tmp_disable_sharding\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplacement\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;true\u0026#34;
200\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"topology-aware-sharding\"\u003eTopology-aware sharding \u003ca href=\"#topology-aware-sharding\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBeta:\u003c/strong\u003e Topology-aware sharding requires the \u003ccode\u003ePrometheusTopologySharding\u003c/code\u003e feature gate to be enabled on the operator.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eIn multi-zone clusters, the default address-based sharding distributes targets without regard for their zone, which can generate costly cross-zone traffic. Topology-aware sharding pins each Prometheus shard to a specific zone so that it only scrapes targets local to that zone.\u003c/p\u003e\n\u003cp\u003eWhen \u003ccode\u003emode: Topology\u003c/code\u003e is set, the operator:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGenerates relabeling rules so each shard keeps only targets whose zone label matches its assigned zone.\u003c/li\u003e\n\u003cli\u003eAutomatically adds a \u003ccode\u003enodeSelector\u003c/code\u003e to schedule each shard\u0026rsquo;s pods in the correct zone.\u003c/li\u003e\n\u003cli\u003eAdds a \u003ccode\u003ezone\u003c/code\u003e external label to each shard\u0026rsquo;s Prometheus configuration (configurable via \u003ccode\u003eexternalLabelName\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe number of shards must be greater than or equal to the number of topology values. When \u003ccode\u003espec.shards\u003c/code\u003e is a multiple of the number of zones, the shards are evenly distributed across zones. Otherwise, some zones receive more shards than others.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardingStrategy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emode\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eTopology\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etopology\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evalues\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eeurope-west4-a\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eeurope-west4-b\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWith this configuration and 4 shards across 2 zones, shards 0 and 2 are scheduled in \u003ccode\u003eeurope-west4-a\u003c/code\u003e and shards 1 and 3 in \u003ccode\u003eeurope-west4-b\u003c/code\u003e. Each shard only scrapes targets in its zone.\u003c/p\u003e\n\u003ch3 id=\"retaining-shards\"\u003eRetaining shards \u003ca href=\"#retaining-shards\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBeta:\u003c/strong\u003e Shard retention requires the \u
200003ccode\u003ePrometheusShardRetentionPolicy\u003c/code\u003e feature gate to be enabled on the operator.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eWhen scaling down the number of shards, the pods from the removed shards are deleted by default along with access to their historical data. To preserve scaled-down shards so their data remains queryable until the retention duration expires, set \u003ccode\u003e.spec.shardRetentionPolicy.whenScaled\u003c/code\u003e to \u003ccode\u003eRetain\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardRetentionPolicy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ewhenScaled\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRetain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eRetained shards continue running and can be queried via the Thanos sidecar and querier alongside the active shards. By default, the operator deletes them once the Prometheus retention time has been reached. This can be overridden with the \u003ccode\u003eretain.retentionPeriod\u003c/code\u003e field:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eretentionSize\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e100Gi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardRetentionPolicy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ewhenScaled\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRetain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eretain\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eretentionPeriod\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e7d\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e If the Prometheus resource uses size-based retention only (no retention time configured), retained shards are kept forever by default.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"example\"\u003eExample \u003ca href=\"#example\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe following manifest creates a Prometheus server with two replicas:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceAccountName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis can be verified with the following command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl get pods -n default\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe output is similar to this:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eprometheus-prometheus-0 2/2 Running \u003cspan class=\"m\"\u003e1\u003c/span\u003e 10s\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eprometheus-prometheus-1 2/2 Running \u003cspan class=\"m\"\u003e1\u003c/span\u003e 10s\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eDeploy the example application and monitor it:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eapps/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eDeployment\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u0
20003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etemplate\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003equay.io/brancz/prometheus-example-app:v0.5.0\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainerPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e8080\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e8080\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eExplore one of the monitoring Prometheus instances:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl port-forward pod/prometheus-prometheus-0 9090:9090\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWe find the prometheus server scrapes three targets.\u003c/p\u003e\n\u003cp\u003eNow let\u0026rsquo;s expand the Prometheus resource to two shards as shown below:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u
200003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eshards\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceAccountName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis can be verified with the following command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl get pods -n \u0026lt;namespace\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe output is similar to this:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eprometheus-prometheus-0 2/2 Running \u003cspan class=\"m\"\u003e1\u003c/span\u003e 11m\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eprometheus-prometheus-1 2/2 Running \u003cspan class=\"m\"\u003e1\u003c/span\u003e 11m\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eprometheus-prometheus-shard-1-0 2/2 Running \u003cspan class=\"m\"\u003e1\u003c/span\u003e 12s\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eprometheus-prometheus-shard-1-1 2/2 Running \u003cspan class=\"m\"\u003e1\u003c/span\u003e 12s\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eExplore one of the monitoring Prometheus instances added for sharding:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl port-forward prometheus-prometheus-shard-1-0 9091:9090\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWe should find that one or tw
200o targets are being scraped by this instance while the original Prometheus shard scrapes the remaining target(s).\u003c/p\u003e\n" 201 }, 202 { 203 id: 17, 204 href: "https://prometheus-operator.dev/docs/platform/storage/", 205 title: "Storage", 206 description: "Storage considerations", 207 content: "\u003cp\u003eBy default, the operator configures Pods to store data on \u003ccode\u003eemptyDir\u003c/code\u003e volumes\nwhich aren\u0026rsquo;t persisted when the Pods are redeployed. To maintain data across\ndeployments and version upgrades, you can configure persistent storage for\nPrometheus, Alertmanager and ThanosRuler resources.\u003c/p\u003e\n\u003cp\u003eKubernetes supports several kinds of storage volumes. The Prometheus Operator\nworks with PersistentVolumeClaims, which support the underlying\nPersistentVolume to be provisioned when requested.\u003c/p\u003e\n\u003cp\u003eThis document assumes a basic understanding of PersistentVolumes,\nPersistentVolumeClaims, and their\n\u003ca href=\"https://kubernetes.io/docs/concepts/storage/persistent-volumes/#provisioning\"\u003eprovisioning\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"storage-provisioning-on-aws\"\u003eStorage Provisioning on AWS \u003ca href=\"#storage-provisioning-on-aws\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eAutomatic provisioning of storage requires a \u003ccode\u003eStorageClass\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003estorage.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eStorageClass\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003essd\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eprovisioner\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ekubernetes.io/aws-ebs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eparameters\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003egp2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eNote: Make sure that AWS as a cloud provider is properly configured with your cluster, or storage provisioning will not work.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eFor best results, use volumes that have high I/O throughput. The
207se examples use\nSSD EBS volumes. Read the Kubernetes \u003ca href=\"https://kubernetes.io/docs/concepts/storage/persistent-volumes/#provisioning\"\u003ePersistent\nVolumes\u003c/a\u003e\ndocumentation to adapt this \u003ccode\u003eStorageClass\u003c/code\u003e to your needs.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eStorageClass\u003c/code\u003e that was created can be specified in the \u003ccode\u003estorage\u003c/code\u003e section\nin the \u003ccode\u003ePrometheus\u003c/code\u003e resource (note that if you\u0026rsquo;re using\n\u003ca href=\"https://github.com/prometheus-operator/kube-prometheus\"\u003ekube-prometheus\u003c/a\u003e, then\ninstead of making the following change to your \u003ccode\u003ePrometheus\u003c/code\u003e resource, see the\n\u003ca href=\"https://github.com/prometheus-operator/kube-prometheus/blob/main/examples/prometheus-pvc.jsonnet\"\u003eprometheus-pvc.jsonnet\u003c/a\u003e\nexample).\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003epersisted\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumeClaimTemplate\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorageClassName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003essd\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e40Gi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eThe full documentation of the \u003ccode\u003estorage\u003c/code\u003e field can be found in the \u003ca href=\"https://prometheus-operator.dev/docs/api-reference/api/\"\u003eAPI reference\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eWhen creating the Prometheus object, a PersistentVolumeClaim is used for each\nPod in the StatefulSet, and the storage should automatically be provisioned,\nmounted and used.\u003c/p\u003e\n\u003cp\u003eThe same approach should work with other cloud providers (GCP, Azure, \u0026hellip;) and\nany Kubernetes storage provider supporting dynamic provisioning.\u003c/p\u003e\n\u003ch2 id=\"manual-storage-provisioning\"\u003eManual storage provisioning \u003ca href=\"#manual-storage-provisioning\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus CRD specification allows you to supp
207ort arbitrary storage\nthrough a PersistentVolumeClaim.\u003c/p\u003e\n\u003cp\u003eThe easiest way to use a volume that cannot be automatically provisioned (for\nwhatever reason) is to use a label selector alongside a manually created\nPersistentVolume.\u003c/p\u003e\n\u003cp\u003eFor example, using an NFS volume might be accomplished with the following\nmanifests:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-example-prometheus-name\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumeClaimTemplate\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-example-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e50Gi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nn\"\u003e---\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePersistentVolume\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-pv-name\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-example-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecapacity\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e50Gi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaccessModes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eReadWriteOnce\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# required\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enfs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserver\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emyServer\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/path/to/prom/db\u0026#34;
207\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"using-hostpath-volumes\"\u003eUsing hostPath volumes \u003ca href=\"#using-hostpath-volumes\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eUsing a hostPath volume requires ensuring that the container has the appropriate permissions to access and modify files at the specified path on the host machine, example:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumeClaimTemplate\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erequests\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e50Gi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efsGroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nn\"\u003e---\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePersistentVolume\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-pv-name\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecapacity\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e50Gi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaccessModes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eReadWriteOnce\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epersistentVolumeReclaimPolicy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRetain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ehostPath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/mnt/data\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"disabling-default-storageclasses\"\u003eDisabling Default StorageClasses \u003ca href=\"#disabling-default-storageclasses\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTo manually provision volumes (as of Kubernetes 1.6.0), you may
207need to disable\nthe default StorageClass that is automatically created for certain Cloud\nProviders. Default StorageClasses are pre-installed on Azure, AWS, GCE,\nOpenStack, and vSphere.\u003c/p\u003e\n\u003cp\u003eThe default StorageClass behavior will override manual storage provisioning,\npreventing PersistentVolumeClaims from automatically binding to manually\ncreated PersistentVolumes.\u003c/p\u003e\n\u003cp\u003eTo override this behavior, you must explicitly create the same resource, but\nset it to \u003cem\u003enot\u003c/em\u003e be default (see the\n\u003ca href=\"https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.6.md#volumes\"\u003echangelog\u003c/a\u003e\nfor more information.)\u003c/p\u003e\n\u003cp\u003eFor example, to disable default StorageClasses on a Google Container Engine cluster, create the following StorageClass:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eStorageClass\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003estorage.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003estandard\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eannotations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# disable this default storage class by setting this annotation to false.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estorageclass.kubernetes.io/is-default-class\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;false\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eprovisioner\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ekubernetes.io/gce-pd\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eparameters\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003epd-ssd\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ezone\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eus-east1-d\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"resizing-volumes\"\u003eResizing volumes \u003ca href=\"#resizing-volumes\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eEven if the StorageClass supports resizing, Kubernetes doesn\u0026rsquo;t support (yet)\nvolume expansion through StatefulSets. This means that when you update the\nstorage requests in the \u003ccode\u003espec.storage\u003c/code\u003e field of a custom resource such as\nPrometheus, the operator has to delete/recreate the underlying StatefulSet and\nthe associated PVCs aren\u0026rsquo;t expanded (more details in the \u003ca href=\"https://github.com/kubernetes/enhancements/issues/661\"\u003eKEP\nissue\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eIt is still possible to fix the situation manually.\u003c/p\u003e\n\u003cp\u003eFirst check that the storage class allows volume expansion:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ kubectl get storageclass -o custom-columns\u003cspan class=\"o\"\u003e=\u003c/span\u003eNAME:.metadata.name,ALLOWVOLUMEEXPANSION:.allowVolumeExpansion\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eNAME ALLOWVOLUMEEXPANSION\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egp2-csi \u003cspan class=\"nb\"\u003etrue\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egp3-csi \u003cspan class=\"nb\"\u003etrue\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eNext, update the \u003ccode\u003espec.paused\u003c/code\u003e field to \u003ccode\u003etrue\u003c/code\u003e (to prevent the operator from recreating the StatefulSet) and update the storage request in the \u003ccode\u003espec.storage\u003c/code\u003e field of the custom resource. Assuming a Prometheus resource named \u003ccode\u003eexample\u003c/code\u003e for which you want to increase the storage size to 10Gi:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl patch prometheus/example --patch \u003cspan class=\"s1\"\u003e\u0026#39;{\u0026#34;spec\u0026#34;: {\u0026#34;paused\u0026#34;: true, \u0026#34;storage\u0026#34;: {\u0026#34;volumeClaimTemplate\u0026#34;: {\u0026#34;spec\u0026#34;: {\u0026#34;resources\u0026#34;: {\u0026#34;requests\u0026#34;: {\u0026#34;storage\u0026#34;:\u0026#34;10Gi\u0026#34;}}}}}}}\u0026#39;\u003c/span\u003e --type merge\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eNext, patch every PVC with the updated storage request (10Gi in this example):\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efor\u003c/span\u003e p in \u003cspan class=\"k\"\u003e$(\u003c/span\u003ekubectl get pvc -l operator.prometheus.io/name\u003cspan class=\"o\"\u003e=\u003c/span\u003eexample -o \u003cspan class=\"nv\"\u003ejsonpath\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;{range .items[*]}{.metadata.name} {end}\u0026#39;\u003c/span\u003e\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003edo\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"se\"\u003e\u003c/span\u003e kubectl patch pvc/\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003ep\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e --patch \u003cspan class=\"s1\"\u003e\u0026#39;{\u0026#34;spec\u0026#34;: {\u0026#34;resources\u0026#34;: {\u0026#34;requests\u0026#34;: {\u0026#34;storage\u0026#34;:\u0026#34;10Gi\u0026#34;}}}}\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"se\"\u003e\u003c/span\u003e\u003cspan class=\"k\"\u003edone\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eNext, delete the underlying StatefulSet using the \u003ccode\u003eorphan\u003c/code\u003e deleti
207on strategy:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl delete statefulset -l operator.prometheus.io/name\u003cspan class=\"o\"\u003e=\u003c/span\u003eexample --cascade\u003cspan class=\"o\"\u003e=\u003c/span\u003eorphan\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eLast, change \u003ccode\u003espec.paused\u003c/code\u003e field of the custom resource back to \u003ccode\u003efalse\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl patch prometheus/example --patch \u003cspan class=\"s1\"\u003e\u0026#39;{\u0026#34;spec\u0026#34;: {\u0026#34;paused\u0026#34;: false}}\u0026#39;\u003c/span\u003e --type merge\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe operator should recreate the StatefulSet immediately, there will be no\nservice disruption thanks to the \u003ccode\u003eorphan\u003c/code\u003e strategy and the volumes mounted in\nthe Pods should have the updated size.\u003c/p\u003e\n" 208 }, 209 { 210 id: 18, 211 href: "https://prometheus-operator.dev/docs/platform/strategic-merge-patch/", 212 title: "Strategic Merge Patch", 213 description: "Using strategic merge patch to overwrite container definition.", 214 content: "\u003cp\u003eThis document describes how to overwrite the configuration generated by the\noperator using \u003ca href=\"https://kubernetes.io/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/#use-a-strategic-merge-patch-to-update-a-deployment\"\u003estrategic merge\npatches\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWhen users need to apply a specific configuration to the containers that is\neither not exposed in the custom resource definitions or already defined by\nthe operator, strategic merge patch can be used.\u003c/p\u003e\n\u003ch2 id=\"how-does-it-work\"\u003eHow does it work? \u003ca href=\"#how-does-it-work\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheus\u003c/code\u003e, \u003ccode\u003eAlertmanager\u003c/code\u003e, and \u003ccode\u003eThanosRuler\u003c/code\u003e CRDs expose a\n\u003ccode\u003espec.containers\u003c/code\u003e field which allows to:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOverride fields for the containers generated by the operator.\u003c/li\u003e\n\u003cli\u003eInject fields for existing containers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"how-to-patch-a-container-probe\"\u003eHow to patch a container probe \u003ca href=\"#how-to-patch-a-container-probe\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"merging-patch-for-prometheus\"\u003eMerging patch for Prometheus \u003ca href=\"#merging-patch-for-prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following manifest overwrites the \u003ccode\u003efailureThreshold\u003c/code\u003e value of startup\nprobe of the Prometheus container:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eoverwrite-failureThreshold\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estartupProbe\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efailureThreshold\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e500\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"merging-patch-for-alertmanager\"\u003eMerging patch for Alertmanager \u003ca href=\"#merging-patch-for-alertmanager\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following manifest over
214writes the \u003ccode\u003efailureThreshold\u003c/code\u003e values of the\nreadiness and liveness probes for the Alertmanager container.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eoverwrite-probes\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elivenessProbe\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efailureThreshold\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e5\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereadinessProbe\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efailureThreshold\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e5\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"how-to-inject-an-environment-variable-in-an-existing-container\"\u003eHow to inject an environment variable in an existing container \u003ca href=\"#how-to-inject-an-environment-variable-in-an-existing-container\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe following manifest injects the environment variable \u003ccode\u003eGOMEMLIMIT\u003c/code\u003e to the Prometheus container:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003einject-env
214-var\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;prometheus\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eenv\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eGOMEMLIMIT\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evalue\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e6Gi\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"how-to-inject-a-sidecar-container\"\u003eHow to inject a sidecar container \u003ca href=\"#how-to-inject-a-sidecar-container\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe following manifest injects an additional container to the generated StatefulSet:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003einject-sidecar\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;sleep\u0026#34;
214\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;busybox\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eargs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003esleep\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;3600\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"how-to-inject-additional-cli-arguments-into-the-prometheus-container\"\u003eHow to inject additional CLI arguments into the prometheus container \u003ca href=\"#how-to-inject-additional-cli-arguments-into-the-prometheus-container\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe following manifest injects an additional CLI argument in the default\nPrometheus argument list. Note the use of \u003ccode\u003e.spec.additionalArgs\u003c/code\u003e in this\nexample.\nUsing \u003ccode\u003e.spec.containers[*].args\u003c/code\u003e directly would instead overwrite the container\u0026rsquo;s\n\u003ccode\u003eargs\u003c/code\u003e list completely, including the default arguments.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eadditional-arguments\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eadditionalArgs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;scrape.timestamp-tolerance\u0026#34;
214\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evalue\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;15ms\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"how-to-support-restricted-and-baseline-policies\"\u003eHow to support Restricted and Baseline policies \u003ca href=\"#how-to-support-restricted-and-baseline-policies\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://kubernetes.io/docs/concepts/security/pod-security-standards/\"\u003ePod Security Standards\u003c/a\u003e define policies such as Baseline and Restricted which require to patch the container definitions generated by the Prometheus operator.\u003c/p\u003e\n\u003ch3 id=\"how-to-patch-prometheus-for-the-restricted-policy\"\u003eHow to patch Prometheus for the Restricted policy \u003ca href=\"#how-to-patch-prometheus-for-the-restricted-policy\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following manifest changes the securityContext of containers in Prometheus Pod.\nIf the Thanos sidecar is enabled, similar changes should be applied for the \u003ccode\u003ethanos-sidecar\u003c/code\u003e container.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-restricted-baseline-ns\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erestricted-baseline-ns\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceAccountName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econfig-reloader\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003einitContainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003einit-config-reloader\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"how-to-patch-alertmanager-for-the-restricted-policy\"\u003eHow to patch Alertmanager for the Restricted policy \u003ca href=\"#how-to-patch-alertmanager-for-the-restricted-policy\"
214class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following manifest changes the securityContext of containers in Alertmanager Pod.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-restricted-baseline-ns\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erestricted-baseline-ns\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econfig-reloader\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003einitContainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003einit-config-reloader\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"how-to-patch-thanosruler-for-the-restricted-policy\"\u003eHow to patch ThanosRuler for the Restricted policy \u003ca href=\"#how-to-patch-thanosruler-for-the-restricted-policy\"
214class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following manifest changes the securityContext of containers in ThanosRuler Pod.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eThanosRuler\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanos-ruler-restricted-baseline-ns\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erestricted-baseline-ns\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexample\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanos-ruler\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003equay.io/thanos/thanos:v0.28.1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eruleSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erole\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-thanos-rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003equeryEndpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ednssrv+_http._tcp.my-thanos-querier.monitoring.svc.cluster.local\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanagersConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-configs.yaml\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanosruler-alertmanager-config\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ethanos-ruler\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econfig-reloader\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecurityContext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsNonRoot\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erunAsUser\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e65534\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseccompProfile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRuntimeDefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"how-to-override-probe-handlers-when-tls-and-webconfig-are-enabled\"\u003eHow to override probe handlers when TLS and web.config are enabled \u003ca href=\"#how-to-override-probe-handlers-when-tls-and-webconfig-are-enabled\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWhen Prometheus is configured with \u003ccode\u003espec.web.tlsConfig\u003c/code\u003e, the operator\nautomatically generates and enforces HTTPS \u003ccode\u003ehttpGet\u003c/code\u003e probes. If \u003ccode\u003eweb.config\u003c/code\u003e\nalso requires authentication (e.g. Basic Auth), these default probes will fail\nbecause Kubernetes native \u003ccode\u003ehttpGet\u003c/code\u003e probes do not support custom authentication\nheaders.\u003c/p\u003e\n\u003cp\u003eThe workaround is to override the probe handler to \u003ccode\u003etcpSocket\u003c/code\u003e, \u003ccode\u003eexec\u003c/code\u003e,\nor \u003ccode\u003egrpc\u003c/code\u003e via a strategic merge patch in the Prometheus CR. Previously, the\n\u003ccode\u003eStrategicMergePatch\u003c/code\u003e logic would incorrectly preserve both the operator\u0026rsquo;s\ndefault \u003ccode\u003ehttpGet\u003c/code\u003e handler and the user-supplied handler simultaneously,\nresulting in a Kubernetes validation error:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecreating statefulset failed: StatefulSet.apps \u0026#34;prometheus-prometheus\u0026#34;
214 is invalid:\n[spec.template.spec.containers[0].livenessProbe.tcpSocket: Forbidden: may not specify more than 1 handler type, ...]\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe following example replaces the readiness and liveness probes of the \u003ccode\u003eprometheus\u003c/code\u003e\ncontainer with TCP socket probes:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-tls-tcp-probes\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereadinessProbe\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etcpSocket\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9090\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elivenessProbe\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etcpSocket\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e9090\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Using a \u003ccode\u003etcpSocket\u003c/code\u003e or \u003ccode\u003eexec\u003c/code\u003e probe means the probe no longer calls\nthe Prometheus \u003ccode\u003e/-/ready\u003c/code\u003e endpoint. The Pod may be marked Ready before\nPrometheus finishes WAL replay or TSDB initialization. This is a known\ntrade-off when prioritizing credential security over granular readiness checks.\u003c/p\u003e\n\u003c/blockquote\u003e\n" 215 }, 216 { 217 id: 19, 218 href: "https://prometheus-operator.dev/docs/platform/operator/", 219 title: "CLI reference", 220 description: "Command line arguments for the operator binary", 221 content: "\u003cblockquote\u003e\n\u003cp\u003eNote this document is automatically generated from the \u003ccode\u003ecmd/operator/main.go\u003c/code\u003e file and shouldn\u0026rsquo;t be edited directly.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-console\" data-lang=\"console\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003eUsage of ./operator:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e\u003c/span\u003e\u003cspan class=\"err\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"err\"\u003e\u003c/span\u003e\u003cspan class=\"go\"\u003e ./operator [arguments] [\u0026lt;command\u0026gt;]\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e\u003c/span\u003e\u003cspan class=\"err\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"err\"\u003e\u003c/span\u003e\u003cspan class=\"go\"\u003eCommands:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e start Run the operator (default)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e crds Print the CRDs in YAML format to standard output\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e full-crds Print the full CRDs (with all fields) in YAML format to standard output\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e\u003c/span\u003e\u003cspan class=\"err\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"err\"\u003e\u003c/span\u003e\u003cspan class=\"go\"\u003eArguments:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -alertmanager-config-namespaces value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tNamespaces where AlertmanagerConfig custom resources and corresponding Secrets are watched/created. If set this takes precedence over --namespaces or --deny-namespaces for AlertmanagerConfig custom resources.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -alertmanager-default-base-image str
221ing\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tAlertmanager default base image (path without tag/version) (default \u0026#34;quay.io/prometheus/alertmanager\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -alertmanager-instance-namespaces value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tNamespaces where Alertmanager custom resources and corresponding StatefulSets are watched/created. If set this takes precedence over --namespaces or --deny-namespaces for Alertmanager custom resources.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -alertmanager-instance-selector value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLabel selector to filter Alertmanager Custom Resources to watch.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -annotations value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tAnnotations to be add to all resources created by the operator\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -apiserver string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tAPI Server addr, e.g. \u0026#39; - NOT RECOMMENDED FOR PRODUCTION - http://127.0.0.1:8080\u0026#39;. Omit parameter to run in on-cluster mode and utilize the service account token.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -as string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tUsername to impersonate. User could be a regular user or a service account in a namespace.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -auto-gomemlimit-ratio float\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tThe ratio of reserved GOMEMLIMIT memory to the detected maximum container or system memory. The value should be greater than 0.0 and less than 1.0. Default: 0.0 (disabled).\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -ca-file string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t- NOT RECOMMENDED FOR PRODUCTION - Path to TLS CA file.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -cert-file string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t - NOT RECOMMENDED FOR PRODUCTION - Path to public TLS certificate file.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -cluster-domain string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tThe domain of the cluster. This is used to generate service FQDNs. If this is not specified, DNS search domain expansion is used instead.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -config-reloader-cpu-limit value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tConfig Reloader CPU limits. Value \u0026#34;0\u0026#34; disables it and causes no limit to be configured. (default 10m)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -config-reloader-cpu-request value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tConfig Reloader CPU requests. Value \u0026#34;0\u0026#34; disables it and causes no request to be configured. (default 10m)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -config-reloader-memory-limit value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tConfig Reloader memory limits. Value \u0026#34;0\u0026#34; disables it and causes no limit to be configured. (default 50Mi)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -config-reloader-memory-request value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tConfig Reloader memory requests. Value \u0026#34;0\u0026#34; disables it and causes no request to be configured. (default 50Mi)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -configmap-field-selector value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tField selector to filter ConfigMaps to watch\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -configmap-label-selector value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLabel selector to filter ConfigMaps to watch\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -controller-id operator.prometheus.io/controller-id\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tValue used by the operator to filter Alertmanager, Prometheus, PrometheusAgent and ThanosRuler objects that it should reconcile. If the value isn\u0026#39;t empty, the operator only reconciles objects with an operator.prometheus.io/controller-id annotation of the same value. Otherwise the operator reconciles all objects without the annotation or with an empty annotation value.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -deny-namespaces value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tNamespaces not to scope the interaction of the Prometheus Operator (deny list). This is mutually exclusive with --namespaces.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -disable-unmanaged-prometheus-configuration\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tDisable support for unmanaged Prometheus configuration when all resource selectors are nil. As stated in the API documentation, unmanaged Prometheus configuration is a deprecated feature which can be avoided with \u0026#39;.spec.additionalScrapeConfigs\u0026#39; or the ScrapeConfig CRD. Default: false.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -enable-config-reloader-probes\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tEnable liveness, readiness, and startup probes for the config-reloader container. Default: false\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -feature-gates value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tFeature gates are a set of key=value pairs that describe Prometheus-Operator features.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tAvailable feature gates:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t PrometheusAgentDaemonSet: Enables the DaemonSet mode for PrometheusAgent (enabled: false)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t PrometheusShardRetentionPolicy: Enables shard retention policy for Prometheus (enabled: true)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t PrometheusTopologySharding: Enables the zone aware sharding for Prometheus (enabled: true)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t RemoteWriteCustomResourceDefinition: Enables the RemoteWrite CRD support (enabled: false)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t StatusForConfigurationResources: Updates the status subresource for configuration resources (enabled: false)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -key-file string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t- NOT RECOMMENDED FOR PRODUCTION - Path to private TLS certificate file.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -kubelet-endpoints\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tCreate Endpoints objects for kubelet targets. (default true)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -kubelet-endpointslice\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tCreate EndpointSlice objects for kubelet targets.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -kubelet-http-metrics\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tInclude HTTP metrics port (10255) in kubelet service. Set to false if your cluster has disabled the insecure kubelet read-only port (e.g., GKE 1.32+). (default true)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -kubelet-node-address-priority value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tNode address priority used by kubelet. Either \u0026#39;internal\u0026#39; or \u0026#39;external\u0026#39;. Default: \u0026#39;internal\u0026#39;.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -kubelet-selector value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLabel selector to filter nodes.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -kubelet-service string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tService/Endpoints object to write kubelets into in format \u0026#34;namespace/name\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -kubelet-sync-period duration\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tHow often the operator reconciles the kubelet Endpoints and EndpointSlice objects (e.g., 10s, 2m, 1h30m). (default 3m0s)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -labels value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLabels to be add to all resources created by the operator\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -localhost str
221ing\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tEXPERIMENTAL (could be removed in future releases) - Host used to communicate between local services on a pod. Fixes issues where localhost resolves incorrectly. (default \u0026#34;localhost\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -log-format string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLog format to use. Possible values: logfmt, json (default \u0026#34;logfmt\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -log-level string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLog level to use. Possible values: all, debug, info, warn, error, none (default \u0026#34;info\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -namespaces value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tNamespaces to scope the interaction of the Prometheus Operator and the apiserver (allow list). This is mutually exclusive with --deny-namespaces.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -prometheus-config-reloader string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tPrometheus config reloader image (default \u0026#34;quay.io/prometheus-operator/prometheus-config-reloader:v0.94.1\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -prometheus-default-base-image string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tPrometheus default base image (path without tag/version) (default \u0026#34;quay.io/prometheus/prometheus\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -prometheus-instance-namespaces value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tNamespaces where Prometheus and PrometheusAgent custom resources and corresponding Secrets, Configmaps and StatefulSets are watched/created. If set this takes precedence over --namespaces or --deny-namespaces for Prometheus custom resources.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -prometheus-instance-selector value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLabel selector to filter Prometheus and PrometheusAgent Custom Resources to watch.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -repair-policy-for-statefulsets value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tPolicy to use when a StatefulSet rollout is stuck. Possible values: \u0026#39;none\u0026#39; (default), \u0026#39;evict\u0026#39; or \u0026#39;delete\u0026#39;. (default none)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -secret-field-selector value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tField selector to filter Secrets to wat
221ch\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -secret-label-selector value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLabel selector to filter Secrets to watch\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -short-version\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tPrint just the version number.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -thanos-default-base-image string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tThanos default base image (path without tag/version) (default \u0026#34;quay.io/thanos/thanos\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -thanos-ruler-instance-namespaces value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tNamespaces where ThanosRuler custom resources and corresponding StatefulSets are watched/created. If set this takes precedence over --namespaces or --deny-namespaces for ThanosRuler custom resources.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -thanos-ruler-instance-selector value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tLabel selector to filter ThanosRuler Custom Resources to watch.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -tls-insecure\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t- NOT RECOMMENDED FOR PRODUCTION - Don\u0026#39;t verify API server\u0026#39;s CA certificate.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -version\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tPrints current version.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -watch-referenced-objects-in-all-namespaces\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tWhen true the operator watches for configmaps and secrets in both workload and configuration resource namespaces.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tWhen false (default), the operator will only watch for secrets and configmaps in:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t* Workload namespaces for Prometheus and PrometheusAgent resources.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \t* Configuration namespaces for Alertmanager resources.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.cert-file string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tCertificate file to be used for the web server. (default \u0026#34;/etc/tls/private/tls.crt\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.client-ca-file string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tClient CA certificate file to be used for the web server. (default \u0026#34;/etc/tls/private/tls-ca.crt\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.enable-http2\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tEnable HTTP2 connections.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.enable-tls\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tEnable TLS for the web server.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e\u003c/span\u003e\u003cspan class=\"go\"\u003e -web.key-file string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tPrivate key matching the cert file to be used for the web server. (default \u0026#34;/etc/tls/private/tls.key\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.listen-address string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tAddress on which to expose metrics and web interface. (default \u0026#34;:8080\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.tls-cipher-suites value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tComma-separated list of cipher suites for the server. Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants).If omitted, the default Go cipher suites will be used. Note that TLS 1.3 ciphersuites are not configurable.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.tls-curves value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tComma-separated list of TLS curves for the server. Supported values: CurveP256, CurveP384, CurveP521, X25519, X25519MLKEM768.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.tls-min-version string\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tMinimum TLS version supported. Value must match version names from https://golang.org/pkg/crypto/tls/#pkg-constants. (default \u0026#34;
221VersionTLS13\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e -web.tls-reload-interval duration\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e \tThe interval at which to watch for TLS certificate changes, by default set to 1 minute. (default 1m0s). (default 1m0s)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e" 222 }, 223 { 224 id: 20, 225 href: "https://prometheus-operator.dev/docs/platform/troubleshooting/", 226 title: "Troubleshooting", 227 description: "Guide on troubleshooting the Prometheus Operator.", 228 content: "\u003ch3 id=\"customresourcedefinition--is-invalid-metadataannotations-too-long-issue\"\u003e\u003ccode\u003eCustomResourceDefinition \u0026quot;...\u0026quot; is invalid: metadata.annotations: Too long\u003c/code\u003e issue \u003ca href=\"#customresourcedefinition--is-invalid-metadataannotations-too-long-issue\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWhen applying updated CRDs on a cluster, you may face the following error message:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ kubectl apply -f \u003cspan class=\"nv\"\u003e$MANIFESTS\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eThe CustomResourceDefinition \u003cspan class=\"s2\"\u003e\u0026#34;prometheuses.monitoring.coreos.com\u0026#34;\u003c/span\u003e is invalid: metadata.annotations: Too long: must have at most \u003cspan class=\"m\"\u003e262144\u003c/span\u003e bytes\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe reason is that apply runs in the client by default and saves information into the object annotations but there\u0026rsquo;s a hard limit on the size of annotations.\u003c/p\u003e\n\u003cp\u003eThe workaround is to use server-side apply which requires Kubernetes v1.22 at least.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl apply --server-side --force-conflicts -f \u003cspan class=\"nv\"\u003e$MANIFESTS\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIf using ArgoCD, please refer to their \u003ca href=\"https://argo-cd.readthedocs.io/en/latest/user-guide/sync-options/#server-side-apply\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"v1-endpoints-is-deprecated-in-v133--warning-in-the-operators-logs\"\u003e\u003ccode\u003ev1 Endpoints is deprecated in v1.33+, ...\u003c/code\u003e warning in the operator\u0026rsquo;s logs \u003ca href=\"#v1-endpoints-is-deprecated-in-v133--warning-in-the-operators-logs\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cblockquote\u003e\n\u003cp\u003eSince Kubernetes v1.33 the Endpoints API is deprecated in favor of the \u003ca href=\"https://kubernetes.io/docs/concepts/services-networking/endpoint-slices\"\u003eEndpointSlice\u003c/a\u003e API.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eIf the operator\u0026rsquo;s logs show messages like \u003ccode\u003ev1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice\u003c/code\u003e, it means that the operator still reconciles the kubelet Endpoints resource. To migrate from Endpoints to EndpointSlice, the following operations should be done:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eGrant RBAC permissions to the operator\u0026rsquo;s Service Account to manage the EndpointSlice resource (see below).\u003c/li\u003e\n\u003cli\u003eGrant RBAC permissions to the Prometheus\u0026rsquo;s Service Account to read/list/watch the EndpointSlice resource (see below).\u003c/li\u003e\n\u003cli\u003eStart the operator with \u003ccode\u003e--kubelet-endpoints=true\u003c/code\u003e and \u003ccode\u003e--kubelet-endpointslice=true\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eVerify that the kubelet\u0026rsquo;s Endpoint resource has the \u003ccode\u003eendpointslice.kubernetes.io/skip-mirror=true\u003c/code\u003e annotation.\u003c/li\u003e\n\u003cli\u003eVerify that the kubelet\u0026rsquo;s EndpointSlice resource(s) are up-to-date.\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003e.spec.serviceDiscoveryRole: EndpointSlice\u003c/code\u003e for all ServiceMonitor resources which point to the kubelet\u0026rsquo;s Service.\u003c/li\u003e\n\u003cli\u003eVerify that Prometheus discovers the expected targets.\u003c/li\u003e\n\u003cli\u003eStart the operator with \u003ccode\u003e--kubelet-endpoints=false\u003c/code\u003e and \u003ccode\u003e--kubelet-endpointslice=true\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRemove the kubelet\u0026rsquo;s Endpoint resource.\u003c/li\u003e\n\u003cli\u003eAnd voila!\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eTo migrate other ServiceMonitor resources (not just the one(s) depending on the kubelet Service), you need to grant read/list/watch permissions on the EndpointSlice resources in all watched namespaces to the Prometheus Service Account and set \u003ccode\u003e.spec.serviceDiscoveryRole: EndpointSlice\u003c/code\u003e either for all reconciled ServiceMonitor resources or globally in the Prometheus resource.\u003c/p\u003e\n\u003cp\u003eExample of Role definition required by the Prometheus operator\u0026rsquo;s Service Account to manage kubelet EndpointSlice resources (the permissions can also be added to the existing Prometheus operator\u0026rsquo;s Role):\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-operator-kubelet\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ediscovery.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpointslices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ecreate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eupdate\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edelete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eExample of Role definition required by the Prometheus\u0026rsquo;s Service Account to discover targets from the kubelet EndpointSlice resources (the permissions can also be added to the existing Prometheus\u0026rsquo;s Role):\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003erbac.authorization.k8s.io/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRole\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-kubelet\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003eapiGroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ediscovery.k8s.io\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresources\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eendpointslices\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003everbs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eget\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003elist\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003ewatch\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003eFor kube-prometheus users, \u003ccode\u003erelease-0.16\u003c/code\u003e has switched to dual mode (Endpoints and EndpointSlice supported in parallel). A future release will c
228omplete the migration and remove usage of the Endpoints resources altogether.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"rbac-on-google-container-engine-gke\"\u003eRBAC on Google Container Engine (GKE) \u003ca href=\"#rbac-on-google-container-engine-gke\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWhen you try to create \u003ccode\u003eClusterRole\u003c/code\u003e (\u003ccode\u003ekube-state-metrics\u003c/code\u003e, \u003ccode\u003eprometheus\u003c/code\u003e \u003ccode\u003eprometheus-operator\u003c/code\u003e, etc.) on GKE Kubernetes cluster running 1.6 version, you will probably run into permission errors:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;....\u0026gt;\nError from server (Forbidden): error when creating\n\u0026#34;manifests/prometheus-operator/prometheus-operator-cluster-role.yaml\u0026#34;:\nclusterroles.rbac.authorization.k8s.io \u0026#34;prometheus-operator\u0026#34; is forbidden: attempt to grant extra privileges:\n\u0026lt;....\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThis is due to the way Container Engine checks permissions. From \u003ca href=\"https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control\"\u003eGoogle Kubernetes Engine docs\u003c/a\u003e:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eBecause of the way Container Engine checks permissions when you create a Role or ClusterRole, you must first create a RoleBinding that grants you all of the permissions included in the role you want to create.\nAn example workaround is to create a RoleBinding that gives your Google identity a cluster-admin role before attempting to create additional Role or ClusterRole permissions.\nThis is a known issue in the Beta release of Role-Based Access Control in Kubernetes and Container Engine version 1.6.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eTo overcome this, you must grant your current Google identity \u003ccode\u003ecluster-admin\u003c/code\u003e Role:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-console\" data-lang=\"console\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gp\"\u003e#\u003c/span\u003e get current google identity\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gp\"\u003e$\u003c/span\u003e gcloud info \u003cspan class=\"p\"\u003e|\u003c/span\u003e grep Account\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003eAccount: [[email protected]]\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003e\u003c/span\u003e\u003cspan class=\"err\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"err\"\u003e\u003c/span\u003e\u003cspan class=\"gp\"\u003e#\u003c/span\u003e grant cluster-admin to your current identity\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gp\"\u003e$\u003c/span\u003e kubectl create clusterrolebinding myname-cluster-admin-binding --clusterrole\u003cspan class=\"o\"\u003e=\u003c/span\u003ecluster-admin --user\u003cspan class=\"o\"\u003e=\u003c/span\[email protected]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003eClusterrolebinding \u0026#34;myname-cluster-admin-binding\u0026#34; created\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"troubleshooting-servicemonitor-changes\"\u003eTroubleshooting ServiceMonitor changes \u003ca href=\"#troubleshooting-servicemonitor-changes\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWhen creating/deleting/modifying \u003ccode\u003eServiceMonitor\u003c/code\u003e objects it is sometimes not as obvious what piece is not working properly. This section gives a step by step guide how to troubleshoot such actions on a \u003ccode\u003eServiceMonitor\u003c/code\u003e object.\u003c/p\u003e\n\u003ch4 id=\"overview-of-servicemonitor-tagging-and-related-elements\"\u003eOverview of \u003ccode\u003eServiceMonitor\u003c/code\u003e tagging and related elements \u003ca href=\"#overview-of-servicemonitor-tagging-and-related-elements\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eA common problem related to \u003ccode\u003eServiceMonitor\u003c/code\u003e identification by Prometheus is related to the object\u0026rsquo;s labels not matching the \u003ccode\u003ePrometheus\u003c/code\u003e custom resource definition scope, or lack of permission for the Prometheus \u003ccode\u003eServiceAccount\u003c/code\u003e to \u003cem\u003eget, list, watch\u003c/em\u003e \u003ccode\u003eServices\u003c/code\u003e and \u003ccode\u003eEndpoints\u003c/code\u003e from the target application being monitored. As a general guideline consider the diagram below, giving an example of a \u003ccode\u003eDeployment\u003c/code\u003e and \u003ccode\u003eService\u003c/code\u003e called \u003ccode\u003emy-app\u003c/code\u003e, being monitored by Prometheus based on a \u003ccode\u003eServiceMonitor\u003c/code\u003e named \u003ccode\u003emy-service-monitor\u003c/code\u003e:\u003c/p\u003e\n\u003c!-- do not change this link without verifying that the image will display correctly on https://prometheus-operator.dev --\u003e\n\u003cp\u003e\u003cimg class=\"img-fluid lazyload blur-up\" src=\"/img/custom-metrics-elements.png\" alt=\"flow diagram\"\u003e\u003c/p\u003e\n\u003cp\u003eNote: The \u003ccode\u003eServiceMonitor\u003c/code\u003e references a \u003ccode\u003eService\u003c/code\u003e (not a \u003ccode\u003eDeployment\u003c/code\u003e, or a \u003ccode\u003ePod\u003c/code\u003e), by labels \u003cem\u003eand\u003c/em\u003e by the port name in the \u003ccode\u003eService\u003c/code\u003e. This \u003cem\u003eport name\u003c/em\u003e is optional in Kubernetes, but must be specified for the \u003ccode\u003eServiceMonitor\u003c/code\u003e to work. It is not the same as the port name on the \u003ccode\u003ePod\u003c/code\u003e or container, although it can be.\u003c/p\u003e\n\u003ch4 id=\"has-my-servicemonitor-been-picked-up-by-prometheus\"\u003eHas my \u003ccode\u003eServiceMonitor\u003c/code\u003e been picked up by Prometheus? \u003ca href=\"#has-my-servicemonitor-been-picked-up-by-prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003e\u003ccode\u003eServiceMonitor\u003c/code\u003e objects and the namespace where they belong are selected by the \u
228003ccode\u003eserviceMonitorSelector\u003c/code\u003e and \u003ccode\u003eserviceMonitorNamespaceSelector\u003c/code\u003eof a Prometheus object. The name of a \u003ccode\u003eServiceMonitor\u003c/code\u003e is encoded in the Prometheus configuration, so you can simply grep whether it is present there. The configuration generated by the Prometheus Operator is stored in a Kubernetes \u003ccode\u003eSecret\u003c/code\u003e, named after the Prometheus object name prefixed with \u003ccode\u003eprometheus-\u003c/code\u003e and is located in the same namespace as the Prometheus object. For example for a Prometheus object called \u003ccode\u003ek8s\u003c/code\u003e one can find out if the \u003ccode\u003eServiceMonitor\u003c/code\u003e named \u003ccode\u003emy-service-monitor\u003c/code\u003e has been picked up with:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl -n monitoring get secret prometheus-k8s -ojson \u003cspan class=\"p\"\u003e|\u003c/span\u003e jq -r \u003cspan class=\"s1\"\u003e\u0026#39;.data[\u0026#34;prometheus.yaml.gz\u0026#34;]\u0026#39;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e base64 -d \u003cspan class=\"p\"\u003e|\u003c/span\u003e gunzip \u003cspan class=\"p\"\u003e|\u003c/span\u003e grep \u003cspan class=\"s2\"\u003e\u0026#34;my-service-monitor\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eYou can also use \u003ca href=\"https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/\"\u003eport forwarding\u003c/a\u003e to access the Prometheus web.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl -n monitoring port-forward svc/prometheus-operated 9090:9090\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIf the command runs successfully, you should be able to access the \u003ca href=\"http://localhost:9090/\"\u003ePrometheus server UI\u003c/a\u003e via localhost. From there you can check the live configuration and the discovered targets.\u003c/p\u003e\n\u003ch4 id=\"debugging-why-monitoring-resource-spec-changes-are-not-reconciled\"\u003eDebugging why monitoring resource spec changes are not reconciled \u003ca href=\"#debugging-why-monitoring-resource-spec-changes-are-not-reconciled\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe Prometheus Operator will reject invalid resources and not reconcile them in the Prometheus configuration. When it happens the Operator emits a Kubernetes Event detailing the issue.\u003c/p\u003e\n\u003cp\u003eEvents are supported for the following resources:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAlertmanagerConfig\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePrometheusRule\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eServiceMonitor\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePodMonitor\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eProbe\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eScrapeConfig\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo check for events related to rejected resources, you can use the following command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl get events --field-selector\u003cspan class=\"o\"\u003e=\u003c/span\u003einvolvedObject.name\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026lt;name of PodMonitor resource\u0026gt;\u0026#34;\u003c/span\u003e -n \u003cspan class=\"s2\"\u003e\u0026#34;
228\u0026lt;namespace where resource is deployed\u0026gt;\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIf you\u0026rsquo;ve deployed the Prometheus Operator using kube-prometheus manifests, the \u003ccode\u003ePrometheusOperatorRejectedResources\u003c/code\u003e alert should fire when invalid objects are detected.\nThe alert can be found in the \u003ca href=\"https://github.com/prometheus-community/helm-charts/blob/db5b859d111c2c81534c5b716aff417f13b51d2b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus-operator.yaml#L226\"\u003ekube-prometheus-stack repository\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"it-is-in-the-configuration-but-not-on-the-service-discovery-page\"\u003eIt is in the configuration but not on the Service Discovery page \u003ca href=\"#it-is-in-the-configuration-but-not-on-the-service-discovery-page\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eServiceMonitors pointing to Services that do not exist (e.g. nothing matching \u003ccode\u003e.spec.selector\u003c/code\u003e) will lead to this ServiceMonitor not being added to the Service Discovery page. Check if you can find any Service with the selector you configured.\u003c/p\u003e\n\u003cp\u003eIf you use \u003ccode\u003e.spec.selector.matchLabels\u003c/code\u003e (instead of e.g. \u003ccode\u003e.spec.selector.matchExpressions\u003c/code\u003e), you can use this command to check for services matching the given label:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ekubectl get services -l \u0026#34;$(kubectl get servicemonitors -n \u0026#34;\u0026lt;namespace of your ServiceMonitor\u0026gt;\u0026#34; \u0026#34;\u0026lt;name of your ServiceMonitor\u0026gt;\u0026#34; -o template=\u0026#39;{{ $first := 1 }}{{ range $key, $value := .spec.selector.matchLabels }}{{ if eq $first 0 }},{{end}}{{ $key }}={{ $value }}{{ $first = 0 }}{{end}}\u0026#39;)\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNote: this command does not take namespaces into account. If your ServiceMonitor selects a single namespace or all namespaces, you can just add that to the \u003ccode\u003ekubectl get services\u003c/code\u003e command (using \u003ccode\u003e-n $namespace\u003c/code\u003e or \u003ccode\u003e-A\u003c/code\u003e for all namespaces).\u003c/p\u003e\n\u003ch3 id=\"prometheus-kubelet-metrics-server-returned-http-status-403-forbidden\"\u003ePrometheus kubelet metrics server returned HTTP status 403 Forbidden \u003ca href=\"#prometheus-kubelet-metrics-server-returned-http-status-403-forbidden\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003ePrometheus is installed, all looks good, however the \u003ccode\u003eTargets\u003c/code\u003e are all showing as down. All permissions seem to be good, yet no joy. Prometheus pulling metrics from all namespaces expect kube-system, and Prometheus has access to all namespaces including kube-system.\u003c/p\u003e\n\u003ch4 id=\"did-you-check-the-webhooks\"\u003eDid you check the webhooks? \u003ca href=\"#did-you-check-the-webhooks\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eIssue has been resolved by amending the webhooks to use \u003ccode\u003e0.0.0.0\u003c/code\u003e instead of \u003ccode\u003e127.0.0.1\u003c/code\u003e. Follow the below commands and it will update the webhooks which allows connections to all \u003ccode\u003eclusterIP's\u003c/code\u003e in all \u003ccode\u003enamespaces\u003c/code\u003e and not just \u003ccode\u003e127.0.0.1\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUpdate the kubelet service to include webhook and restart:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eKUBEADM_SYSTEMD_CONF\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e/etc/systemd/system/kubelet.service.d/10-kubeadm.conf\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esed -e \u003cspan class=\"s2\"\u003e\u0026#34;/cadvisor-port=0/d\u0026#34;
228\u003c/span\u003e -i \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$KUBEADM_SYSTEMD_CONF\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e ! grep -q \u003cspan class=\"s2\"\u003e\u0026#34;authentication-token-webhook=true\u0026#34;\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$KUBEADM_SYSTEMD_CONF\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e sed -e \u003cspan class=\"s2\"\u003e\u0026#34;s/--authorization-mode=Webhook/--authentication-token-webhook=true --authorization-mode=Webhook/\u0026#34;\u003c/span\u003e -i \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$KUBEADM_SYSTEMD_CONF\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl daemon-reload\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esystemctl restart kubelet\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003eModify the kube controller and kube scheduler to allow for reading data:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esed -e \u003cspan class=\"s2\"\u003e\u0026#34;s/- --address=127.0.0.1/- --address=0.0.0.0/\u0026#34;\u003c/span\u003e -i /etc/kubernetes/manifests/kube-controller-manager.yaml\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esed -e \u003cspan class=\"s2\"\u003e\u0026#34;s/- --address=127.0.0.1/- --address=0.0.0.0/\u0026#34;\u003c/span\u003e -i /etc/kubernetes/manifests/kube-scheduler.yaml\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"using-textual-port-number-instead-of-port-name\"\u003eUsing textual port number instead of port name \u003ca href=\"#using-textual-port-number-instead-of-port-name\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe ServiceMonitor expects to use the port name as defined on the Service. So, using the Service example from the\ndiagram above, we have this Service definition:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e8080\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWe would then define the service monitor using \u003ccode\u003eweb\u003c/code\u003e as the port, not \u003ccode\u003e\u0026quot;8080\u0026quot;\u003c/code\u003e. E.g.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eCORRECT\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003eINCORRECT\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;8080\u0026#34;
228\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe incorrect example will give an error along these lines \u003ccode\u003espec.endpoints.port in body must be of type string: \u0026quot;integer\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003ch3 id=\"prometheusalertmanager-pods-stuck-in-terminating-loop-with-healthy-start-up-logs\"\u003ePrometheus/Alertmanager pods stuck in terminating loop with healthy start up logs \u003ca href=\"#prometheusalertmanager-pods-stuck-in-terminating-loop-with-healthy-start-up-logs\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eIt is usually a sign that more than one operator wants to manage the resource.\u003c/p\u003e\n\u003cp\u003eCheck if several operators are running on the cluster:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-console\" data-lang=\"console\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"go\"\u003ekubectl get pods --all-namespaces | grep \u0026#39;prom.*operator\u0026#39;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCheck the logs of the matching pods to see if they manage the same resource.\u003c/p\u003e\n\u003cp\u003eIf running multiple operators is desired, make sure to set the \u003ccode\u003e--controller-id\u003c/code\u003e flag for each operator instance to a different value. When \u003ccode\u003e--controller-id\u003c/code\u003e is set, the operator instance will only reconcile resources that have a \u003ccode\u003eoperator.prometheus.io/controller-id\u003c/code\u003e annotation matching the value of \u003ccode\u003e--controller-id\u003c/code\u003e (eg: an operator with the flag \u003ccode\u003e--controller-id=my-objects\u003c/code\u003e will only reconcile objects that have \u003ccode\u003eoperator.prometheus.io/controller-id: my-objects\u003c/code\u003e annotation on them). This allows multiple operator instances to run in the same cluster without conflicting over the same resources.\u003c/p\u003e\n\u003cp\u003eNote: it is the responsibility of the resource owner (the user applying the resource) to set the \u003ccode\u003eoperator.prometheus.io/controller-id\u003c/code\u003e annotation on the resources. The operator will not set this annotation automatically.\u003c/p\u003e\n\u003cp\u003eIf the \u003ccode\u003e--controller-id\u003c/code\u003e flag is not set, the operator will try to reconcile all resources, except the ones that have the \u003ccode\u003eoperator.prometheus.io/controller-id\u003c/code\u003e annotation set. This can lead to conflicts (such as pods stuck in terminating loop) and should be avoided.\u003c/p\u003e\n\u003cp\u003eThe following table illustrates the behavior based on whether the \u003ccode\u003e--controller-id\u003c/code\u003e flag is set and whether the \u003ccode\u003eoperator.prometheus.io/controller-id\u003c/code\u003e annotation is present on the resources:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eOperator started with the \u003ccode\u003e--controller-id\u003c/code\u003e flag\u003c/th\u003e\n\u003cth\u003eResource with the \u003ccode\u003eoperator.prometheus.io/controller-id\u003c/code\u003e annotation\u003c/th\u003e\n\u003cth\u003eBehavior\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eYes\u003c/td\u003e\n\u003ctd\u003eYes\u003c/td\u003e\n\u003ctd\u003eThe operator reconciles the resource only if the annotation value matches the flag.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eYes\u003c/td\u003e\n\u003ctd\u003eNo\u003c/td\u003e\n\u003ctd\u003eThe operator does not reconcile the resource\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNo\u003c/td\u003e\n\u003ctd\u003eYes\u003c/td\u003e\n\u003ctd\u003eThe operator does not reconcile the resource.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNo\u003c/td\u003e\n\u003ctd\u003eNo\u003c/td\u003e\n\u003ctd\u003eThe operator reconciles the resource.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"configuring-prometheusprometheusagent-for-mimir-and-grafana-cloud\"\u003eConfiguring Prometheus/PrometheusAgent for Mimir and Grafana Cloud \u003ca href=\"#configuring-prometheusprometheusagent-for-mimir-and-grafana-cloud\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eMimir and Grafana Cloud can receive samples via Prometheus remote-write and are able to \u003ca href=\"https://grafana.com/docs/mimir/latest/configure/configure-high-availability-deduplication/\"\u003ededuplicate samples\u003c/a\u003e received from HA pairs of Prometheus/PrometheusAgent instances, provided that you configure proper labels.\u003c/p\u003e\n\u003cp\u003eBy default, the deduplication labels are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecluster\u003c/code\u003e, it identifies the HA pair and should have the same value for both instances.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e__replica__\u003c/code\u003e, it should have a different value for each instance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe Prometheus operator already configures the \u
228003ccode\u003eprometheus_replica\u003c/code\u003e external label with the same semantic as \u003ccode\u003e__replica__\u003c/code\u003e in Grafana Mimir. The label name can be changed to \u003ccode\u003e__replica__\u003c/code\u003e by setting the \u003ccode\u003e.spec.replicaExternalLabelName\u003c/code\u003e field. When running a self-managed Mimir, it\u0026rsquo;s also possible to configure different deduplication labels on the Mimir side (check the Mimir documentation).\u003c/p\u003e\n\u003cp\u003eWhen it\u0026rsquo;s not possible to change the Prometheus replica external label, a simple solution is to leverage \u003ccode\u003ewriteRelabelConfigs\u003c/code\u003e. Here is a full example:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epodMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eruleSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexternalLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Configure a `cluster` label identifying the HA pair.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecluster\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-awesome-cluster\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eremoteWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e\u0026lt;remote write URL\u0026gt;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ewriteRelabelConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Rename the default `prometheus_replica` label to `__replica__` as expected by Grafana cloud.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# It happens in 2 steps:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# 1. Copy the `prometheus_replica` label value to the `__replica__` label.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003esourceLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus_replica]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetLabel\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e__replica__\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# 2. Drop the `prometheus_replica` label.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus_replica\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eLabelDrop\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Add more relabel configs here.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eFor Prometheus/Prometheus resources with multiple shards, there\u0026rsquo;s another modification to be done since the \u003ccode\u003ecluster\u003c/code\u003e label needs to include the shard ID for proper deduplication.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epodMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eruleSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexternalLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# The config-reloader container will expand the `$(SHARD) string with the actual shard ID.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecluster\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-awesome-cluster-$(SHARD)\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eremoteWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e\u0026lt;remote write URL\u0026gt;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ewriteRelabelConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003esourceLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus_replica]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargetLabel\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e__replica__\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus_replica\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eLabelDrop\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"statefulset-rollout-stuck-after-a-bad-update\"\u003eStatefulSet rollout stuck after a bad update \u003ca href=\"#statefulset-rollout-stuck-after-a-bad-update\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWhen a StatefulSet update results in a broken pod (e.g. due to a misconfigured image or invalid configuration), the rollout can get stuck. As described
228in the \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback\"\u003eKubernetes documentation\u003c/a\u003e, the StatefulSet controller won\u0026rsquo;t roll back to the previous revision automatically when using the \u003ccode\u003eRollingUpdate\u003c/code\u003e strategy. The broken pod stays in a non-ready state with a revision that doesn\u0026rsquo;t match either the current or the desired update revision, and the rollout stalls.\u003c/p\u003e\n\u003cp\u003eIn this situation, the Prometheus Operator can be configured to automatically repair the stuck StatefulSet by evicting or deleting the broken pod. This is controlled via the \u003ccode\u003e--repair-policy-for-statefulsets\u003c/code\u003e CLI argument:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003enone\u003c/code\u003e (default): the operator does not attempt any automatic repair. You must manually intervene to delete or evict the stuck pod.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eevict\u003c/code\u003e: the operator evicts the stuck pod using the \u003ca href=\"https://kubernetes.io/docs/concepts/scheduling-eviction/api-eviction/\"\u003eEviction API\u003c/a\u003e. This respects PodDisruptionBudgets and is the safer option.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edelete\u003c/code\u003e: the operator deletes the stuck pod directly, bypassing PodDisruptionBudgets. Use this when eviction is blocked (e.g. by a PodDisruptionBudget that cannot be satisfied).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe operator repairs at most one pod per reconciliation loop, iterating pods in reverse ordinal order. Only pods whose revision matches neither the current nor the desired update revision are considered for repair. Pods already being deleted are skipped.\u003c/p\u003e\n\u003cp\u003eTo enable automatic repair, start the operator with the desired policy, for example:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e--repair-policy-for-statefulsets=evict\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIf you prefer to handle the repair manually, identify the stuck pod and delete it:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl delete pod -n \u0026lt;namespace\u0026gt; \u0026lt;pod-name\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAfter deleting the pod, the StatefulSet controller will recreate it with the current revision. If the underlying issue (e.g. bad image or broken config) has been fixed, the rollout will proceed normally.\u003c/p\u003e\n\u003ch3 id=\"high-cpu-usage-by-the-prometheus-operator\"\u003eHigh CPU usage by the Prometheus Operator \u003ca href=\"#high-cpu-usage-by-the-prometheus-operator\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eSome scenarios can cause high CPU usage by the Prometheus Operator. For instance, with the metrics below, we can get the rate of reconciliations:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003esum by\u003cspan class=\"o\"\u003e(\u003c/span\u003econtroller,triggered_by\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e(\u003c/span\u003erate\u003cspan class=\"o\"\u003e(\u003c/span\u003eprometheus_operator_triggered_total\u003cspan class=\"o\"\u003e[\u003c/span\u003e5m\u003cspan class=\"o\"\u003e]))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esum by\u003cspan class=\"o\"\u003e(\u003c/span\u003econtroller\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e(\u003c/span\u003erate\u003cspan class=\"o\"\u003e(\u003c/span\u003eprometheus_operator_reconcile_operations_total\u003cspan class=\"o\"\u003e[\u003c/span\u003e5m\u003cspan class=\"o\"\u003e])))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIf this shows as being \u003ccode\u003etriggered_by=\u0026quot;Secret\u0026quot;\u003c/code\u003e, a solution is to limit the operator to watch only secrets with matching labels using the \u003ccode\u003e--secret-field-selector\u003c/code\u003e argument. Also, you can use the namespace selectors to limit the number of namespaces watched by the operator.\u003c/p\u003e\n\u003cp\u003eAnother reported issue has to do with a high amount of Service/Endpoint/ServiceMonitor, where issues with high CPU and memory were also encountered. A solution was to reduce the number of ServiceMonitors, to target multiple Services/Endpoints.\u003c/p\u003e\n" 229 }, 230 { 231 id: 21, 232 href: "https://prometheus-operator.dev/docs/developer/", 233 title: "Developer Guide", 234 description: "Prometheus operator and kube-prometheus user guides", 235 content: "" 236 }, 237 { 238 id: 22, 239 href: "https://prometheus-operator.dev/docs/developer/getting-started/", 240 title: "Getting Started", 241 description: "Getting started guide", 242 content: "\u003cp\u003eThis guide explains how to use \u003ccode\u003ePodMonitor\u003c/code\u003e and \u003ccode\u003eServiceMonitor\u003c/code\u003e objects to monitor targets for a sample application.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheus\u003c/code\u003e resource declaratively describes the desired state of a\nPrometheus deployment, while \u003ccode\u003eServiceMonitor\u003c/code\u003e and \u003ccode\u003ePodMonitor\u003c/code\u003e resources\ndescribe the targets to be monitored by Prometheus.\u003c/p\u003e\n\u003ch2 id=\"pre-requisites\"\u003ePre-requisites \u003ca href=\"#pre-requisites\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBefore you begin, ensure that you have:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA Kubernetes cluster with \u003ca href=\"https://kubernetes.io/docs/reference/access-authn-authz/rbac/\"\u003eadmin\u003c/a\u003e permissions\u003c/li\u003e\n\u003cli\u003eA running Prometheus Operator (refer to the \u003ca href=\"https://prometheus-operator.dev/docs/getting-started/installation/\"\u003eInstallation\u003c/a\u003e page)\u003c/li\u003e\n\u003cli\u003eA running Prometheus instance (refer to the \u003ca href=\"https://prometheus-operator.dev/docs/platform/platform-guide/\"\u003ePlatform Guide\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- do not change this link without verifying that the image will display correctly on https://prometheus-operator.dev --\u003e\n\u003cp\u003e\u003cimg class=\"img-fluid lazyload blur-up\" src=\"/img/service-and-podMonitor.svg\" alt=\"Prometheus Operator Architecture\"\u003e\u003c/p\u003e\n\u003ch2 id=\"deploying-a-sample-application\"\u003eDeploying a sample application \u003ca href=\"#deploying-a-sample-application\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFirst, let\u0026rsquo;s deploy a simple example application with 3 replicas which listens\nand exposes metrics on port \u003ccode\u003e8080\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eapps/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eDeployment\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etemplate\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003equay.io/brancz/prometheus-example-app:v0.5.0\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econtainerPort\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e8080\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"using-servicemonitors\"\u003eUsing ServiceMonitors \u003ca href=\"#using-servicemonitors\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eTo monitor the application using a \u003ccode\u003eServiceMonitor\u003c/code\u003e, we will begin by exposing the application with a Service object that selects all the Pods with the label \u003ccode\u003eapp\u003c/code\u003e set to \u003ccode\u003eexample-app\u003c/code\u003e and specify the port where the metrics are exposed.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eService\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\
242u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e8080\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eFinally, we create a \u003ccode\u003eServiceMonitor\u003c/code\u003e object that selects all Service objects\nwith the \u003ccode\u003eapp: example-app\u003c/code\u003e label. The ServiceMonitor object also has a \u003ccode\u003eteam\u003c/code\u003e\nlabel (in this case \u003ccode\u003eteam: frontend\u003c/code\u003e) to identify which team is responsible for\nmonitoring the application/service.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSimilarly, the Prometheus object defines which ServiceMonitors get selected with the\n\u003ccode\u003espec.serviceMonitorSelector\u003c/code\u003e field.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eapiVersion: monitoring.coreos.com/v1\nkind: Prometheus\nmetadata:\n name: prometheus\nspec:\n serviceAccountName: prometheus\n serviceMonitorSelector:\n matchLabels:\n team: frontend\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"using-podmonitors\"\u003eUsing PodMonitors \u003ca href=\"#using-podmonitors\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWhile \u003ccode\u003eServiceMonitor\u003c/code\u003e requires a \u003ccode\u003eService\u003c/code\u003e object, \u003ccode\u003ePodMonitor\u003c/code\u003e can bypass the service and find targets based on Pod labels. The \u003ccode\u003espec.selector\u003c/code\u003e field in the \u003ccode\u003ePodMonitor\u003c/code\u003e resource specifies which Pods Prometheus should scrape.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePodMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-app\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epodMetricsEndpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSimilarly, the Prometheus object defines which PodMonitors get selected with the\n\u003ccode\u003espec.podMonitorSelector\u003c/code\u003e field.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eapiVersion: monitoring.coreos.com/v1\nkind: Prometheus\nmetadata:\n name: prometheus\nspec:\n serviceAccountName: prometheus\n podMonitorSelector:\n matchLabels:\n team: frontend\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"whats-next\"\u003eWhat\u0026rsquo;s Next \u003ca href=\"#whats-next\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\n \u003cdiv class=\"card-nav d-flex flex-column flex-sm-row\" style=\"padding: 5px;\"\u003e\n \u003cdiv class=\"card text-end w-100\" style=\"border: 2px solid transparent; transition: border-color 0.3s ease;
242\" onmouseover=\"this.style.borderColor='#8cd2f7'\" onmouseout=\"this.style.borderColor='transparent'\"\u003e\n \u003cdiv class=\"card-body d-flex\"\u003e\n \u003cdiv class=\"d-flex flex-column me-auto text-start\"\u003e\n \u003ch5 class=\"card-title my-0\"\u003e\u003ca href=\"https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.ServiceMonitor\" class=\"stretched-link text-reset text-decoration-none\"\u003eServiceMonitor\u003c/a\u003e\u003c/h5\u003e\n \u003cp class=\"card-text mt-1\"\u003eCheck out the specifications to learn more about ServiceMonitor\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"d-flex flex-column justify-content-center\"\u003e\n \u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-arrow-right\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n \u003cpath stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c/path\u003e\n \u003cpath d=\"M5 12l14 0\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 18l6 -6\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 6l6 6\"\u003e\u003c/path\u003e\n \u003c/svg\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\n \u003cdiv class=\"card-nav d-flex flex-column flex-sm-row\" style=\"padding: 5px;\"\u003e\n \u003cdiv class=\"card text-end w-100\" style=\"border: 2px solid transparent; transition: border-color 0.3s ease;\" onmouseover=\"this.style.borderColor='#8cd2f7'\" onmouseout=\"this.style.borderColor='transparent'\"\u003e\n \u003cdiv class=\"card-body d-flex\"\u003e\n \u003cdiv class=\"d-flex flex-column me-auto text-start\"\u003e\n \u003ch5 class=\"card-title my-0\"\u003e\u003ca href=\"https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.PodMonitor\" class=\"stretched-link text-reset text-decoration-none\"\u003ePodMonitor\u003c/a\u003e\u003c/h5\u003e\n \u003cp class=\"card-text mt-1\"\u003eCheck out the specifications to learn more about PodMonitor\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"d-flex flex-column justify-content-center\"\u003e\n \u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-arrow-right\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n \u003cpath stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c/path\u003e\n \u003cpath d=\"M5 12l14 0\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 18l6 -6\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 6l6 6\"\u003e\u003c/path\u003e\n \u003c/svg\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n" 243 }, 244 { 245 id: 23, 246 href: "https://prometheus-operator.dev/docs/developer/alerting/", 247 title: "Alerting Routes", 248 description: "Alerting guide", 249 content: "\u003cp\u003eThis guide assumes you already have a basic understanding of the Prometheus Operator and have gone through the \u003ca href=\"https://prometheus-operator.dev/docs/developer/getting-started/\"\u003eGetting Started\u003c/a\u003e guide. Weâre also expecting you to know how to run an Alertmanager instance.\u003c/p\u003e\n\u003cp\u003eIn this guide, we\u0026rsquo;ll explore the various methods for managing Alertmanager configurations within your Kubernetes cluster.\u003c/p\u003e\n\u003cp\u003ePrometheus\u0026rsquo; configuration also includes \u0026ldquo;rule files\u0026rdquo;, which contain the\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/\"\u003ealert
249ing\nrules\u003c/a\u003e.\nWhen an alerting rule is triggered, it fires that alert to \u003cem\u003e\u003cstrong\u003eall\u003c/strong\u003e\u003c/em\u003e Alertmanager\ninstances, on \u003cem\u003e\u003cstrong\u003eevery\u003c/strong\u003e\u003c/em\u003e rule evaluation interval. The Alertmanager instances\ncommunicate to each other which notifications have already been sent out. For\nmore information on this system design, see the \u003ca href=\"https://prometheus-operator.dev/docs/platform/high-availability/\"\u003eHigh Availability\u003c/a\u003e\npage.\u003c/p\u003e\n\u003cp\u003eBy default, the Alertmanager instances will start with a minimal configuration\nwhich isn\u0026rsquo;t really useful since it doesn\u0026rsquo;t send any notification when receiving\nalerts.\u003c/p\u003e\n\u003cp\u003eYou have several options to provide the \u003ca href=\"https://prometheus.io/docs/alerting/configuration/\"\u003eAlertmanager configuration\u003c/a\u003e:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eUsing a native Alertmanager configuration file stored in a \u003ca href=\"https://kubernetes.io/docs/concepts/configuration/secret/\"\u003eKubernetes secret\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eusing \u003ccode\u003espec.alertmanagerConfiguration\u003c/code\u003e to reference an\n\u003ccode\u003eAlertmanagerConfig\u003c/code\u003e object in the same namespace which defines the main\nAlertmanager configuration.\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003espec.alertmanagerConfigSelector\u003c/code\u003e and\n\u003ccode\u003espec.alertmanagerConfigNamespaceSelector\u003c/code\u003e to tell the operator which\n\u003ccode\u003eAlertmanagerConfig\u003c/code\u003e objects should be selected and merged with the main\nAlertmanager configuration.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"using-a-kubernetes-secret\"\u003eUsing a Kubernetes Secret \u003ca href=\"#using-a-kubernetes-secret\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following native Alertmanager configuration sends notifications to a fictitious webhook service:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eroute\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egroup_by\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;job\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egroup_wait\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e30s\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egroup_interval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e5m\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erepeat_interval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e12h\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereceiver\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;webhook\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ereceivers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;webhook\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ewebhook_configs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;http://example.com/\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSave the above configuration in a file called \u003ccode\u003ealertmanager.yaml\u003c/code\u003e in the local directory and create a Secret from it:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ekubectl create secret generic alertmanager-example --from-file\u003cspan class=\"o\"\u003e=\u003c/span\u003ealertmanager.yaml\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe Prometheus operator requires the Secret to be named like\n\u003ccode\u003ealertmanager-{ALERTMANAGER_NAME}\u003c/code\u003e. In the previous example, the name of the\nAlertmanager is \u003ccode\u003eexample\u003c/code\u003e, so the secret name must be \u003ccode\u003ealertmanager-example\u003c/code\u003e.\nThe name of the key holding the configuration data in the Secret has to be\n\u003ccode\u003ealertmanager.yaml\u003c/code\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: if you want to use a different secret name, you can specify it with the \u003ccode\u003espec.configSecret\u003c/code\u003e field in the Alertmanager resource.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThe Alertmanager configuration may reference custom templates or password files\non disk. These can be added to the Secret along with the \u003ccode\u003ealertmanager.yaml\u003c/code\u003e\nconfiguration file. For example, provided that we have the following Secret:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eSecret\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003edata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanager.yaml\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{\u003cspan class=\"l\"\u003eBASE64_CONFIG}\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etemplate_1.tmpl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{\u003cspan class=\"l\"\u003eBASE64_TEMPLATE_1}\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etemplate_2.tmpl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{\u003cspan class=\"l\"\u003eBASE64_TEMPLATE_2}\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eTemplates will be accessible to the Alertmanager container under the\n\u003ccode\u003e/etc/alertmanager/config\u003c/code\u003e directory. The Alertmanager\nconfiguration can reference them like this:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003etemplates\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"s1\"\u003e\u0026#39;/etc/alertmanager/config/*.tmpl\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"using-alertmanagerconfig-resources\"\u003eUsing AlertmanagerConfig Resources \u003ca href=\"#using-alertmanagerconfig-resources\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following example configuration creates an AlertmanagerConfig resource that\nsends notifications to a fictitious webhook service.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanagerConfig\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econfig-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanagerConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eroute\u
249003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egroupBy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;job\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egroupWait\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e30s\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egroupInterval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e5m\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erepeatInterval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e12h\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereceiver\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;webhook\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereceivers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;webhook\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ewebhookConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;http://example.com/\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCreate the AlertmanagerConfig resource in your cluster:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecurl -sL https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/user-guides/alerting/alertmanager-config-example.yaml \u003cspan class=\"p\"\u003e|\u003c/span\u003e kubectl create -f -\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe \u003ccode\u003espec.alertmanagerConfigSelector\u003c/code\u003e field in the Alertmanager resource\nneeds to be updated so the operator selects AlertmanagerConfig resources. In\nthe previous example, the label \u003ccode\u003ealertmanagerConfig: example\u003c/code\u003e is added, so the\nAlertmanager object should be updated like this:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanagerConfigSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanagerConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"using-alertmanagerconfig-for-global-configuration\"\u003eUsing AlertmanagerConfig for global configuration \u003ca href=\"#using-alertmanagerconfig-for-global-configuration\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following example configuration creates an Alertmanager resource that uses\nan AlertmanagerConfig resource to be used for the Alertmanager configuration\ninstead of the \u003ccode\u003ealertmanager-example\u003c/code\u003e secret.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanager\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanagerConfiguration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econfig-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe AlertmanagerConfig resource named \u003ccode\u003eexample-config\u003c/code\u003e in namespace \u003ccode\u003edefault\u003c/code\u003e\nwill be a global AlertmanagerConfig. When the operator generates the\nAlertmanager configuration from it, the namespace label will not be enforced\nfor routes and inhibition rules.\u003c/p\u003e\n\u003ch3 id=\"deploying-prometheus-rules\"\u003eDeploying Prometheus Rules \u003ca href=\"#deploying-prometheus-rules\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003ePrometheusRule\u003c/code\u003e CRD allows defining alerting and recording rules. The\noperator knows which PrometheusRule objects to select for a given Prometheus\nbased on the \u003ccode\u003espec.ruleSelector\u003c/code\u003e field.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: by default, \u003ccode\u003espec.ruleSelector\u003c/code\u003e is nil meaning that the operator picks up no rule.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eBy default, the Prometheus resources discovers only \u003ccode\u003ePrometheusRule\u003c/code\u003e resources\nin the same namespace. This can be refined with the \u003ccode\u003eruleNamespaceSelector\u003c/code\u003e field:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTo discover rules from all namespaces, pass an empty dict (\u003ccode\u003eruleNamespaceSelector: {}\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eTo discover rules from all namespaces matching a certain label, use the \u003ccode\u003ematchLabels\u003c/code\u003e field.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDiscover \u003ccode\u003ePrometheusRule\u003c/code\u003e resources with \u003ccode\u003erole=alert-rules\u003c/code\u003e and\n\u003ccode\u003eprometheus=example\u003c/code\u003e labels from all namespaces with \u003ccode\u003eteam=frontend\u003c/code\u003e label:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceAccountName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u00
2493e\u003cspan class=\"nt\"\u003ealerting\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ealertmanagers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eweb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eruleSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erole\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealert-rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eruleNamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efrontend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIn case you want to select individual namespace by their name, you can use the\n\u003ccode\u003ekubernetes.io/metadata.name\u003c/code\u003e label, which gets populated automatically with\nthe\n\u003ca href=\"https://kubernetes.io/docs/reference/labels-annotations-taints/#kubernetes-io-metadata-name\"\u003e\u003ccode\u003eNamespaceDefaultLabelName\u003c/code\u003e\u003c/a\u003e\nfeature gate.\u003c/p\u003e\n\u003cp\u003eCreate a PrometheusRule object from the following manifest. Note that the\nobject\u0026rsquo;s labels match with the \u003ccode\u003espec.ruleSelector\u003c/code\u003e of the Prometheus object.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheusRule\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecreationTimestamp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003enull\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erole\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealert-rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-example-rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e./example.rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ealert\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eExampleAlert\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexpr\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003evector(1)\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eFor demonstration purposes, the PrometheusRule object always fires the\n\u003ccode\u003eExampleAlert\u003c/code\u003e alert. To validate that everything is working properly, you can\nopen again the Prometheus web interface and go to the Alerts page.\u003c/p\u003e\n\u003cp\u003eNext open the Alertmanager web interface and check that it shows one active alert.\u003c/p\u003e\n" 250 }, 251 { 252 id: 24, 253 href: "https://prometheus-operator.dev/docs/developer/scrapeconfig/", 254 title: "ScrapeConfig CRD", 255 description: "Guide to use ScrapeConfig to scrape targets external to the Kubernetes cluster", 256 content: "\u003cp\u003eStarting with prometheus-operator v0.65.x, one can use the \u003ccode\u003eScrapeConfig\u003c/code\u003e CRD to scrape targets external to the\nKubernetes cluster or create scrape configurations that are not possible with the higher level\n\u003ccode\u003eServiceMonitor\u003c/code\u003e/\u003ccode\u003eProbe\u003c/code\u003e/\u003ccode\u003ePodMonitor\u003c/code\u003e resources.\u003c/p\u003e\n\u003ch2 id=\"prerequisites\"\u003ePrerequisites \u003ca href=\"#prerequisites\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eprometheus-operator\u003c/code\u003e \u003ccode\u003e\u0026gt;v0.65.1\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eScrapeConfig\u003c/code\u003e CRD installed in the cluster. Make sure to (re)start the operator after the CRD has been created/updated.\u
256003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"configure-prometheus-or-prometheusagent-to-select-scrapeconfigs\"\u003eConfigure Prometheus or PrometheusAgent to select ScrapeConfigs \u003ca href=\"#configure-prometheus-or-prometheusagent-to-select-scrapeconfigs\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBoth the Prometheus and PrometheusAgent CRD have a \u003ccode\u003escrapeConfigSelector\u003c/code\u003e field. This field needs to be set to a list of\nlabels to match \u003ccode\u003eScrapeConfigs\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeConfigSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWith this example, all \u003ccode\u003eScrapeConfig\u003c/code\u003e having the \u003ccode\u003eprometheus\u003c/code\u003e label set to \u003ccode\u003esystem-monitoring-prometheus\u003c/code\u003e will be used\nto generate scrape configurations.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Since \u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e is not specified, this example only selects \u003ccode\u003eScrapeConfigs\u003c/code\u003e from the same namespace as the Prometheus resource.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"namespace-selection\"\u003eNamespace Selection \u003ca href=\"#namespace-selection\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eTo select \u003ccode\u003eScrapeConfigs\u003c/code\u003e based on the namespace, \u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e field can be used.\u003c/p\u003e\n\u003ch3 id=\"select-scrapeconfigs-from-all-namespaces\"\u003eSelect ScrapeConfigs from all namespaces \u003ca href=\"#select-scrapeconfigs-from-all-namespaces\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eSet it to \u003ccode\u003e{}\u003c/code\u003e to match \u003ccode\u003eScrapeConfigs\u003c/code\u003e from all namespaces:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeConfigSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeConfigNamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"select-scrapeconfigs-from-namespaces-with-specific-labels\"\u003eSelect ScrapeConfigs from namespaces with specific labels \u003ca href=\"#select-scrapeconfigs-from-namespaces-with-specific-labels\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTo select \u003ccode\u003eScrapeConfigs\u003c/code\u003e only from namespaces with specific labels:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeConfigSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeConfigNamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eenvironment\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eproduction\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"use-scrapeconfig-to-scrape
256-an-external-target\"\u003eUse ScrapeConfig to scrape an external target \u003ca href=\"#use-scrapeconfig-to-scrape-an-external-target\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eScrapeConfig\u003c/code\u003e supports multiple service discovery mechanisms, categorized into two tiers based on the level of support from the project maintainers:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTier-1\u003c/strong\u003e (fully supported):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eKubernetes Service Discovery\u003c/li\u003e\n\u003cli\u003eFile Service Discovery\u003c/li\u003e\n\u003cli\u003eStatic Service Discovery\u003c/li\u003e\n\u003cli\u003eDNS Service Discovery\u003c/li\u003e\n\u003cli\u003eHTTP Service Discovery\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eTier-2\u003c/strong\u003e (maintainers review issues/PRs but don\u0026rsquo;t actively maintain): includes cloud provider SDs like Azure, EC2, GCE, DigitalOcean and others. See the \u003ca href=\"https://prometheus-operator.dev/docs/proposals/accepted/scrapeconfig-graduation/\"\u003eScrapeConfig graduation proposal\u003c/a\u003e for the complete list.\u003c/p\u003e\n\u003cp\u003eFor the full list of supported fields and service discoveries, check the \u003ca href=\"https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1alpha1.ScrapeConfig\"\u003eAPI documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIf you have an interest in another service discovery mechanism or you see something missing in the implementation, please\n\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues\"\u003eopen an issue\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"kubernetes_sd\"\u003e\u003ccode\u003ekubernetes_sd\u003c/code\u003e \u003ca href=\"#kubernetes_sd\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ekubernetes_sd\u003c/code\u003e discovers scrape targets from the Kubernetes API. The \u003ccode\u003erole\u003c/code\u003e field selects what kind of object to discover; valid values are \u003ccode\u003eNode\u003c/code\u003e, \u003ccode\u003ePod\u003c/code\u003e, \u003ccode\u003eService\u003c/code\u003e, \u003ccode\u003eEndpoints\u003c/code\u003e, \u003ccode\u003eEndpointSlice\u003c/code\u003e and \u003ccode\u003eIngress\u003c/code\u003e. Note that the value is capitalized.\u003c/p\u003e\n\u003cp\u003eWhen Prometheus runs inside the cluster, which is the usual case with prometheus-operator, the API server address and credentials are discovered automatically, so a minimal configuration only needs a \u003ccode\u003erole\u003c/code\u003e. For example, to discover the cluster nodes:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eScrapeConfig\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ekubernetes-sd\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-namespace\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003escrape-config-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekubernetesSDConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erole\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eNode\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ccode\u003erole\u003c/code\u003e is the only required field. Use \u003ccode\u003enamespaces.names\u003c/code\u003e to restrict discovery to specific namespaces and \u003ccode\u003eselectors\u003c/code\u003e to filter the discovered objects. As with a Prometheus \u003ccode\u003ekubernetes_sd_config\u003c/code\u003e, discovered targets normally need \u003ccode\u003erelabelings\u003c/code\u003e to derive the scrape address and target labels from the discovery metadata. See the \u003ca href=\"https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1alpha1.KubernetesSDConfig\"\u003eAPI documentation\u003c/a\u003e for the full list of fields.\u003c/p\u003e\n\u003ch2 id=\"static_config\"\u003e\u003ccode\u003estatic_config\u003c/code\u003e \u003ca href=\"#static_config\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFor example, to scrape the target located at \u003ccode\u003ehttp://prometheus.demo.do.prometheus.io:9090\u003c/code\u003e, use the following:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eScrapeConfig\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003estatic-config\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-namespace\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estaticConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ejob\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargets\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003eprometheus.demo.do.prometheus.io:9090\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"file_sd\"\u003e\u003ccode\u003efile_sd\u003c/code\u003e \u003ca href=\"#file_sd\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eTo use \u003ccode\u003efile_sd\u003c/code\u003e, a file has to be mou
256nted in the Prometheus or PrometheusAgent pods. The following configmap is a service discovery file:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ev1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eConfigMap\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003escrape-file-sd-targets\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003edata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etargets.yaml\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e|\u003c/span\u003e\u003cspan class=\"sd\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e - labels:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e job: node-demo\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e targets:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e - node.demo.do.prometheus.io:9100\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e - labels:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e job: prometheus\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e targets:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e - prometheus.demo.do.prometheus.io:9090\u003c/span\u003e\u003cspan class=\"w\"\u003e \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis \u003ccode\u003eConfigMap\u003c/code\u003e will then need to be mou
256nted in the \u003ccode\u003ePrometheus\u003c/code\u003e spec:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eyour-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-namespace\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeConfigSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econfigMaps\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003escrape-file-sd-targets\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eYou can then use ScrapeConfig to reference that file and scrape the associated targets:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eScrapeConfig\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efile-sd\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-namespace\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003escrape-config-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efileSDConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003efiles\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003e/etc/prometheus/configmaps/scrape-file-sd-targets/targets.yaml\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"http_sd\"\u003e\u003ccode\u003ehttp_sd\u003c/code\u003e \u003ca href=\"#http_sd\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp_sd\u003c/code\u003e uses an endpoint for data, unlike \u003ccode\u003efile_sd\u003c/code\u003e which uses a file, remov
256ing the need for a configmap. For instance:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eScrapeConfig\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp-sd\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-namespace\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp.kubernetes.io/name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003escrape-config-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ehttpSDConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp://my-external-api/discovery\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erefreshInterval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e15s\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e" 257 }, 258 { 259 id: 25,
260 href: "https://prometheus-operator.dev/docs/developer/scrapeclass/", 261 title: "Scrape Classes", 262 description: "", 263 content: "\u003ch2 id=\"prerequisites\"\u003ePrerequisites \u003ca href=\"#prerequisites\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBefore you begin, ensure that you have:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePrometheus-Operator \u0026gt; v0.73.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eA running \u003ccode\u003ePrometheus\u003c/code\u003e or \u003ccode\u003ePrometheusAgent\u003c/code\u003e instance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"introduction\"\u003eIntroduction \u003ca href=\"#introduction\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eScrapeClass\u003c/code\u003e is a feature that allows you to define common configuration settings to be applied across all scrape resources( \u003cstrong\u003ePodMonitor\u003c/strong\u003e, \u003cstrong\u003eServiceMonitor\u003c/strong\u003e, \u003cstrong\u003eScrapeConfig\u003c/strong\u003e and \u003cstrong\u003eProbe\u003c/strong\u003e ). This feature is similar to \u003ca href=\"https://kubernetes.io/docs/concepts/storage/storage-classes/\"\u003eStorageClass\u003c/a\u003e in Kubernetes and is very useful when it comes to standardising configurations such as common relabelling rules, TLS certificates and authentication.\u003c/p\u003e\n\u003cp\u003eOne use-case is to configure authentication with TLS certificates when running \u003ccode\u003ePrometheus\u003c/code\u003e to scrape all the pods in an Istio mesh with \u003ca href=\"https://istio.io/latest/docs/ops/integrations/prometheus/#tls-settings\"\u003estrict mTLS\u003c/a\u003e. Defining the TLS certificate paths in each \u003ccode\u003ePodMonitor\u003c/code\u003e and \u003ccode\u003eServiceMonitor\u003c/code\u003e that scrapes these pods would be repetitive and error-prone. This problem is now solved by the \u003ccode\u003eScrapeClass\u003c/code\u003e feature.\u003c/p\u003e\n\u003ch2 id=\"defining-a-scrapeclass-in-prometheus-resource\"\u003eDefining a ScrapeClass in Prometheus Resource \u003ca href=\"#defining-a-scrapeclass-in-prometheus-resource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBelow is an example of defining a scrape class in \u003ccode\u003ePrometheus/PrometheusAgent\u003c/code\u003e resource:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClasses\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003edefault\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etlsConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecaFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/root-cert.pem\u0026#34;
263\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecertFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/cert-chain.pem\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekeyFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/key.pem\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003einsecureSkipVerify\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# mount the certs from the istio sidecar (shown here for illustration purposes)\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumeMounts\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-certs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emountPath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eemptyDir\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emedium\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eMemory\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-certs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAn administrator can set the \u003ccode\u003edefault:true\u003c/code\u003e so that the scrape applies to all scrape objects that don\u0026rsquo;t configure an explicit scrape class. Only one scrape class can be set as default. If there are multiple default scrape classes, the operator will fail the reconciliation and the failure will be reported in the status conditions of the resource.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClasses\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003efirst-class\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003edefault\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esecond-class\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003edefault\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econditions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Failed to parse scrape classes: multiple default scrape classes defined\u0026#34;
263\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;MultipleDefaultScrapeClasses\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;False\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eReconciled\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"using-the-scrapeclass-in-monitor-resources\"\u003eUsing the ScrapeClass in Monitor Resources \u003ca href=\"#using-the-scrapeclass-in-monitor-resources\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eOnce the \u003ccode\u003eScrapeClasses\u003c/code\u003e is defined in the \u003ccode\u003ePrometheus\u003c/code\u003e resource, the \u003ccode\u003eScrapeClass\u003c/code\u003e field can be used in the scrape resource to reference the particular \u003ccode\u003eScrapeClass\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eservicemonitor-example\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClass\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIf the monitor resource specifies a scrape class name that isn\u0026rsquo;t defined in the \u003ccode\u003ePrometheus/PrometheusAgent\u003c/code\u003e object, then the operator will emit a Kubernetes event. Consider the following example where a \u003ccode\u003ePrometheus\u003c/code\u003e instance defines a scrapeClass, but a \u003ccode\u003eServiceMonitor\u003c/code\u003e references a different one.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClasses\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003edefault\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe \u003ccode\u003eServiceMonitor\u003c/code\u003e references a scrapeClass named \u003cstrong\u003eistio\u003c/strong\u003e, which is not defined in the Prometheus object.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-service-monitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClass\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAs \u003ccode\u003eServiceMonitor\u003c/code\u003e references a scrapeClass that does not exist in Prometheus, the following event is emitted:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e0s Warning InvalidConfiguration servicemonitor/example-service-monitor \
263nServiceMonitor example-service-monitor was rejected due to invalid configuration: \nscrapeClass \u0026#34;istio\u0026#34; not found in Prometheus scrapeClasses\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eSimilarly, we can select the scrape class for \u003ccode\u003ePodMonitor\u003c/code\u003e resource.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePodMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClass\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epodMetricsEndpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIf a monitor resource includes a \u003ccode\u003etlsConfig\u003c/code\u003e field, the Operator applies a \u003cstrong\u003efield-by-field\u003c/strong\u003e merge with the \u003ccode\u003etlsConfig\u003c/code\u003e from the scrape class. Any fields set in the monitor resource take precedence, while unset fields inherit values from the scrape class.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNote: The configuration in scrapeClass will only be applied if the scrape resources haven\u0026rsquo;t set fields defined in scrapeClass.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"whats-next\"\u003eWhat\u0026rsquo;s Next \u003ca href=\"#whats-next\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\n \u003cdiv class=\"card-nav d-flex flex-column flex-sm-row\" style=\"padding: 5px;\"\u003e\n \u003cdiv class=\"card text-end w-100\" style=\"border: 2px solid transparent; transition: border-color 0.3s ease;\" onmouseover=\"this.style.borderColor='#8cd2f7'\" onmouseout=\"this.style.borderColor='transparent'\"\u003e\n \u003cdiv class=\"card-body d-flex\"\u003e\n \u003cdiv class=\"d-flex flex-column me-auto text-start\"\u003e\n \u003ch5 class=\"card-title my-0\"\u003e\u003ca href=\"https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.ScrapeClass\" class=\"stretched-link text-reset text-decoration-none\"\u003eScrape Class\u003c/a\u003e\u003c/h5\u003e\n \u003cp class=\"card-text mt-1\"\u003eCheck out the specifications to learn more about scrape classes\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"d-flex flex-column justify-content-center\"\u003e\n \u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-arrow-right\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n \u003cpath stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"\u003e\u003c/path\u003e\n \u003cpath d=\"M5 12l14 0\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13 18l6 -6\"\u003e\u003c/path\u003e\n \u003cpath d=\"M13
2636l6 6\"\u003e\u003c/path\u003e\n \u003c/svg\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n" 264 }, 265 { 266 id: 26, 267 href: "https://prometheus-operator.dev/docs/proposals/", 268 title: "Proposals", 269 description: "Proposals for major changes in Prometheus Operator", 270 content: "" 271 }, 272 { 273 id: 27, 274 href: "https://prometheus-operator.dev/docs/proposals/implemented/", 275 title: "Implemented Proposals", 276 description: "Proposals that have been implemented", 277 content: "" 278 }, 279 { 280 id: 28, 281 href: "https://prometheus-operator.dev/docs/proposals/implemented/prometheus-agent/", 282 title: "Prometheus Agent support", 283 description: null, 284 content: "\u003ch2 id=\"status\"\u003eStatus \u003ca href=\"#status\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eImplemented\u003c/code\u003e\u003c/p\u003e\n\u003ch2 id=\"summary\"\u003eSummary \u003ca href=\"#summary\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus 2.32.0 release introduces the Prometheus Agent, a mode optimized for remote-write dominant scenarios. This document proposes extending the Prometheus Operator to allow running a Prometheus Agent with different deployment strategies.\u003c/p\u003e\n\u003ch2 id=\"background\"\u003eBackground \u003ca href=\"#background\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus Operator in its current state does not allow a simple way of deploying the Prometheus agent. A potential workaround has been described in a \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/3989#issuecomment-974137486\"\u003eGithub comment\u003c/a\u003e, where the agent can be deployed through the existing Prometheus CRD by explicitly setting command-line arguments specific to the agent mode.\u003c/p\u003e\n\u003cp\u003eAs described in the comment, one significant problem with this approach is that the Prometheus Operator always generates \u003ccode\u003ealerts\u003c/code\u003e and \u003ccode\u003erules\u003c/code\u003e sections in the Prometheus config file. These sections are not allowed when running the agent so users need to take additional actions to pause reconciliation of the Prometheus CR, tweak the generated secret and then unpause reconciliation in order to resolve the problem. Alternatively, users can apply a strategic merge patch to the prometheus container as described in the kube-prometheus docs: \u003ca href=\"https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizations/prometheus-agent.md\"\u003ehttps://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizations/prometheus-agent.md\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWhile this workaround can be used as a stop-gap solution to unblock users in the short term, it has the drawback of needing additional steps which require understanding implementation details of the operator itself. In addition to this, overriding the value of the argument \u003ccode\u003e--config.file\u003c/code\u003e also requires knowledge of Prometheus Operator internals.\u003c/p\u003e\n\u003cp\u003eA lot of the fields supported by the current PrometheusSpec are not applicable to the agent mode. These fields are documented in the PrometheusAgent CRD section.\u003c/p\u003e\n\u003cp\u003eFinally, the Prometheus agent is significantly different from the Prometheus server in the way that it fits in a monitoring stack. Therefore, running it as a StatefulSet might not be the only possible deployment strategy, users might want to run it as a DaemonSet or a Deployment instead.\u003c/p\u003e\n\u003ch2 id=\"proposal\"\u003eProposal \u003ca href=\"#proposal\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis document proposes introducing a PrometheusAgent CRD to allow users to run Prometheus in agent mode. Having a separate C
284RD allows the Prometheus and PrometheusAgent CRDs to evolve independently and expose parameters specific to each Prometheus mode.\u003c/p\u003e\n\u003cp\u003eFor example, the PrometheusAgent CRD could have a \u003ccode\u003estrategy\u003c/code\u003e field indicating the deployment strategy for the agent, but no \u003ccode\u003ealerting\u003c/code\u003e field since alerts are not supported in agent mode. Even though there will be an upfront cost for introducing a new CRD, having separate APIs would simplify long-term maintenance by allowing the use of CRD validation mechanisms provided by Kubernetes.\u003c/p\u003e\n\u003cp\u003eIn addition, dedicated APIs with mode-specific fields are self documenting since they remove the need to explicitly document which fields and field values are allowed or required for each individual mode. Users will also be able to get an easier overview of the different parameters they could set for each mode, which leads to a better user experience when using the operator.\u003c/p\u003e\n\u003cp\u003eFinally, the advantage of using a separate CRD is the possibility of using an alpha API version, which would clearly indicate that the CRD is still under development. The Prometheus CRD, on the other hand, has already been declared as v1 and adding experimental fields to it will be challenging from both documentation and implementation aspects.\u003c/p\u003e\n\u003ch3 id=\"prometheus-agent-crd\"\u003ePrometheus Agent CRD \u003ca href=\"#prometheus-agent-crd\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe PrometheusAgent CRD would be similar to the Prometheus CRD, with the exception of removing fields which are not applicable to the prometheus agent mode.\u003c/p\u003e\n\u003cp\u003eHere is the list of fields we want to exclude:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eretention\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eretentionSize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edisableCompaction\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eevaluationInterval\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003erules\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003equery\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eruleSelector\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eruleNamespaceSelector\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ealert
284ing\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eremoteRead\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadditionalAlertRelabelConfigs\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadditionalAlertManagerConfigs\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ethanos\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprometheusRulesExcludedFromEnforce\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003equeryLogFile\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eallowOverlappingBlocks\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ccode\u003eenabledFeatures\u003c/code\u003e field can be validated for agent-specific features only, which include: \u003ccode\u003eexpand-external-labels\u003c/code\u003e, \u003ccode\u003eextra-scrape-metrics\u003c/code\u003e and \u003ccode\u003enew-service-discovery-manager\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFinally, the \u003ccode\u003eremoteWrite\u003c/code\u003e field should be made required only for the agent since it is a mandatory configuration section in agent mode.\u003c/p\u003e\n\u003ch3 id=\"deployment-strategies\"\u003eDeployment Strategies \u003ca href=\"#deployment-strategies\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWhen using Prometheus in server mode, scraped samples are stored in memory and on disk. These samples need to be preserved during disruptions, such as pod replacements or cluster maintenance operations which cause evictions. Because of this, the Prometheus Operator currently deploys Prometheus instances as Kubernetes StatefulSets.\u003c/p\u003e\n\u003cp\u003eOn the other hand, when running Prometheus in agent mode, samples are sent to a remote write target immediately, and are not kept locally for a long time. The only use-case for storing samples locally is to allow retries when remote write targets are not available. This is achieved by keeping scraped samples in a WAL for 2h at most. Samples which have been successfully sent to remote write targets are immediately removed from local storage.\u003c/p\u003e\n\u003cp\u003eSince the Prometheus agent has slightly different storage requirements, this proposal suggests allowing users to choose different deployment strategies.\u003c/p\u003e\n\u003ch4 id=\"running-the-agent-with-cluster-wide-scope\"\u003eRunning the agent with cluster-wide scope \u003ca href=\"#running-the-agent-with-cluster-wide-scope\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eEven though the Prometheus agent has very little need for storage, there are still scenarios where sample data can be lost if persistent storage is not used. If a remote write target is unavailable and an agent pod is evicted at the same time, the samples collected during the unavailability window of the remote write target will be completely lost.\u003c/p\u003e\n\u003cp\u003eFor this reason, the cluster-wide strategy would be implemented by deploying a StatefulSet, similarly to how \u003ccode\u003ePrometheus\u003c/code\u003e CRs are currently reconciled. This also allows for reusing existing code from the operator and delivering a working solution faster and with fewer changes. Familiarity with how StatefulSets work, together with the possibility to reuse existing code, were the primary reasons for choosing StatefulSets for this strategy over Deployments.\u003c/p\u003e\n\u003cp\u003eThe following table documents the problems that could occur with a Deployment and StatefulSet strategy in different situations.\u003c/p\u003e\n\u003ctable\u003e\n \u003ctr\u003e\n \u003ctd\u003e\n \u003c/td\u003e\n \u003ctd\u003e\u003cstrong\u003ePod update\u003c/strong\u003e\n \u003c/td\u003e\n \u003ctd\u003e\u003cstrong\u003eNetwork outage during pod update\u003c/strong\u003e\n \u003c/td\u003e\n \u003ctd\u003e\u003cstrong\u003eNetwork outage during node drain\u003c/strong\u003e\n \u003c/td\u003e\n \u003ctd\u003e\u003cstrong\u003eCloud k8s node rotation\u003c/strong\u003e\n \u003c/td\u003e\n \u003ctd\u003e\u003cstrong\u003eNon-graceful pod deletion\u003c/strong\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cstrong\u003eDeployment with emptyDir volume\u003c/strong\u003e\n \u003c/td\u003e\n \u003ctd\u003eNo delay in scrapes if the new pod is created before the old one is terminated\n \u003c/td\u003e\n \u003ctd\u003eUnsent samples will be lost. \n\u003cp\u003e\nEmptyDir is tied to a pod \u003cem\u003eand\u003c/em\u003e node, and data from the old pod will not be preserved.\n \u003c/td\u003e\n \u003ctd\u003eUnsent samples will be lost. \n\u003cp\u003e\nEmptyDir is tied to a pod \u003cem\u003eand\u003c/em\u003e node, and data from the old pod will not be preserved.\n \u003c/td\u003e\n \u003ctd\u003eUnsent samples will be lost\n \u003c/td\u003e\n \u003ctd\u003eUnsent samples will be lost. \n\u003cp\u003e\nEmptyDir is tied to a pod \u003cem\u003eand\u003c/em\u003e node, and data from the old pod will not be preserved.\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cstrong\u003eStatefulset with a PVC\u003c/strong\u003e\n \u003c/td\u003e\n \u003ctd\u003ePotential delay in a subsequent scrape due to recreation of the pod\n \u003c/td\u003e\n \u003ctd\u003eNo data loss, the volume will contain all unsent data\n \u003c/td\u003e\n \u003ctd\u003eNo data loss, the volume will contain all unsent data\n \u003c/td\u003e\n \u003ctd\u003eNo data loss if a new pod scheduled to the same AZ node. May be stuck in pending state otherwise\n \u003c/td\u003e\n \u003ctd\u003eNo data loss, the volume will contain all unsent data\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cstrong\u003eDeployment or STS with replicas\u003c/strong\u003e\n \u003c/td\u003e\n \u003ctd\u003eNo delay, mitigated by replicas\n \u003c/td\u003e\n \u003ctd\u003eUnsent data will be lost if last replica terminated before network outage resolves\n \u003c/td\u003e\n \u003ctd\u003eNo data loss, as other replicas are running on other nodes\n \u003c/td\u003e\n \u003ctd\u003eNo data loss, as other replicas running on other nodes\n \u003c/td\u003e\n \u003ctd\u003eNo data loss as other replicas untouched\n \u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\u003ch4 id=\"running-the-agent-with-node-specific-scope\"\u003eRunning the agent with node-specific scope \u003ca href=\"#running-the-agent-with-node-specific-scope\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThis strategy has a built-in auto-scaling mechanism since each agent will scrape only a subset of the targets. As the cluster grows and more nodes are added to it, new agent instances will automatically be scheduled to scrape pods on those nodes. Even though the load distribution will not be perfect (targets on certain
284nodes might produce far more metrics than targets on other nodes), it is a simple way of adding some sort of load management.\u003c/p\u003e\n\u003cp\u003eAnother advantage is that persistent storage can now be handled by mounting a host volume, a strategy commonly used by log collectors. The need for persistent storage is described in the StatefulSet strategy section.\u003c/p\u003e\n\u003cp\u003eThe Grafana Agent config exposes a \u003ccode\u003ehost_filter\u003c/code\u003e boolean flag which, when enabled, instructs the agent to only filter targets from the same node, in addition to the scrape config already provided. With this option, the same config can be used for agents running on multiple nodes, and the agents will automatically scrape targets from their own nodes. Such a config option is not yet available in Prometheus. An issue has already been raised \u003ca href=\"https://github.com/prometheus/prometheus/issues/9637\"\u003e[3]\u003c/a\u003e and there is an open PR for addressing it \u003ca href=\"https://github.com/prometheus/prometheus/pull/10004\"\u003e[4]\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eUntil the upstream work has been completed, it could be possible to implement this strategy with a few tweaks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ethe operator could use the \u003ca href=\"https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#capabilities-of-the-downward-api\"\u003edownward API\u003c/a\u003e to inject the node name in the pods.\u003c/li\u003e\n\u003cli\u003ethe operator\u0026rsquo;s config reloader already supports expansion of environment variables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWith this setup, the unexpanded Prometheus configuration would look as follows\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003erelabel_configs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003e__meta_kubernetes_pod_node_name]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ekeep\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e$NODE_NAME\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ein the pod definition\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003econtainer\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003econfig-reloader\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eenv\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eNODE_NAME\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evalueFrom\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efieldRef\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efieldPath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003espec.nodeName\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"additional-implementation-detail
284s\"\u003eAdditional implementation details \u003ca href=\"#additional-implementation-details\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThere has been a suggestion in \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/3989#issuecomment-821249404\"\u003ea Github comment\u003c/a\u003e to introduce a ScrapeConfig CRD in parallel to adding the PrometheusAgent CRD, and âtranslateâ PrometheusAgent CRs to ScrapeConfig CRs. The main challenge with this approach is that it significantly increases the scope of the work that needs to be done to support deploying Prometheus agents.\u003c/p\u003e\n\u003cp\u003eA leaner alternative would be to focus on implementing the PrometheusAgent CRD by reusing code from the existing Prometheus controller. The ScrapeConfig can then be introduced separately, and the PrometheusAgent can be the first CRD which gets migrated to it.\u003c/p\u003e\n\u003ch3 id=\"implementation-steps\"\u003eImplementation steps \u003ca href=\"#implementation-steps\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe first step in the implementation process would include creating the PrometheusAgent CRD and deploying the agent as a StatefulSet, similar to how the Prometheus CRD is currently reconciled. This will allow for reusing a lot of the existing codebase from the Prometheus controller and the new CRD can be released in a timely manner.\u003c/p\u003e\n\u003cp\u003eSubsequent steps would include iterating on users\u0026rsquo; feedback and either implementing different deployment strategies, or refining the existing one.\u003c/p\u003e\n\u003ch2 id=\"references\"\u003eReferences \u003ca href=\"#references\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[1] \u003ca href=\"https://github.com/grafana/agent/blob/5bf8cf452fa76c75387e30b6373630923679221c/production/kubernetes/agent-bare.yaml#L43\"\u003ehttps://github.com/grafana/agent/blob/5bf8cf452fa76c75387e30b6373630923679221c/production/kubernetes/agent-bare.yaml#L43\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[2] \u003ca href=\"https://github.com/open-telemetry/opentelemetry-operator#deployment-modes\"\u003ehttps://github.com/open-telemetry/opentelemetry-operator#deployment-modes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[3] \u003ca href=\"https://github.com/prometheus/prometheus/issues/9637\"\u003ehttps://github.com/prometheus/prometheus/issues/9637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[4] \u003ca href=\"https://github.com/prometheus/prometheus/pull/10004\"\u003ehttps://github.com/prometheus/prometheus/pull/10004\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n" 285 }, 286 { 287 id: 29, 288 href: "https://prometheus-operator.dev/docs/proposals/implemented/scrape-config/", 289 title: "ScrapeConfig CRD", 290 description: null, 291 content: "\u003cul\u003e\n\u003cli\u003eOwners:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/xiu\"\u003exiu\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eStatus:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eImplemented\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRelated Tickets:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/2787\"\u003e#2787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/3447\"\u003e#3447\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eOther docs:\n\u003cul\u003e\n\u003cli\u003en/a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis document aims at creating a lower level \u003ccode\u003eScrapeConfig\u003c/code\u003e Custom Resource Definition that defines additional scrape\nconfigurations the Kubernetes way.\u003c/p\u003e\n\u003ch1 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eprometheus-operator misses a way to scrape external targets using CRD. Users have either been abusing the Probe CRD\n(#3447) or additionalScrapeConfig to do so. Multiple use cases have been reported:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA user reported in the contributor office hours that their team serves Prometheus as a service to several teams across\nmultiple regions. These teams have tens of thousands of exporters running outside Kubernetes. To scrape them, each\nteam has to involve this user\u0026rsquo;s team which makes it a bottleneck. While there is CI in place, errors happen and can\nrender Prometheus\u0026rsquo; configuration to be invalid. They would like to use a CRD to help the team serve themselves in\nadding scrape configurations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/2787#issuecomment-539568397\"\u003e@auligh in #2787\u003c/a\u003e\nreported needing a specific scrape configuration to scrape services running on the kubernetes nodes but don\u0026rsquo;t have a\nService attached to them. This user wants to deploy these scrape configurations alongside the applications rather than\nin a centralized way with \u003ccode\u003eadditionalScrapeConfigs\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/2787#issuecomment-545510764\"\u003e@bgagnon in #2787\u003c/a\u003e\nmentions that \u003ccode\u003eadditionalScrapeConfigs\u003c/code\u003e\u0026rsquo;s usage is error-prone as with usage, multiple unrelated scrape configurations\nare bundled together.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFurthermore, currently, there is a lot of code duplication due to the operator supporting several CRDs that generate\nscrape configurations. With the new \u003ccode\u003eScrapeConfig\u003c/code\u003e CRD, it would be possible to consolidate some of that logic, where\nthe other \u003ccode\u003e*Monitor\u003c/code\u003e CRDs could be migrated so that they create a ScrapeConfig resource that would ultimately be used by\nthe operator to generate scrape configuration.\u003c/p\u003e\n\u003ch2 id=\"pitfalls-of-the-current-solution\"\u003ePitfalls of the current solution \u003ca href=\"#pitfalls-of-the-current-solution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eUsing \u003ccode\u003eadditionalScrapeConfig\u003c/code\u003e comes with drawbacks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTeams have to build an infrastru
291cture to add scrape rules in a centralized manner, which creates a bottleneck since a\nsingle team becomes responsible for the configuration\u003c/li\u003e\n\u003cli\u003eThere is no input validation, which can lead to an invalid prometheus configuration\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eProvide a way for users to self-service adding scrape targets\u003c/li\u003e\n\u003cli\u003eConsolidate the scrape configuration generation logic in a central point for other resources to use\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"audience\"\u003eAudience \u003ca href=\"#audience\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsers who serve Prometheus as a service and want to have their customers autonomous in defining scrape configs\u003c/li\u003e\n\u003cli\u003eUsers who want to manage scrape configs the same way as for services running within the Kubernetes cluster\u003c/li\u003e\n\u003cli\u003eUsers who want a supported Kubernetes way of scraping targets outside the Kubernetes cluster\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"non-goals\"\u003eNon-Goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThis proposal doesn\u0026rsquo;t aim at covering all the fields in\n\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\"\u003e\u003ccode\u003e\u0026lt;scrape_config\u0026gt;\u003c/code\u003e\u003c/a\u003e.\nSpecifically, it focuses first on \u003ccode\u003estatic_configs\u003c/code\u003e, \u003ccode\u003efile_sd_configs\u003c/code\u003e and \u003ccode\u003ehttp_sd_configs\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRefactoring of the other CRDs is not in scope for the first version\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eAs described by\n\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/2787#issuecomment-559776221\"\u003e@aulig in #2787\u003c/a\u003e, we\nwill create a new ScrapeConfig CRD, this new CRD will act the same as the other CRDs and append scrape configurations to\nthe configuration. Usage of ScrapeConfig doesn\u0026rsquo;t exclude the use of the other CRDs, they are not mutually exclusive.\n\u003ccode\u003eScrapeConfig\u003c/code\u003e will allow for any scraping configuration, while the other CRDs provide sane defaults. This will allow\nfor isolated testing of the new \u003ccode\u003eScrapeConfig\u003c/code\u003e CRD.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-mermaid\" data-lang=\"mermaid\"\u003egraph TD;\nServiceMonitor --\u0026gt; prometheusConfig\nPodMonitor --\u0026gt; prometheusConfig\nScrapeConfig --\u0026gt; prometheusConfig\nprometheusConfig\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eUsing a pseudo custom resource definition, we should have the following:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eScrapeConfig\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-scrape-config\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esystem-monitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etest\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003evalue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estaticConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003e\u0026lt;staticConfig\u0026gt;[]\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# new resource\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efileSDConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003e\u0026lt;fileSDConfig\u0026gt;[]\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# new resource\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ehttpSDConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003e\u0026lt;httpSDConfig\u0026gt;[]\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# new resource\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erelabelings\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# relabel_configs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003e\u0026lt;RelabelConfig\u0026gt;[]\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# https://github.com/prometheus-operator/prometheus-operator/blob/e4e27052f57040f073c6c1e4aedaecaaec77d170/pkg/apis/monitoring/v1/types.go#L1150\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emetricsPath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ewith the following new resources:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estaticConfig\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003etargets\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003etarget:9100\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabelA\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eplaceholder\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efileSDConfig\u003c/code\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003efiles\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Files here are string referencing a file existing in the Prometheus Pod. prometheus-operator is not responsible for\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# these SD files. The operator should use Prometheus.ConfigMaps to mount these files in the pods and have them usable\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# by ScrapeConfig. No validation on the content of the SD files is expected from prometheus-operator.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003e/etc/prometheus/configmaps/inventory/file.json\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erefreshInterval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e5m\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ehttpSDConfig\u003c/code\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp://localhost:1234\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003erefreshInterval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e60s\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis example doesn\u0026rsquo;t list all the fields that are offered by prometheus. The implementation of all the fields will be\ndone in an iterative process and as such, the expectation is not for all of them to be implemented in the first version.\u003c/p\u003e\n\u003cp\u003eAlso, to help selecting \u003ccode\u003eScrapeConfig\u003c/code\u003e, a new field will be added to the Prometheus CRD, same as for \u003ccode\u003eServiceMonitor\u003c/code\u003e,\n\u003ccode\u003ePodMonitor\u003c/code\u003e and \u003ccode\u003eProbe\u003c/code\u003e objects:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003e...]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeConfigSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeConfigNamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOnce the CRD is released, we will sta
291rt refactoring the other CRDs. Since \u003ccode\u003eScrapeConfig\u003c/code\u003e will allow for any\nconfiguration, it can also generate scrape configuration for the other CRDs.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-mermaid\" data-lang=\"mermaid\"\u003egraph TD;\nServiceMonitor --\u0026gt; ScrapeConfig\nPodMonitor --\u0026gt; ScrapeConfig\nScrapeConfig --\u0026gt; prometheusConfig\nprometheusConfig\n\u003c/code\u003e\u003c/pre\u003e\u003ch1 id=\"alternatives\"\u003eAlternatives \u003ca href=\"#alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eadditionalScrapeConfig\u003c/code\u003e secrets, with the pitfalls described earlier\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"action-plan\"\u003eAction Plan \u003ca href=\"#action-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003col\u003e\n\u003cli\u003eCreate the \u003ccode\u003eScrapeConfig\u003c/code\u003e CRD, covering \u003ccode\u003efile_sd_configs\u003c/code\u003e, \u003ccode\u003estatic_configs\u003c/code\u003e and \u003ccode\u003ehttp_sd_configs\u003c/code\u003e. The implementation\nof every field in each service discovery mechanism is left to the implementation. The expectation is not for all of\nthem to be implemented.\u003c/li\u003e\n\u003cli\u003eOnce released, refactor the configuration generation logic to reuse \u003ccode\u003eScrapeConfig\u003c/code\u003e. In parallel, add other service\ndiscovery mechanisms to the CRD and complete the implementation of \u003ccode\u003efile_sd_configs\u003c/code\u003e, \u003ccode\u003estatic_configs\u003c/code\u003e and\n\u003ccode\u003ehttp_sd_configs\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n" 292 }, 293 { 294 id: 30, 295 href: "https://prometheus-operator.dev/docs/proposals/implemented/scrapeclasses/", 296 title: "Scrape Classes", 297 description: null, 298 content: "\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eOwners:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003enicolastakashi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eeronwright\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStatus:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eImplemented\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelated Tickets:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ehttps://github.com/prometheus-operator/prometheus-operator/issues/4121\u003c/li\u003e\n\u003cli\u003ehttps://github.com/prometheus-operator/prometheus-operator/issues/3922\u003c/li\u003e\n\u003cli\u003ehttps://github.com/prometheus-operator/prometheus-operator/issues/5947\u003c/li\u003e\n\u003cli\u003ehttps://github.com/prometheus-operator/prometheus-operator/issues/5948\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis proposal introduces the concept of \u003cem\u003escrape classes\u003c/em\u003e, enabling users to utilize scrape configuration data provided by the administrator, through scrape objects such as PodMonitor, Probe, ServiceMonitor and ScrapeConfig.\u003c/p\u003e\n\u003ch2 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eSometimes Prometheus administrators needs to provide default configurations for scrape objects, such as the definition of TLS certificates, when running Prometheus to scrape pods in an Istio mesh with strict mTLS as described in \u003ca href=\"https://istio.io/latest/docs/ops/integrations/prometheus/#tls-settings\"\u003eIstio documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAnother motivation is to improve feature parity amongst the monitor resources. The \u003ccode\u003ePodMonitor\u003c/code\u003e and \u003ccode\u003eProbe\u003c/code\u003e resources aren\u0026rsquo;t at parity with \u003ccode\u003eServiceMonitor\u003c/code\u003e because the latter allows for unsafe TLS settings.\u003c/p\u003e\n\u003ch3 id=\"pitfalls-of-the-current-solution\"\u003ePitfalls of the current solution \u003ca href=\"#pitfalls-of-the-current-solution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe only known solution for use cases where you\u0026rsquo;d need to use unsafe TLS settings is to use \u003ccode\u003eadditionalScrapeConfig\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe downside is the loss of integration provided by Prometheus Operator through monitor resources to compose the scrape configurations in a Kubernetes w
298ay.\u003c/p\u003e\n\u003ch2 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow for the administrator to define a named, reusable scrape configuration snippet, including unsafe elements such as file references.\u003c/li\u003e\n\u003cli\u003eAllow for a user to select a configuration snippet by name in their probe/podmonitor/servicemonitor endpoint configuration.\u003c/li\u003e\n\u003cli\u003eAvoid giving the user the ability to exflitrate arbitrary files within the Prometheus pod.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"non-goals\"\u003eNon-Goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eProvide a way for Prometheus administrators to enforce/override settings on scrape configurations.\u003c/li\u003e\n\u003cli\u003eDeprecation of the unsafe TLS settings in \u003ccode\u003eServiceMonitor\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"audience\"\u003eAudience \u003ca href=\"#audience\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUsers who serve Prometheus as a service and want to give their customers autonomy in defining monitors, but want to provide a default configuration for scraping.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe proposed solution is to introduce a notion of a \u003cem\u003escrape class\u003c/em\u003e, akin to a Kubernetes \u003ca href=\"https://kubernetes.io/docs/concepts/storage/storage-classes/\"\u003estorage class\u003c/a\u003e.\nA scrape class defines TLS settings (and possibly other settings in future, e.g. sensitive authorization settings) to be applied to all scrape resources (ServiceMonitor, PodMonitor, Probe and ScrapeConfig) of that class.\u003c/p\u003e\n\u003cp\u003eOne scrape class may be designated as the default class, in which case that class is applied to any scrape resource that doesn\u0026rsquo;t specify a value for \u003ccode\u003escrapeClassName\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eWhen defining a podmonitor/servicemonitor/probe/scrapeconfig, a user may assign a scrape class via the `scrapeClassName field.\nWhen there\u0026rsquo;s a match, a scrape class is assigned to all the endpoints.\u003c/p\u003e\n\u003cp\u003eClass names are assumed to be installation-specific. In practice, some common class names like \u003ccode\u003eistio-mtls\u003c/code\u003e are likely to emerge.\u003c/p\u003e\n\u003ch3 id=\"prometheus-resource\"\u003ePrometheus Resource \u003ca href=\"#prometheus-resource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eIt is proposed that the \u003ccode\u003ePrometheus\u003c/code\u003e and \u003ccode\u003ePrometheusAgent\u003c/code\u003e resources contain a new field for defining scrape classes.\u003c/p\u003e\n\u003cp\u003eThe rationale for defining scrape classes inline is that, in practice, the TLS file paths are closely related to the \u003ccode\u003evolumeMounts\u003c/code\u003e\nof the \u003ccode\u003ePrometheus\u003c/code\u003e spec. An alternative is outlined later, of factoring the class definitions into a separate resource.\u003c/p\u003e\n\u003cp\u003eOne (and only one) scrape class may be designated as the default class.\u003c/p\u003e\n\u003cp\u003eWhen a resource defines several default scrape classes, it should fail the reconciliation.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClasses\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003edefault\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etlsConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecaFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/root-cert.pem\u0026#34;
298\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecertFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/cert-chain.pem\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekeyFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/key.pem\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003einsecureSkipVerify\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# mount the certs from the istio sidecar (shown here for illustration purposes)\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumeMounts\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-certs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emountPath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eemptyDir\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emedium\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eMemory\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-certs\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAny object references in the scrape class definition are assumed to refer to objects in the namespace of the \u003ccode\u003ePrometheus\u003c/code\u003e object.\u003c/p\u003e\n\u003ch3 id=\"monitoring-resource\"\u003eMonitoring Resource \u003ca href=\"#monitoring-resource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eIf the monitor resource specifies a scrape class name that isn\u0026rsquo;t defined in the Prometheus/PrometheusAgent object, then the scrape resource is rejected by the operator.\u003c/p\u003e\n\u003cp\u003eThis behavior is consistent with the behavior of monitor resources referencing a non-existing secret for bearer token authentication.\u003c/p\u003e\n\u003cp\u003eTo ensure users will have proper information about the error, the operator may (in the future) emit an event with the error message on the monitor resource and also update the status of the monitor resource with the error message.\u003c/p\u003e\n\u003ch3 id=\"podmonitor-resource\"\u003ePodMonitor Resource \u003ca href=\"#podmonitor-resource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAllow the user to select a scrape class which applies to all endpoints.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePodMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClassName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epodMetricsEndpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIf the \u003ccode\u003eMonitor\u003c/code\u003e resource has a \u003ccode\u003etlsConfig\u003c/code\u003e field defined, the Operator will use a merge strategy to combine the \u003ccode\u003etlsConfig\u003c/code\u003e fields from the PodMonitor object with the \u003ccode\u003etlsConfig\u003c/code\u003e fields of the scrape class, the \u003ccode\u003etlsConfig\u003c/code\u003e fields in the \u003ccode\u003ePodMonitor\u003c/code\u003e resource take precedence.\u003c/p\u003e\n\u003ch3 id=\"probe-resource\"\u003eProbe Resource \u003ca href=\"#probe-resource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAllow the user to select a scrape class for the prober service.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eProbe\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClassName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"servicemonitor-resource\"\u003eServiceMonitor Resource \u003ca href=\"#servicemonitor-resource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAllow the user to select a scrape class for all endpoints.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClassName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"scrapeconfig\"\u003eScrapeConfig \u003ca href=\"#scrapeconfig\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAllow the user to select a scrape class for the whole scrape configuration.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eScrapeConfig\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003escrape-config\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClassName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estaticConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan c
298lass=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003e...]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ehttpSDConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003e...]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efileSDConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003e...]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"test-plan\"\u003eTest Plan \u003ca href=\"#test-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eRegression test; ensure no change to generated configs unless a scrape class is applied.\u003c/li\u003e\n\u003cli\u003eOptionality of the default scrape class; ensure that it is an optional configuration element.\u003c/li\u003e\n\u003cli\u003eAcceptance testing in Istio environment; ensure that the solution is effective for a key use case.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"alternatives\"\u003eAlternatives \u003ca href=\"#alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"global-scrape-tls-configuration\"\u003eGlobal scrape TLS configuration \u003ca href=\"#global-scrape-tls-configuration\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAn alternative solution would be to apply a default TLS configuration to all monitors.\u003c/p\u003e\n\u003cp\u003eFor example, via a hypothetical field \u003ccode\u003espec.scrapeTlsConfig\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeTlsConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecaFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/root-cert.pem\u0026#34;
298\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecertFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/cert-chain.pem\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekeyFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/key.pem\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003einsecureSkipVerify\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eObjections:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eA singular default configuration may be too inflexible to effectively scrape a diverse set of pods. For example, in Istio,\nsome pods may be in STRICT mode.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"istio-permissive-mode\"\u003eIstio Permissive Mode \u003ca href=\"#istio-permissive-mode\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAn alternative for the Istio use case is to use PERMISSIVE mode (see \u003ca href=\"https://istio.io/latest/docs/concepts/security/#permissive-mode\"\u003edocumentation\u003c/a\u003e),\nor to use \u003ccode\u003eexclude\u003c/code\u003e annotations on the pod such that the metrics endpoint bypasses mTLS.\u003c/p\u003e\n\u003cp\u003eObjections:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eThis solution is less secure at a transport level unless TLS is implemented at the application layer.\u003c/li\u003e\n\u003cli\u003eStrict mTLS is the basis for \u003ca href=\"https://istio.io/latest/docs/reference/config/security/authorization-policy/\"\u003eIstio authorization policy\u003c/a\u003e, e.g. to explicitly allow access from prom to the metrics endpoint.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"scrapeclass-resource\"\u003eScrapeClass Resource \u003ca href=\"#scrapeclass-resource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eA variant of the proposed solution is to introduce a new custom resource for defining scrape classes.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eScrapeClass\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eistio-mtls\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etlsConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecaFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/root-cert.pem\u0026#34;
298\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecertFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/cert-chain.pem\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekeyFile\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/istio-certs/key.pem\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003einsecureSkipVerify\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAn open question is whether the resource would be cluster-scoped or namespace-scoped.\u003c/p\u003e\n\u003cp\u003eObjections:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eSince the file paths are dependent on the volume mounts in the server, this approach may not achieve a meaningful decoupling.\u003c/li\u003e\n\u003cli\u003eExtra complexity in defining a new CRD.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"non-safe-monitors\"\u003eNon-Safe Monitors \u003ca href=\"#non-safe-monitors\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAnother alternative would be to allow \u003ccode\u003ePodMonitor\u003c/code\u003e and \u003ccode\u003eProbe\u003c/code\u003e to use unsafe TLS settings.\u003c/p\u003e\n\u003cp\u003eObjections:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/3922#issuecomment-802899950\"\u003eexplanation\u003c/a\u003e for why\nunsafe settings were disallowed in the first place.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"action-plan\"\u003eAction Plan \u003ca href=\"#action-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e Change the Operator API to define scrape classes and for scrape resources to select a scrape class\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e Update the scrape configuration generator to use the scrape class\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e Update documentation\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e Resolve issues #4121, #3922\u003c/li\u003e\n\u003c/ul\u003e\n" 299 }, 300 { 301 id: 31, 302 href: "https://prometheus-operator.dev/docs/proposals/implemented/controller-id/", 303 title: "Controller-ID Proposal", 304 description: null, 305 content: "\u003cul\u003e\n\u003cli\u003eOwners:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielmellado\"\u003edanielmellado\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eStatus:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eImplemented\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRelated Tickets:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/4281\"\u003e#4281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/pull/4498\"\u003e#4498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eOther Docs:\n\u003cul\u003e\n\u003cli\u003en/a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"introduction\"\u003eIntroduction \u003ca href=\"#introduction\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eThis proposal aims to implement a solution to support multiple cluster-level\nPrometheus instances running concurrently without conflicting over the same\ncustom resources. This solution isn\u0026rsquo;t limited to the Prometheus resources as\nit\u0026rsquo;ll also be available for \u003ccode\u003eAlertManager\u003c/code\u003eand \u003ccode\u003eThanosRuler\u003c/code\u003e ones, as well as for\nany pod-based resource that c
305ould be added in the future.\u003c/p\u003e\n\u003cp\u003eThis issue can significantly impact use cases where multiple Prometheus operator\ninstances run at the same time in the Kubernetes cluster.\u003c/p\u003e\n\u003ch1 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eCurrently, we encounter issues when different users deploy different instances\nof the Prometheus operator, that will try to reconcile the same resources.\u003c/p\u003e\n\u003cp\u003eIn the worst-case scenario, these operators may not only compete for ownership\nof the CRD resources but also attempt to rewrite or redeploy different versions\nof the CRD, causing disruptions to all pods.\u003c/p\u003e\n\u003cp\u003eThe remediation for this scenario, where users deploy their Prometheus operator\ninstances in parallel, involves using one of the many CLI arguments such as\n\u003ccode\u003e--deny-namespaces\u003c/code\u003e, \u003ccode\u003e--namespaces\u003c/code\u003e, \u003ccode\u003e--prometheus-instance-selector\u003c/code\u003e or\n\u003ccode\u003eprometheus-instance-namespaces\u003c/code\u003e. But this requires cooperation between the\ndifferent parties and there\u0026rsquo;s no way to ensure that a specific monitoring\nresource is managed only by a specific operator instance.\u003c/p\u003e\n\u003ch1 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eAfter some research from @machine424, we have identified a potential solution\nalready implemented by the\n\u003ca href=\"https://github.com/zalando/postgres-operator\"\u003ezalando/postgres-operator\u003c/a\u003e. When\nan operator is configured with a specific \u0026ldquo;controller ID\u0026rdquo; value, it will only\nreconcile resources that have a matching \u0026ldquo;controller ID\u0026rdquo; annotation.\u003c/p\u003e\n\u003cp\u003eConversely, if the operator is not configured with a \u0026ldquo;controller ID,\u0026rdquo; it will\nskip all resources that have a \u0026ldquo;controller ID\u0026rdquo; annotation. More details can be\nfound in the\n\u003ca href=\"https://github.com/zalando/postgres-operator/blob/master/docs/administrator.md#operators-with-defined-ownership-of-certain-postgres-clusters\"\u003ezalando/postgres-operator documentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch1 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eGuarantee that a custom resource will be managed by a specific Prometheus\noperator instance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"audience\"\u003eAudience \u003ca href=\"#audience\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis proposal is relevant to the following audience:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUsers who provide Prometheus as a service and want to run multiple Prometheus\noperator instances in different namespaces.\u003c/li\u003e\n\u003cli\u003eUsers seeking to mitigate the impact of rogue Prometheus instances.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"non-goals\"\u003eNon-Goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eProvide a solution that works with user intervention. It\u0026rsquo;ll require work from\nthe user deploying the operator and resources. (e.g. if the operator is\nstarted without any specific argument, it\u0026rsquo;ll attempt to reconcile all\nresources in all namespaces).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"alternatives\"\u003eAlternatives \u003ca href=\"#alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eAlthough the initial discussion for this proposal considered adding an owner\nreference within the scope, the\n\u003ca href=\"https://github.com/kubernetes/design-proposals-archive/blob/acc25e14ca83dfda4f66d8cb1f1b491f26e78ffe/api-machinery/controller-ref.md\"\u003eControllerRef\u003c/a\u003e\nmodel does not directly address this problem because the \u003ccode\u003eControllerRef\u003c/code\u003emodel\nsolves the problem of controllers that fight over controlled objects due to\noverlapping selectors (e.g. a ReplicaSet fighting with a ReplicationController\nover Pods because both controllers have label selectors that match those Pods)\u003c/p\u003e\n" 306 }, 307 { 308 id: 32, 309 href: "https://prometheus-operator.dev/docs/proposals/accepted/shard-autoscaling/", 310 title: "Shard Autoscaling", 311 description: null, 312 content: "\u003cul\u003e\n\u003cli\u003eOwners:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ArthurSens\"\u003eArthur Sens\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nicolastakashi\"\u003eNicolas Takashi\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eStatus:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAccepted\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRelated Tickets:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/4727\"\u003e#4927\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/4946\"\u003e#4946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/4967\"\u003e#4967\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eOther docs:\n\u003cul\u003e\n\u003cli\u003en/a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis document aims to address existing issues preventing users from leveraging the Horizontal Pod Autoscaler (HPA)
312in conjunction with Prometheus sharding.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#why\"\u003eWhy\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pitfalls-of-the-current-solution\"\u003ePitfalls of the current solution\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#goals\"\u003eGoals\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#non-goals\"\u003eNon-Goals\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#audience\"\u003eAudience\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#how\"\u003eHow\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#scale-subresource\"\u003eScale subresource\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#graceful-scale-down-of-prometheus-servers\"\u003eGraceful scale-down of Prometheus Servers\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#scaling-up-after-scaling-down\"\u003eScaling up after scaling down\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#graceful-scale-down-of-prometheus-agents\"\u003eGraceful scale-down of Prometheus Agents\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#scale-down-alternatives\"\u003eScale-down alternatives\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#action-plan\"\u003eAction Plan\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eManaging Prometheus instances with highly variable workloads can be quite challenging. When the number of scraped targets can scale up and down between a few items to thousands over a short period of time (e.g. within a day), operators are forced to opt for the safest scenario, ending up with over-provisioned instances. Additionally, the WAL replay often becomes a problem after a restart as it takes a long time to be replayed into memory. Without available replicas, this leads to unnecessary downtime.\u003c/p\u003e\n\u003cp\u003eTo address these issues, this document outlines a solution to enhance the Prometheus Operator by enabling the usage of Horizontal Pod Autoscalers (HPAs) to scale shards up and down. This improvement aims to simplify the process of scaling Prometheus instances, making it more accessible and efficient for operators.\u003c/p\u003e\n\u003ch1 id=\"pitfalls-of-the-current-solution\"\u003ePitfalls of the current solution \u003ca href=\"#pitfalls-of-the-current-solution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003ePrometheus can scale vertically pretty well, but instances that grow up to hundreds of GiB/TiB in WAL size start face several challenges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEventual cardinality explosions have a big blast radius if a single Prometheus instance is responsible for scraping the majority of monitored applications.\u003c/li\u003e\n\u003cli\u003eRecovering from a crash takes several minutes due to the WAL replay.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhile the Prometheus and PrometheusAgent CRDs implement sharding for scrape configurations, there are still pending issues and missing features that prevent adoption.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnvironments where the load is undistributed throughout the day/week, operators need to constantly adjust number of shards or shard size.\u003c/li\u003e\n\u003cli\u003eScaling down Prometheus Servers causes data loss, as there\u0026rsquo;s no guarantee that stored data is persisted in centralized storage before the container is deleted.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eEnable scaling of the Prometheus shards up and down via Horizontal Pod Autoscaler objects.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"non-goals\"\u003eNon-Goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eImplement the autoscaling logic into the Prometheus operator.\u003c/li\u003e\n\u003cli\u003eAutomatic balancing of targets to ensure homogeneous load across all Prometheus pods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"audience\"\u003eAudience \u003ca href=\"#audience\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUsers looking for a shard autoscaling mechanism with a good cost-reliability ratio.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eToday, there are a few strategies to measure the load of Prometheus instances.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003ePerhaps you can use \u003ca href=\"https://kubernetes.io/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/#metrics-api\"\u003eKubernetes Metrics API\u003c/a\u003e to measure load in terms of CPU and/or Memory usage.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAnother strategy might be to measure the amount of samples ingested per second\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul\u003e\n\u003cli\u003ePrometheus Agents: \u003ccode\u003erate(prometheus_agent_samples_appended_total[5m])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePrometheus Servers: \u003ccode\u003erate(prometheus_tsdb_head_samples_appended_total[5m])\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003eOr even measuring samples queried per second for Prometheus instances under heavy query load.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul\u003e\n\u003cli\u003ePrometheus Servers: \u003ccode\u003erate(prometheus_engine_query_samples_total[5m])\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThese are all data that could be configured as input for different Horizontal Pod Autoscalers, but how do HPAs know if the amount of shard is bigger/lower than desired?\u003c/p\u003e\n\u003ch2 id=\"scale-subresource\"\u003eScale subresource \u003ca href=\"#scale-subresource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWhen working with any resource, including CRDs, HPAs depend on a
312subresource called \u003ca href=\"https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#scale-subresource\"\u003eScale\u003c/a\u003e. This proposal suggests to implement the scale subresource for the Prometheus and PrometheusAgent CRDs. Instead of working on the \u0026ldquo;replicas\u0026rdquo; count, it will operate on the \u0026ldquo;shards\u0026rdquo; count because the purpose of scaling up (resp. down) is to distribute the same number of targets across more (resp. less) Prometheus instances.\u003c/p\u003e\n\u003cp\u003eWith only this change, Prometheus Agents can already be horizontally scaled without problems, but for Prometheus Servers it gets a little more complicated.\u003c/p\u003e\n\u003ch2 id=\"graceful-scale-down-of-prometheus-servers\"\u003eGraceful scale-down of Prometheus Servers \u003ca href=\"#graceful-scale-down-of-prometheus-servers\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003ePrometheus Servers don\u0026rsquo;t behave like the usual stateless applications. A few cases require Prometheus pods to still be available even after a scale-down event is triggered:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThanos proxying queries back to the sidecars to retrieve data that hasn\u0026rsquo;t been uploaded to object storage yet.\u003c/li\u003e\n\u003cli\u003ePrometheus servers with long retention periods still hold data that users might want to query.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf the operator deletes Prometheus pods in excess during a scale-down operation, data loss will be a common problem, so a more complex strategy needs to be used here.\u003c/p\u003e\n\u003cp\u003eWe propose that Prometheus-Operator introduces a new \u003ccode\u003eshardRetentionPolicy\u003c/code\u003e field to the Prometheus CRD:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardRetentionPolicy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Default: Delete\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ewhenScaled\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRetain|Delete \u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# if not specified, the operator picks up the retention period if it\u0026#39;s defined,\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# otherwise (e.g. size-based retention) the statefulset lives forever.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eretain\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eretentionPeriod\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e3d\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eInspired by the \u
312003ca href=\"https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention\"\u003eStatefulSet API\u003c/a\u003e, when setting \u003ccode\u003e.shardRetentionPolicy.whenScaled\u003c/code\u003e is set to \u003ccode\u003eDelete\u003c/code\u003e the operator would simply delete the underlying StatefulSet on the spot, not caring about the data stored in that particular shard. Although not the safest approach, it is exactly the current behavior, and changing it might surprise a lot of users.\u003c/p\u003e\n\u003cp\u003eIf \u003ccode\u003e.shardRetentionPolicy.whenScaled\u003c/code\u003e is set to \u003ccode\u003eRetain\u003c/code\u003e Prometheus-Operator will keep the shard running for a customizable period of time. By default, the Operator will keep the Shard for the whole retention period, or forever if only size-based retention is defined. Alternatively, the user can define a custom retention period.\u003c/p\u003e\n\u003cp\u003eIf a retention time is defined, the deletion logic is controlled by an annotation present on the StatefulSet:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eoperator.prometheus.io/deletion-timestamp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eX\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOn scale downs, the configuration of all shards will be re-arranged to make sure that the \u0026ldquo;scaled-down\u0026rdquo; Prometheus pods don\u0026rsquo;t scrape targets anymore but they will still be available for queries.\u003c/p\u003e\n\u003cp\u003eWhen the deletion timestamp set in the annotation is reached, the Operator will trigger the deletion of the statefulset associated with the shard.\u003c/p\u003e\n\u003ch3 id=\"scaling-up-after-scaling-down\"\u003eScaling up after scaling down \u003ca href=\"#scaling-up-after-scaling-down\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eIf a scale-up event happens while the Prometheus pods marked for deletion are still running, the annotation will be removed and the scrape targets will be redistributed to all active shards.\u003c/p\u003e\n\u003cp\u003eWe intentionally don\u0026rsquo;t want to spin up new instances while others that are marked for deletion are still running as shard names and containers\u0026rsquo; environment variables that configure each shard\u0026rsquo;s target group will be too complex to coordinate.\u003c/p\u003e\n\u003ch2 id=\"graceful-scale-down-of-prometheus-agents\"\u003eGraceful scale-down of Prometheus Agents \u003ca href=\"#graceful-scale-down-of-prometheus-agents\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003ePrometheus Agents are different than servers since queries are not available in this mode. Their only responsibility is scraping metrics and pushing them via remote-write to a long-term storage backend, making the scale-down experience much easier to handle.\u003c/p\u003e\n\u003cp\u003eWhen receiving the SIGTERM signal, the Prometheus Agent should gracefully handle the signal by finishing all remote-write queues before ending the process. Prometheus-Operator, by default, adjusts the \u003ca href=\"https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination\"\u003eGraceful Termination Period\u003c/a\u003e of Prometheus/PrometheusAgent pods to 600s. Ten minutes should be enough for them to flush the remote-write queue, but, if needed, users can redefine Graceful Termination Period using \u003ca href=\"https://prometheus-operator.dev/docs/platform/strategic-merge-patch/\"\u003eStrategic Merge Patch\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eSince there\u0026rsquo;s no use case for retaining Prometheus Agents, its CRD will not be extended with the \u003ccode\u003eRetentionPolicy\u003c/code\u003e mentioned in \u003ca href=\"#graceful-scale-down-of-prometheus-servers\"\u003eGraceful scale-down of Prometheus Servers\u003c/a\u003e\u003c/p\u003e\n\u003ch1 id=\"scale-down-alternatives\"\u003eScale down Alternatives \u003ca href=\"#scale-down-alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003ch2 id=\"dump--backfill\"\u003eDump \u0026amp; Backfill \u003ca href=\"#dump--backfill\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eDuring scale-down, the Prometheus-Operator could read TSDB Blocks from the Prometheus instance being deleted and backfill it into another instance.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eAdvantages:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrometheus can be shut down immediately without data loss.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eDisadvantages:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLoading TSDB Blocks into memory is expensive, requiring Prometheus-Operator to run with big Memory/CPU requests.\u003c/li\u003e\n\u003cli\u003eComplex and hard to coordinate workflow. (Require restarts to reload TSDB blocks, hard to identify possible corruptions)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"snapshot--upload-on-s
312hutdown\"\u003eSnapshot \u0026amp; Upload on shutdown \u003ca href=\"#snapshot--upload-on-shutdown\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eDuring scale-down, Prometheus-Operator could send an HTTP request to \u003ca href=\"https://prometheus.io/docs/prometheus/latest/querying/api/#snapshot\"\u003ePrometheus\u0026rsquo; Snapshot endpoint\u003c/a\u003e. Thanos sidecar could be extended to watch the snapshot directory and automatically upload snapshots to Object storage.\u003c/p\u003e\n\u003cp\u003eThere is a related issue open already: https://github.com/thanos-io/thanos/issues/6263\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eAdvantages:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrometheus can be shut down immediately without data loss.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eDisadvantages:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrometheus running without Thanos sidecars won\u0026rsquo;t benefit from this strategy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"action-plan\"\u003eAction Plan \u003ca href=\"#action-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eRe-implement \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/pull/4735\"\u003ePull Request #4735\u003c/a\u003e, but this time focusing on Shards and making sure we add the \u003ca href=\"https://book.kubebuilder.io/reference/generating-crd.html#scale\"\u003eselectorpath to the scale subresource\u003c/a\u003e. Enabling horizontal autoscaling for Prometheus Agents.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement the graceful shutdown strategy of Prometheus servers.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n" 313 }, 314 { 315 id: 33, 316 href: "https://prometheus-operator.dev/docs/proposals/implemented/docs-restructuring/", 317 title: "Revamping Documentation Structure", 318 description: null, 319 content: "\u003cul\u003e\n\u003cli\u003eOwners:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AshwinSriram11\"\u003eAshwinSriram11\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eStatus:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eImplemented\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelated Tickets:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/3553#issuecomment-726733177\"\u003e#3553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/6046\"\u003e#6046\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eOther docs:\n\u003cul\u003e\n\u003cli\u003eN/A\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis document proposes restructuring the documentation of the Prometheus-Operator website, aiming for better content organization and better experience for new users and old veterans.\u003c/p\u003e\n\u003ch1 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eRestructuring the documentation will help in improving user experience and may save time for a user to search for relevant information effectively. This will encourage a newcomer to get familiar with the project in an efficient manner. The end goal of a good documentation is to follow the industrial best practices and provide accurate information to a user.\u003c/p\u003e\n\u003cp\u003eI believe that by restructuring, we can group the related topics together in an organized way and use cross-references to link topics that are difficult to group but are relevant for understanding. This makes the documentation more user-friendly and also ensures uniform flow of content.\u003c/p\u003e\n\u003cp\u003eAfter we have a proper structure, it will become relatively easy to add information about new features. Maintainers will be able to save time on deciding the best place for adding new content. Also, improving documentation will help in improving Search Engine Optimization(SEO) and increase the engagement of the project.\u003c/p\u003e\n\u003ch1 id=\"pitfalls-of-the-current-solution\"\u003ePitfalls of the current solution \u003ca href=\"#pitfalls-of-the-current-solution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eA good documentation is one that is easy to understand for a newcomer and provides the exact amount of information that is needed according to the need. But looking at the current documentation structure, a lot of topics seem misplaced. For example, there is no need for a \u003cstrong\u003e\u0026ldquo;Contributing\u0026rdquo;\u003c/strong\u003e page in the prologue section. Prologue section should only give the introduction and the prerequisites for the project. Due to this, a user might need to put more effort to search for relevant information and this might decrease the user\u0026rsquo;s productivity.\u003c/p\u003e\n\u003cp\u003eCurrently, there is some unnecessary information from the documentation creating misconceptions in the user\u0026rsquo;s mind. For example, let us look at \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/6046\"\u003e#6046\u003c/a\u003e which tells us that there is no Ingress Guide present in the current documentation. But, if we look at the website, there are links to the \u003cstrong\u003eâIngress Guideâ\u003c/strong\u003e on the \u003ca href=\"https://prometheus-operator.dev/docs/developer/getting-started/#exposing-the-prometheus-service\"\u003eGetting-Started\u003c/a\u003e and \u003ca href=\"https://prometheus-operator.dev/docs/developer/alerting/#exposing-the-alertmanager-service\"\u003eAlerting page\u003c/a\u003e in \u003cstrong\u003eUser-Guide\u003c/strong\u003e. Due to this, many users will report the same issue and it will take time for maintainers to resolve them.\u003c/p\u003e\n\u003cp\u003eIncorporation of new topics is also difficult if the structure is not up to mark because more time and effort is needed to decide the best place to add a topic which can often lead to decrease in productivity of a maintainer. For example, in issue \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/3553#issuecomment-726733177\"\u003e#3553\u003c/a\u003e, it has been mentioned that basic architecture needs to be worked upon before adding the diagram as there is no section talking about \u
319003cstrong\u003eânamespace selectionâ\u003c/strong\u003e in the current documentation.\u003c/p\u003e\n\u003ch1 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eTo improve readability and make the documentation easier to understand.\u003c/li\u003e\n\u003cli\u003eTo ensure a uniform flow of content.\u003c/li\u003e\n\u003cli\u003eTo remove irrelevant information from the documentation.\u003c/li\u003e\n\u003cli\u003eTo ensure that all new features get documented properly in the future.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"audience\"\u003eAudience \u003ca href=\"#audience\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDevelopers who want to configure monitoring for their applications.\u003c/li\u003e\n\u003cli\u003eDevelopers who want to set up alerts for their application.\u003c/li\u003e\n\u003cli\u003ePlatform engineers who want to monitor Prometheus and Alertmanager instances and manage the infrastructure.\u003c/li\u003e\n\u003cli\u003eMaintainers who are responsible for optimizing Prometheus Operator.\u003c/li\u003e\n\u003cli\u003eContributors who want to engage and want to contribute effectively to the project.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"non-goals\"\u003eNon-Goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdding extra documentation about new features, enhancements, troubleshooting, or other information that might be missing today.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eI believe a basic structure for the website should be as given below:\u003c/p\u003e\n\u003ch3 id=\"1-getting-started\"\u003e1. Getting Started \u003ca href=\"#1-getting-started\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eIntroduction\u003c/strong\u003e - This section will introduce us to Prometheus-Operator and will talk about goals and the problems that are being solved by this project.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInstallation Guide\u003c/strong\u003e - This section will contain all the methods of installation of Prometheus-Operator in the production environment.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCompatibility\u003c/strong\u003e - This section will provide information about compatibility of Prometheus-Operator with Kubernetes, Prometheus, Alertmanager and Thanos.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDesign\u003c/strong\u003e - This section will describe the design of Prometheus-Operator focusing on the various custom resource definitions(CRDs) it manages.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"2-api-reference\"\u003e2. API Reference \u003ca href=\"#2-api-reference\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThis section will provide detailed information about different fields of the Custom Resources in Prometheus-Operator(config, spec, status and other information).\u003c/p\u003e\n\u003ch3 id=\"3-developer-guide\"\u003e3. Developer Guide \u003ca href=\"#3-developer-guide\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThis section will provide detailed information for developers on how to configure monitoring for their applications. This section will teach on how to define and manage \u003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e and \u003ccode\u003ePrometheusRule\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eFrom the current documentation,following topics will come under this section:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGetting Started\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eScrapeConfig CRD\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAlerting\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"4-platform-guide\"\u003e4. Platform Guide \u003ca href=\"#4-platform-guide\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThis section will explain how to set up, configure and manage Prometheus Operator infrastru
319cture. It will explain about managing Prometheus, Alertmanager instances, setting up persistent storage for different resources, instructions on implementing Role-Based Access Control (RBAC) and much more.\u003c/p\u003e\n\u003cp\u003eFrom the current documentation, following topics will come under this section:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAdmission Webhook\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrometheus Agent\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThanos\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRBAC\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRBAC for CRDs\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHigh Availability\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStorage\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStrategic Merge Patch\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCLI Reference\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"5-community\"\u003e5. Community \u003ca href=\"#5-community\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eContributing\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTesting\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDCO\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCode of Conduct\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelease\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe reasoning behind the new structure is given below -\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003cstrong\u003eâGetting-Startedâ\u003c/strong\u003e section should only serve information on how to begin your journey with the project. So, the first thing that comes to mind should be a basic overview followed by the installation. It wonât make sense to have the installation section appear in the User-Guide(in the current model) because installation is the foremost important thing to begin working on a project. With installation, users would also like to know the different releases and their compatibility, thus it makes more sense to add this topic just below the installation section. At last, Design doc should be present to give an overview of how different components interact and what their purpose is in a concise manner.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAPI Reference is of extreme importance and is something needed by developers to implement the functionalities they need. It is something needed by both a \u003cstrong\u003eDeveloper\u003c/strong\u003e and a \u003cstrong\u003ePlatform Engineer\u003c/strong\u003e. As it is common for both personas, I think rather than duplicating this page in both sections, we should have a separate section for it due to its relevance. Further, looking at the current API reference page, it contains too much information for a single page. This makes the page look overly crowded and searching for any particular field becomes a tedious task. We can convert this page into multiple pages by grouping sections and cross-reference properly which will provide a better experience for a user.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eI felt that \u003cstrong\u003eDeveloper-Guide\u003c/strong\u003e is placed before \u003cstrong\u003ePlatform-Guide\u003c/strong\u003e keeping in mind the difficulties a newcomer faces when he/she starts working on a project. Developer-Guide contains relatively easier examples and provides a beginner level experience. But when we move on to the Platform-Guide, we will find more advanced situations like security, storage which would be more complex compared to topics mentioned in Developer Guide. Thus, this structure provides a uniform flow with context to difficulty level for a newcomer as well as segregates relevant information according to the persona.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAs mentioned in the audience, we also have people who want to contribute to the project. So, making a \u003cstrong\u003eâCommunityâ\u003c/strong\u003e section serves the purpose of providing users to find how to contribute to the project. Also, it provides other community related information like release, code od conduct, and other topics which are not provided in the current model.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe will move the \u003cstrong\u003eKube-Prometheus\u003c/strong\u003e section as separate docs but on the same website. We will provide a link for Kube-Prometheus (beside Docs and Adopters) in the top-navigation bar which will direct us to dedicated docs for Kube-Prometheus. This is being done to avoid overlapping the concepts of Prometheus Operator with those of Kube-Prometheus. However, we can mention the method of deploying Prometheus-Operator with Kube-Prometheus in the installation section due to its ease and popularity among users.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTo make the documentation organization better according to the new structure and keep things in sync with the \u003cstrong\u003eprometheus-operator/web
319site\u003c/strong\u003e repository, we should reorganize the folders as they are in the \u003cstrong\u003ewebsite\u003c/strong\u003e repository. This will make it easier to work with both the repositories for a contributor and will help in better organization. This will also make it easier to locate the file in which changes need to be made.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"action-plan\"\u003eAction Plan \u003ca href=\"#action-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003col\u003e\n\u003cli\u003eMaking sections and organizing files as described above.\u003c/li\u003e\n\u003cli\u003eIf needed, splitting the content of one file into multiple files to improve readability or changing the location of content wherever required.\u003c/li\u003e\n\u003cli\u003eRemoving content that is unnecessary for the project.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch1 id=\"follow-ups\"\u003eFollow-Ups \u003ca href=\"#follow-ups\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eAfter we successfully complete the Goals of this proposal, we can move on with the Non-Goals section. As mentioned, the next step would be to add the documentation for the topics that are currently missing.\u003c/p\u003e\n\u003cp\u003eAnother follow-up to this proposal would be to integrate version-specific documentation.\u003c/p\u003e\n" 320 }, 321 { 322 id: 34, 323 href: "https://prometheus-operator.dev/docs/proposals/implemented/status-subresource/", 324 title: "Status subresource for Prometheus operator Workload CRDs", 325 description: null, 326 content: "\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eOwners:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simonpasquier\"\u003esimonpasquier\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStatus:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eImplemented\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelated Tickets:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOther docs:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eN/A\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis proposal describes how we will extend the Prometheus operator workload Custom\nResource Definitions (CRDs) with a Status subresource field.\u003c/p\u003e\n\u003ch2 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eCore Kubernetes resources differentiate between the desired state of an object\n(the \u003ccode\u003espec\u003c/code\u003e field) and the current status of the object (the \u003ccode\u003estatus\u003c/code\u003e field)\n\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\u003edetails\u003c/a\u003e.\nBefore this proposal, the current status of the objects was never reflected by\nthe Prometheus operator which makes it harder for external actors to know if\nthe underlying resource is available or not.\u003c/p\u003e\n\u003ch3 id=\"pitfalls-of-the-current-solution\"\u003ePitfalls of the current solution \u003ca href=\"#pitfalls-of-the-current-solution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThough some of the custom resource definitions expose already a \u003ccode\u003eStatus\u003c/code\u003e\nsubresource, the Prometheus operator never updates the status subresource and\nit is only possible to retrieve the information via the custom API exposed by\nthe operatorâs web service. This makes it harder than necessary for users to\nknow if the declared resources are ready and to understand why if they arenât.\u003c/p\u003e\n\u003ch2 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefine the structure of the status subresource for the custom resource\ndefinitions that materialize as Pod objects.\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAlertmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePrometheus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePrometheusAgent\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eThanosRuler\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDefine how the operator would reconcile the status subresource.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"non-goals\"\u003eNon-goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement the status subresource for configuration objects like\n\u003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003ePrometheusRule\u003c/code\u003e, \u003ccode\u003eProbe\u003c/code\u003e and \u003ccode\u003eScrapeConfig\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eThe main difficulty is that a \u003ccode\u003eServiceMonitor\u003c/code\u003e object for instance can be\nreconciled by different objects. It brings more complexity in terms of API\ndefinition as well as implementation.\u003c/li\u003e\n\u003cli\u003eThis will be addressed in a separate proposal.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtend the status subresource beyond what the operator can infer from the\ncore Kubernetes API.\u003c/li\u003e\n\u003cli\u003eEmit events on resource updates.\
326n\u003cul\u003e\n\u003cli\u003eOnce the operator implements status subresources, it seems a natural\nevolution to generate events on status changes but this isn\u0026rsquo;t in the scope\nof this proposal.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"background\"\u003eBackground \u003ca href=\"#background\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe status subresource is a well-defined concept in Kubernetes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#status-subresource\"\u003eKubernetes documentation\u003c/a\u003e about custom resource definitions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties\"\u003eKubernetes API conventions\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://book-v1.book.kubebuilder.io/basics/status_subresource.html\"\u003ekubebuilder\u003c/a\u003e documentation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://sdk.operatorframework.io/docs/building-operators/golang/advanced-topics/#manage-cr-status-conditions\"\u003eOperatorSDK\u003c/a\u003e documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAs much as possible, the proposal follows the recommendations established by the Kubernetes community.\u003c/p\u003e\n\u003ch2 id=\"api\"\u003eAPI \u003ca href=\"#api\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"prometheus\"\u003ePrometheus \u003ca href=\"#prometheus\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe Prometheus CRD has a \u003ccode\u003eStatus\u003c/code\u003e subresource that exposes the following fields:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePaused\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eReplicas\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUpdatedReplicas\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eAvailableReplicas\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUnavailableReplicas\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe propose to add the following new fields:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eConditions\u003c/code\u003e as recommended by the document describing the \u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties\"\u003eKubernetes API conventions\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eShardStatuses\u003c/code\u003e which is a drilled-down status for each Prometheus shard.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-golang\" data-lang=\"golang\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003etype\u003c/span\u003e \u003cspan class=\"nx\"\u003ePrometheusStatus\u003c/span\u003e \u003cspan class=\"kd\"\u003estruct\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Represents whether any actions on the underlying managed objects are\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// being performed. Only delete actions will be performed.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003ePaused\u003c/span\u003e \u003cspan class=\"kt\"\u003ebool\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;paused\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of non-terminated pods targeted by this Prometheus deployment\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// (their labels match the selector).\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;replicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of non-terminated pods targeted by this Prometheus deployment\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// that have the desired version spec.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eUpdatedReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;updatedReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of available pods (ready for at least minReadySeconds)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// targeted by this Prometheus deployment.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eAvailableReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;availableReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of unavailable pods targeted by this Prometheus deployment.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eUnavailableReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;unavailableReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// The current state of the Prometheus deployment.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +listType=map\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +listMapKey=type\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +optional\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eConditions\u003c/span\u003e \u003cspan class=\"p\"\u003e[]\u003c/span\u003e\u003cspan class=\"nx\"\u003eCondition\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;conditions,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// The list has one entry per shard. Each entry provides a summary of the shard status.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +listType=map\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +listMapKey=shardID\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +optional\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eShardStatuses\u003c/span\u003e \u003cspan class=\"p\"\u003e[]\u003c/span\u003e\u003cspan class=\"nx\"\u003eShardStatus\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;shardStatuses,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Shards is the most recently observed number of shards.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eShards\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;shards,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// The selector used to match the pods targeted by this Prometheus resource.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eSelector\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;selector,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// Condition represents the state of the resources associated with the\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// Prometheus, Alertmanager or ThanosRuler resource.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// +k8s:deepcopy-gen=true\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\u003cspan class=\"kd\"\u003etype\u003c/span\u003e \u003cspan class=\"nx\"\u003eCondition\u003c/span\u003e \u003cspan class=\"kd\"\u003estruct\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Type of the condition being reported.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +required\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eType\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionType\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;type\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Status of the condition.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +required\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eStatus\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionStatus\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;status\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// lastTransitionTime is the time of the last update to the current status property.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +required\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eLastTransitionTime\u003c/span\u003e \u003cspan class=\"nx\"\u003emetav1\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eTime\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;lastTransitionTime\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Reason for the condition\u0026#39;s last transition.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +optional\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eReason\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;reason,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Human-readable message indicating details for the condition\u0026#39;s last transition.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +optional\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eMessage\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;message,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// ObservedGeneration represents the .metadata.generation that the\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// condition was set based upon. For instance, if `.metadata.generation` is\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// currently 12, but the `.status.conditions[].observedGe
326neration` is 9, the\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// condition is out of date with respect to the current state of the\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// instance.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eObservedGeneration\u003c/span\u003e \u003cspan class=\"kt\"\u003eint64\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;observedGeneration,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003etype\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionType\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003econst\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Available indicates whether enough pods are ready to provide the\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// service.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// The possible status values for this condition type are:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// - True: all pods are running and ready, the service is fully available.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// - Degraded: some pods aren\u0026#39;t ready, the service is partially available.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// - False: no pods are running, the service is totally unavailable.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// - Unknown: the operator couldn\u0026#39;t determine the condition status.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eAvailable\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionType\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Available\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Reconciled indicates whether the operator has reconciled the state of\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// the underlying resources with the object\u0026#39;s spec.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// The possible status values for this condition type are:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// - True: the reconciliation was successful.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// - False: the reconciliation failed.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// - Unknown: the operator couldn\u0026#39;t determine the condition status.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eReconciled\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionType\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Reconciled\u0026#34;
326\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003etype\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionStatus\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003econst\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003eConditionTrue\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionStatus\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;True\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003eConditionDegraded\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionStatus\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Degraded\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003eConditionFalse\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionStatus\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;False\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003eConditionUnknown\u003c/span\u003e \u003cspan class=\"nx\"\u003eConditionStatus\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Unknown\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eExample of a Prometheus resource\u0026rsquo;s status for which all pods are up and running:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econditions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2024-09-10T14:24:26Z\u0026#34;
326\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;True\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAvailable\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2024-09-10T14:24:26Z\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;True\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eReconciled\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epaused\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eapp.kubernetes.io/instance=prometheus,app.kubernetes.io/managed-by=prometheus-operator,app.kubernetes.io/name=prometheus,operator.prometheus.io/name=prometheus,prometheus=prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardStatuses\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardID\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;0\u0026#34;
326\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eunavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eupdatedReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardID\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;1\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eunavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eupdatedReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eunavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e0\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eupdatedReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eExample of a Prometheus resource\u0026rsquo;s status for which some pods are missing due to scheduling issues:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econditions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2024-09-10T14:31:29Z\u0026#34;
326\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e|-\u003c/span\u003e\u003cspan class=\"sd\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e shard 0: pod prometheus-prometheus-1: 0/1 nodes are available: 1 node(s) didn\u0026#39;t match pod anti-affinity rules. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sd\"\u003e shard 1: pod prometheus-prometheus-shard-1-1: 0/1 nodes are available: 1 node(s) didn\u0026#39;t match pod anti-affinity rules. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.\u003c/span\u003e\u003cspan class=\"w\"\u003e \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e5\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eSomePodsNotReady\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eDegraded\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAvailable\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2024-09-10T14:31:29Z\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e5\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;
326\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;True\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eReconciled\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epaused\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eapp.kubernetes.io/instance=prometheus,app.kubernetes.io/managed-by=prometheus-operator,app.kubernetes.io/name=prometheus,operator.prometheus.io/name=prometheus,prometheus=prometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardStatuses\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardID\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;0\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eunavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eupdatedReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardID\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;1\u0026#34;
326\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eunavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eupdatedReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eunavailableReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eupdatedReplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"alertmanager\"\u003eAlertmanager \u003ca href=\"#alertmanager\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe subresource status for the Alertmanager custom resource definition should\nbe very similar to the API defined for the Prometheus CRD. The main difference\nis that we don\u0026rsquo;t need the \u003ccode\u003eshardStatuses\u003c/code\u003e field.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-golang\" data-lang=\"golang\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003etype\u003c/span\u003e \u003cspan class=\"nx\"\u003eAlertmanagerStatus\u003c/span\u003e \u003cspan class=\"kd\"\u003estruct\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Represents whether any actions on the underlying managed objects are\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// being performed. Only delete actions will be performed.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003ePaused\u003c/span\u003e \u003cspan class=\"kt\"\u003ebool\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;paused\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of non-terminated pods targeted by this Alertmanager\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// object (their labels match the selector).\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;replicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of non-terminated pods targeted by this Alertmanager\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// object that have the desired version spec.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eUpdatedReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;updatedReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of available pods (ready for at least minReadySeconds)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// targeted by this Alertmanager cluster.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eAvailableReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;availableReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of unavailable pods targeted by this Alertmanager object.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eUnavailableReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;unavailableReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// The selector used to match the pods targeted by this Alertmanager object.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eSelector\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;selector,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// The current state of the Alertmanager object.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +listType=map\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +listMapKey=type\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +optional\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eConditions\u003c/span\u003e \u003cspan class=\"p\"\u003e[]\u003c/span\u003e\u003cspan class=\"nx\"\u003eCondition\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;conditions,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"thanos-ruler\"\u003eThanos Ruler \u003ca href=\"#thanos-ruler\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe subresource status for the Thanos Ruler custom resource definition is\nidentical to the Alertmanager CRD.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-golang\" data-lang=\"golang\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003etype\u003c/span\u003e \u003cspan class=\"nx\"\u003eThanosRulerStatus\u003c/span\u003e \u003cspan class=\"kd\"\u003estruct\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Represents whether any actions on the underlying managed objects are\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// being performed. Only delete actions will be performed.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003ePaused\u003c/span\u003e \u003cspan class=\"kt\"\u003ebool\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;paused\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of non-terminated pods targeted by this ThanosRuler deployment\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// (their labels match the selector).\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;replicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of non-terminated pods targeted by this ThanosRuler deployment\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// that have the desired version spec.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eUpdatedReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;updatedReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of available pods (ready for at least minReadySeconds)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// targeted by this ThanosRuler deployment.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eAvailableReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;availableReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// Total number of unavailable pods targeted by this ThanosRuler deployment.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eUnavailableReplicas\u003c/span\u003e \u003cspan class=\"kt\"\u003eint32\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;unavailableReplicas\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"c1\"\u003e// The current state of the ThanosRuler object.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +listType=map\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +listMapKey=type\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"c1\"\u003e// +optional\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"nx\"\u003eConditions\u003c/span\u003e \u003cspan class=\"p\"\u003e[]\u003c/span\u003e\u003cspan class=\"nx\"\u003eCondition\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;conditions,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"alternatives\"\u003eAlternatives \u003ca href=\"#alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2 id=\"action-plan\"\u003eAction Plan \u003ca href=\"#action-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n" 327 }, 328 { 329 id: 35, 330 href: "https://prometheus-operator.dev/docs/proposals/accepted/", 331 title: "Accepted Proposals", 332 description: "Proposals accepted for implementation", 333 content: "" 334 }, 335 { 336 id: 36, 337 href: "https://prometheus-operator.dev/docs/proposals/accepted/agent-daemonset/", 338 title: "DaemonSet deployment for Prometheus Agent", 339 description: null, 340 content: "\u003cul\u003e\n\u003cli\u003eOwners:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haanhvu\"\u003ehaanhvu\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slashexx\"\u003eslashexx\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eStatus:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAccepted\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRelated Tickets:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eOther docs:\n\u003cul\u003e\n\u003cli\u003en/a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis proposal is about designing and implementing the deployment of Prometheus Agent as DaemonSet. Currently, Prometheus Agent can only be deployed as StatefulSet, which could be considered as âcluster-wideâ strategy, meaning one o
340r several high-availability Prometheus Agents are responsible for scraping metrics of the whole cluster. Though this works well for many use cases, some use cases may indeed prefer a ânode-specificâ strategy (DaemonSet), where Prometheus Agent pods scale with the nodes and only scrape the metrics from the targets located on the same node.\u003c/p\u003e\n\u003ch2 id=\"1-why\"\u003e1. Why \u003ca href=\"#1-why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWhen deploying Prometheus Agent in Kubernetes, two of the biggest usersâ concerns are load distribution and scalability.\u003c/p\u003e\n\u003cp\u003eDaemonSet deployment is a good solution for these:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLoad distribution: Each Prometheus Agent pod will only scrape the targets located on the same node. Even though the targets on some nodes may produce more metrics than other nodes, the load distribution is reliable enough. This has been proven in \u003ca href=\"https://github.com/GoogleCloudPlatform/prometheus-engine/\"\u003eGoogle Cloud Managed Service for Prometheus (GMP)\u0026rsquo;s operator\u003c/a\u003e which follows a similar approach.\u003c/li\u003e\n\u003cli\u003eAutomatic scalability: When new nodes are added to the cluster, new Prometheus Agent pods will be automatically deployed to those nodes. Similarly, at some durations when some nodes are not needed and removed from the cluster, Prometheus Agent pods on those nodes will also be removed. Users can also select which set of nodes they want to deploy Prometheus Agent and the priority of Prometheus Agent pods compared to other pods on the same node.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDaemonSet deployment is especially more suitable for Prometheus Agent than Prometheus because the Agent mode is customized for collect-and-forward approach, so it\u0026rsquo;s more lightweight. In specific, it requires (currently around 20 to 30%) less memory, does not produce TSDB blocks on disks, and naturally blocks querying APIs and rule distribution.\u003c/p\u003e\n\u003cp\u003eThis deployment mode has been implemented and proven in the Google Cloud Kubernetes Engine (GKE) with \u003ca href=\"https://github.com/GoogleCloudPlatform/prometheus-engine/\"\u003eGoogle Cloud Managed Service for Prometheus (GMP)\u0026rsquo;s operator\u003c/a\u003e, so we can learn from their cases and collaborate for shared improvements.\u003c/p\u003e\n\u003ch2 id=\"2-pitfalls-of-the-current-solution\"\u003e2. Pitfalls of the current solution \u003ca href=\"#2-pitfalls-of-the-current-solution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe key pitfalls of managing load distribution and scalability with the current StatefulSet deployment are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThey are done on the cluster scope. In other words, since one or several high-availability Prometheus Agents are responsible for scraping metrics of the whole cluster, users need to calculate/estimate the load and scalability of the whole cluster to decide on replicas and sharding strategies. Estimating cluster-wide load and scalability is a much harder task than estimating node-wide load and scalability.\u003c/li\u003e\n\u003cli\u003eStatefulSet inherently doesn\u0026rsquo;t scale alongside the scale of nodes. So there may be situations where more or less existing Prometheus Agent pods are needed for the scraped load. Even though users can use helping tools like Horizontal Pod Autoscaler (HPA), that\u0026rsquo;s still additional complexity.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis is not to say that DaemonSet is superior to StatefulSet. StatefulSet also has its own advantages, such as easier storage handling. This is to say that DaemonSet can solve some of the existing problems in StatefulSet, and vice versa. So DaemonSet is a good deployment option to implement besides StatefulSet. Users can choose to use one or both of them, depending on their cases.\u003c/p\u003e\n\u003ch2 id=\"3-audience\"\u003e3. Audience \u003ca href=\"#3-audience\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eUsers with use cases where scraped load is very large or hard to estimate and/or scalability is hard to predict, so they need a simple way to manage load distribution and scalability. They may apply DaemonSet deployment on the whole cluster or only some nodes according to their needs.\u003c/p\u003e\n\u003cp\u003eAn example of audience is expressed \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/5495#issuecomment-1519812510\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"4
340-goals\"\u003e4. Goals \u003ca href=\"#4-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eProvide an MVP version of the DaemonSet deployment of Prometheus Agent to the Audience.\nIn specific, the MVP will need to:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAllow users to deploy one Prometheus Agent pod per node.\u003c/li\u003e\n\u003cli\u003eAllow users to restrict which set of nodes they want to deploy Prometheus Agent, if desired.\u003c/li\u003e\n\u003cli\u003eAllow users to set the priority of Prometheus Agent pod compared to other pods on the same node, if desired.\u003c/li\u003e\n\u003cli\u003eAllow each Prometheus Agent pod to only scrape from the pods from PodMonitor that run on the same node.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"5-non-goals\"\u003e5. Non-Goals \u003ca href=\"#5-non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis proposal only aims at Prometheus Agent, not Prometheus.\u003c/p\u003e\n\u003cp\u003eOther non-goals are the features that are not easy to implement and require more investigation. We will need to investigate whether there are actual user needs for them, if yes, then how to best implement them. We can also learn from similar projects such as OpenTelemetry Operator (they have DaemonSet mode) and Grafana Agent on how they approach these problems and what we can apply for our cases. Weâll handle these after the MVP. Those (currently) non-goals features are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eServiceMonitor support: There\u0026rsquo;s a performance issue regarding this feature. Since each Prometheus Agent running on a node requires one watch, making all Prometheus Agent pods watch all endpoints will put a huge stress on Kubernetes API server. This is the main reason why GMP hasnât supported this, even though there are user needs stated in some issues (\u003ca href=\"https://github.com/GoogleCloudPlatform/prometheus-engine/issues/362\"\u003e#362\u003c/a\u003e, \u003ca href=\"https://github.com/GoogleCloudPlatform/prometheus-engine/issues/192\"\u003e#192\u003c/a\u003e). However, as discussed with Danny from GMP \u003ca href=\"https://github.com/GoogleCloudPlatform/prometheus-engine/issues/192#issuecomment-2028850846\"\u003ehere\u003c/a\u003e, ServiceMonitor support based on EndpointSlice seems like a viable approach. Weâll investigate this further after the MVP.\u003c/li\u003e\n\u003cli\u003eStorage: We will need to spend time studying more about the WAL, different storage solutions provided by Kubernetes, and how to gracefully handle storage in different cases of crashes. For example, thereâs an \u003ca href=\"https://github.com/prometheus/prometheus/issues/8809\"\u003eissue in Prometheus\u003c/a\u003e showing that samples may be lost if remote write didnât flush cleanly. Weâll investigate these further after the MVP.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIn the MVP version, we will not allow users to directly switch from a live StatefulSet to DaemonSet deployment. Reasons are explained in the CRD subsection in the How section.\u003c/p\u003e\n\u003ch2 id=\"6-how\"\u003e6. How \u003ca href=\"#6-how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe MVP version of DaemonSet deployment will be put behind a feature flag.\u003c/p\u003e\n\u003ch3 id=\"61-crd\"\u003e6.1. CRD: \u003ca href=\"#61-crd\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eCurrently, we already have a PrometheusAgent CRD that supports StatefulSet deployment. Weâll add new field(s) in this CRD to enable DaemonSet deployment.\u003c/p\u003e\n\u003cp\u003eThe reason for enhancing existing CRD (instead of introducing a new CRD) is it would take less time to finish the MVP. Weâll let users experiment with the MVP, and in case users report a separate CRD is needed, weâll separate the logic of DaemonSet deployment into a new CRD later.\u003c/p\u003e\n\u003cp\u003eThe current \u003ca href=\"https://prometheus-operator.dev/docs/platform/prometheus-agent/\"\u003ePrometheusAgent CRD\u003c/a\u003e already has sufficient fields for the DaemonSet deployment. The DaemonSet deployment can use all the existing fields in the CRD except the ones related to:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSelectors for service, probe, ScrapeConfig\u003c/li\u003e\n\u003cli\u003eReplica\u003c/li\u003e\n\u003cli\u003eShard\u003c/li\u003e\n\u003cli\u003eStorage\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe will add a new \u003ccode\u003emode\u003c/code\u003e field that accepts either \u003ccode\u003eStatefulSet\u003c/code\u003e or \u003ccode\u003eDaemonSet\u003c/code\u003e, with \u003ccode\u003eStatefulSet\u003c/code\u003e being the default. If the DaemonSet mode is activated (\u003ccode\u003emode: DaemonSet\u003c/code\u003e), all the unrelated fields listed above will not be accepted. In the MVP, we will simply fail the reconciliation if any of those fields are set. We will prevent users to directly switch from a live StatefulSet setup to DaemonSet, because that might break their workload if they forget to unset the unsupported fields. Following up, we will leverage validation rules with \u003ca href=\"https://kubernetes.io/docs/reference/using-api/cel/\"\u003eKubernetes\u0026rsquo; Common Expression Language (CEL)\u003c/a\u003e. Only then, we will allow switching from a live StatefulSet setup to DaemonSet. We already have an issue for CEL \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/5079\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch4 id=\"611-cel-validation-rules\"\u003e6.1.1 CEL Validation rules \u003ca href=\"#611-cel-validation-rules\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eWhen \u003ccode\u003emode:DaemonSet\u003c/code\u003e, the following CEL rules will be applied to prevent access to these fields:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ereplicas\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estorage\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eshards\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epersistentVolumeClaimRetentionPolicy\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003escrapeConfigSelector\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003escrapeConfigNamespaceSelector\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprobeSelector\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprobeNamespaceSelector\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eserviceMonitorSelector\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eserviceMonitorNamespaceSelector\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadditionalScrapeConfigs\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis is implemented by adding \u003ccode\u003ex-kubernetes-vali
340dations\u003c/code\u003e like:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ex-kubernetes-validations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;self.mode == \u0026#39;DaemonSet\u0026#39; ? !has(self.replicas) : true\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;replicas field is not allowed when mode is \u0026#39;DaemonSet\u0026#39;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;self.mode == \u0026#39;DaemonSet\u0026#39; ? !has(self.storage) : true\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;storage field is not allowed when mode is \u0026#39;DaemonSet\u0026#39;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;self.mode == \u0026#39;DaemonSet\u0026#39; ? !has(self.shards) : true\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;shards field is not allowed when mode is \u0026#39;DaemonSet\u0026#39;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;self.mode == \u0026#39;DaemonSet\u0026#39; ? !has(self.persistentVolumeClaimRetentionPolicy) : true\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;persistentVolumeClaimRetentionPolicy field is not allowed when mode is \u0026#39;DaemonSet\u0026#39;\u0026#34;
340\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.scrapeConfigSelector))\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;scrapeConfigSelector cannot be set when mode is DaemonSet\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.probeSelector))\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;probeSelector cannot be set when mode is DaemonSet\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.probeNamespaceSelector))\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;probeNamespaceSelector cannot be set when mode is DaemonSet\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.scrapeConfigNamespaceSelector))\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;scrapeConfigNamespaceSelector cannot be set when mode is DaemonSet\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.serviceMonitorSelector))\u0026#34;
340\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;serviceMonitorSelector cannot be set when mode is DaemonSet\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.serviceMonitorNamespaceSelector))\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;serviceMonitorNamespaceSelector cannot be set when mode is DaemonSet\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erule\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.additionalScrapeConfigs))\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;additionalScrapeConfigs cannot be set when mode is DaemonSet\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"612-runtime-validation-logic-as-fallback\"\u003e6.1.2 Runtime Validation Logic as Fallback \u003ca href=\"#612-runtime-validation-logic-as-fallback\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eCEL validation will provide immediate feedback during \u003ccode\u003ekubectl apply\u003c/code\u003e but we will need runtime validation logic in the controller as a fallback mechanism. This fallback will be integrated directly in the \u003ccode\u003ePrometheusAgent\u003c/code\u003e reconciler loop.\u003c/p\u003e\n\u003cp\u003eThis is mainly because :\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCEL validation will require Kubernetes version 1.25+ and hence not all users might have CEL supported clusters.\u003c/li\u003e\n\u003cli\u003eThis will provide an in-depth defense mechanism against misconfigurations.\u003c/li\u003e\n\u003cli\u003eMore detailed error response in case the first layer of defense fails.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-go\" data-lang=\"go\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eMode\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;DaemonSet\u0026#34;
340\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eReplicas\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure replicas when using DaemonSet mode\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eStorage\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure storage when using DaemonSet mode\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eShards\u003c/span\u003e \u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;shards cannot be greater than 1 when mode is DaemonSet\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003ePersistentVolumeClaimRetentionPolicy\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure persistentVolumeClaimRetentionPolicy when using DaemonSet mode\u0026#34;
340\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eScrapeConfigSelector\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure scrapeConfigSelector when using DaemonSet mode\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eProbeSelector\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure probeSelector when using DaemonSet mode\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eProbeNamespaceSelector\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure probeNamespaceSelector when using DaemonSet mode\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eScrapeConfigNamespaceSelector\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure scrapeConfigNamespaceSelector when using DaemonSet mode\u0026#34;
340\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eServiceMonitorSelector\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure serviceMonitorSelector when using DaemonSet mode\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eServiceMonitorNamespaceSelector\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure serviceMonitorNamespaceSelector when using DaemonSet mode\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eAdditionalScrapeConfigs\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"kc\"\u003enil\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nx\"\u003efmt\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eErrorf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;cannot configure additionalScrapeConfigs when using DaemonSet mode\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"62-node-detecting\"\u003e6.2. Node detecting: \u003ca href=\"#62-node-detecting\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAs pointed out in \u003ca href=\"https://www.youtube.com/watch?v=yk2aaAyxgKw\"\u003eDanny from GMPâs talk\u003c/a\u003e, to make Prometheus Agent DaemonSet know which node itâs on, we can use \u003ca href=\"https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/\"\u003eKubernetesâ downward API\u003c/a\u003e. In \u003ccode\u003econfig-reloader\u003c/code\u003e container, we can mount the node name as an environment variable like this:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003econtainers:\n- name: config-reloader\n env:\n - name: NODE_NAME\n valueFrom:\n fieldRef:\n apiVersion: v1\n fieldPath: spec.nodeName\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"63-targets-filter
340ing-for-pods-podmonitor-support\"\u003e6.3. Targets filtering for pods (PodMonitor support): \u003ca href=\"#63-targets-filtering-for-pods-podmonitor-support\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTo filter pod targets, Dannyâs talk has pointed out the best option is to use field selector:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ekubernetes_sd_configs:\n- role: pod\n selectors:\n - role: pod\n field: spec.nodeName=$NODE_NAME\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eWe\u0026rsquo;ll go with this option, because it filters targets right at discovery time, and also because Kubernetes API server watch cache indexes pods by node name (as we can see in \u003ca href=\"https://github.com/kubernetes/kubernetes/blob/v1.30.0-rc.0/pkg/registry/core/pod/storage/storage.go#L91\"\u003eKubernetes codebase\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eWe\u0026rsquo;ve also considered using relabel config that filters pods by \u003ccode\u003e__meta_kubernetes_pod_node_name\u003c/code\u003e label. However, we didn\u0026rsquo;t choose to go with this option because it filters pods only after discovering all the pods from PodMonitor, which increases load on Kubernetes API server.\u003c/p\u003e\n\u003ch2 id=\"secondaryextended-goal-new-feature-gate\"\u003eSecondary/Extended goal (new feature gate) \u003ca href=\"#secondaryextended-goal-new-feature-gate\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e We are exploring the integration of ServiceMonitor support for DaemonSet mode using EndpointSlice as an experimental feature. This exploration will determine feasibility and performance, and if viable, it may be introduced behind a separate feature gate. This approach allows the main DaemonSet mode to reach GA independently of this feature.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"servicemonitor-support-with-endpointslice\"\u003eServiceMonitor Support with EndpointSlice \u003ca href=\"#servicemonitor-support-with-endpointslice\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTo enable ServiceMonitor support for DaemonSet mode while addressing the performance concerns mentioned in section 5, we implement EndpointSlice-based service discovery:\u003c/p\u003e\n\u003ch4 id=\"endpointslice-discovery-implementation\"\u003eEndpointSlice Discovery Implementation \u003ca href=\"#endpointslice-discovery-implementation\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe PrometheusAgent CRD already supports a \u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e field that can be set to \u003ccode\u003eEndpointSlice\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheusAgent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emode\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eDaemonSet\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceDiscoveryRole\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eEndpointSlice \u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Use EndpointSlice instead of Endpoints\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eserviceMonitorSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eplatform\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWhen \u003ccode\u003eserviceDiscoveryRole: EndpointSlice\u003c/code\u003e is specified, the generated Prometheus configuration will use:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003escrape_configs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003ejob_name\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eserviceMonitor/default/my-service/0\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekubernetes_sd_configs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003erole\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eendpointslice \u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Instead of \u0026#34;endpoints\u0026#34;
340\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespaces\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enames\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"l\"\u003edefault]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"performance-benefits\"\u003ePerformance Benefits \u003ca href=\"#performance-benefits\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eEndpointSlice provides significant performance improvements over classic Endpoints:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eScalability\u003c/strong\u003e: EndpointSlice objects are limited to 1000 endpoints each, preventing massive objects\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEfficiency\u003c/strong\u003e: Multiple smaller objects reduce memory usage and network traffic\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParallel Processing\u003c/strong\u003e: Multiple EndpointSlice objects can be processed in parallel\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eReduced API Server Load\u003c/strong\u003e: Less stress on Kubernetes API server with distributed endpoint information\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"implementation-details\"\u003eImplementation Details \u003ca href=\"#implementation-details\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe implementation properly handles EndpointSlice support by checking both the user\u0026rsquo;s \u003ccode\u003eserviceDiscoveryRole\u003c/code\u003e setting and cluster compatibility. The logic involves:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-go\" data-lang=\"go\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// Check if THIS PrometheusAgent wants EndpointSlice discovery\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\u003cspan class=\"nx\"\u003ecpf\u003c/span\u003e \u003cspan class=\"o\"\u003e:=\u003c/span\u003e \u003cspan class=\"nx\"\u003ep\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eGetCommonPrometheusFields\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003eptr\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eDeref\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003ecpf\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eServiceDiscoveryRole\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nx\"\u003emonitoringv1\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eEndpointsRole\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"nx\"\u003emonitoringv1\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eEndpointSliceRole\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003ec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eendpointSliceSupported\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"nx\"\u003eopts\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003eappend\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003eopts\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nx\"\u003eprompkg\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eWithEndpointSliceSupport\u003c/span\u003e\u003cspan class=\"p\"\u003e())\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"c1\"\u003e// Warn user that they want EndpointSlice but cluster doesn\u0026#39;t support it\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\t\u003cspan class=\"nx\"\u003ec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003elogger\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nf\"\u003eWarn\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;EndpointSlice requested but not supported by Kubernetes cluster\u0026#34;
340\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\t\u003cspan class=\"c1\"\u003e// Fall back to classic endpoints\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e\u003c/span\u003e\t\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"7-action-plan\"\u003e7. Action Plan \u003ca href=\"#7-action-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFor the implementation, weâll do what we detailed in the How section. The common logics between StatefulSet and DaemonSet modes will be extracted into one place. We will have a separate \u003ccode\u003edaemonset.go\u003c/code\u003e for the separate logic of the DaemonSet mode.\u003c/p\u003e\n\u003cp\u003eFor the test, we will have unit tests covering new logic, and integration tests covering the basic user cases, which are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUsers cannot switch directly from StatefulSet to DaemonSet.\u003c/li\u003e\n\u003cli\u003ePrometheus Agent DaemonSet is created/deleted successfully.\u003c/li\u003e\n\u003cli\u003ePrometheus Agent DaemonSet is installed on the right nodes.\u003c/li\u003e\n\u003cli\u003ePrometheus Agent DaemonSet selects correctly the pods from PodMonitor on the same node.\nCurrently we only set up a Kind cluster of one node for integration tests. Since the test cases for DaemonSet deployment requires at least two nodes, we will need to modify the Kind cluster config for that.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWeâll also need a new user guide explaining how to use this new mode.\u003c/p\u003e\n\u003ch2 id=\"8-follow-ups\"\u003e8. Follow-ups \u003ca href=\"#8-follow-ups\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eAfter the Goals of this proposal have been met, weâll reevaluate the features in the Non-goals section and see if any of them should/can be addressed.\u003c/p\u003e\n\u003cp\u003eWe will also work on enhancements, such as leveraging validation rules with \u003ca href=\"https://kubernetes.io/docs/reference/using-api/cel/\"\u003eKubernetes\u0026rsquo; Common Expression Language (CEL)\u003c/a\u003e for the fields in Prometheus Agent CRD for DaemonSet mode.\u003c/p\u003e\n" 341 }, 342 { 343 id: 37, 344 href: "https://prometheus-operator.dev/docs/proposals/accepted/scrapeconfig-graduation/", 345 title: "Graduate ScrapeConfig CRD To Beta", 346 description: null, 347 content: "\u003cul\u003e\n\u003cli\u003eOwners:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mviswanathsai\"\u003emviswanathsai\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eStatus:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAccepted\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRelated Tickets:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/6697\"\u003eGraduate The \u003ccode\u003eScrapeConfig\u003c/code\u003e CRD To \u003ccode\u003ev1beta1\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eOther docs:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/proposals/202212-scrape-config.md\"\u003eScrapeConfig Design Proposal\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.io/docs/reference/using-api/#api-versioning\"\u003eKubernetes API versioning\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe goal of this proposal is to pave the way to graduate the ScrapeConfig CRD in the Prometheus Operator to beta. We aim to do this by building\na 1:1 relationship with the Prometheus \u003ccode\u003escrape_config\u003c/code\u003e. By enhancing the Service Discovery support, aligning the CRD fields, and standardizing\nconfigurations.\u003c/p\u003e\n\u003ch2 id=\"pitfalls-of-the-current-solution\"\u003ePitfalls of the Current Solution \u003ca href=\"#pitfalls-of-the-current-solution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe CRD is currently in v1alpha1 version, this hinders its adoption among the users of Prometheus-Operator.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePave the way for graduating the ScrapeConfig CRD to v1beta1 by aligning on the graduation criteria.\u003c/li\u003e\n\u003cli\u003eEnhance the Service Discovery support by adding more Service Discovery configurations.\u003c/li\u003e\n\u003cli\u003eEnsure all fields in Prometheus \u003ccode\u003escrape_config\u003c/code\u003e are supported in the ScrapeConfig CRD.\u003c/li\u003e\n\u003cli\u003eMaintain naming conventions and field consistency across existing and new Service Discoveries.\u003c/li\u003e\n\u003cli\u003eIdentify inconsistencies in validations.\u003c/li\u003e\n\u003cli\u003eOutline the migration strategy from \u
347003ccode\u003ev1alpha1\u003c/code\u003e to \u003ccode\u003ev1beta1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"audience\"\u003eAudience \u003ca href=\"#audience\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrometheus Operator maintainers and contributors.\u003c/li\u003e\n\u003cli\u003eUsers and developers relying on the Prometheus Operator for creating monitoring configurations.\u003c/li\u003e\n\u003cli\u003eStakeholders interested in the evolution and improvement of the Prometheus Operator.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"non-goals\"\u003eNon-Goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplementing the 28 Service Discovery configurations currently supported by Prometheus.\u003c/li\u003e\n\u003cli\u003eTo plan out a detailed graduation strategy.\u003c/li\u003e\n\u003cli\u003eConvert existing monitor objects to low-level ScrapeConfig objects.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIn order to provide a more comprehensive and versatile monitoring solution, enhancing the\nService Discovery support in the Prometheus Operator is crucial. This will address current\nlimitations and better serve diverse user needs. The following steps outline our approach to achieving this goal:\u003c/p\u003e\n\u003ch3 id=\"support-statement-for-service-discovery-mechanisms\"\u003eSupport Statement For Service Discovery Mechanisms \u003ca href=\"#support-statement-for-service-discovery-mechanisms\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eBy adding more Service Discovery configurations, we increase the flexibility and utility of the CRD for various user scenarios.\nKubernetes being the sole target for Prometheus-Operator, we think it is fitting to provide complete support for Kubernetes service discovery, this includes\nsupporting all fields present in the Prometheus configuration, example use cases and keeping the Service Discovery robustly maintained in general. We believe that the Kubernetes service discovery\nalong with the other existing service discoveries that we offer should be sufficient for most user\u0026rsquo;s needs and so implementing all the Service discoveries\nis not a priority. However, this does not imply service discovery support is limited to what exists today.\nIt would be a better use of time to add the service discoveries that the users need as we get feature requests for them.\u003c/p\u003e\n\u003cp\u003eThe following is the list of Service Discoveries which we want to support before graduation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003eazure_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003econsul_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003edigitalocean_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003edocker_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003edockerswarm_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003edns_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003eec2_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003eopenstack_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003epuppetdb_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003efile_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003egce_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003ehetzner_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003ehttp_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003ekubernetes_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003ekuma_s
347d_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003elightsail_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003elinode_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003enomad_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003eeureka_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003eovhcloud_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003escaleway_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e\u003ccode\u003eionos_sd_config\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf we were to categorize the Service Discoveries based on the amount of effort we are willing to put in maintaining them:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTier-1:\u003c/strong\u003e\nProject maintainers fully support the service discovery in this group. It includes the Kubernetes SD since the Operator requires a Kubernetes control plane to run. It also includes core service discoveries based on well-established protocols.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eKubernetes Service Discovery\u003c/li\u003e\n\u003cli\u003eFile Service Discovery\u003c/li\u003e\n\u003cli\u003eStatic Config\u003c/li\u003e\n\u003cli\u003eDNS Service Discovery\u003c/li\u003e\n\u003cli\u003eHTTP Service Discovery\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eTier-2:\u003c/strong\u003e\nThis group includes service discoveries which are related to Kubernetes, cloud-native environments and widely used solutions. The project maintainers don\u0026rsquo;t actively support them but they are happy to review issues and pull requests.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigitalOcean Service Discovery\u003c/li\u003e\n\u003cli\u003eConsul Service Discovery\u003c/li\u003e\n\u003cli\u003eAzure Service Discovery\u003c/li\u003e\n\u003cli\u003eEC2 Service Discovery\u003c/li\u003e\n\u003cli\u003eLightsail Service Discovery\u003c/li\u003e\n\u003cli\u003eKuma Service Discovery\u003c/li\u003e\n\u003cli\u003eOVHCloud Service Discovery\u003c/li\u003e\n\u003cli\u003eScaleway Service Discovery\u003c/li\u003e\n\u003cli\u003eIonos Service Discovery\u003c/li\u003e\n\u003cli\u003eOpenStack Service Discovery\u003c/li\u003e\n\u003cli\u003eGCE Service Discovery\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe project maintainers do not commit to actively maintaining any service discoveries that are not listed above. We don\u0026rsquo;t mean that other service discoveries are ignored, but\nthey are not a priority. They will be supported on a best-effort basis, meaning they will be maintained as time and resources allow, without a firm commitment from the\nmaintainers.\u003c/p\u003e\n\u003cp\u003eAt the time of writing this document, the following Service Discoveries are not supported but may be added in the future on user requests and contributions:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003euyuni_sd_config\u003c/code\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003evultr_sd_config\u003c/code\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe don\u0026rsquo;t plan to support the following Service Discoveries, due to them being deprecated or inactive:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003emarathon_sd_config\u003c/code\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003enerve_sd_config\u003c/code\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eserverset_sd_config\u003c/code\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003etriton_sd_config\u003c/code\u003e\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"fill-existing-gaps-from-the-prometheus-configuration\"\u003eFill Existing Gaps From The Prometheus Configuration \u003ca href=\"#fill-existing-gaps-from-the-prometheus-configuration\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWe intend to support all fields that the Prometheus \u003ccode\u003escrape_config\u003c/code\u003e contains, in the ScrapeConfig CRD. However, there might be exceptions like \u003ccode\u003ejob_name\u003c/code\u003e for example which need to be\nimplemented in a slightly different manner to prevent issues related to non-unique job names.\u003c/p\u003e\n\u003ch3 id=\"improve-api-consistency\"\u003eImprove API Consistency \u003ca href=\"#improve-api-consistency\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe idea is to make the API as restrictive as possible against the user making wrong/redundant configurations. To that extent, the CRD contains a number\nof inconsistencies both in naming conventions and field validations that need to be rectified. Some of the noted inconsistencies are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMissing validations on \u003ccode\u003eURL\u003c/code\u003e and \u003ccode\u003eHost\u003c/code\u003e fields.\u003c/li\u003e\n\u003cli\u003eMissing validations on maximum and minimum value acceptable for \u003ccode\u003ePort\u003c/code\u003e field.\u003c/li\u003e\n\u003cli\u003eMissing Prometheus version check for various Service Discoveries.\u003c/li\u003e\n\u003cli\u003eMissing length validation on multiple string fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe propose that once the above mentioned Service discoveries which are planned to be implemented before graduation are added, we\nrestructur the ScrapeConfig API one Service discovery at a time to achieve a tightly knit API surface. To that extent, the general rule\nof thumb will be: \u0026ldquo;Make the API as strict as possible.\u0026rdquo; This allows us to lower the level of restrictions in the future if need be, whereas\nthe converse might not always be feasible.\u003c/p\u003e\n\u003cp\u003eThrough these efforts, we aim to achieve a 1:1 relationship with the Prometheus \u003ccode\u003escrape_config\u003c/code\u003e (minus the Service Discoveries), enhancing the usability and completeness of the ScrapeConfig CRD. This alignment ensures that users have access to the full range of configurations offered by Prometheus, making the Prometheus Operator a more powerful and flexible tool for monitoring and observability beyond Kubernetes.\u003c/p\u003e\n\u003ch3 id=\"graduation-strategy\"\u003eGraduation Strategy \u003ca href=\"#graduation-strategy\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003ch4 id=\"requirements-for-graduation\"\u003eRequirements for Graduation \u003ca href=\"#requirements-for-graduation\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eWe propose to graduate the CRD to beta when the following milestones are all achieved:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eThe Service Discoveries which we have listed are all supported.\u003c/li\u003e\n\u003cli\u003eThere is consensus among the maintainers about the API consistency.\u003c/li\u003e\n\u003cli\u003eWe are confident about the completeness of the test cases coverage for the API.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch4 id=\"path-for-graduation\"\u003ePath for Graduation \u003ca href=\"#path-for-graduation\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eFrom past experience with the graduation of the \u003ccode\u003eAlertmanagerConfig\u003c/code\u003e CRD, we believe that the cost of implementing and maintaining a conversion webhook is too much to bear\nand we would like to avoid it when possible.\nKeeping this in mind, we recommend that we make all the breaking changes in \u003ccode\u003ev1alpha\u003c/code\u003e and\nonce there is a consensus in the community about the \u0026ldquo;readiness\u0026rdquo;/\u0026ldquo;completeness\u0026rdquo; of the\u003ccode\u003ev1alpha1\u003c/code\u003e, we graduate the ScrapeConfig CRD to \u003ccode\u003ev1beta1\u003c/code\u003e.\nNote: In this strategy, both the \u003ccode\u003ev1alpha1\u003c/code\u003e and \u003ccode\u003ev1beta1\u003c/code\u003e APIs are expected to be identical to each other, thus barring the need for a conversion webhook.\u003c/p\u003e\n\u003cp\u003eFrom the \u003ca href=\"https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#specify-multiple-versions\"\u003eKuberenetes CRD docs\u003c/a\u003e,\nthe \u003ccode\u003eCustomResourceDefinition\u003c/code\u003e would contain the following lines:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e conversion:\n # None conversion assumes the same schema for all versions and only sets the apiVersion\n # field of custom resources to the proper value\n strategy: None\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"testing-and-verification\"\u003eTesting and Verification \u003ca href=\"#testing-and-verification\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eCovering All Test Cases For Kubernetes Service Discovery\u003c/strong\u003e: Since Kubernetes is our main player, make sure all testcases for unit tests and e2e tests have been covered for the Kubernetes Service Discovery.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImplement Comprehensive Unit Tests\u003c/strong\u003e: Ensure that unit tests are added for all new and existing Service Discovery configurations to ensure that the expected configuration is generated and validations are in place.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"alternatives\"\u003eAlternatives \u003ca href=\"#alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eIntroduce v1alpha2 Before Beta\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eStrategy: Create a \u003ccode\u003ev1alpha2\u003c/code\u003e version incorporating all necessary breaking changes and refinements. Transition from \u
347003ccode\u003ev1alpha2\u003c/code\u003e to \u003ccode\u003ev1beta1\u003c/code\u003e when ready.\u003c/li\u003e\n\u003cli\u003eCon: additional complexity for users without real benefit.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImplement v1alpha1 to v1beta1 Conversion Webhook\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eStrategy: Graduate to \u003ccode\u003ev1beta1\u003c/code\u003e from \u003ccode\u003ev1alpha1\u003c/code\u003e with all the necessary changes/improvements and handle any breaking changes in the API between the two versions\nwith a conversion webhook. This ensures that users can automatically transition their configurations without manual intervention.\u003c/li\u003e\n\u003cli\u003eCon: Greatly increases complexity for the maintainers as well as the users.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n" 348 }, 349 { 350 id: 38, 351 href: "https://prometheus-operator.dev/docs/proposals/accepted/remote-write/", 352 title: "RemoteWrite CRD", 353 description: null, 354 content: "\u003cul\u003e\n\u003cli\u003eOwners:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/superbrothers\"\u003e@superbrothers\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eStatus:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAccepted\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelated Tickets:\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/6508\"\u003e#6508\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eOther docs:\n\u003cul\u003e\n\u003cli\u003en/a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"tldr\"\u003eTL;DR \u003ca href=\"#tldr\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis design doc proposes RemoteWrite CRD, which enables cluster admins to delegate the ability to configure Prometheus remote_rewrite configuration to application developers/operators.\u003c/p\u003e\n\u003ch2 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus remote_write configuration is defined in the Prometheus CRD. Currently, the configuration data generation is the responsibility of cluster admins.\u003c/p\u003e\n\u003ch2 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe main goal is to enable application developers/operators to self-service the remote write, and configure how the client sends metrics to the remote endpoint.\u003c/p\u003e\n\u003cp\u003eThis means exposing a new CRD to configure Prometheus remote_write configuration.\u003c/p\u003e\n\u003ch2 id=\"non-goals\"\u003eNon-goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003ePrometheus has two APIs for integrating with remote storage: \u0026lsquo;remote write\u0026rsquo; and \u0026lsquo;remote read\u0026rsquo;. Since no confirmed demand exists to treat remote read as a CRD, we do not cover \u0026ldquo;RemoteRead\u0026rdquo; CRD here. We can still implement it later if needed.\u003c/p\u003e\n\u003ch2 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"remotewrite-crd\"\u003eRemoteWrite CRD \u003ca href=\"#remotewrite-crd\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe RemoteWrite CRD represents one of the Prometheus remote_write configuration scoped to the resourceâs namespace.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eRemoteWrite\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;
354https://aps-workspaces.us-west-2.amazonaws.com/workspaces/\u0026lt;workspace id\u0026gt;/api/v1/remote_write\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esigv4\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eus-west-2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaccessKey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Secret object references will be resolved in the namespace of this remoteWrite object.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# In this manifest it is the \u0026#34;default\u0026#34; namespace.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eaws_access\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eaccess_key\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esecretKey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eaws_access\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esecret_key\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-go\" data-lang=\"go\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003epackage\u003c/span\u003e \u003cspan class=\"nx\"\u003ev1alpha1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003emonitoringv1\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1\u0026#34;
354\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003emetav1\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;k8s.io/apimachinery/pkg/apis/meta/v1\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003etype\u003c/span\u003e \u003cspan class=\"nx\"\u003eRemoteWrite\u003c/span\u003e \u003cspan class=\"kd\"\u003estruct\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003emetav1\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eTypeMeta\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;,inline\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003emetav1\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eObjectMeta\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;metadata,omitempty\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nx\"\u003eSpec\u003c/span\u003e \u003cspan class=\"nx\"\u003emonitoringv1\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eRemoteWriteSpec\u003c/span\u003e \u003cspan class=\"s\"\u003e`json:\u0026#34;spec\u0026#34;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"prometheus-crd\"\u003ePrometheus CRD \u003ca href=\"#prometheus-crd\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe Prometheus CRD is extended with 2 new fields (remoteWriteSelector and remoteWriteNamespaceSelector) that define which RemoteWrite resources are associated with this Prometheus instance.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# RemoteWrite objects to be selected. An empty label selector matches all\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# objects. A null label selector matches no objects.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eremoteWriteSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Namespaces to match for RemoteWrite discovery. An empty label selector\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# matches all namespaces. A null label selector matches the current namespace\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# only.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eremoteWriteNamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e{}\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"respect-enforcenamespacelabel-and-excludedfromenforcement\"\u003eRespect enforceNamespaceLabel and excludedFromEnforcement \u003ca href=\"#respect-enforcenamespacelabel-and-excludedfromenforcement\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThe RemoteWrite CRD should respect the Prometheus \u003ccode\u003e.spec.enforcedNamespaceLabel\u003c/code\u003e field.\u003c/p\u003e\n\u003cp\u003eThe objectâs namespace is added as the first item in the \u003ccode\u003ewrite_relabel_config\u003c/code\u003e of the remote_write configuration.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ewrite_relabel_configs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esourceLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003enamespace\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e\u0026lt;namespace\u0026gt;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ekeep\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e...\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe item is inserted in the first position by the operator before any other user relabelings, so there\u0026rsquo;s no way that users can have access to metrics labeled with namespaces other than the one in which the RemoteWrite object is created.\u003c/p\u003e\n\u003cp\u003eThe RemoteWrite CRD should also respect the Prometheus \u003ccode\u003e.spec.excludedFromEnforcement\u003c/code\u003e field. It is a list of references to objects to be excluded from \u
354003ccode\u003eenforcedNamespaceLabel\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"configuration-generation\"\u003eConfiguration generation \u003ca href=\"#configuration-generation\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe Prometheus operator will generate the Prometheus configuration including remote_write configuration from the Prometheus CRD and the RemoteWrite resources matching remoteWriteSelector from the namespace(s) selected by remoteWriteNamespaceSelector for additional remote_rewrite configuration.\u003c/p\u003e\n\u003cp\u003eThe operator will respect the \u0026ndash;namespaces and \u0026ndash;deny-namespaces flags when looking for RemoteWrite objects.\u003c/p\u003e\n\u003ch3 id=\"administrative-limits\"\u003eAdministrative limits \u003ca href=\"#administrative-limits\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eSimilar to what exists for scrape resources (e.g. \u003ccode\u003eenforcedSampleLimit\u003c/code\u003e for \u003ccode\u003eServiceMonitor\u003c/code\u003e), we will allow the Prometheus resource\u0026rsquo;s owners to setup upper-bound limits on the remote write options. For example, it will be possible to disable metadata sending or limit the queue capacity:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheus\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eremoteWriteLimits\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emetadataConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esend\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003efalse\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003equeueConfig\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ecapacity\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1024\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emaxShards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e16\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"prometheusagent-crd\"\u003ePrometheusAgent CRD \u003ca href=\"#prometheusagent-crd\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe PrometheusAgent CRD also supports the RemoteWrite CRD. Everything explained about the Prometheus CRD works in the same way for the PrometheusAgent.\u003c/p\u003e\n\u003ch2 id=\"alternatives\"\u003eAlternatives \u003ca href=\"#alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"prometheus-per-namespace-or-team\"\u003ePrometheus per namespace or team \u003ca href=\"#prometheus-per-namespace-or-team\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAn application developer/operator can deploy Prometheus instances directly. However, Prometheus instances may be provided as managed by cluster admins.\u003c/p\u003e\n\u003ch3 id=\"the-team-responsible-for-the-prometheus-object-configuring-individual-remote-write-destinations-on-behalf-of-each-tenant\"\u003eThe team responsible for the Prometheus object c
354onfiguring individual remote write destinations on behalf of each \u0026ldquo;tenant\u0026rdquo; \u003ca href=\"#the-team-responsible-for-the-prometheus-object-configuring-individual-remote-write-destinations-on-behalf-of-each-tenant\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAn application developer/operator will somehow share the remote_write configuration with the team responsible for Prometheus objects. This includes credential information for remote_write.\u003c/p\u003e\n" 355 }, 356 { 357 id: 39, 358 href: "https://prometheus-operator.dev/docs/proposals/implemented/zone-aware-sharding/", 359 title: "Zone aware sharding for Prometheus", 360 description: null, 361 content: "\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eOwners:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arnecls\"\u003earnecls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStatus:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAccepted\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelated Tickets:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/6437\"\u003e#6437\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOther docs:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.io/docs/reference/labels-annotations-taints/#topologykubernetesiozone\"\u003eWell known kubernetes labels\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones\"\u003eAWS zone names\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cloud.google.com/compute/docs/regions-zones#available\"\u003eGCP zone names\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/proposals/202310-shard-autoscaling.md\"\u003eShard Autoscaling\u003c/a\u003e design proposal.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis proposal describes how we can implement zone-aware sharding by adding\nsupport for custom labels and zone configuration options to the existing\nPrometheus configuration resources.\u003c/p\u003e\n\u003ch2 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWhen running large, multi-zone clusters, Prometheus scraping can lead to an\nincrease in inter-zone traffic costs. A solution would be to deploy 1 Prometheus shard\nper zone and configure each shard to scrape only the targets local to its zone. The\ncurrent sharding implementation can\u0026rsquo;t solve the issue though. While\nit\u0026rsquo;s possible to customize the label (\u003ccode\u003e__address__\u003c/code\u003e by default) used for distributing the\ntargets to the Prometheus instances, there\u0026rsquo;s no way to configure a single Prometheus\nresource so that each shard is bound to a specific zone.\u003c/p\u003e\n\u003ch2 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefine a set of configuration options required to allow zone aware sharding\u003c/li\u003e\n\u003cli\u003eDefine the relabel configuration to be generated for zone aware sharding\u003c/li\u003e\n\u003cli\u003eSchedule Prometheus pods to their respective zones.\u003c/li\u003e\n\u003cli\u003eStay backwards compatible to the current mechanism by default\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"non-goals\"\u003eNon-goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement mechanisms to automatically fix configuration errors by the user\u003c/li\u003e\n\u003cli\u003eSupport mixed environments (kubernetes and non-kubernetes targets are scraped)\u003c/li\u003e\n\u003cli\u003eSupport Kubernetes clusters before 1.26 (topology label support)\u003c/li\u003e\n\u003cli\u003eImplement zone aware scraping for targets defined via\n\u003ccode\u003e.spec.additionalScrapeConfigs\u003c/code\u003e and \u003ccode\u003eScrapeConfig\u003c/code\u003e custom resources.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nDue to the size of this feature, it will be placed behind a\n\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/pkg/operator/feature_gates.go\"\u003efeature gate\u003c/a\u003e\nto allow incremental testing.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"algorithm\"\u003eAlgorithm \u003ca href=\"#algorithm\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eIn order to do calculate a stable assignment, following parameters are required:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003enum_shards\u003c/code\u003e: The number of Prometheus shards\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eshard_index\u003c/code\u003e: A number of the range \u003ccode\u003e[0..num_shards-1]\u003c/code\u003e identifying a single\nPrometheus instance inside a given shard\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ezones\u003c/code\u003e: A list of the zones to be scraped\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ezone_label\u003c/code\u003e: A label denoting the zone of a target\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eaddress\u003c/code\u003e: The content of the \u003ccode\u003e__address__\u
361003c/code\u003e label\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eIt has to be noted that \u003ccode\u003ezone_label\u003c/code\u003e is supposed to contain a value from the\n\u003ccode\u003ezones\u003c/code\u003e list.\nThe \u003ccode\u003enum_shards\u003c/code\u003e value is referring to the currently available \u003ccode\u003e.spec.shards\u003c/code\u003e\nfrom the \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.Prometheus\"\u003ePrometheus custom resource definition\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eGiven these values, a target is to be scraped by a given Prometheus instance\nby using the following algorithm:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-go\" data-lang=\"go\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nf\"\u003eassert\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003enum_shards\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"nb\"\u003elen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003ezones\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"err\"\u003e#\u003c/span\u003e \u003cspan class=\"nx\"\u003eError\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nf\"\u003ezone\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003es\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"nx\"\u003ewill\u003c/span\u003e \u003cspan class=\"nx\"\u003enot\u003c/span\u003e \u003cspan class=\"nx\"\u003eget\u003c/span\u003e \u003cspan class=\"nx\"\u003escraped\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nf\"\u003eassert\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003enum_shards\u003c/span\u003e \u003cspan class=\"o\"\u003e%\u003c/span\u003e \u003cspan class=\"nb\"\u003elen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003ezones\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"err\"\u003e#\u003c/span\u003e \u003cspan class=\"nx\"\u003eWarning\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nx\"\u003emulti\u003c/span\u003e\u003cspan class=\"o\"\u003e-\u003c/span\u003e\u003cspan class=\"nx\"\u003escraping\u003c/span\u003e \u003cspan class=\"nx\"\u003eof\u003c/span\u003e \u003cspan class=\"nx\"\u003einstances\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nx\"\u003eshards_per_zone\u003c/span\u003e \u003cspan class=\"o\"\u003e:=\u003c/span\u003e \u003cspan class=\"nf\"\u003emax\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nf\"\u003efloor\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003enum_shards\u003c/span\u003e \u003cspan class=\"o\"\u003e/\u003c/span\u003e \u003cspan class=\"nb\"\u003elen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003ezones\u003c/span\u003e\u003cspan class=\"p\"\u003e)))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nx\"\u003eprom_zone_idx\u003c/span\u003e \u003cspan class=\"o\"\u003e:=\u003c/span\u003e \u003cspan class=\"nx\"\u003eshard_index\u003c/span\u003e \u003cspan class=\"o\"\u003e%\u003c/span\u003e \u003cspan class=\"nx\"\u003eshards_per_zone\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nx\"\u003ezone_label\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"nx\"\u003ezones\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"nx\"\u003eprom_zone_idx\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"nx\"\u003eassignment_idx\u003c/span\u003e \u003cspan class=\"o\"\u003e:=\u003c/span\u003e \u003cspan class=\"nf\"\u003efloor\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003eshard_index\u003c/span\u003e \u003cspan class=\"o\"\u003e/\u003c/span\u003e \u003cspan class=\"nx\"\u003eshards_per_zone\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"nf\"\u003ehash\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003eaddress\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e%\u003c/span\u003e \u003cspan class=\"nx\"\u003eshards_per_zone\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"nx\"\u003eassignment_idx\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"nf\"\u003edo_scrape\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eBy using modulo to calculate the \u003ccode\u003eprom_zone_idx\u003c/code\u003e, instances will be distributed\nto zones in the sense of \u003ccode\u003eA,B,C,A,B,C\u003c/code\u003e and so on. This allows a modification of\nthe \u003ccode\u003enum_shards\u003c/code\u003e value without redistribution of shards or data.\nThis was preferred over allowing the number of \u003ccode\u003ezones\u003c/code\u003e to change, as this is\nless likely to happen.\u003c/p\u003e\n\u003ch4 id=\"edge-cases\"\u003eEdge cases \u003ca href=\"#edge-cases\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eWe have introduced asserts in the above section to warn about edge cases that\nmight lead to duplicate data or data loss.\u003c/p\u003e\n\u003cp\u003eBy the above algorithm. Prometheus instances will be distributed in an\nalternating fashion by using the already existing shard index.\nThis leads to the following edge cases:\u003c/p\u003e\n\u003cp\u003eWhen \u003ccode\u003enum_shards\u003c/code\u003e is 10 and \u003ccode\u003elen(zones)\u003c/code\u003e is 3 as in \u003ccode\u003e[A..C]\u003c/code\u003e.\n\u003ccode\u003eshards_per_zone\u003c/code\u003e is 3. This yields the following distribution\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e0 1 2 | 3 4 5 | 6 7 8 | 9 | shard index\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eA B C | A B C | A B C | A | zone\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e0 0 0 | 1 1 1 | 2 2 2 | 0 | assignment index\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIn this case the 2nd assert will warn about double scraping of instances in\nzone A, as the same targets are being assigned to instance 0 and 9.\u003c/p\u003e\n\u003cp\u003eWhen \u003ccode\u003enum_shards\u003c/code\u003e is 2 and \u003ccode\u003elen(zones)\u003c/code\u003e is 3 as in \u003ccode\u003e[A..C]\u003c/code\u003e.\n\u003ccode\u003eshards_per_zone\u003c/code\u003e is 1. This yields the following distribution\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e0 1 | shard index\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eA B C | zone\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e0 0 0 | assignment index\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIn this case targets in zone C are not being scraped.\u003c/p\u003e\n\u003cp\u003eBoth cases should lead to an error during reconciliation, causing the change to\nnot be rolled out. The first case (double scraping) is not as severe as a zone\nnot being scraped but it is otherwise hard to spot.\nIt\u0026rsquo;s also to be mentioned that replicas are to be used to achieve redundant\nscraping.\u003c/p\u003e\n\u003ch3 id=\"topology-field-discovery\"\u003eTopology field discovery \u003ca href=\"#topology-field-discovery\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe kubernetes service discovery currently does not expose any topology field.\nSuch a field would have to be added, otherwise users would have to inject such\na label themselves.\u003c/p\u003e\n\u003cp\u003eA good candidate for such fields are the \u003ccode\u003etopology.kubernetes.io/*\u003c/code\u003e labels\nwhich should be present on all nodes.\u003c/p\u003e\n\u003cp\u003eThere are two ways to handle this:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eA change to the Prometheus kubernetes discovery service to add the required\nlabel to all targets.\u003c/li\u003e\n\u003cli\u003eThe operator could do this discovery and add a relabel rule based on the\nnode name.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe second solution would require the operator to constantly update the relabel\nconfiguration. This could lead to increased load on clusters with aggressive\nautoscaling as well as race conditions for pods on newly created nodes, as the\nconfig change is not atomic/instant.\u003c/p\u003e\n\u003cp\u003eAs of that, a change to the kubernetes service discovery is considered the more\nstable, and thus preferable solution. It will require additional permissions\nfor Prometheus in case it is not already allowed to read node objects.\u003c/p\u003e\n\u003ch3 id=\"api-changes\"\u003eAPI changes \u003ca href=\"#api-changes\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThis proposal is mutually exclusive to \u003ca href=\"../accepted/202405-agent-daemonset.md\"\u003eDaemonSet mode\u003c/a\u003e,\nas Prometheus always scrapes a single node in that case.\nDefining a \u003ccode\u003eshardingStrategy\u003c/code\u003e when \u003ccode\u003eDaemonSet mode\u003c/code\u003e is active, should lead to\na reconciliation error.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eFollowing the algorithm presented above, we suggest the following configuration\noptions to be added to the \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.Prometheus\"\u003ePrometheus\u003c/a\u003e and PrometheusAgent custom resource definitions.\u003c/p\u003e\n\u003cp\u003eAll values used in this snippet should also be the defaults for their\ncorresponding keys.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardingStrategy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Select a sharding mode. Can be \u0026#39;Classic\u0026#39; or \u0026#39;Topology\u0026#39;.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Defaults to `Classic`.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emode\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;Classic\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# The following section is only valid if \u0026#34;mode\u0026#34; is set to \u0026#34;Topology\u0026#34;
361\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etopology\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Prometheus external label used to communicate the topology zone.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# If not defined, it defaults to \u0026#34;zone\u0026#34;.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# If defined to an empty string, no external label is added to the Prometheus configuration.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexternalLabelName\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;zone\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# All topology values to be used by the cluster, i.e. a list of all\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# zones in use.\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evalues\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe \u003ccode\u003etopology\u003c/code\u003e section does not use the term \u003ccode\u003ezone\u003c/code\u003e. This will prevent API\nchanges in case other topologies, like regions, need to be supported in future\nreleases.\u003c/p\u003e\n\u003cp\u003eBoth modes do not contain an explicit overwrite of the label used for sharding.\nThis feature is already possible by generating a \u003ccode\u003e__tmp_hash\u003c/code\u003e label through\n\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.ScrapeClass\"\u003escrape classes\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIn case of the \u003ccode\u003eTopology\u003c/code\u003e mode, two labels are used for sharding. One is used\nto determine the correct topology of a target, the other one is used to allow\nsharding inside a specific topology (e.g. zone).\nThe second label implements the exact same mechanics as the \u003ccode\u003eClassic\u003c/code\u003e mode and\nthus uses the same \u003ccode\u003e__tmp_hash\u003c/code\u003e overwrite mechanics.\nTo allow overwrites for the topology determination label, a custom label named\n\u003ccode\u003e__tmp_topology\u003c/code\u003e can be generated, following the same idea.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eexternalLabelName\u003c/code\u003e should be added by default to allow debugging. It also\ngives some general, valuable insights for multi-zone setups.\u003c/p\u003e\n\u003cp\u003eIt is possible to change the \u003ccode\u003emode\u003c/code\u003e field from \u
361003ccode\u003eClassic\u003c/code\u003e to \u003ccode\u003eTopology\u003c/code\u003e (and\nvice-versa) without service interruption.\u003c/p\u003e\n\u003ch3 id=\"generated-configuration\"\u003eGenerated configuration \u003ca href=\"#generated-configuration\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe following examples are based on the algorithm above.\nPlease note that \u003ccode\u003eshard_index\u003c/code\u003e has to be provided by the operator during\nconfig generation.\u003c/p\u003e\n\u003cp\u003eWe use a replica count of 2 in all examples to illustrate that this value\ndoes not have any effect, as both replicas will have the same \u003ccode\u003eshared_index\u003c/code\u003e\nassigned.\u003c/p\u003e\n\u003ch4 id=\"classic-mode\"\u003eClassic mode \u003ca href=\"#classic-mode\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eGiven the following configuration\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardingStrategy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emode\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;Classic\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ewe would get the following output for \u003ccode\u003eshard_index == 2\u003c/code\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__address__\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etarget_label\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;(.+);\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplacement\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;$1\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;replace\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etarget_label\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emodulus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;hashmod\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;2\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# shard_index\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;keep\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"topology-mode\"\u003eTopology mode \u003ca href=\"#topology-mode\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eGiven the following configuration\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardingStrategy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emode\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;Topology\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etopology\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evalues\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s1\"\u003e\u0026#39;europe-west4-a\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s1\"\u003e\u0026#39;europe-west4-b\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ewe would get the following output for \u003ccode\u003eshard_index == 2\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c\"\u003e# zones := shardingStrategy.topology.values\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"c\"\u003e# shards_per_zone := max(1, floor(shards / len(zones)))\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"c\"\u003e# topology determination\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__meta_kubernetes_endpointslice_endpoint_zone\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e__tmp_topology]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etarget_label\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_topology\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;(.+);\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__meta_kubernetes_node_label_topology_kubernetes_io_zone\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__meta_kubernetes_node_labelpresent_topology_kubernetes_io_zone\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_topology\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;(.+);true;\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etarget_label\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_topology\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspa
361n class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_topology\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;europe-west4-a\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# zones[shard_index % shards_per_zone]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;keep\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"c\"\u003e# In-topology sharding\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__address__\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etarget_label\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;(.+);\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;replace\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etarget_label\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emodulus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;hashmod\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e- \u003cspan class=\"nt\"\u003esource_labels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;__tmp_hash\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eregex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;1\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# floor(shard_index / shards_per_zone)\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eaction\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;keep\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nNode metadata will need to be added when using certain monitors.\nThis requires an additional flag in the \u003ccode\u003ekubernetes_sd_configs\u003c/code\u003e section like this:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ekubernetes_sd_configs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eattach_metadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enode\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAn alternative with Kubernetes \u0026gt;= 1.35 is to leverage the \u003ca href=\"https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/4742-node
361-topology-downward-api/README.md\"\u003eNode Topology\nLabels via Downward\nAPI\u003c/a\u003e\nfeature which allows to inject pass node topology information to the pods.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3 id=\"prometheus-instance-zone-assignment\"\u003ePrometheus instance zone assignment \u003ca href=\"#prometheus-instance-zone-assignment\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTo make sure that Prometheus instances are deployed to the correct zone (of their\nassigned target), we need to generate a \u003ca href=\"https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\"\u003enode affinity\u003c/a\u003e\nor a \u003ca href=\"https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes/#create-a-pod-that-gets-scheduled-to-your-chosen-node\"\u003enode selector\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs node selectors are simpler to manage, and node affinities might run into\nordering issues when a user defines their own affinities, node selectors should\nbe used.\nIf a \u003ccode\u003enodeSelector\u003c/code\u003e has already been defined, it will be merged with the node\nselector generated here. If the same key was used, the value will be\nreplaced with the generated value.\u003c/p\u003e\n\u003cp\u003eGiven this input:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enodeSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#39;foo\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;bar\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#39;topology.kubernetes.io/zone\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;will be replaced\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshards\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereplicas\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escrapeClasses\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;topology\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003edefault\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eattachMetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enode\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eshardingStrategy\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emode\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;Topology\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003etopology\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003evalues\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s1\"\u003e\u0026#39;europe-west4-a\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"s1\"\u003e\u0026#39;europe-west4-b\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe following snippet would be generated for \u003ccode\u003eshared_
361index == 2\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c\"\u003e# zones := shardingStrategy.topology.values\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"c\"\u003e# shards_per_zone := max(1, floor(shards / len(zones)))\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enodeSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Existing nodeSelectors using \u0026#39;topology.kubernetes.io/zone\u0026#39; will be\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# replaced with the generated value:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# zones[shard_index % shards_per_zone]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#39;topology.kubernetes.io/zone\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;europe-west4-a\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"c\"\u003e# Existing nodeSelectors will be kept\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#39;foo\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;bar\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"alternatives\"\u003eAlternatives \u003ca href=\"#alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWe could allow users to define the complete relabel and node selector logic\nthemselves. This would be more flexible, but also way harder to configure.\u003c/p\u003e\n\u003cp\u003eBy abstracting into \u003ccode\u003eshardingStrategy\u003c/code\u003e, we can cover the most common cases\nwithout requiring users to have deep knowledge about Prometheus relabel\nconfiguration.\u003c/p\u003e\n\u003cp\u003eA field \u003ccode\u003eadditionalRelabelConfig\u003c/code\u003e was discussed to allow arbitrary logic to be\nadded before the sharding configuration. It was decided that this would\nduplicate the functionality of \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.ScrapeClass\"\u003escrape classes\u003c/a\u003e\nfound in, e.g., the \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#prometheusspec\"\u003ePrometheus\u003c/a\u003e\ncustom resource definition.\u003c/p\u003e\n\u003cp\u003eThe use of \u003ccode\u003esourceLabel\u003c/code\u003e fields instead of the \u003ccode\u003e__tmp-*\u003c/code\u003e label mechanic was\ndiscussed. It was agreed to not introduce new fields as an existing feature\nwould have to be changed, and to not further increase the number of API fields.\u003c/p\u003e\n\u003cp\u003eAn overwrite for the topology node label was discussed. This field was not\nadded as there was no clear use-case yet. The general structure was kept so\nthat it will still be possible to add such a field in a future release.\u003c/p\u003e\n\u003ch2 id=\"action-plan\"\u003eAction Plan \u003ca href=\"#action-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eA rough plan of the steps required to implement the feature:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAdd the \u
361003ccode\u003ePrometheusTopologySharding\u003c/code\u003e feature gate.\u003c/li\u003e\n\u003cli\u003eImplement the API changes with pre-flight validations.\u003c/li\u003e\n\u003cli\u003eImplement the node selector update when \u003ccode\u003emode: Topology\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eImplement the external label name when \u003ccode\u003emode: Topology\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eImplement the target sharding when \u003ccode\u003emode: Topology\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n" 362 }, 363 { 364 id: 40, 365 href: "https://prometheus-operator.dev/docs/community/", 366 title: "Community", 367 description: null, 368 content: "" 369 }, 370 { 371 id: 41, 372 href: "https://prometheus-operator.dev/docs/community/contributing/", 373 title: "Contributing", 374 description: "How can I contribute to the Prometheus Operator and kube-prometheus?", 375 content: "\u003cp\u003eThis project is licensed under the \u003ca href=\"LICENSE\"\u003eApache 2.0 license\u003c/a\u003e 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.\u003c/p\u003e\n\u003cp\u003eTo maintain a safe and welcoming community, all participants must adhere to the\nproject\u0026rsquo;s \u003ca href=\"code-of-conduct.md\"\u003eCode of Conduct\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"certificate-of-origin\"\u003eCertificate of Origin \u003ca href=\"#certificate-of-origin\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBy contributing to this project you agree to the Developer Certificate of\nOrigin (DCO). This document was created by the Linux Kernel community and is a\nsimple statement that you, as a contributor, have the legal right to make the\ncontribution. See the \u003ca href=\"DCO\"\u003eDCO\u003c/a\u003e file for details.\u003c/p\u003e\n\u003ch2 id=\"email-and-chat\"\u003eEmail and Chat \u003ca href=\"#email-and-chat\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe project currently uses the \u003ca href=\"https://kubernetes.slack.com\"\u003eKubernetes Slack\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.slack.com/archives/CFFDS2Z7F\"\u003e#prometheus-operator\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.slack.com/archives/C01B03QCSMN\"\u003e#prometheus-operator-dev\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease avoid emailing maintainers found in the MAINTAINERS file directly. They\nare very busy and read the mailing lists.\u003c/p\u003e\n\u003ch2 id=\"office-hours-meetings\"\u003eOffice Hours Meetings \u003ca href=\"#office-hours-meetings\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe project also holds bi-weekly public meetings where maintainers,\ncontributors and users of the Prometheus Operator and kube-prometheus can\ndiscuss issues, pull requests or any topic related to the projects. The\nmeetings happen at 11:00 UTC on Monday, check the \u003ca href=\"https://docs.google.com/document/d/1-fjJmzrwRpKmSPHtXN5u6VZnn39M28KqyQGBEJsqUOk/edit?usp=sharing\"\u003eonline\nnotes\u003c/a\u003e\nto know the exact dates and the connection details.\u003c/p\u003e\n\u003cp\u003eAn invite is also available on the \u003ca href=\"https://calendar.google.com/calendar/u/1/embed?src=c_331fefe21da6f878f17e5b752d63e19d58b1e3bb24cb82e5ac65e5fd14e81878@group.calendar.google.com\u0026amp;csspa=1\"\u003eproject\u0026rsquo;s public calendar\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"getting-started\"\u003eGetting Started \u003ca href=\"#getting-started\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFork the repository on GitHub\u003c/li\u003e\n\u003cli\u003eRead the \u003ca href=\"README.md\"\u003eREADME\u003c/a\u003e for build and test instructions\u003c/li\u003e\n\u003cli\u003ePlay with the project, submit bugs, submit patches!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"contribution-flow\"\u003eContribution Flow \u003ca href=\"#contribution-flow\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis is a rough outline of what a contributor\u0026rsquo;s workflow looks like:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCreate a topic branch from where you want to base your work (usually \u003ccode\u003emain\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eMake commits of logical units.\u003c/li\u003e\n\u003cli\u003eMake sure your commit messages are in the proper format (see below).\u003c/li\u003e\n\u003cli\u003ePush your changes to a topic branch in your fork of the repository.\u003c/li\u003e\n\u003cli\u003eMake sure the tests pass, and add any new tests as appropriate. (\u003ca href=\"TESTING.md\"\u003eTesting guidelines\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSubmit a pull request to the original repository.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMany files (documentation, manifests, \u0026hellip;) in this repository are auto-generated. For instance, \u003ccode\u003ebundle.yaml\u003c/code\u003e is generated from the \u003cem\u003eJsonnet\u003c/em\u003e files in \u003ccode\u003e/jsonnet/prometheus-operator\u003c/code\u003e. Before submitting a pull request, make sure that you\u0026rsquo;ve executed \u003ccode\u003emake generate\u003c/code\u003e and committed the generated changes.\u003c/p\u003e\n\u003cp\u003eWe also use \u003ca href=\"https://golangci-lint.run/docs/\"\u003egolangci-lint\u003c/a\u003e to lint the Go code (including the API definitions). Make sure to execute \u003ccode\u003emake check\u003c/code\u003e before creating/updating your PR.\u003c/p\u003e\n\u003cp\u003eThanks for your contributions!\u003c/p\u003e\n\u003ch3 id=\"changes-to-the-apis\"\u003eChanges to the APIs \u003ca href=\"#changes-to-the-apis\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWhen designing Custom Resource Definitions (CRDs), please refer to the existing Kubernetes guidelines:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md\"\u003eAPI conventions\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md\"\u003eAPI changes\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIn particular, this project follows the API stability guidelines:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFor alpha API versions (e.g. \u003ccode\u003ev1alpha1\u003c/code\u003e, \u003ccode\u003ev1alpha2\u003c/code\u003e, \u0026hellip;), we may allow to break forward and backward compatibility (but we\u0026rsquo;ll try hard to avoid it).\u003c/li\u003e\n\u003cli\u003eFor beta API versions (e.g. \u003ccode\u003ev1beta1\u003c/code\u003e, \u003ccode\u003ev1beta2\u003c/code\u003e, \u0026hellip;), we may allow to break backward compatibility but not forward compatibility.\u003c/li\u003e\n\u003cli\u003eFor stable API versions (e.g. \u003ccode\u003ev1\u003c/code\u003e), we don\u0026rsquo;t allow to break backward and forward compatibility.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"format-of-the-commit-message\"\u003eFormat of the Commit Message \u003ca href=\"#format-of-the-commit-message\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWe 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.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003escripts: add the test-cluster \u003cspan class=\"nb\"\u003ecommand\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eThis uses tmux to setup a \u003cspan class=\"nb\"\u003etest\u003c/span\u003e cluster that you can easily \u003cspan class=\"nb\"\u003ekill\u003c/span\u003e and\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003estart \u003cspan class=\"k\"\u003efor\u003c/span\u003e debugging.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eFixes \u003cspan class=\"c1\"\u003e#38\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe format can be described more formally as follows:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;subsystem\u0026gt;: \u0026lt;what changed\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;BLANK LINE\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;why this change was made\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;BLANK LINE\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u0026lt;footer\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe 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.\u003c/p\u003e\n\u003ch2 id=\"ai-use-policy\"\u003eAI use policy \u003ca href=\"#ai-use-policy\"
375class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWe allow the use of AI tools when contributing to the project (issues and pull\nrequests). At the same time, you need to be mindful of maintainers\u0026rsquo; time and\nattention which is why we ask you to comply with the following guidelines.\u003c/p\u003e\n\u003ch3 id=\"when-using-ai-for-learning\"\u003eWhen using AI for learning \u003ca href=\"#when-using-ai-for-learning\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep in mind that while AI assistants help with navigating and understanding the code base, you need to take their claims with a grain of salt.\u003c/li\u003e\n\u003cli\u003eUsing AI tools doesn\u0026rsquo;t prevent you from becoming familiar with the code and the development workflow.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"when-using-ai-for-communication\"\u003eWhen using AI for communication \u003ca href=\"#when-using-ai-for-communication\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFollow the proposed template when submitting GitHub issues.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAvoid verbose descriptions\u003c/strong\u003e, provide enough information for the maintainers to understand the request but do not overwhelm them with unrelated details.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"when-using-ai-for-code-contribution\"\u003eWhen using AI for code contribution \u003ca href=\"#when-using-ai-for-code-contribution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReview the change by yourself before submitting the pull request.\u003c/li\u003e\n\u003cli\u003eEnsure that you can explain the why, what and how of the change without help from the AI tool.\u003c/li\u003e\n\u003cli\u003eIf necessary call out the parts which are unclear to you.\u003c/li\u003e\n\u003cli\u003eWhen AI tools have contributed significant parts of the code change, communicate the information in the pull request\u0026rsquo;s description and/or the commit message.\u003c/li\u003e\n\u003cli\u003eDon\u0026rsquo;t submit changes which are unrelated to the purpose of the pull request.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAvoid verbose AI-generated descriptions in PRs\u003c/strong\u003e keep descriptions concise, focused, and relevant to the actual changes being made.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"local-development\"\u003eLocal Development \u003ca href=\"#local-development\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIf you want to run Prometheus Operator on your local environment, you can follow the steps below.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eFirst start a Kubernetes cluster. We recommend \u003ca href=\"https://kind.sigs.k8s.io/\"\u003eKinD\u003c/a\u003e because it is lightweight (it can run on small notebooks) and this is what the project\u0026rsquo;s CI uses. \u003ca href=\"https://minikube.sigs.k8s.io/docs/start/\"\u003eMiniKube\u003c/a\u003e is also another option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRun the utility script \u003ca href=\"scripts/run-external.sh\"\u003escripts/run-external.sh\u003c/a\u003e, it will check all the requirements and run your local version of the Prometheus Operator on your Kind cluster.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e./scripts/run-external.sh -c\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003col start=\"3\"\u003e\n\u003cli\u003eYou should now be able to see the logs from the operator in your terminal. The Operator is successfully running in your local system and can be debugged, checked for behaviour etc.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSimilarly, if you work on a
375specific branch, you can run the \u003ccode\u003escripts/run-external.sh\u003c/code\u003e script in this branch to deploy it.\u003c/p\u003e\n\u003ch2 id=\"proposal-process\"\u003eProposal Process \u003ca href=\"#proposal-process\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe Prometheus Operator project accepts proposals for new features,\nenhancements and design documents. The document should be created in the\n\u003ccode\u003eDocumentation/proposals\u003c/code\u003e directory using the template below, prefixed by\n\u003ccode\u003e\u0026lt;YEAR\u0026gt;\u0026lt;MONTH\u0026gt;-\u003c/code\u003e and submitted in the form of a GitHub Pull Request.\u003c/p\u003e\n\u003cp\u003eThe process is adopted from the Thanos community.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-markdown\" data-lang=\"markdown\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Your Proposal Title\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e **Owners:**\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"k\"\u003e*\u003c/span\u003e \u003cspan class=\"sb\"\u003e`\u0026lt;@author: single champion for the moment of writing\u0026gt;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e **Status:**\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"k\"\u003e*\u003c/span\u003e \u003cspan class=\"sb\"\u003e`\u0026lt;Accepted/Rejected/Implemented\u0026gt;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e **Related Tickets:**\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"k\"\u003e*\u003c/span\u003e \u003cspan class=\"sb\"\u003e`\u0026lt;JIRA, GH Issues\u0026gt;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e **Other docs:**\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"k\"\u003e*\u003c/span\u003e \u003cspan class=\"sb\"\u003e`\u0026lt;Linksâ¦\u0026gt;`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e\u0026gt; \u003c/span\u003e\u003cspan class=\"ge\"\u003eTL;DR: Give a summary of what this document is proposing and what components it is touching.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"ge\"\u003e\u003c/span\u003e\u003cspan class=\"k\"\u003e\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e\u003c/span\u003e\u003cspan class=\"ge\"\u003e\u0026gt; *For example: This design doc is proposing a consistent design template for âexample.comâ organization.*\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"ge\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Why\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eProvide a motivation behind the change proposed by this design document, give context.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e*For example: Itâs important to clearly explain the reasons behind certain design decisions in order to have a\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003econsensus between team members, as well as external stakeholders.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eSuch a design document can also be used as a reference and for knowledge-sharing purposes.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eThatâs why we are proposing a consistent style of the design document that will be used for future designs.*\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e### Pitfalls of the current solution\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eWhat specific problems are we hitting with the current solution? Why is it not enough?\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e*For example: We were missing a consistent design doc template, so each team/person was creating their own.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eBecause of inconsistencies, those documents were harder to understand, and it was easy to miss important sections.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eThis was causing certain engineering time to be wasted.*\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Audience\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eProvide the target audience for this change.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Goals\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eGoals and use cases for the solution as proposed in [\u003cspan class=\"nt\"\u003eHow\u003c/span\u003e](\u003cspan class=\"na\"\u003e#how\u003c/span\u003e):\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e Allow easy collaboration and decision making on de
375sign ideas.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e Have a consistent design style that is readable and understandable.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e Have a design style that is concise and covers all the essential information.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Non-Goals\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e Move old designs to the new format.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e Not doing X,Y,Z.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## How\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eExplain the full overview of the proposed solution. Some guidelines:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e Make it concise and \u003cspan class=\"gs\"\u003e**simple**\u003c/span\u003e; put diagrams; be concrete, avoid using âreallyâ, âamazingâ and âgreatâ (:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e How will you test and verify?\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e How will you migrate users, without downtime. How do we solve incompatibilities?\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e*\u003c/span\u003e What open questions are left? (âKnown unknownsâ)\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Alternatives\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eThis section should state potential alternatives.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eHighlight the objections the reader should have towards your proposal as they read it.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eTell them why you still think you should take this path.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e1.\u003c/span\u003e This is why not solution Z...\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Action Plan\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eThe tasks to do in order to migrate to the new idea.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e* [ ]\u003c/span\u003e Task one\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003egh\u003c/span\u003e \u003cspan class=\"na\"\u003eissue\u
375003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e* [ ]\u003c/span\u003e Task two\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003egh\u003c/span\u003e \u003cspan class=\"na\"\u003eissue\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e ...\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e" 376 }, 377 { 378 id: 42, 379 href: "https://prometheus-operator.dev/docs/community/testing/", 380 title: "Testing", 381 description: null, 382 content: "\u003cp\u003eWhen contributing code to Prometheus-Operator, you\u0026rsquo;ll notice that every Pull Request will run against an extensive test suite. Among an extensive list of benefits that tests brings to the Project\u0026rsquo;s overall health and reliability, it can be the reviewer\u0026rsquo;s and contributors\u0026rsquo;s best friend during development:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest cases serve as documentation, providing insights into the expected behavior of the software.\u003c/li\u003e\n\u003cli\u003eTesting can prevent regressions by verifying that new changes don\u0026rsquo;t break existing functionality.\u003c/li\u003e\n\u003cli\u003eRunning tests locally accelerate the feedback loop, removing the dependency that contributors might have on CI when working on a Pull Request.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis document will focus on teaching you about the different test suites that we currently have and how to run different scenarios to help your development experience!\u003c/p\u003e\n\u003ch1 id=\"test-categories\"\u003eTest categories \u003ca href=\"#test-categories\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003ch2 id=\"unit-tests\"\u003eUnit tests \u003ca href=\"#unit-tests\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eUnit tests are used to test particular code snippets in isolation. They are your best ally when looking for quick feedback loops in a particular function.\u003c/p\u003e\n\u003cp\u003eImagine you\u0026rsquo;re working on a PR that adds a new field to the ScrapeConfig CRD and you want to test if your change is reflected to the configmap. Instead of creating a full Kubernetes cluster, installing all the CRDs, running the Prometheus-Operator, deploying a Prometheus resource with ScrapeConfigSelectors and finally check if your change made it to the live object, you could simply write or extend a unit test for the configmap generation.\u003c/p\u003e\n\u003cp\u003eHere is an example test that checks if the string generated from ScrapeConfigs are equal to an expected file.\u003c/p\u003e\n\u003cp\u003ehttps://github.com/prometheus-operator/prometheus-operator/blob/cb534214415beb3c39353988ae85f2bb07f245e7/pkg/prometheus/promcfg_test.go#L4945-L4956\u003c/p\u003e\n\u003cp\u003eUnit tests can be run with:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake test-unit\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThey can also be run for particular packages:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ego test ./pkg/prometheus/server\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eOr even particular functions:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ego test -run ^TestPodLabelsAnnotations$ ./pkg/prometheus/server\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"testing-multi-line-string-comparison---golden-files\"\u003eTesting multi line string comparison - Golden files \u003ca href=\"#testing-multi-line-string-comparison---golden-files\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eGolden files are plain-text documents designed to facilitate the validation of lengthy strings. They come in handy when, for instance, you need to test a Prometheus configuration that\u
3820026rsquo;s generated using Go structures. You can marshal this configuration into YAML and then compare it against a static reference to ensure a match. Golden files offer an elegant solution to this challenge, sparing you the need to hard-code the static configuration directly into your test code.\u003c/p\u003e\n\u003cp\u003eIn the example below, we\u0026rsquo;re generating the Prometheus configuration (which can easily have 100+ lines for each individual test) and comparing it against a golden file:\u003c/p\u003e\n\u003cp\u003ehttps://github.com/prometheus-operator/prometheus-operator/blob/aeceb0b4fadc8307a44dc55afdceca0bea50bbb0/pkg/prometheus/promcfg_test.go#L102-L277\u003c/p\u003e\n\u003cp\u003eIf not for golden files, the test above, instead of ~150 lines, would easily require around ~1000 lines. The usage of golden files help us maintain test suites with several multi line strings comparison without sacrificing test readability.\u003c/p\u003e\n\u003ch3 id=\"updating-golden-files\"\u003eUpdating Golden Files \u003ca href=\"#updating-golden-files\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThere are contributions, e.g. adding a new required field to an existing configuration, that require to update several golden files at once. This can easily be done with the command below:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emake test-unit-update-golden\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"validating-prometheus-golden-files\"\u003eValidating Prometheus Golden Files \u003ca href=\"#validating-prometheus-golden-files\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAll Prometheus golden files in \u003ccode\u003epkg/prometheus/testdata/\u003c/code\u003e are automatically validated using \u003ccode\u003epromtool check config --syntax-only\u003c/code\u003e to ensure they represent valid Prometheus configurations. This validation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRuns automatically as part of \u003ccode\u003emake test-unit\u003c/code\u003e and \u003ccode\u003emake test-long\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFails the build if any golden file contains invalid configuration\u003c/li\u003e\n\u003cli\u003eUses the latest compatible \u003ccode\u003epromtool\u003c/code\u003e version from the Prometheus compatibility matrix\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRunning validation manually:\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emake test-prometheus-goldenfiles\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Files in \u003ccode\u003epkg/prometheus/testdata/\u003c/code\u003e subdirectories are excluded from validation as they contain either configuration fragments or legacy configurations.\u003c/p\u003e\n\u003ch2 id=\"end-to-end-tests\"\u003eEnd-to-end tests \u003ca href=\"#end-to-end-tests\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eSometimes, running tests in isolation is not enough and we really want test the behavior of Prometheus-Operator when running in a working Kubernetes cluster. For those occasions, end-to-end tests are our choice.\u003c/p\u003e\n\u003cp\u003eTo run e2e-tests locally, first start a Kubernetes cluster. We recommend \u003ca href=\"https://kind.sigs.k8s.io/\"\u003eKinD\u003c/a\u003e because it is lightweight (it can run on small notebooks) and this is what the project\u0026rsquo;s CI uses. \u003ca href=\"https://minikube.sigs.k8s.io/docs/start/\"\u003eMiniKube\u003c/a\u003e is also another option.\u003c/p\u003e\n\u003cp\u003eFor manual testing, you can use the utility script \u003ca href=\"scripts/run-external.sh\"\u003escripts/run-external.sh\u003c/a\u003e, it will check all the requirements and run your local version of the Prometheus Operator on your Kind cluster:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e./scripts/run-external.sh -c\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"building-images-and-loading-them-into-your-cluster\"\u003eBuilding images and loading them into your cluster \u003ca href=\"#building-images-and-loading-them-into-your-cluster\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003ch4 id=\"using-docker-with-kind\"\u003eUsing docker with Kind \u003ca href=\"#using-docker-with-kind\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eBefore running automated end-to-e
382nd tests, you need run the following command to make images and load it in your local cluster:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eKIND_CONTEXT\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003ee2e make test-e2e-images\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"using-podman-with-kind\"\u003eUsing podman with Kind \u003ca href=\"#using-podman-with-kind\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eWhen running kind on MacOS using podman, it is recommended to create podman machine with \u003ccode\u003e4\u003c/code\u003e CPUs and \u003ccode\u003e8 GiB\u003c/code\u003e memory. Less resources might cause end to end tests to fail because of lack of resources in the cluster.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epodman machine init --cpus\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e --memory\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e8192\u003c/span\u003e --rootful --now\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eBefore running automated end-to-end tests, you need run the following command to make images and load it in your local cluster:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eCONTAINER_CLI\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003epodman \u003cspan class=\"nv\"\u003eKIND_CONTEXT\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003ee2e make test-e2e-images\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"running-the-automated-e2e-tests\"\u003eRunning the automated E2E Tests \u003ca href=\"#running-the-automated-e2e-tests\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTo run the automated end-to-end tests, run the following command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake test-e2e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ccode\u003emake test-e2e\u003c/code\u003e will run the complete end-to-end test suite. Those are the same tests we run in Pull Requests pipelines and it will make sure all features requirements amongst \u003cem\u003e\u003cstrong\u003eall\u003c/strong\u003e\u003c/em\u003e controllers are working.\u003c/p\u003e\n\u003cp\u003eWhen working on a contribution though, it\u0026rsquo;s rare that you\u0026rsquo;ll need to make a change that impacts all controllers at once. Running the complete test suite takes a \u003cem\u003e\u003cstrong\u003elong time\u003c/strong\u003e\u003c/em\u003e, so you might want to run only the tests that are relevant to your change while developing it.\u003c/p\u003e\n\u003ch3 id=\"skipping-test-suites\"\u003eSkipping test suites \u003ca href=\"#skipping-test-suites\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003ehttps://github.com/prometheus-operator/prometheus-operator/blob/272df8a2411bcf877107b3251e79ae8aa8c24761/test/e2e/main_test.go#L46-L50\u003c/p\u003e\n\u003cp\u003eAs shown above, particular test suites can be skipped with Environment Variables. You can also look at our \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/272df8a2411bcf877107b3251e79ae8aa8c24761/.github/workflows/e2e.yaml#L85-L94\"\u003eCI pipeline as example\u003c/a\u003e. Although we always run all tests in CI, skipping irrelevant tests are great during development as they shorten the feedback loop.\u003c/p\u003e\n\u003cp\u003eThe following Makefile targets can run specific end-to-e
382nd tests:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emake test-e2e-alertmanager\u003c/code\u003e - Will run Alertmanager tests.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emake test-e2e-thanos-ruler\u003c/code\u003e - Will run Thanos-Ruler tests.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emake test-e2e-prometheus\u003c/code\u003e - Will run Prometheus tests with limited namespace permissions.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emake test-e2e-prometheus-all-namespaces\u003c/code\u003e - Will run regular Prometheus tests.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emake test-e2e-operator-upgrade\u003c/code\u003e - Will validate that a monitoring stack managed by the previous version of Prometheus-Operator will continue to work after an upgrade to the current version.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emake test-e2e-prometheus-upgrade\u003c/code\u003e - Will validate that a series of Prometheus versions can be sequentially upgraded.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emake test-e2e-feature-gates\u003c/code\u003e - Will validate the features behind a gate.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"running-only-one-end-to-end-test\"\u003eRunning only one end-to-end test \u003ca href=\"#running-only-one-end-to-end-test\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe test suites can easily take some dozens of minutes, even when running on your top-notch laptop. If you\u0026rsquo;re debugging a particular test, it might be advantageous to run only this specific test. For example, the following command will only run the \u003ccode\u003eTestPrometheusRuleCRDValidation/valid-rule-names\u003c/code\u003e sub-test:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eTEST_RUN_ARGS\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;-run TestPrometheusRuleCRDValidation/valid-rule-names\u0026#34;\u003c/span\u003e make test-e2e-prometheus\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e" 383 }, 384 { 385 id: 43, 386 href: "https://prometheus-operator.dev/docs/community/materials/", 387 title: "Materials", 388 description: null, 389 content: "\u003cp\u003eThis page contains presentations and blog articles that talk about the Prometheus Operator.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eIf you have made a presentation or blog that demonstrated or referenced Prometheus Operator, please open a PR to add it to this page! Please add your entry in chronological order, with the most recent presentation or blog at the top.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"presentations\"\u003ePresentations \u003ca href=\"#presentations\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/alLOIDTZjrg?si=HM-VlQ7kKYJKCBKH\"\u003eWhat\u0026rsquo;s New in Prometheus-Operator\u003c/a\u003e - S Ashwin - KubeCon + CloudNativeCon Japan 2025 (Lightning Talk) - \u003ca href=\"https://docs.google.com/presentation/d/1HhcnfJj0dCLszuHkYJJMREE25HVe-Ich/edit?usp=sharing\u0026amp;ouid=108519017454303267250\u0026amp;rtpof=true\u0026amp;sd=true\"\u003eSlides\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/Yd0kuAHaWjE?si=fta8nhRhCH5NRatY\"\u003eOptimizing Scrape Configs with Prometheus Operator\u003c/a\u003e - Nicolas Takashi - PromCon 2024 (Lightning Talk)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/wkkXh8X0N8s?si=PVqsvzxM5O0sfvMd\"\u003eHarnessing the Potential of Prometheus Agent Mode\u003c/a\u003e - M Viswanath Sai and S Ashwin - PromCon 2024 - \u003ca href=\"https://docs.google.com/presentation/d/1sf6EBUkyPFMHZT0faSS82n6g8Fn7BwOCGoYQJhSqnYQ/edit?usp=sharing\"\u003eSlides\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/bVICOulH5IY?si=M1GKX0lDmuBzyCzH\"\u003eArchitecting Growth: Scaling Tactics for Prometheus Metrics Collection\u003c/a\u003e - Arthur Silva Sens \u0026amp; Nicolas Takashi - KubeCon + CloudNativeCon Europe 2024 - \u003ca href=\"https://docs.google.com/presentation/d/13PzKz1na83rESIbqDBTeKUzTR9B1mH0s7QF7cESbSrI/edit?usp=sharing\"\u003eSlides\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/RabXsaOl1TE?si=Sc82jMpIgddcR212\"\u003eScrapeConfig CRD: The Rising Star in the Prometheus-Operator Ecosystem\u003c/a\u003e - Jayapriya Pai - KCD Kerala 2024 - \u003ca href=\"https://github.com/slashpai/speaker-notes/tree/main/kcd-kerala-2024\"\u003eSlides\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/live/ymR57Q0qqg4?si=JUmYjkfSOJe4qpam\u0026amp;
389t=27386\"\u003ePrometheus-Operator: What\u0026rsquo;s next?\u003c/a\u003e - Simon Pasquier - PromCon 2023 (Lightning Talk) - \u003ca href=\"https://docs.google.com/presentation/d/1P3fBYHpzQ67M-KwO2s-KaorXn4p7WcBEaOYWLI84hFA/edit?slide=id.gae9988762_0_0#slide=id.gae9988762_0_0\"\u003eSlides\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/live/ymR57Q0qqg4?si=LsDGIBC42ylJbjbw\u0026amp;t=26271\"\u003eAdditional scrape configs, my love\u003c/a\u003e - Guillaume Hérail - PromCon 2023 (Lightning Talk)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/P__R4CFFxEQ?si=1YPkY-X-4ST4YJ7j\"\u003eDeep Dive into the Prometheus Operator Ecosystem\u003c/a\u003e - Jayapriya Pai - KCD Bengaluru 2023 - \u003ca href=\"https://github.com/slashpai/speaker-notes/tree/main/kcd-blr-2023\"\u003eSlides\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/Uph_Say4D3M?si=vElc7eea9mSKiE9d\"\u003eHow to Be 10x SRE? A Deep Dive to Prometheus Operator\u003c/a\u003e - Jayapriya Pai \u0026amp; Haoyu Sun - Prometheus Day Europe 2022 - \u003ca href=\"https://github.com/slashpai/speaker-notes/tree/main/prometheus-day-eu-2022\"\u003eSlides\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/CyQNYT1ZQQ8?si=0k6NhMsQVqTxULl1\"\u003ePractical Kubernetes Monitoring with Prometheus\u003c/a\u003e - Michael Friedrich - PromCon North America 2021\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/MuHPMXCGiLc?si=2tpfuyMzRVh0MR8-\"\u003eMonitoring Kubernetes with Prometheus-Operator\u003c/a\u003e - Lili Cosic - Cloud Native Computing Berlin Meetup 2021\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/IpGfmmJ2hcw?si=UpU8zN82y8kKYtiE\"\u003eDeclarative Multi-Cluster Monitoring with Prometheus\u003c/a\u003e - Matthias Loibl \u0026amp; Frederic Branczyk - KubeCon + CloudNativeCon Europe 2018\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://youtu.be/5Jr1v9mWnJc?si=qLYG3ztpsdkqA_nP\"\u003eEnd to end monitoring with the Prometheus Operator\u003c/a\u003e - Frederic Branczyk - CoreOS Fest 2017\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"blogs\"\u003eBlogs \u003ca href=\"#blogs\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://www.arthursens.dev/posts/prometheus-shard-autoscaling\"\u003ePrometheus Shard Autoscaling with Prometheus-Operator\u003c/a\u003e - Arthur Silva Sens - 2024\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://medium.com/@helia.barroso/a-guide-to-service-discovery-with-prometheus-operator-how-to-use-pod-monitor-service-monitor-6a7e4e27b303\"\u003eA Guide to Service Discovery with Prometheus Operator â How to use Pod Monitor, Service Monitor and Scrape Config\u003c/a\u003e -\nHélia Barroso - 2023\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n" 390 }, 391 { 392 id: 44, 393 href: "https://prometheus-operator.dev/docs/community/dco/", 394 title: "DCO", 395 description: null, 396 content: "\u003cp\u003eDeveloper Certificate of Origin\nVersion 1.1\u003c/p\u003e\n\u003cp\u003eCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n660 York Street, Suite 102,\nSan Francisco, CA 94110 USA\u003c/p\u003e\n\u003cp\u003eEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\u003c/p\u003e\n\u003cp\u003eDeveloper\u0026rsquo;s Certificate of Origin 1.1\u003c/p\u003e\n\u003cp\u003eBy making a contribution to this project, I certify that:\u003c/p\u003e\n\u003cp\u003e(a) The contribution was created in whole or in part by me and I\nhave the right to submit it under the open source license\nindicated in the file; or\u003c/p\u003e\n\u003cp\u003e(b) The contribution is based upon previous work that, to the best\nof my knowledge, is covered under an appropriate open source\nlicense and I have the right under that license to submit that\nwork with modifications, whether created in whole or in part\nby me, under the same open source license (unless I am\npermitted to submit under a different license), as indicated\nin the file; or\u003c/p\u003e\n\u003cp\u003e(c) The contribution was provided directly to me by some other\nperson who certified (a), (b) or (c) and I have not modified\nit.\u003c/p\u003e\n\u003cp\u003e(d) I understand and agree that this project and the contribution\nare public and that a record of the contribution (including all\npersonal information I submit with it, including my sign-off) is\nmaintained indefinitely and may be redistributed consistent with\nthis project or the open source license(s) involved.\u003c/p\u003e\n" 397 }, 398 { 399 id: 45, 400 href: "https://prometheus-operator.dev/docs/community/code-of-conduct/", 401 title: "Code of Conduct", 402 description: null, 403 content: "\u003ch2 id=\"community-code-of-conduct\"\u003eCommunity Code of Conduct \u003ca href=\"#community-code-of-conduct\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"contributor-code-of-conduct\"\u003eContributor Co
403de of Conduct \u003ca href=\"#contributor-code-of-conduct\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eAs 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.\u003c/p\u003e\n\u003cp\u003eWe 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.\u003c/p\u003e\n\u003cp\u003eExamples of unacceptable behavior by participants include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe use of sexualized language or imagery\u003c/li\u003e\n\u003cli\u003ePersonal attacks\u003c/li\u003e\n\u003cli\u003eTrolling or insulting/derogatory comments\u003c/li\u003e\n\u003cli\u003ePublic or private harassment\u003c/li\u003e\n\u003cli\u003ePublishing others\u0026rsquo; private information, such as physical or electronic addresses, without explicit permission\u003c/li\u003e\n\u003cli\u003eOther unethical or unprofessional conduct.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eProject 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.\u003c/p\u003e\n\u003cp\u003eThis code of conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community.\u003c/p\u003e\n\u003cp\u003eInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting a project maintainer listed in the MAINTAINERS.md file.\u003c/p\u003e\n\u003cp\u003eThis Code of Conduct is adapted from the Contributor Covenant\n(https://www.contributor-covenant.org), version 1.2.0, available at\nhttps://www.contributor-covenant.org/version/1/2/0/\u003c/p\u003e\n" 404 }, 405 { 406 id: 46, 407 href: "https://prometheus-operator.dev/docs/community/release/", 408 title: "Release", 409 description: null, 410 content: "\u003ch1 id=\"release-schedule\"\u003eRelease schedule \u003ca href=\"#release-schedule\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eFollowing \u003ca href=\"https://github.com/prometheus/prometheus/blob/main/RELEASE.md\"\u003ePrometheus\u003c/a\u003e and \u003ca href=\"https://github.com/thanos-io/thanos/blob/main/docs/release-process.md\"\u003eThanos\u003c/a\u003e, this project aims for a predictable release schedule.\u003c/p\u003e\n\u003cp\u003eThe release cycle for cutting releases is every 6 weeks\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eRelease\u003c/th\u003e\n\u003cth\u003eDate of release (year-month-day)\u003c/th\u003e\n\u003cth\u003eRelease shepherd\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.97\u003c/td\u003e\n\u003ctd\u003e2027-01-06\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esearching for volunteer\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.96\u003c/td\u003e\n\u003ctd\u003e2026-11-25\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esearching for volunteer\u003c/strong\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.95\u003c/td\u003e\n\u003ctd\u003e2026-10-14\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.94\u003c/td\u003e\n\u003ctd\u003e2026-09-02\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.93\u003c/td\u003e\n\u003ctd\u003e2026-07-22\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.92\u003c/td\u003e\n\u003ctd\u003e2026-06-10\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.91\u003c/td\u003e\n\u003ctd\u003e2026-04-29\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.90\u003c/td\u003e\n\u003ctd\u003e2026-03-18\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.89\u003c/td\u003e\n\u003ctd\u003e2026-02-04\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.88\u003c/td\u003e\n\u003ctd\u003e2025-12-24\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.87\u003c/td\u003e\n\u003ctd\u003e2025-11-12\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.86\u003c/td\u003e\n\u003ctd\u003e2025-10-01\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.85\u003c/td\u003e\n\u003ctd\u003e2025-08-20\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.84\u003c/td\u003e\n\u003ctd\u003e2025-07-09\u003c/td\u003e\n\u003ctd\u003eM Viswanath Sai (Github: @mviswanathsai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.83\u003c/td\u003e\n\u003ctd\u003e2025-05-28\u003c/td\u003e\n\u003ctd\u003eM Viswanath Sai (Github: @mviswanathsai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.82\u003c/td\u003e\n\u003ctd\u003e2025-04-16\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.81\u003c/td\u003e\n\u003ctd\u003e2025-03-05\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.80\u003c/td\u003e\n\u003ctd\u003e2025-01-22\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.79\u003c/td\u003e\n\u003ctd\u003e2024-12-11\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.78\u003c/td\u003e\n\u003ctd\u003e2024-10-30\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.77\u003c/td\u003e\n\u003ctd\u003e2024-09-18\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.76\u003c/td\u003e\n\u003ctd\u003e2024-08-07\u003c/td\u003e\n\u003ctd\u003eNicolas Takashi (Github: @nicolastakashi)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.75\u003c/td\u003e\n\u003ctd\u003e2024-06-26\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.74\u003c/td\u003e\n\u003ctd\u003e2024-05-15\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.73\u003c/td\u003e\n\u003ctd\u003e2024-04-03\u003c/td\u003e\n\u003ctd\u003eJayapriya Pai (Github: @slashpai)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.72\u003c/td\u003e\n\u003ctd\u003e2024-02-21\u003c/td\u003e\n\u003ctd\u003eArthur Sens (Github: @ArthurSens)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.71\u003c/td\u003e\n\u003ctd\u003e2024-01-10\u003c/td\u003e\n\u003ctd\u003eSimon Pasquier (GitHub: @simonpasquier)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ev0.70\u003c/td\u003e\n\u003ctd\u003e2023-11-29\u
410003c/td\u003e\n\u003ctd\u003ePawel Krupa (GitHub: @paulfantom)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eIf any of the maintainers is interested in volunteering please create a pull request against the \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator\"\u003eprometheus-operator/prometheus-operator\u003c/a\u003e repository and propose yourself for the release series of your choice.\u003c/p\u003e\n\u003ch2 id=\"release-shepherd-responsibilities\"\u003eRelease shepherd responsibilities \u003ca href=\"#release-shepherd-responsibilities\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe release shepherd is responsible for the entire release series of a major or minor release, including all patch releases. Some preparations should be done a few days in advance.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWe aim to keep the main branch in a working state at all times. In principle, it should be possible to cut a release from main at any time. In practice, things might not work out as nicely. A few days before the release is scheduled, the shepherd should check the state of main. Following their best judgement, the shepherd should try to expedite features/bug fixes that are still in progress but should make it into the release. On the other hand, the shepherd may hold back merging last-minute invasive and risky changes that are better suited for the next major release.\u003c/li\u003e\n\u003cli\u003eOn the date listed in the table above, the release shepherd cuts the release and creates a new branch called \u003ccode\u003erelease-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;\u003c/code\u003e starting at the commit tagged for the release.\u003c/li\u003e\n\u003cli\u003eIf regressions or critical bugs are detected, they need to get fixed before cutting a new release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee the next section for details on cutting an individual release.\u003c/p\u003e\n\u003ch2 id=\"how-to-cut-a-new-release\"\u003eHow to cut a new release \u003ca href=\"#how-to-cut-a-new-release\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis guide is strongly based on the \u003ca href=\"https://github.com/prometheus/prometheus/blob/main/RELEASE.md\"\u003ePrometheus release instructions\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"branch-management-and-versioning-strategy\"\u003eBranch management and versioning strategy \u003ca href=\"#branch-management-and-versioning-strategy\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWe use \u003ca href=\"http://semver.org/\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe maintain a separate branch for each minor release, named \u003ccode\u003erelease-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;\u003c/code\u003e, e.g. \u003ccode\u003erelease-1.1\u003c/code\u003e, \u003ccode\u003erelease-2.0\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe usual flow is to merge new features and changes into the \u003ccode\u003emain\u003c/code\u003e branch and to merge bug fixes into the latest release branch. Bug fixes are then merged into \u003ccode\u003emain\u003c/code\u003e from the latest release branch. The \u003ccode\u003emain\u003c/code\u003e branch should always contain all commits from the latest release branch.\u003c/p\u003e\n\u003cp\u003eIf a bug fix got accidentally merged into \u003ccode\u003emain\u003c/code\u003e, cherry-pick commits have to be created in the latest release branch, which then have to be merged back into \u003ccode\u003emain\u003c/code\u003e. Try to avoid that situation.\u003c/p\u003e\n\u003cp\u003eMaintaining the release branches for older minor releases happens on a best effort basis.\u003c/p\u003e\n\u003ch2 id=\"update-go-dependencies\"\u003eUpdate Go dependencies \u003ca href=\"#update-go-dependencies\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eA couple of days before the release, consider submitting a PR against the \u003ccode\u003emain\u003c/code\u003e branch to update the Go dependencies.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake update-go-deps\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake tidy\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"update-operand-versions\"\u003eUpdate operand versions \u003ca href=\"#update-operand-versions\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eA couple of days before the release, update the \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/f6ce472ecd6064fb6769e306b55b149dfb6af903/pkg/operator/defaults.go#L20-L31\"\u003edefault versions\u003c/a\u003e of Prometheus, Alertmanager and Thanos if newer versions are available.\u003c/p\u003e\n\u003ch2 id=\"prepare-your-release\"\u003ePrepare your release \u003ca href=\"#prepare-your-release\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFor a new major or minor release, work from the \u003ccode\u003emain\u003c/code\u003e branch. For a patch release, work in the branch of the minor release you want to patch (e.g. \u003ccode\u003erelease-0.43\u003c/code\u003e if you\u0026rsquo;re releasing \u003ccode\u003ev0.43.2\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eBump the version in the \u003ccode\u003eVERSION\u003c/code\u003e file in the root of the repository.\u003c/p\u003e\n\u003cp\u003eA number of files have to be re-generated, this is automated with the following make target:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake clean generate\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eBump the version of the \u003ccode\u003epkg/apis/monitoring\u003c/code\u003e and \u003ccode\u003epkg/client\u003c/code\u003e packages in \u003ccode\u003ego.mod\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ego mod edit -require \u003cspan class=\"s2\"\u003e\u0026#34;github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring@v\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003e\u0026lt; VERSION\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;
410\u003c/span\u003e pkg/client/go.mod\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ego mod edit -require \u003cspan class=\"s2\"\u003e\u0026#34;github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring@v\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003e\u0026lt; VERSION\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ego mod edit -require \u003cspan class=\"s2\"\u003e\u0026#34;github.com/prometheus-operator/prometheus-operator/pkg/client@v\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003e\u0026lt; VERSION\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eNow that all version information has been updated, an entry for the new version can be added to the \u003ccode\u003eCHANGELOG.md\u003c/code\u003e file.\u003c/p\u003e\n\u003cp\u003eNote that CHANGELOG.md should only document changes relevant to users of prometheus-operator, including external API changes, performance improvements, and new features. Do not document changes of internal interfaces, code refactoring and clean-ups, doc changes and changes to the build process, etc.\u003c/p\u003e\n\u003cp\u003eEntries in the \u003ccode\u003eCHANGELOG.md\u003c/code\u003e are meant to be in this order:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[CHANGE]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[FEATURE]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[ENHANCEMENT]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[BUGFIX]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCreate a PR for the changes to be reviewed.\u003c/p\u003e\n\u003cp\u003eYou can use the GitHub UI to see the difference between the release branch and the latest stable release.\u003c/p\u003e\n\u003cp\u003eFor example: https://github.com/prometheus-operator/prometheus-operator/compare/v0.72.0\u0026hellip;release-0.73\u003c/p\u003e\n\u003cp\u003eUnless exception, the latest tag shouldn\u0026rsquo;t contain commits that don\u0026rsquo;t exist in the release branch.\u003c/p\u003e\n\u003ch2 id=\"publish-the-new-release\"\u003ePublish the new release \u003ca href=\"#publish-the-new-release\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFor new minor and major releases, create the \u003ccode\u003erelease-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;\u003c/code\u003e branch starting at the PR merge commit.\nPush the branch to the remote repository with\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e The remote name \u003ccode\u003eorigin\u003c/code\u003e is assumed to be pointed to \u003ccode\u003egithub.com/prometheus-operator/prometheus-operator\u003c/code\u003e. If you have a different remote name, use that instead of \u003ccode\u003eorigin\u003c/code\u003e. Verify this using \u003ccode\u003egit remote -v\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit push origin release-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eYou could also create the release branch directly from Github UI as well if the current main branch HEAD is what release branch should be based on.\u003c/p\u003e\n\u003cp\u003eFrom now on, all work happens on the \u003ccode\u003erelease-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;\u003c/code\u003e branch.\u003c/p\u003e\n\u003cp\u003eTag the new release with a tag named \u003ccode\u003ev\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;.\u0026lt;patch\u0026gt;\u003c/code\u003e, e.g. \u003ccode\u003ev2.1.3\u003c/code\u003e. Note the \u003ccode\u003ev\u003c/code\u003e prefix. Tag also the \u
410003ccode\u003egithub.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring\u003c/code\u003e module with \u003ccode\u003epkg/apis/monitoring/v\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;.\u0026lt;patch\u0026gt;\u003c/code\u003e and the \u003ccode\u003egithub.com/prometheus-operator/prometheus-operator/pkg/client\u003c/code\u003e module with \u003ccode\u003epkg/client/v\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;.\u0026lt;patch\u0026gt;\u003c/code\u003e. You can do the tagging on the commandline:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;v\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003e\u0026lt; VERSION\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit tag -s \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e -m \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit tag -s \u003cspan class=\"s2\"\u003e\u0026#34;pkg/apis/monitoring/\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e -m \u003cspan class=\"s2\"\u003e\u0026#34;pkg/apis/monitoring/\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit tag -s \u003cspan class=\"s2\"\u003e\u0026#34;pkg/client/\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e -m \u003cspan class=\"s2\"\u003e\u0026#34;pkg/client/\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit push origin \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;pkg/apis/monitoring/\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;pkg/client/\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003etag\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSigned tag with a GPG key is appreciated, but in case you can\u0026rsquo;t add a GPG key to your Github account using the following \u003ca href=\"https://docs.github.com/articles/generating-a-gpg-key\"\u003eprocedure\u003c/a\u003e, you can replace the \u003ccode\u003e-s\u003c/code\u003e flag by \u003ccode\u003e-a\u003c/code\u003e flag of the \u003ccode\u003egit tag\u003c/code\u003e command to only annotate the tag without signing.\u003c/p\u003e\n\u003cp\u003eOnce a tag is created, the \u003ccode\u003epublish\u003c/code\u003e Github action will push the container images to \u003ca href=\"https://quay.io/organization/prometheus-operator\"\u003equay.io\u003c/a\u003e and \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/pkgs/container/prometheus-operator\"\u003eghcr.io\u003c/a\u003e. Wait until the \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/actions/workflows/publish.yaml\"\u003epublish\u003c/a\u003e workflow is complete before going to the next step.\u003c/p\u003e\n\u003cp\u003eWe have observed in the past that if we create a draft release and publish it later assets are not attached correctly hence its advised to wait till all workflow jobs (at least the publish job) are completed to create the release.\u003c/p\u003e\n\u003cp\u003eGo to https://github.com/prometheus-operator/prometheus-operator/releases/new, associate the new release with the before pushed tag, paste in changes made to \u003ccode\u003eCHANGELOG.md\u003c/code\u003e and click \u0026ldquo;Publish release\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eOnce release is published, \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/actions/workflows/release.yaml\"\u003erelease job\u003c/a\u003e will be triggered to upload assets to the newly created release.\u003c/p\u003e\n\u003cp\u003eFor patch releases, submit a pull request to merge back the release branch into the \u003ccode\u003emain\u003c/code\u003e branch.\u003c/p\u003e\n\u003ch2 id=\"update-website\"\u003eUpdate website \u003ca href=\"#update-website\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBump the operator\u0026rsquo;s version in the \u003ca href=\"https://github.com/prometheus-operator/web
410site/blob/main/data/prometheusOperator.json\"\u003ewebsite\u003c/a\u003e repository.\u003c/p\u003e\n\u003cp\u003eTake a breath. You\u0026rsquo;re done releasing.\u003c/p\u003e\n" 411 }, 412 { 413 id: 47, 414 href: "https://prometheus-operator.dev/docs/", 415 title: "Documentation website", 416 description: "Prometheus Operator Documentation", 417 content: "" 418 }, 419 { 420 id: 48, 421 href: "https://prometheus-operator.dev/docs/proposals/accepted/configuration-object-status-subresource/", 422 title: "", 423 description: null, 424 content: "\u003ch2 id=\"status-subresource-for-config-based-resources\"\u003eStatus Subresource For Config-Based Resources \u003ca href=\"#status-subresource-for-config-based-resources\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eOwners:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yp969803\"\u003eyp969803\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStatus:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAccepted\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelated Tickets:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/issues/3335\"\u003e#3385\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOther docs:\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\u003c/li\u003e\n\u003cli\u003ehttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"../implemented/202409-status-subresource.md\"\u003eworkload status subresource proposal\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis proposal outlines the implementation of a Status subresource field extension to the Prometheus operator\u0026rsquo;s configuration-based Custom Resource Definitions (CRDs).\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"why\"\u003eWhy \u003ca href=\"#why\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe solution will allow users to verify whether their configurations have been successfully applied to the corresponding workload resources.\u003c/p\u003e\n\u003cp\u003eMapping between configuration resources and their associated workload resources:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eConfiguration Resource\u003c/th\u003e\n\u003cth\u003eWorkload Resource\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eServiceMonitor\u003c/td\u003e\n\u003ctd\u003ePrometheus and PrometheusAgent\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePodMonitor\u003c/td\u003e\n\u003ctd\u003ePrometheus and PrometheusAgent\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eProbes\u003c/td\u003e\n\u003ctd\u003ePrometheus and PrometheusAgent\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eScrapeConfig\u003c/td\u003e\n\u003ctd\u003ePrometheus and PrometheusAgent\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePrometheusRule\u003c/td\u003e\n\u003ctd\u003ePrometheus and ThanosRuler\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eAlertmanagerConfig\u003c/td\u003e\n\u003ctd\u003eAlertmanager\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"pitfalls-of-the-current-solution\"\u003ePitfalls of the current solution \u003ca href=\"#pitfalls-of-the-current-solution\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003ePrometheus operator allows users to define their observability workloads through \u0026ldquo;workload\u0026rdquo; resources like \u003ccode\u003ePrometheus\u003c/code\u003e, \u003ccode\u003ePrometheusAgent\u003c/code\u003e, \u003ccode\u003eAlertmanager\u003c/code\u003e. The configuration of these workloads can be done dynamically by orchestrating \u0026ldquo;configuration\u0026rdquo; resources like \u003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eScrapeConfig\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eCurrently, the status subresource is only implemented for workload resources. The absence of the status subresource for configuration resources makes it difficult to determine the source of the generated configuration of the workload resources. Additionally, there is no straightforward way to observe the reconciliation status of configuration resources. While Kubernetes events are available when a configuration is rejected by a workload, they are not sufficient for ongoing visibility or troubleshooting.\u003c/p\u003e\n\u003ch2 id=\"goals\"\u003eGoals \u003ca href=\"#goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefine the structure of the status subresource for the custom resource definitions\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eServiceMonitor\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePodMonitor\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eScrapeConfig\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eProbes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePrometheusRule\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eAlertmanagerConfig\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eReport when a configuration resource is considered invali
424d during reconciliation. For example:\n\u003cul\u003e\n\u003cli\u003eFeature not being supported by the version of the workload.\u003c/li\u003e\n\u003cli\u003eInvalid configmap/secret key reference.\u003c/li\u003e\n\u003cli\u003eInvalid PromQL expression in PrometheusRule resources.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"non-goals\"\u003eNon-Goals \u003ca href=\"#non-goals\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe solution does not aim to expose the full live configuration or runtime status of Prometheus. Doing so would be expensive for the workload, the operator and the Kubernetes system in general.\n\u003cul\u003e\n\u003cli\u003eIt will not provide information about the targets being scraped and their status for scrape resources (\u003ccode\u003ePodMonitor\u003c/code\u003e, \u003ccode\u003eServiceMonitor\u003c/code\u003e, \u003ccode\u003eProbes\u003c/code\u003e and \u003ccode\u003eScrapeConfig\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eIt will not surface fired alerts from PrometheusRule resources, as querying Prometheus for this data can be expensive and places undue load on Prometheus, the operator and the Kubernetes platform in general.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eConfiguration resources won\u0026rsquo;t expose status information that explains why they are not being selected by Prometheus or why their targets are not being scraped.\n\u003cul\u003e\n\u003cli\u003eThis non-goal can be partially addressed by tools like \u003ca href=\"https://github.com/prometheus-operator/poctl\"\u003e\u003ccode\u003epoctl\u003c/code\u003e\u003c/a\u003e, which provide insights into configuration resource selection and target matching.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"audience\"\u003eAudience \u003ca href=\"#audience\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUsers of Prometheus-Operator\u003c/li\u003e\n\u003cli\u003eMaintainers and Contributors of Prometheus-Operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"how\"\u003eHow \u003ca href=\"#how\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThere are different challenges that influence the API design:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA single config resource can be selected by multiple workload resources.\u003c/li\u003e\n\u003cli\u003eThe configuration resource may not be in the same namespace as the workload resource.\u003c/li\u003e\n\u003cli\u003eWhich workload selects which configuration resources can vary over time depending on the workload resource\u0026rsquo;s label selectors and on the configuration resource\u0026rsquo;s labels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"api\"\u003eAPI \u003ca href=\"#api\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003ch4 id=\"servicemonitorpodmonitorprobesscrapeconfig\"\u003e\u003ccode\u003eServiceMonitor\u003c/code\u003e/\u003ccode\u003ePodMonitor\u003c/code\u003e/\u003ccode\u003eProbes\u003c/code\u003e/\u003ccode\u003eScrapeConfig\u003c/code\u003e \u003ca href=\"#servicemonitorpodmonitorprobesscrapeconfig\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eServiceMonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-servicemonitor\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eteam\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ebackend\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eselector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchLabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eapp\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-service\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespaceSelector\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ematchNames\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eendpoints\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eport\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epath\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e/metrics\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003einterval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e30s\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003escheme\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ehttp\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ebasicAuth\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eusername\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-secret\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ebasic-auth-username\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003epassword\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emy-secret\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ekey\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ebasic-auth-password\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ebindings\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003egroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresource\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheuses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emain\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econditions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAccepted\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;True\u0026#34;
424\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2025-05-20T12:34:56Z\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003egroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresource\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheuses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003edefault\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econditions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAccepted\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;False\u0026#34;
424\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2024-02-08T23:52:22Z\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eInvalidConfiguration\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#39;KeepEqual\u0026#39; relabel action is only supported with Prometheus \u0026gt;= 2.41.0\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003egroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresource\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheusagents\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eagent\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econditions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAccepted\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;False\u0026#34;
424\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e3\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2024-02-08T23:52:22Z\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eInvalidConfiguration\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Referenced Secret \u0026#39;my-secret\u0026#39; in namespace \u0026#39;monitoring\u0026#39; is missing or does not contain the required key \u0026#39;basic-auth-password\u0026#39;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"prometheusrule\"\u003e\u003ccode\u003ePrometheusRule\u003c/code\u003e \u003ca href=\"#prometheusrule\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ePrometheusRule\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample-prometheus-rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eprometheus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ek8s\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erole\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealert-rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egroups\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eexample.rules\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003einterval\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e30s\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003erules\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ealert\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eHighPodCPUUsage\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eexpr\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003esum(rate(container_
424cpu_usage_seconds_total{container!=\u0026#34;\u0026#34;, pod!=\u0026#34;\u0026#34;}[5m)) by (pod) \u0026gt; 0.5\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003efor\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e5m\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elabels\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eseverity\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ewarning\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eannotations\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esummary\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;High CPU usage on pod {{ $labels.pod }}\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003edescription\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Pod {{ $labels.pod }} is using more than 0.5 cores for 5 minutes.\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ebindings\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003egroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresource\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheuses\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eprometheus-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econditions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAccepted\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;False\u0026#34;
424\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2025-05-20T12:34:56Z\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eInvalidConfiguration\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;rule 0, alert: \u0026#39;HighPodCPUUsage\u0026#39;, parse error: expected type vector in aggregation expression, got scalar\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"alertmanagerconfig\"\u003e\u003ccode\u003eAlertmanagerConfig\u003c/code\u003e \u003ca href=\"#alertmanagerconfig\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eapiVersion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com/v1alpha1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003ekind\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAlertmanagerConfig\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003emetadata\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eminimal-alertmanager-config\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003egeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\u003c/span\u003e\u003cspan class=\"nt\"\u003espec\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eroute\u
424003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereceiver\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;webhook-receiver\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereceivers\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;webhook-receiver\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ewebhookConfigs\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;http://my-webhook-service.monitoring.svc:8080/\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003esendResolved\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ebindings\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003egroup\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring.coreos.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eresource\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanagers\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ename\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealertmanager-main\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003enamespace\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003emonitoring\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003econditions\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e- \u003cspan class=\"nt\"\u003etype\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eAccepted\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003estatus\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;True\u0026#34;
424\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003eobservedGeneration\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"m\"\u003e1\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003elastTransitionTime\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;2025-05-20T12:34:56Z\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003ereason\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nt\"\u003emessage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"details-of-the-status-api-fields\"\u003eDetails of the Status API fields \u003ca href=\"#details-of-the-status-api-fields\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ebindings\u003c/code\u003e: Lists the workload resources that select the configuration resource.\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003econditions\u003c/code\u003e: Describes the latest conditions of the configuration resource in relation to the workload resource.\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003etype\u003c/code\u003e: The only condition type used is \u003ccode\u003eAccepted\u003c/code\u003e, indicating whether the workload controller has successfully accepted the configuration resource and updated the configuration of the workload accordingly.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estatus\u003c/code\u003e: It can be either \u003ccode\u003eTrue\u003c/code\u003e , \u003ccode\u003eFalse\u003c/code\u003e or \u003ccode\u003eUnknown\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTrue\u003c/code\u003e indicates that the configuration resource was successfully accepted by the controller and written to the configuration secret.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFalse\u003c/code\u003e means the controller rejected the configuration due to an error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ereason\u003c/code\u003e: Specifies the reason why the configuration was not accepted.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emessage\u003c/code\u003e: Provides the detailed error message returned by the controller during reconciliation.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eobservedGeneration\u003c/code\u003e: Represents the generation of the configuration resource that the controller has most recently observed. When the value doesn\u0026rsquo;t match the object metadata\u0026rsquo;s \u003ccode\u003egeneration\u003c/code\u003e value, the condition is stale.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"implementation\"\u003eImplementation \u003ca href=\"#implementation\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h3\u003e\n\u003ch4 id=\"feature-gate\"\u003eFeature gate \u003ca href=\"#feature-gate\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eThis feature is controlled by a feature gate: \u003ccode\u003eStatusForConfigurationResources\u003c/code\u003e. Cluster administrators can toggle this flag to enable or disable the status subresource support for configuration resources as needed.\u003c/p\u003e\n\u003cp\u003eThis feature gate is disabled by default. To enable it, pass the following argument to the prometheus-operator container during installation:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e --feature-gates\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"nv\"\u003eStatusForConfigurationResources\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"nb\"\u003etrue\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOnce we\u0026rsquo;ve reached feature completeness and we\u0026rsquo;re confident about the stability, we will toggle the feature gate to be enabled by default.\u003c/p\u003e\n\u003ch4 id=\"keeping-the-status-up-to-date\"\u003eKeeping the status up-to-date \u003ca href=\"#keeping-the-status-up-to-date\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003ch5 id=\"removing-a-binding-when-the-workload-is-deleted\"\u003eRemoving a binding when the workload is deleted \u003ca href=\"#removing-a-binding-when-the-workload-is-deleted\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h5\u003e\n\u003cp\u003eWhen a workload resource is created, we add a finalizer to it to ensure proper cleanup before deleti
424on. If a user later requests deletion of the resource, Kubernetes does not immediately remove it; instead, it sets a deletionTimestamp on the resource. This triggers an update event, which the workload controller receives and processes. When the deletionTimestamp is set, the controller proceeds to clean up the configuration resources (e.g., ServiceMonitors, PrometheusRules) with bindings to the workload. Once the cleanup is complete, the controller removes the finalizer from the workload resource, allowing Kubernetes to complete the deletion process.\u003c/p\u003e\n\u003ch5 id=\"removing-invalid-bindings-from-configuration-resources-status\"\u003eRemoving invalid bindings from configuration resources status \u003ca href=\"#removing-invalid-bindings-from-configuration-resources-status\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h5\u003e\n\u003cp\u003eA configuration resource may contain a reference to a workload resource in its bindings which is not relevant anymore. This can occur for instance when:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA workload resource A selects a configuration resource X in namespace Y.\u003c/li\u003e\n\u003cli\u003eThe operator updates the status of resource X to reference workload A.\u003c/li\u003e\n\u003cli\u003eAt a later time, changes may happen that break this association:\n\u003cul\u003e\n\u003cli\u003eThe labels of X and/or its namespace Y are modified.\u003c/li\u003e\n\u003cli\u003eThe label selectors and/or namespace selectors of workload A are updated.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThese
424changes can result in the workload A no longer selecting the configuration resource X which requires the operator to update the configuration resource\u0026rsquo;s status.\u003c/p\u003e\n\u003cp\u003eA separate Go routine can be used to remove invalid bindings, offloading this responsibility from the main workload controller\u0026rsquo;s reconciliation loop.\nThis background routine can periodically:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuery all workload resources.\u003c/li\u003e\n\u003cli\u003eList all configuration resources.\u003c/li\u003e\n\u003cli\u003eFor each configuration resource, check if its bindings are still valid.\u003c/li\u003e\n\u003cli\u003eRemove any bindings that no longer have an active association with a workload resource.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis approach ensures that the cleanup process does not interfere with the primary reconciliation loop and improves controller efficiency.\u003c/p\u003e\n\u003ch2 id=\"alternatives\"\u003eAlternatives \u003ca href=\"#alternatives\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003ch4 id=\"dedicated-crd-approach-for-configuration-workload-mapping\"\u003eDedicated CRD Approach for Configuration-Workload Mapping \u003ca href=\"#dedicated-crd-approach-for-configuration-workload-mapping\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eA potential solution to mapping a configuration resource to a workload resource is the introduction of a Custom Resource Definition (CRD). This new CRD would act as an intermediary, maintaining a clear association between configurations and workloads.\u003c/p\u003e\n\u003cp\u003eThe \u003ca href=\"https://secrets-store-csi-driver.sigs.k8s.io/introduction\"\u003eSecrets Store CSI Driver\u003c/a\u003e handles the Secrets Provider pod status in a similar way.\u003c/p\u003e\n\u003cp\u003eIt comes with the following drawbacks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIntroducing a new CRD could lead to additional operational complexity.\u003c/li\u003e\n\u003cli\u003eIt requires installation, maintenance and versioning, which could increase the administrative burden.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"storing-information-in-the-workload-resource\"\u003eStoring Information in the Workload Resource \u003ca href=\"#storing-information-in-the-workload-resource\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003eAnother approach is to store configuration mappings directly within the workload resource.\u003c/p\u003e\n\u003cp\u003eIt comes with the following drawbacks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOwners of configuration resources not having permissions to view the workload resource wonât have a view of the status which is one of the main goals of this effort.\u003c/li\u003e\n\u003cli\u003eWorkload resources could reference a high number of configuration resources (it isn\u0026rsquo;t uncommon for a Prometheus resource to select more than a hundred of service monitors + pod monitors + rules).\u003c/li\u003e\n\u003cli\u003eStoring all these mappings within a single workload resource could lead to excessive API payload sizes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"action-plan\"\u003eAction Plan \u003ca href=\"#action-plan\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce a new feature gate.\u003c/li\u003e\n\u003cli\u003eManage finalizers on workload resources.\n\u003cul\u003e\n\u003cli\u003eAdd or remove a finalizer based on the feature gate status.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCreate bindings in associated configuration resources.\n\u003cul\u003e\n\u003cli\u003eDuring workload reconciliation, populate status.bindings in matching configuration resources.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHandle updates affecting selection logic\n\u003cul\u003e\n\u003cli\u003eOn changes to:\n\u003cul\u003e\n\u003cli\u003eNamespace labels\u003c/li\u003e\n\u003cli\u003eConfiguration resource labels\u003c/li\u003e\n\u003cli\u003eWorkloadâs label/namespace selectors\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRecalculate and remove invalid bindings from affected configuration resources.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClean up bindings on workload deletion\n\u003cul\u003e\n\u003cli\u003eWhen a workload is deleted, remove its references from all associated configuration resources\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"follow-ups\"\u003eFollow-ups \u003ca href=\"#follow-ups\" class=\"anchor\" aria-hidden=\"true\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eOnce the goals of this proposal are achieved, we can extend the implementation to populate scrape targets information in the status subresource of ServiceMonitor, PodMonitor, ScrapeConfig, and Probe resources.\u003c/p\u003e\n" 425 }, 426 ]; 427 */ 428 429 // https://discourse.gohugo.io/t/range-length-or-last-element/3803/2 430 431 432 433 index.add( 434 { 435 id: 0, 436 href: "/docs/getting-started/", 437 title: "Getting-Started", 438 description: "Prologue for the Prometheus Operator.", 439 content: "" 440 } 441 ); 442 index.add( 443 { 444 id: 1, 445 href: "/docs/getting-started/introduction/", 446 title: "Introduction", 447 description: "The Prometheus Operator provides Kubernetes native deployment and management of Prometheus and related monitoring components", 448 content: "Prometheus Operator is a Kubernetes Operator that provides Kubernetes native deployment and management of Prometheus and related monitoring components.\nThe Prometheus operator includes, but is not limited to, the following features:\nKubernetes Custom Resources: Use Kubernetes custom resources to deploy and manage Prometheus, Alertmanager, and related components.\nSimplified Deployment Configuration: Configure the fundamentals of Prometheus like versions, persistence, retention policies, and replicas from a native Kubernetes resource.\nPrometheus Target Configuration: Automatically generate monitoring target configurations based on familiar Kubernetes label queries; no need to learn a Prometheus specific configuration language.\nPrometheus Operator provides a set of Custom Resource Definitions(CRDs) that allows you to configure your Prometheus and related instances. Currently, the CRDs provided by Prometheus Operator are:\nPrometheus Alertmanager ThanosRuler ServiceMonitor PodMonitor Probe PrometheusRule AlertmanagerConfig PrometheusAgent ScrapeConfig Check the Design page for an overview of all the resources provided by Prometheus Operator.\nGoals # To significantly reduce the effort required to configure, implement and manage all components of Prometheus based monitoring stack.\nAutomation - Automate the management of Prometheus monitoring targets, ultimately increasing efficiency. This automation is performed by the use of Kubernetes Custom Resource Definition. The Operator introduces custom resources like Prometheus, Alertmanager, ThanosRuler, and others, which help automate the deployment and configuration of these resources.\nConfiguration Abstraction and Validation - Instead of learning and manually writing Prometheus Relabeling rules (which can be time consuming), you can simply use Kubernetes Label Selectors. ServiceMonitor, PodMonitor and Probe custom resources provide this abstraction. The Operator also removes the complexity of validating the configuration of AlertmanagerConfig and PrometheusRule objects.\nScaling - There are many scaling-related features provided by the Operator like ThanosRuler custom resource for rule evaluation, workload distribution across multiple Prometheus instances using scrape target sharding, and running Thanos sidecar in Prometheus instance for long-term storage.\nNext Steps # By now, you have the basic
448idea about Prometheus Operator!!\nTake a look at these guides to get into action with Prometheus Operator.\nGetting-Started Get started with Prometheus-Operator.\nAPI Reference Reference for different fields of Custom Resources in Prometheus-Operator.\nPlatform Guide Set up, configure and manage instances of Prometheus-Operator, Prometheus, Alertmanager and ThanosRuler resources.\nDeveloper Guide Learn how to configure scraping, alerting, and recording rules for your applications.\nCommunity Join and interact with Prometheus-Operator community.\n" 449 } 450 ); 451 index.add( 452 { 453 id: 2, 454 href: "/docs/getting-started/installation/", 455 title: "Installing Prometheus Operator", 456 description: "Installation guide listing all the installation methods of Prometheus Operator.", 457 content: "There are different approaches to install Prometheus Operator in your Kubernetes cluster:\nInstall using YAML files Install using Kube-Prometheus Install using Helm Chart Pre-requisites # Due to the use of Common Expression Language (CEL) in Custom Resource Definitions, version \u0026gt;= v0.84.0 of the Prometheus Operator requires a Kubernetes cluster of version \u0026gt;= v1.25.0 (or \u0026gt;= v1.23.0 with the CustomResourceValidationExpressions feature gate enabled).\nReleases before v0.84.0 require Kubernetes \u0026gt;= v1.16.0.\nIf you are just starting out with the Prometheus Operator, it is highly recommended to use the latest version. If you have an older version of Kubernetes and the Prometheus Operator running, we recommend upgrading Kubernetes first and then the Prometheus Operator.\nCheck the appropriate versions of each of the components in the Compatibility page.\nInstall using YAML files # The first step is to install the operator\u0026rsquo;s Custom Resource Definitions (CRDs) as well as the operator itself with the required RBAC resources.\nRun the following commands to install the CRDs and deploy the operator in the default namespace:\nLATEST=$(curl -s https://api.github.com/repos/prometheus-operator/prometheus-operator/releases/latest | jq -cr .tag_name) curl -sL https://github.com/prometheus-operator/prometheus-operator/releases/download/${LATEST}/bundle.yaml | kubectl create -f - The Kustomize tool is required to install the operator into a namespace different than the default namespace:\nNAMESPACE=my_namespace TMPDIR=$(mktemp -d) LATEST=$(curl -s https://api.github.com/repos/prometheus-operator/prometheus-operator/releases/latest | jq -cr .tag_name) curl -s \u0026#34;https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/refs/tags/$LATEST/kustomization.yaml\u0026#34; \u0026gt; \u0026#34;$TMPDIR/kustomization.yaml\u0026#34; curl -s \u0026#34;https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/refs/tags/$LATEST/bundle.yaml\u0026#34; \u0026gt; \u0026#34;$TMPDIR/bundle.yaml\u0026#34; (cd $TMPDIR \u0026amp;\u0026amp; kustomize edit set namespace $NAMESPACE) \u0026amp;\u0026amp; kubectl create -k \u0026#34;$TMPDIR\u0026#34; It can take a few minutes for the operator to be up and running. You can check for c
457ompletion with the following command:\nkubectl wait --for=condition=Ready pods -l app.kubernetes.io/name=prometheus-operator Install using Kube-Prometheus # The easiest way of starting with the Prometheus Operator is by deploying it as part of kube-prometheus. kube-prometheus deploys the Prometheus Operator and already schedules a Prometheus called prometheus-k8s with alerts and rules by default.\nWe are going to deploy a compiled version of the Kubernetes manifests.\nYou can either clone the kube-prometheus from GitHub:\ngit clone https://github.com/prometheus-operator/kube-prometheus.git or download the current main branch as zip file and extract its contents:\ngithub.com/prometheus-operator/kube-prometheus/archive/main.zip\nOnce you have the files on your machine change into the project\u0026rsquo;s root directory and run the following commands:\n# Create the namespace and CRDs, and then wait for them to be available before creating the remaining resources kubectl create -f manifests/setup # Wait until the \u0026#34;servicemonitors\u0026#34; CRD is created. The message \u0026#34;No resources found\u0026#34; means success in this context. until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo \u0026#34;\u0026#34;; done kubectl create -f manifests/ We create the namespace and CustomResourceDefinitions first to avoid race conditions when deploying the monitoring components. Alternatively, the resources in both folders can be applied with a single command:\nkubectl create -f manifests/setup -f manifests But it may be necessary to run the command multiple times for all c
457omponents to be created successfully.\nNote: For versions before Kubernetes v1.20.z refer to the Kubernetes compatibility matrix in order to choose a compatible branch.\nNote: If you used Kube-Prometheus as the installation method, we would recommend you to follow this page to learn how to access the resources provided.\nRemove Kube-Prometheus # If you\u0026rsquo;re done experimenting with kube-prometheus and the Prometheus Operator you can simply teardown the deployment by running:\nkubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup Install Using Helm Chart # Install the Kube-Prometheus-Stack helm chart which provides a collection of Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.\nTo see more details, please check the chart\u0026rsquo;s README.\nThis Helm chart is no longer part of Prometheus-Operator and is now maintained by Prometheus Community Helm Charts.\n" 458 } 459 ); 460 index.add( 461 { 462 id: 3, 463 href: "/docs/getting-started/compatibility/", 464 title: "Compatibility", 465 description: "The Prometheus Operator supports a number of Kubernetes and Prometheus releases.", 466 content: "It is recommended to use versions of the components identical or close to the versions used by the operator\u0026rsquo;s end-to-end test suite (the specific version numbers are listed below).\nKubernetes # Due to the use of Common Expression Language (CEL) in Custom Resource Definitions, prometheus-operator \u0026gt;= v0.84.0 requires Kubernetes \u0026gt;= v1.25.0 (or v1.23.0 with the CustomResourceValidationExpressions feature gate enabled).\nReleases before v0.84.0 require Kubernetes \u0026gt;= v1.16.0.\nThe Prometheus Operator uses the official Go client for Kubernetes to communicate with the Kubernetes API. The compatibility matrix for client-go and Kubernetes clusters can be found here. All additional compatibility is only best effort, or happens to be still/already supported.\nThe current version of the Prometheus operator uses the following Go client version:\nv0.37.0 Prometheus # Prometheus Operator supports all Prometheus versions \u0026gt;= v2.0.0. The operator\u0026rsquo;s end-to-end tests verify that the operator can deploy the following Prometheus versions:\n* v2.45.0 * v2.46.0 * v2.47.0 * v2.47.1 * v2.47.2 * v2.48.0 * v2.48.1 * v2.49.0 * v2.49.1 * v2.50.0 * v2.50.1 * v2.51.0 * v2.51.1 * v2.51.2 * v2.52.0 * v2.53.0 * v2.53.1 * v2.53.2 * v2.53.3 * v2.54.0 * v2.54.1 * v2.55.0 * v2.55.1 * v3.0.0 * v3.0.1 * v3.1.0 * v3.2.0 * v3.2.1 * v3.3.0 * v3.3.1 * v3.4.0 * v3.4.1 * v3.4.2 * v3.5.0 * v3.5.1 * v3.5.2 * v3.5.3 * v3.5.4 * v3.5.5 * v3.6.0 * v3.7.0 * v3.7.1 * v3.7.2 * v3.7.3 * v3.8.0 * v3.8.1 * v3.9.0 * v3.9.1 * v3.10.0 * v3.11.0 * v3.11.1 * v3.11.2 * v3.11.3 * v3.12.0 * v3.13.0 * v3.13.1 * v3.13.2 * v3.13.3 * v3.14.0 The end-to-end tests are mostly tested against\n* v3.14.0 Alertmanager # The Prometheus Operator is compatible with Alertmanager v0.15 and above.\nThe end-to-end tests are mostly tested against\n* v0.34.0 Thanos # The Prometheus Operator is compatible with Thanos v0.10 and above.\nThe end-to-end tests are mostly tested against\n* v0.42.4 " 467 } 468 ); 469 index.add( 470 { 471 id: 4, 472 href: "/docs/getting-started/design/", 473 title: "Design", 474 description: "This document describes the design and interaction between the custom resource definitions that the Prometheus Operator manages.", 475 content: "This document describes the design and interaction between the custom resource definitions that the Prometheus Operator manages.\nThe custom resources managed by the Prometheus Operator are:\nPrometheus Alertmanager ThanosRuler PrometheusAgent ServiceMonitor PodMonitor Probe ScrapeConfig AlertmanagerConfig PrometheusRule For a better understanding of all these custom resources, let us classify them into two major groups:\nInstance-Based Resources # Instance-based resources are used to manage the deployment and lifecycle of different c
475omponents in the Prometheus ecosystem, as shown in the above figure. Let us look into the features of each of these custom resources:\nPrometheus # The Prometheus CRD sets up a Prometheus instance in a Kubernetes cluster. It allows configuration of replicas, persistent storage, and Alertmanagers for sending alerts. For each Prometheus resource, the Operator deploys StatefulSet objects (one per shard, default is 1) in the same namespace.\nAlertmanager # The Alertmanager CRD sets up a Alertmanager instance in a Kubernetes cluster. It provides options to configure the number of replicas and persistent storage. For each Alertmanager resource, the Operator deploys a StatefulSet in the same namespace. For multiple replicas, the operator runs the Alertmanager instances in high availability mode.\nThanosRuler # The ThanosRuler CRD sets up a Thanos Ruler instance in a Kubernetes cluster. It enables the processing of recording and alerting rules across multiple Prometheus instances. A ThanosRuler instance needs at least one query endpoint that connects to Thanos Queriers or Prometheus instances. More details can be found in the Thanos section.\nPrometheus Agent # The Prometheus Agent CRD sets up a Prometheus Agent instance in a Kubernetes cluster. While similar to the Prometheus CR, the Prometheus Agent has several configuration options redacted, including alerting, PrometheusRules selectors, remote-read, storage, and Thanos sidecars. To understand why Agent support was introduced, read the proposal here.\nConfig-Based Resources # Config-based resources focus on managing the monitoring of resources and scraping metrics within a Kubernetes cluster. They define how metrics are collected, processed, and managed, rather than managing the deployment of the monitoring components themselves. For a clear picture, let us look at the relation of config-based resources with instance based resources.\nThe Prometheus and PrometheusAgent CRDs use the podMonitorSelector, serviceMonitorSelector, probeSelector, and scrapeConfigSelector fields to determine which ServiceMonitor, PodMonitor, Probe, and ScrapeConfig configurations should be included in the Prometheus and PrometheusAgent instances for scraping.\nServiceMonitor # The ServiceMonitor CRD defines how a dynamic set of services should be monitored. A Service object discovers pods by a label selector and adds those to the EndpointSlice or Endpoints object. The ServiceMonitor object discovers those EndpointSlice or Endpoints objects and configures Prometheus to monitor those pods. The services selected to be monitored with the desired configuration are defined using label selections.\nPodMonitor # The PodMonitor CRD defines how a dynamic set of pods should be monitored. The PodMonitor object discovers these pods and generates the relevant configuration for the Prometheus server to monitor them. The pods selected to be monitored with the desired configuration is defined using label selections.\nProbe # The Probe CRD defines how groups of ingresses and static targets should be monitored. Besides the target, the Probe object requires a prober which is the service that monitors the target and provides metrics for Prometheus to scrape. Typically, this is achieved using the blackbox exporter.\nScrapeConfig # The ScrapeConfig CRD allows you to define how Prometheus should discover and scrape metrics from target services. You can use the ScrapeConfig CRD to scrape targets external to the Kubernetes cluster or to create scrape configurations that are not possible with the higher-level ServiceMonitor, Probe, or PodMonitor resources. Both the Prometheus and PrometheusAgent CRDs have a scrapeConfigSelector field, which needs to be set to a list of labels to match ScrapeConfigs.\nAlertmanagerConfig # The AlertmanagerConfig CRD allows us to configure Alertmanager instances in a Kubernetes cluster. It specifies subsections of the Alertmanager configuration, enabling the routing of alerts to custom receivers and the setting of inhibition rules.\nPrometheusRule # The PrometheusRule CRD allows the definition of alerting and recording rules to be consumed by Prometheus or Thanos Ruler instances. Alerts and recording rules are reconciled by the Operator and dynamically loaded without requiring a restart of Prometheus or Thanos Ruler.\nResource Selectors # Instance-based resources use selector fields to discover and associate config-based resources:\nserviceMonitorSelector and serviceMonitorNamespaceSelector for Prometheus and PrometheusAgent CRDs. podMonitorSelector and podMonitorNamespaceSelector for Prometheus and PrometheusAgent CRDs. probeSelector and probeNamespaceSelector for Prometheus and PrometheusAgent CRDs. scrapeConfigSelector and scrapeConfigNamespaceSelector for Prometheus and PrometheusAgent CRDs. ruleSelector and ruleNamespaceSelector for Prometheus and ThanosRuler CRDs. alertmanagerConfigSelector and alertmanagerConfigNamespaceSelector for Alertmanager CRD. The selector fields follow standard Kubernetes label selector semantics:\nAn empty selector ({}) matches all objects. A null selector (field not specified) matches no objects for resource selectors, or only the current namespace for namespace selectors. Otherwise the label selector matches objects with the specified labels. You can check the examples mentioned in the ScrapeConfig documentation.\n" 476 } 477 ); 478 index.add( 479 { 480 id: 5, 481 href: "/docs/api-reference/", 482 title: "API Reference", 483 description: "", 484 content: "" 485 } 486 ); 487 index.add( 488 { 489 id: 6, 490 href: "/docs/api-reference/api/", 491 title: "API reference", 492 description: "Prometheus operator generated API reference docs",
493 content: " This page is automatically generated with gen-crd-api-reference-docs.\nPackages:\nmonitoring.coreos.com/v1 monitoring.coreos.com/v1alpha1 monitoring.coreos.com/v1beta1 monitoring.coreos.com/v1 Resource Types: Alertmanager PodMonitor Probe Prometheus PrometheusRule ServiceMonitor ThanosRuler Alertmanager The Alertmanager custom resource definition (CRD) defines a desired Alertmanager setup to run in a Kubernetes cluster. It allows to specify many options such as the number of replicas, persistent storage and many more.\nFor 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.\nThe resource defines via label and namespace selectors which AlertmanagerConfig objects should be associated to the deployed Alertmanager instances.\nField Description apiVersion string monitoring.coreos.com/v1 kind string Alertmanager metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec AlertmanagerSpec spec defines the specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\npodMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the Alertmanager pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;alertmanager\u0026rdquo; label, set to the name of the Alertmanager instance. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Alertmanager instance. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;alertmanager\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Alertmanager version. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;alertmanager\u0026rdquo;.\nimage string (Optional) image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Alertmanager is being configured.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy for the \u0026lsquo;alertmanager\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nversion string (Optional) version the cluster should be on.\ntag string (Optional) tag of Alertmanager container image to be deployed. Defaults to the value of version. Version is ignored if Tag is set. Deprecated: use \u0026lsquo;image\u0026rsquo; instead. The image tag can be specified as part of the image URL.\nsha string (Optional) sha of Alertmanager container image to be deployed. Defaults to the value of version. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use \u0026lsquo;image\u0026rsquo; instead. The image digest can be specified as part of the image URL.\nbaseImage string (Optional) baseImage that is used to deploy pods, without tag. Deprecated: use \u0026lsquo;image\u0026rsquo; instead.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\nsecrets []string (Optional) secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each Secret is added to the StatefulSet definition as a volume named secret-\u0026lt;secret-name\u0026gt;
493. The Secrets are mounted into /etc/alertmanager/secrets/\u0026lt;secret-name\u0026gt; in the \u0026lsquo;alertmanager\u0026rsquo; container.\nconfigMaps []string (Optional) configMaps defines a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each ConfigMap is added to the StatefulSet definition as a volume named configmap-\u0026lt;configmap-name\u0026gt;. The ConfigMaps are mounted into /etc/alertmanager/configmaps/\u0026lt;configmap-name\u0026gt; in the \u0026lsquo;alertmanager\u0026rsquo; container.\nconfigSecret string (Optional) configSecret defines the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains the configuration for this Alertmanager instance. If empty, it defaults to alertmanager-\u0026lt;alertmanager-name\u0026gt;.\nThe Alertmanager configuration should be available under the alertmanager.yaml key. Additional keys from the original secret are copied to the generated secret and mounted into the /etc/alertmanager/config directory in the alertmanager container.\nIf either the secret or the alertmanager.yaml key is missing, the operator provisions a minimal Alertmanager configuration with one empty receiver (effectively dropping alert notifications).\nlogLevel string (Optional) logLevel for Alertmanager to be configured with.\nlogFormat string (Optional) logFormat for Alertmanager to be configured with.\nreplicas int32 (Optional) replicas defines the expected size of the alertmanager cluster. The controller will eventually make the size of the running cluster equal to the expected size.\nretention GoDuration (Optional) retention defines the time duration Alertmanager shall retain data for. Default is \u0026lsquo;120h\u0026rsquo;, and must match the regular expression [0-9]+(ms|s|m|h) (milliseconds seconds minutes hours).\nstorage StorageSpec (Optional) storage defines the definition of how storage will be used by the Alertmanager instances.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the alertmanager container, that are generated as a result of StorageSpec objects.\npersistentVolumeClaimRetentionPolicy Kubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy (Optional) persistentVolumeClaimRetentionPolicy controls if and how PVCs are deleted during the lifecycle of a StatefulSet. The default behavior is all PVCs are retained. This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26. It requires enabling the StatefulSetAutoDeletePVC feature gate.\nexternalUrl string (Optional) externalUrl defines the URL used to access the Alertmanager web service. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name.\nroutePrefix string (Optional) routePrefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with kubectl proxy.\npaused bool (Optional) paused if set to true all actions on the underlying managed objects are not going to be performed, except for delete actions.\nnodeSelector map[string]string (Optional) nodeSelector defines which Nodes the Pods are scheduled on.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resource requests and limits of the Pods.\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines the pod\u0026rsquo;s scheduling constraints.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines the pod\u0026rsquo;s tolerations.\ntopologySpreadConstraints []Kubernetes core/v1.TopologySpreadConstraint (Optional) topologySpreadConstraints defines the Pod\u0026rsquo;s topology spread constraints.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines the DNS configuration for the pods.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\nserviceName string (Optional) serviceName defines the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named alertmanager-operated for Alertmanager resources. When deploying multiple Alertmanager resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nserviceAccountName string (Optional) serviceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\nlistenLocal bool (Optional) listenLocal defines the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. Note this is only for the Alertmanager UI, not the gossip communication.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * alertmanager * config-reloader * thanos-sidecar\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting init
493Containers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch.\nThe names of init container name managed by the operator are: * init-config-reloader.\nOverriding init containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\npriorityClassName string (Optional) priorityClassName assigned to the Pods\nadditionalPeers []string (Optional) additionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\nclusterAdvertiseAddress string (Optional) clusterAdvertiseAddress defines the explicit address to advertise in cluster. Needs to be provided for non RFC1918 1 addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918\nclusterGossipInterval GoDuration (Optional) clusterGossipInterval defines the interval between gossip attempts.\nclusterLabel string (Optional) clusterLabel defines the identifier that uniquely identifies the Alertmanager cluster. 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.\nclusterPushpullInterval GoDuration (Optional) clusterPushpullInterval defines the interval between pushpull attempts.\nclusterPeerTimeout GoDuration (Optional) clusterPeerTimeout defines the timeout for cluster peering.\nclusterPeerName string (Optional) clusterPeerName defines the name that this Alertmanager instance uses to advertise itself to other cluster peers (the --cluster.peer-name flag, available since Alertmanager v0.30.0).\nIf not set, the operator defaults to the pod\u0026rsquo;s name ($(POD_NAME)), which is injected via the Kubernetes downward API. Setting this field lets you override that default with either a literal value or a string referencing environment variables that are already available in the Alertmanager container (for example $(POD_NAME).$(NAMESPACE)).\n/ It requires Alertmanager \u0026gt;= 0.30.0.\nportName string (Optional) portName defines the port\u0026rsquo;s name for the pods and governing service. Defaults to web.\nforceEnableClusterMode bool (Optional) forceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.\nalertmanagerConfigSelector Kubernetes meta/v1.LabelSelector (Optional) alertmanagerConfigSelector defines the selector to be used for to merge and configure Alertmanager with.\nalertmanagerConfigNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) alertmanagerConfigNamespaceSelector defines the namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace.\nalertmanagerConfigMatcherStrategy AlertmanagerConfigMatcherStrategy (Optional) alertmanagerConfigMatcherStrategy defines how AlertmanagerConfig objects process incoming alerts.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nWhen the Alertmanager version is greater than or equal to v0.30.0, the duration is also used to delay the first flush of the aggregation groups. This delay helps ensuring that all alerts have been resent by the Prometheus instances to Alertmanager after a roll-out. It is possible to override this behavior passing a custom value via .spec.additionalArgs.\nhostAliases []HostAlias (Optional) hostAliases Pods configuration\nhostNetwork bool (Optional) hostNetwork controls whether the pod may use the node network namespace.\nMake sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/).\nWhen hostNetwork is enabled, this will set the DNS policy to ClusterFirstWithHostNet automatically (unless .spec.dnsPolicy is set to a different value).\nweb AlertmanagerWebSpec (Optional) web defines the web command line flags when starting Alertmanager.\nlimits AlertmanagerLimitsSpec (Optional) limits defines the limits command line flags when starting Alertmanager.\nclusterTLS ClusterTLSConfig (Optional) clusterTLS defines the mutual TLS configuration for the Alertmanager cluster\u0026rsquo;s gossip protocol.\nIt requires Alertmanager \u0026gt;= 0.24.0.\nalertmanagerConfiguration AlertmanagerConfiguration (Optional) alertmanagerConfiguration defines the configuration of Alertmanager.\nIf defined, it takes precedence over the configSecret field.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nautomountServiceAccountToken bool (Optional) automountServiceAccountToken defines whether a service account token should be automatically mounted
493in the pod. If the service account has automountServiceAccountToken: true, set the field to false to opt out of automounting API credentials.\nenableFeatures []string (Optional) enableFeatures defines the Alertmanager\u0026rsquo;s feature flags. By default, no features are enabled. Enabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nIt requires Alertmanager \u0026gt;= 0.27.0.\nadditionalArgs []Argument (Optional) additionalArgs allows setting additional arguments for the \u0026lsquo;Alertmanager\u0026rsquo; container. It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Alertmanager container which may cause issues if they are invalid or not supported by the given Alertmanager version.\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the Optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 120 seconds.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nstatus AlertmanagerStatus (Optional) status defines the most recent observed status of the Alertmanager cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nPodMonitor The PodMonitor custom resource definition (CRD) defines how Prometheus and PrometheusAgent can scrape metrics from a group of pods. Among other things, it allows to specify: * The pods to scrape via label selectors. * The container ports to scrape. * Authentication credentials to use. * Target and metric relabeling.\nPrometheus and PrometheusAgent objects select PodMonitor objects using label and namespace selectors.\nField Description apiVersion string monitoring.coreos.com/v1 kind string PodMonitor metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec PodMonitorSpec spec defines the specification of desired Pod selection for target discovery by Prometheus.\njobLabel string (Optional) jobLabel defines the label to use to retrieve the job name from. jobLabel selects the label from the associated Kubernetes Pod object which will be used as the job label for all metrics.\nFor example if jobLabel is set to foo and the Kubernetes Pod object is labeled with foo: bar, then Prometheus adds the job=\u0026quot;bar\u0026quot; label to all ingested metrics.\nIf the value of this field is empty, the job label of the metrics defaults to the namespace and name of the PodMonitor object (e.g. \u0026lt;namespace\u0026gt;/\u0026lt;name\u0026gt;).\npodTargetLabels []string (Optional) podTargetLabels defines the labels which are transferred from the associated Kubernetes Pod object onto the ingested metrics.\npodMetricsEndpoints []PodMetricsEndpoint (Optional) podMetricsEndpoints defines how to scrape metrics from the selected pods.\nselector Kubernetes meta/v1.LabelSelector selector defines the label selector to select the Kubernetes Pod objects to scrape metrics from.\nselectorMechanism SelectorMechanism (Optional) selectorMechanism defines the mechanism used to select the endpoints to scrape. By default, the selection process relies on relabel configurations to filter the discovered targets. Alternatively, you can opt in for role selectors, which may offer better efficiency in large clusters. Which strategy is best for your use case needs to be carefully evaluated.\nIt requires Prometheus \u0026gt;= v2.17.0.\nnamespaceSelector NamespaceSelector (Optional) namespaceSelector defines in which namespace(s) Prometheus should discover the pods. 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.\nsampleLimit int64 (Optional) sampleLimit defines a per-scrape limit on the number of scraped samples that will be accepted.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt requires Prometheus \u0026gt;= v3.0.0.\nlabelLimit int64 (Optional) labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nattachMetadata AttachMetadata (Optional) attachMetadata defines additional metadata which is added to the discovered targets.\nIt requires Prometheus \u0026gt;= v2.35.0.\nscrapeClass string (Optional) scrapeClass defines the scrape class to apply.\nbodySizeLimit ByteSize (Optional) bodySizeLimit when defined specifies a job level limit on the size of uncompressed response body that will be accepted by Prometheus.\nIt requires Prometheus \u0026gt;
493= v2.28.0.\nstatus ConfigResourceStatus (Optional) status defines the status subresource. It is under active development and is updated only when the \u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\nMost recent observed status of the PodMonitor. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nProbe The Probe custom resource definition (CRD) defines how to scrape metrics from prober exporters such as the blackbox exporter.\nThe Probe resource needs 2 pieces of information: * The list of probed addresses which can be defined statically or by discovering Kubernetes Ingress objects. * The prober which exposes the availability of probed endpoints (over various protocols such HTTP, TCP, ICMP, \u0026hellip;) as Prometheus metrics.\nPrometheus and PrometheusAgent objects select Probe objects using label and namespace selectors.\nField Description apiVersion string monitoring.coreos.com/v1 kind string Probe metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec ProbeSpec spec defines the specification of desired Ingress selection for target discovery by Prometheus.\njobName string (Optional) jobName assigned to scraped metrics by default.\nprober ProberSpec (Optional) prober defines the specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty.\nmodule string (Optional) module to use for probing specifying how to probe the target. Example module configuring in the blackbox exporter: https://github.com/prometheus/blackbox_exporter/blob/master/example.yml\ntargets ProbeTargets (Optional) targets defines a set of static or dynamically discovered targets to probe.\ninterval Duration (Optional) interval at which targets are probed using the configured prober. If not specified Prometheus\u0026rsquo; global scrape interval is used.\nscrapeTimeout Duration (Optional) scrapeTimeout defines the timeout for scraping metrics from the Prometheus exporter. If not specified, the Prometheus global scrape timeout is used. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nmetricRelabelings []RelabelConfig (Optional) metricRelabelings defines the RelabelConfig to apply to samples before ingestion.\nauthorization SafeAuthorization (Optional) authorization section for this endpoint\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt requires Prometheus \u0026gt;= v3.0.0.\nlabelLimit int64 (Optional) labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nscrapeClass string (Optional) scrapeClass defines the scrape class to apply.\nparams []ProbeParam (Optional) params defines the list of HTTP query parameters for the scrape. Please note that the .spec.module field takes precedence over the module parameter from this list when both are defined. The module name must be added using Module under ProbeSpec.\nauthorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration used by the client.\nstatus ConfigResourceStatus (Optional) status defines the status subresource. It is under active development and is updated only when the \u
4930026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\nMost recent observed status of the Probe. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nPrometheus The Prometheus custom resource definition (CRD) defines a desired 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.\nFor 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.\nThe resource defines via label and namespace selectors which ServiceMonitor, PodMonitor, Probe and PrometheusRule objects should be associated to the deployed Prometheus instances.\nThe 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.\nField Description apiVersion string monitoring.coreos.com/v1 kind string Prometheus metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec PrometheusSpec spec defines the specification of the desired behavior of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\npodMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the Prometheus pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version. * \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\nserviceMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nserviceMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\npodMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\npodMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\nprobeSelector Kubernetes meta/v1.LabelSelector (Optional) probeSelector defines the probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nprobeNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) probeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nscrapeConfigSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nNote that the ScrapeConfig custom resource definition is currently at Alp
493ha level and will be graduated to Beta in a future release.\nscrapeConfigNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nNote that the ScrapeConfig custom resource definition is currently at Alpha level and will be graduated to Beta in a future release.\nversion string (Optional) version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files.\nIf not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\npaused bool (Optional) paused defines when a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\nimage string (Optional) image defines the container image name for Prometheus. If specified, it takes precedence over the spec.baseImage, spec.tag and spec.sha fields.\nSpecifying spec.version is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured.\nIf neither spec.image nor spec.baseImage are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets defines an optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\nreplicas int32 (Optional) replicas defines the number of replicas of each shard to deploy for a Prometheus deployment. spec.replicas multiplied by spec.shards is the total number of Pods created.\nDefault: 1\nshards int32 (Optional) shards defines the number of shards to distribute the scraped targets onto.\nspec.replicas multiplied by spec.shards is the total number of Pods being created.\nWhen not defined, the operator assumes only one shard.\nNote that scaling down shards will not reshard data onto the remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use either * Thanos sidecar + querier for query federation and Thanos Ruler for rules. * Remote-write to send metrics to a central location.\nBy default, the sharding of targets is performed on: * The __address__ target\u0026rsquo;s metadata label for PodMonitor, ServiceMonitor and ScrapeConfig resources. * The __param_target__ label for Probe resources.\nUsers can define their own sharding implementation by setting the __tmp_hash label during the target discovery with relabeling configuration (either in the monitoring resources or via scrape class).\nYou can also disable sharding on a specific target by setting the __tmp_disable_sharding label with relabeling configuration. When the label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\nDefault: 1\nshardingStrategy ShardingStrategy (Optional) shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\nWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes targets based on a hash of the target address.\nreplicaExternalLabelName string (Optional) replicaExternalLabelName defines the name of Prometheus external label used to denote the replica name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\nprometheusExternalLabelName string (Optional) prometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus\u0026rdquo;\nlogLevel string (Optional) logLevel for Prometheus and the config-reloader sidecar.\nlogFormat str
493ing (Optional) logFormat for Log level for Prometheus and the config-reloader sidecar.\nscrapeInterval Duration (Optional) scrapeInterval defines interval between consecutive scrapes.\nDefault: \u0026ldquo;30s\u0026rdquo;\nscrapeTimeout Duration (Optional) scrapeTimeout defines the number of seconds to wait until a scrape request times out. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nPrometheusText1.0.0 requires Prometheus \u0026gt;= v3.0.0.\nexternalLabels map[string]string (Optional) externalLabels defines the labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by spec.replicaExternalLabelName and spec.prometheusExternalLabelName take precedence over this list.\nenableRemoteWriteReceiver bool (Optional) enableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote write protocol.\nWARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\nIt requires Prometheus \u0026gt;= v2.33.0.\nenableOTLPReceiver bool (Optional) enableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\nNote that the OTLP receiver endpoint is automatically enabled if .spec.otlpConfig is defined.\nIt requires Prometheus \u0026gt;= v2.47.0.\nremoteWriteReceiverMessageVersions []RemoteWriteMessageVersion (Optional) remoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the remote writes.\nIt requires Prometheus \u0026gt;= v2.54.0.\nenableFeatures []EnableFeature (Optional) enableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nFor more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\nexternalUrl string (Optional) externalUrl defines the external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\nroutePrefix string (Optional) routePrefix defines the route prefix Prometheus registers HTTP handlers for.\nThis is useful when using spec.externalURL, and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with kubectl proxy.\nstorage StorageSpec (Optional) storage defines the storage used by Prometheus.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes allows the configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts allows the configuration of additional VolumeMounts.\nVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo; container, that are generated as a result of StorageSpec objects.\npersistentVolumeClaimRetentionPolicy Kubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy (Optional) persistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet. The default behavior is all PVCs are retained. This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26. It requires enabling the StatefulSetAutoDeletePVC feature gate.\nweb PrometheusWebSpec (Optional) web defines the configuration of the Prometheus web server.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo;
493 container.\nnodeSelector map[string]string (Optional) nodeSelector defines on which Nodes the Pods are scheduled.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nserviceAccountName string (Optional) serviceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\nautomountServiceAccountToken bool (Optional) automountServiceAccountToken defines whether a service account token should be automatically mounted in the pod. If the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\nWarning: be aware that by default, Prometheus requires the service account token for Kubernetes service discovery. It is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\nsecrets []string (Optional) secrets defines a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named secret-\u0026lt;secret-name\u0026gt;. The Secrets are mounted into /etc/prometheus/secrets/ in the \u0026lsquo;prometheus\u0026rsquo; container.\nconfigMaps []string (Optional) configMaps defines a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named configmap-\u0026lt;configmap-name\u0026gt;. The ConfigMaps are mounted into /etc/prometheus/configmaps/ in the \u0026lsquo;prometheus\u0026rsquo; container.\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines the Pods\u0026rsquo; tolerations if specified.\ntopologySpreadConstraints []TopologySpreadConstraint (Optional) topologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\nremoteWrite []RemoteWriteSpec (Optional) remoteWrite defines the list of remote write configurations.\notlp OTLPConfig (Optional) otlp defines the settings related to the OTLP receiver feature. It requires Prometheus \u0026gt;= v2.55.0.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines the DNS configuration for the pods.\nlistenLocal bool (Optional) listenLocal when true, the Prometheus server listens on the loopback address instead of the Pod IP\u0026rsquo;s address.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * prometheus * config-reloader * thanos-sidecar\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting init
493Containers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch.\nThe names of init container name managed by the operator are: * init-config-reloader.\nOverriding init containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\nadditionalScrapeConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.\napiserverConfig APIServerConfig (Optional) apiserverConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod\u0026rsquo;s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\npriorityClassName string (Optional) priorityClassName assigned to the Pods.\nportName string (Optional) portName used for the pods and governing service. Default: \u0026ldquo;web\u0026rdquo;\narbitraryFSAccessThroughSMs ArbitraryFSAccessThroughSMsConfig (Optional) arbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo; container. When a ServiceMonitor\u0026rsquo;s endpoint specifies a bearerTokenFile value (e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a malicious target can get access to the Prometheus service account\u0026rsquo;s token in the Prometheus\u0026rsquo; scrape request. Setting spec.arbitraryFSAccessThroughSM to \u0026lsquo;true\u0026rsquo; would prevent the attack. Users should instead provide the credentials using the spec.bearerTokenSecret field.\noverrideHonorLabels bool (Optional) overrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data to âexported_â for all targets created from ServiceMonitor, PodMonitor and ScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies. In practice,OverrideHonorLabels:true enforces honorLabels:false for all ServiceMonitor, PodMonitor and ScrapeConfig objects.\noverrideHonorTimestamps bool (Optional) overrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\nignoreNamespaceSelectors bool (Optional) ignoreNamespaceSelectors when true, spec.namespaceSelector from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object.\nenforcedNamespaceLabel string (Optional) enforcedNamespaceLabel when not empty, a label will be added to:\nAll metrics scraped from ServiceMonitor, PodMonitor, Probe and ScrapeConfig objects. All metrics generated from recording rules defined in PrometheusRule objects. All alerts generated from alerting rules defined in PrometheusRule objects. All vector selectors of PromQL expressions defined in PrometheusRule objects. The label will not added for objects referenced in spec.excludedFromEnforcement.\nThe label\u0026rsquo;s name is this field\u0026rsquo;s value. The label\u0026rsquo;s value is the namespace of the ServiceMonitor, PodMonitor, Probe, PrometheusRule or ScrapeConfig object.\nenforcedSampleLimit int64 (Optional) enforcedSampleLimit when defined specifies a global limit on the number of scraped samples that will be accepted. This overrides any spec.sampleLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.sampleLimit is greater than zero and less than spec.enforcedSampleLimit.\nIt is meant to be used by admins to keep the overall number of samples/series under a desired limit.\nWhen both enforcedSampleLimit and sampleLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined sampleLimit value will inherit the global sampleLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedSampleLimit is greater than the sampleLimit, the sampleLimit will be set to enforcedSampleLimit. * Scrape objects with a sampleLimit value less than or equal to enforcedSampleLimit keep their specific value. * Scrape objects with a sampleLimit value greater than enforcedSampleLimit are set to enforcedSampleLimit.\nenforcedTargetLimit int64 (Optional) enforcedTargetLimit when defined specifies a global limit on the number of scraped targets. The value overrides any spec.targetLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.targetLimit is greater than zero and less than spec.enforcedTargetLimit.\nIt is meant to be used by admins to to keep the overall number of targets under a desired limit.\nWhen both enforcedTargetLimit and targetLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined targetLimit value will inherit the global targetLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedTargetLimit is greater than the targetLimit, the targetLimit will be set to enforcedTargetLimit. * Scrape objects with a targetLimit value less than or equal to enforcedTargetLimit keep their specific value. * Scrape objects with a targetLimit value greater than enforcedTargetLimit are set to enforcedTargetLimit.\nenforcedLabelLimit int64 (Optional) enforcedLabelLimit when defined specifies a global limit on the number of labels per sample. The value overrides any spec.labelLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelLimit is greater than zero and less than spec.enforcedLabelLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelLimit and labelLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelLimit value will inherit the global labelLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelLimit is greater than the labelLimit, the labelLimit will be set to enforcedLabelLimit. * Scrape objects with a labelLimit value less than or equal to enforcedLabelLimit keep their specific value. * Scrape objects with a labelLimit value greater than enforcedLabelLimit are set to enforcedLabelLimit.\nenforcedLabelNameLengthLimit int64 (Optional) enforcedLabelNameLengthLimit when defined specifies a global limit on the length of labels name per sample. The value overrides any spec.labelNameLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelNameLengthLimit is greater than zero and less than spec.enforcedLabelNameLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelNameLengthLimit and labelNameLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelNameLengthLimit value will inherit the global labelNameLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelNameLengthLimit is greater than the labelNameLengthLimit, the labelNameLengthLimit will be set to enforcedLabelNameLengthLimit. * Scrape objects with a labelNameLengthLimit value less than or equal to enforcedLabelNameLengthLimit keep their specific value. * Scrape objects with a labelNameLengthLimit value greater than enforcedLabelNameLengthLimit are set to enforcedLabelNameLengthLimit.\nenforcedLabelValueLengthLimit int64 (Optional) enforcedLabelValueLengthLimit when not null defines a global limit on the length of labels value per sample. The value overrides any spec.labelValueLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelValueLengthLimit is greater than zero and less than spec.enforcedLabelValueLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelValueLengthLimit and labelValueLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelValueLengthLimit value will inherit the global labelValueLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelValueLengthLimit is greater than the labelValueLengthLimit, the labelValueLengthLimit will be set to enforcedLabelValueLengthLimit. * Scrape objects with a labelValueLengthLimit value less than or equal to enforcedLabelValueLengthLimit keep their specific value. * Scrape objects with a labelValueLengthLimit value greater than enforcedLabelValueLengthLimit are set to enforcedLabelValueLengthLimit.\nenforcedKeepDroppedTargets int64 (Optional) enforcedKeepDroppedTargets when defined specifies a global limit on the number of targets dropped by relabeling that will be kept in memory. The value overrides any spec.keepDroppedTargets set by ServiceMonitor, PodMonitor, Probe objects unless spec.keepDroppedTargets is greater than zero and less than spec.enforcedKeepDroppedTargets.\nIt requires Prometheus \u0026gt;= v2.47.0.\nWhen both enforcedKeepDroppedTargets and keepDroppedTargets are defined and greater than zero, the following rules apply: * Scrape objects without a defined keepDroppedTargets value will inherit the global keepDroppedTargets value (Prometheus \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedKeepDroppedTargets is greater than the keepDroppedTargets, the keepDroppedTargets will be set to enforcedKeepDroppedTargets. * Scrape objects with a keepDroppedTargets value less than or equal to enforcedKeepDroppedTargets keep their specific value. * Scrape objects with a keepDroppedTargets value greater than enforcedKeepDroppedTargets are set to enforcedKeepDroppedTargets.\nenforcedBodySizeLimit ByteSize (Optional) enforcedBodySizeLimit when defined specifies a global limit on the size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail.\nIt requires Prometheus \u0026gt;
493= v2.28.0.\nWhen both enforcedBodySizeLimit and bodySizeLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined bodySizeLimit value will inherit the global bodySizeLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedBodySizeLimit is greater than the bodySizeLimit, the bodySizeLimit will be set to enforcedBodySizeLimit. * Scrape objects with a bodySizeLimit value less than or equal to enforcedBodySizeLimit keep their specific value. * Scrape objects with a bodySizeLimit value greater than enforcedBodySizeLimit are set to enforcedBodySizeLimit.\nnameValidationScheme NameValidationSchemeOptions (Optional) nameValidationScheme defines the validation scheme for metric and label names.\nIt requires Prometheus \u0026gt;= v2.55.0.\nnameEscapingScheme NameEscapingSchemeOptions (Optional) nameEscapingScheme defines the character escaping scheme that will be requested when scraping for metric and label names that do not conform to the legacy Prometheus character set.\nIt requires Prometheus \u0026gt;= v3.4.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.4.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nIt requires Prometheus \u0026gt;= v3.5.0.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nhostAliases []HostAlias (Optional) hostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s hosts file if specified.\nadditionalArgs []Argument (Optional) additionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\nIt is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version.\nIn case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\nwalCompression bool (Optional) walCompression defines the compression of the write-ahead log (WAL) using Snappy.\nWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\nRequires Prometheus v2.11.0 and above.\nexcludedFromEnforcement []ObjectReference (Optional) excludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin.\nIt is only applicable if spec.enforcedNamespaceLabel set to true.\nhostNetwork bool (Optional) hostNetwork defines the host\u0026rsquo;s network namespace if true.\nMake sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/ ).\nWhen hostNetwork is enabled, this will set the DNS policy to ClusterFirstWithHostNet automatically (unless .spec.DNSPolicy is set to a different value).\npodTargetLabels []string (Optional) podTargetLabels are appended to the spec.podTargetLabels field of all PodMonitor and ServiceMonitor objects.\ntracingConfig TracingConfig (Optional) tracingConfig defines tracing in Prometheus.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nbodySizeLimit ByteSize (Optional) bodySizeLimit defines per-scrape on response body size. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\nlabelLimit int64 (Optional) labelLimit defines per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\nreloadStrategy ReloadStrategyType (Optional) reloadStrategy defines the strategy used to reload the Prometheus configuration. If not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\nmaximumStartupDurationSeconds int32 (Optional) maximumStartupDurationSeconds defines the maximum time that the prometheus container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete. If set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\nscrapeClasses []ScrapeClass (Optional) scrapeClasses defines the list of scrape classes to expose to scraping objects such as PodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nserviceDiscoveryRole ServiceDiscoveryRole (Optional) serviceDiscoveryRole defines the service discovery role used to discover targets from ServiceMonitor objects and Alertmanager endpoints.\nIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
493. If unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\ntsdb TSDBSpec (Optional) tsdb defines the runtime reloadable configuration of the timeseries database(TSDB). It requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\nscrapeFailureLogFile string (Optional) scrapeFailureLogFile defines the file to which scrape failures are logged. Reloading the configuration will reopen the file.\nIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods will mount the file into an emptyDir volume at /var/log/prometheus. If a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you must mount a volume in the specified directory and it must be writable. It requires Prometheus \u0026gt;= v2.55.0.\nserviceName string (Optional) serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named prometheus-operated for Prometheus resources, or prometheus-agent-operated for PrometheusAgent resources. When deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nruntime RuntimeConfig (Optional) runtime defines the values for the Prometheus process behavior\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 600 seconds.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nbaseImage string (Optional) baseImage is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead.\ntag string (Optional) tag is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead. The image\u0026rsquo;s tag can be specified as part of the image name.\nsha string (Optional) sha is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead. The image\u0026rsquo;s digest can be specified as part of the image name.\nretention Duration (Optional) retention defines how long to retain the Prometheus data.\nDefault: \u0026ldquo;24h\u0026rdquo; if spec.retention, spec.retentionSize and spec.retentionPercentage are empty.\nretentionSize ByteSize (Optional) retentionSize defines the maximum number of bytes used by the Prometheus data.\nretentionPercentage k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) retentionPercentage defines the maximum percentage of the data volume\u0026rsquo;s capacity used by the Prometheus data.\nThe value is a number between 0 and 100. If set to 0, percentage-based retention is disabled.\nIt requires Prometheus \u0026gt;= v3.11.0 and is ignored by older versions.\nshardRetentionPolicy ShardRetentionPolicy (Optional) shardRetentionPolicy defines the retention policy for the Prometheus shards.\n(Beta) Using this mode requires the PrometheusShardRetentionPolicy feature gate (enabled by default).\ndisableCompaction bool (Optional) disableCompaction when true, the Prometheus compaction is disabled.\nWhen spec.thanos.objectStorageConfig or spec.thanos.objectStorageConfigFile are defined, the operator\u0026rsquo;s default handling depends on the Prometheus and Thanos sidecar versions: - With Prometheus \u0026lt; v3.9.0 or a Thanos sidecar \u0026lt; v0.42.0, block compaction is disabled to avoid race conditions during block uploads (as the Thanos documentation recommends). - With Prometheus \u0026gt;= v3.9.0 and a Thanos sidecar \u0026gt;= v0.42.0, local compaction is kept enabled and coordinated with the sidecar through the shipper meta file (--storage.tsdb.delay-compact-file.path), so blocks are only compacted after they have been uploaded. Setting this field to true always disables local compaction regardless of the versions.\nrules Rules (Optional) rules defines the configuration of the Prometheus rules\u0026rsquo; engine.\nprometheusRulesExcludedFromEnforce []PrometheusRuleExcludeConfig (Optional) prometheusRulesExcludedFromEnforce defines the list of PrometheusRule objects to which the namespace label enforcement doesn\u0026rsquo;t apply. This is only relevant when spec.enforcedNamespaceLabel is set to true. Deprecated: use spec.excludedFromEnforcement instead.\nruleSelector Kubernetes meta/v1.LabelSelector (Optional) ruleSelector defines the prometheusRule objects to be selected for rule evaluation. An empty label selector matches all objects. A null label selector matches no objects.\nruleNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) ruleNamespaceSelector defines the namespaces to match for PrometheusRule discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nquery QuerySpec (Optional) query defines the configuration of the Prometheus query service.\nalerting AlertingSpec (Optional) alerting defines the settings related to Alertmanager.\nadditionalAlertRelabelConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalAlertRelabelConfigs defines a key of a Secret containing additional Prometheus alert relabel configurations. The alert relabel configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation:\nhttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\nThe user is responsible for making sure that the configurations are valid\nNote that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel configs are going to break Prometheus after the upgrade.\nadditionalAlertManagerConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalAlertManagerConfigs defines a key of a Secret containing additional Prometheus Alertmanager configurations. The Alertmanager configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation:\nhttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\nThe user is responsible for making sure that the configurations are valid\nNote that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.\nremoteRead []RemoteReadSpec (Optional) remoteRead defines the list of remote read configurations.\nthanos ThanosSpec (Optional) thanos defines the configuration of the optional Thanos sidecar.\nqueryLogFile string (Optional) queryLogFile specifies where the file to which PromQL queries are logged.\nIf the filename has an empty path, e.g. \u0026lsquo;query.log\u0026rsquo;, The Prometheus Pods will mount the file into an emptyDir volume at /var/log/prometheus. If a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/query.log\u0026rsquo;
493, you must mount a volume in the specified directory and it must be writable. This is because the prometheus container runs with a read-only root filesystem for security reasons. Alternatively, the location can be set to a standard I/O stream, e.g. /dev/stdout, to log query information to the default Prometheus log stream.\nallowOverlappingBlocks bool (Optional) allowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus.\nDeprecated: this flag has no effect for Prometheus \u0026gt;= 2.39.0 where overlapping blocks are enabled by default.\nexemplars Exemplars (Optional) exemplars related settings that are runtime reloadable. It requires to enable the exemplar-storage feature flag to be effective.\nevaluationInterval Duration (Optional) evaluationInterval defines the interval between rule evaluations. Default: \u0026ldquo;30s\u0026rdquo;\nruleQueryOffset Duration (Optional) ruleQueryOffset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past. It requires Prometheus \u0026gt;= v2.53.0.\nenableAdminAPI bool (Optional) enableAdminAPI defines access to the Prometheus web admin API.\nWARNING: Enabling the admin APIs enables mutating endpoints, to delete data, shutdown Prometheus, and more. Enabling this should be done with care and the user is advised to add additional authentication authorization via a proxy to ensure only clients authorized to perform these actions can do so.\nFor more information: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\nstatus PrometheusStatus (Optional) status defines the most recent observed status of the Prometheus cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nPrometheusRule The PrometheusRule custom resource definition (CRD) defines alerting and recording rules to be evaluated by Prometheus or ThanosRuler objects.\nPrometheus and ThanosRuler objects select PrometheusRule objects using label and namespace selectors.\nField Description apiVersion string monitoring.coreos.com/v1 kind string PrometheusRule metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec PrometheusRuleSpec spec defines the specification of desired alerting rule definitions for Prometheus.\ngroups []RuleGroup (Optional) groups defines the content of Prometheus rule file\nstatus ConfigResourceStatus (Optional) status defines the status subresource. It is under active development and is updated only when the \u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\nMost recent observed status of the PrometheusRule. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nServiceMonitor The ServiceMonitor custom resource definition (CRD) defines how Prometheus and PrometheusAgent can scrape metrics from a group of services. Among other things, it allows to specify: * The services to scrape via label selectors. * The container ports to scrape. * Authentication credentials to use. * Target and metric relabeling.\nPrometheus and PrometheusAgent objects select ServiceMonitor objects using label and namespace selectors.\nField Description apiVersion string monitoring.coreos.com/v1 kind string ServiceMonitor metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec ServiceMonitorSpec spec defines the specification of desired Service selection for target discovery by Prometheus.\njobLabel string (Optional) jobLabel selects the label from the associated Kubernetes Service object which will be used as the job label for all metrics.\nFor example if jobLabel is set to foo and the Kubernetes Service object is labeled with foo: bar, then Prometheus adds the job=\u0026quot;bar\u0026quot; label to all ingested metrics.\nIf the value of this field is empty or if the label doesn\u0026rsquo;t exist for the given Service, the job label of the metrics defaults to the name of the associated Kubernetes Service.\ntargetLabels []string (Optional) targetLabels defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.\npodTargetLabels []string (Optional) podTargetLabels defines the labels which are transferred from the associated Kubernetes Pod object onto the ingested metrics.\nendpoints []Endpoint endpoints defines the list of endpoints part of this ServiceMonitor. Defines how to scrape metrics from Kubernetes Endpoints objects. In most cases, an Endpoints object is backed by a Kubernetes Service object with the same name and labels.\nselector Kubernetes meta/v1.LabelSelector selector defines the label selector to select the Kubernetes Endpoints objects to scrape metrics from.\nselectorMechanism SelectorMechanism (Optional) selectorMechanism defines the mechanism used to select the endpoints to scrape. By default, the selection process relies on relabel configurations to filter the discovered targets. Alternatively, you can opt in for role selectors, which may offer better efficiency in large cluster
493s. Which strategy is best for your use case needs to be carefully evaluated.\nIt requires Prometheus \u0026gt;= v2.17.0.\nnamespaceSelector NamespaceSelector (Optional) namespaceSelector defines in which namespace(s) Prometheus should discover the services. 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.\nsampleLimit int64 (Optional) sampleLimit defines a per-scrape limit on the number of scraped samples that will be accepted.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt requires Prometheus \u0026gt;= v3.0.0.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted.\nlabelLimit int64 (Optional) labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nattachMetadata AttachMetadata (Optional) attachMetadata defines additional metadata which is added to the discovered targets.\nIt requires Prometheus \u0026gt;= v2.37.0.\nscrapeClass string (Optional) scrapeClass defines the scrape class to apply.\nbodySizeLimit ByteSize (Optional) bodySizeLimit when defined, bodySizeLimit specifies a job level limit on the size of uncompressed response body that will be accepted by Prometheus.\nIt requires Prometheus \u0026gt;= v2.28.0.\nserviceDiscoveryRole ServiceDiscoveryRole (Optional) serviceDiscoveryRole defines the service discovery role used to discover targets.\nIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;. Otherwise it defaults to the value defined in the Prometheus/PrometheusAgent resource.\nstatus ConfigResourceStatus (Optional) status defines the status subresource. It is under active development and is updated only when the \u
4930026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\nMost recent observed status of the ServiceMonitor. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nThanosRuler The ThanosRuler custom resource definition (CRD) defines a desired Thanos Ruler setup to run in a Kubernetes cluster.\nA ThanosRuler instance requires at least one compatible Prometheus API endpoint (either Thanos Querier or Prometheus services).\nThe resource defines via label and namespace selectors which PrometheusRule objects should be associated to the deployed Thanos Ruler instances.\nField Description apiVersion string monitoring.coreos.com/v1 kind string ThanosRuler metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec ThanosRulerSpec spec defines the specification of the desired behavior of the ThanosRuler cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nversion string (Optional) version of Thanos to be deployed.\npodMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the ThanosRuler pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;thanos-ruler\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the ThanosRuler instance. * \u0026ldquo;thanos-ruler\u0026rdquo; label, set to the name of the ThanosRuler instance. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;thanos-ruler\u0026rdquo;.\nimage string (Optional) image defines Thanos container image URL.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy defines for the \u0026lsquo;thanos\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets defines an optional list of references to secrets in the same namespace to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\npaused bool (Optional) paused defines when a ThanosRuler deployment is paused, no actions except for deletion will be performed on the underlying objects.\nreplicas int32 (Optional) replicas defines the number of thanos ruler instances to deploy.\nnodeSelector map[string]string (Optional) nodeSelector defines which Nodes the Pods are scheduled on.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resource requirements for single Pods. If not provided, no requests/limits will be set\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines when specified, the pod\u0026rsquo;s scheduling constraints.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines when specified, the pod\u0026rsquo;s tolerations.\ntopologySpreadConstraints []Kubernetes core/v1.TopologySpreadConstraint (Optional) topologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext defines the pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines Defines the DNS configuration for the pods.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\npriorityClassName string (Optional) priorityClassName defines the priority class assigned to the Pods\nserviceName string (Optional) serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named thanos-ruler-
493operated for ThanosRuler resources. When deploying multiple ThanosRuler resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nserviceAccountName string (Optional) serviceAccountName defines the name of the ServiceAccount to use to run the Thanos Ruler Pods.\nstorage StorageSpec (Optional) storage defines the specification of how storage shall be used.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes defines how configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts defines how the configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the ruler container, that are generated as a result of StorageSpec objects.\nobjectStorageConfig Kubernetes core/v1.SecretKeySelector (Optional) objectStorageConfig defines the configuration format is defined at https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\nThe operator performs no validation of the configuration.\nobjectStorageConfigFile takes precedence over this field.\nobjectStorageConfigFile string (Optional) objectStorageConfigFile defines the path of the object storage configuration file.\nThe configuration format is defined at https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\nThe operator performs no validation of the configuration file.\nThis field takes precedence over objectStorageConfig.\nlistenLocal bool (Optional) listenLocal defines the Thanos ruler listen on loopback, so that it does not bind against the Pod IP.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\nqueryEndpoints []string (Optional) queryEndpoints defines the list of Thanos Query endpoints from which to query metrics.\nFor Thanos \u0026gt;= v0.11.0, it is recommended to use queryConfig instead.\nqueryConfig takes precedence over this field.\nqueryConfig Kubernetes core/v1.SecretKeySelector (Optional) queryConfig defines the list of Thanos Query endpoints from which to query metrics.\nThe configuration format is defined at https://thanos.io/tip/components/rule.md/#query-api\nIt requires Thanos \u0026gt;= v0.11.0.\nThe operator performs no validation of the configuration.\nThis field takes precedence over queryEndpoints.\nalertmanagersUrl []string (Optional) alertmanagersUrl defines the list of Alertmanager endpoints to send alerts to.\nFor Thanos \u0026gt;= v0.10.0, it is recommended to use alertmanagersConfig instead.\nalertmanagersConfig takes precedence over this field.\nalertmanagersConfig Kubernetes core/v1.SecretKeySelector (Optional) alertmanagersConfig defines the list of Alertmanager endpoints to send alerts to.\nThe configuration format is defined at https://thanos.io/tip/components/rule.md/#alertmanager.\nIt requires Thanos \u0026gt;= v0.10.0.\nThe operator performs no validation of the configuration.\nThis field takes precedence over alertmanagersUrl.\nruleSelector Kubernetes meta/v1.LabelSelector (Optional) ruleSelector defines the PrometheusRule objects to be selected for rule evaluation. An empty label selector matches all objects. A null label selector matches no objects.\nruleNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) ruleNamespaceSelector defines the namespaces to be selected for Rules discovery. If unspecified, only the same namespace as the ThanosRuler object is in is used.\nenforcedNamespaceLabel string (Optional) enforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. The label value will always be the namespace of the object that is being created.\nexcludedFromEnforcement []ObjectReference (Optional) excludedFromEnforcement defines the list of references to PrometheusRule objects to be excluded from enforcing a namespace label of origin. Applies only if enforcedNamespaceLabel set to true.\nprometheusRulesExcludedFromEnforce []PrometheusRuleExcludeConfig (Optional) prometheusRulesExcludedFromEnforce defines a list of Prometheus rules to be excluded from enforcing of adding namespace labels. Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair Deprecated: use excludedFromEnforcement instead.\nlogLevel string (Optional) logLevel for ThanosRuler to be configured with.\nlogFormat str
493ing (Optional) logFormat for ThanosRuler to be configured with.\nportName string (Optional) portName defines the port name used for the pods and governing service. Defaults to web.\nevaluationInterval Duration (Optional) evaluationInterval defines the interval between consecutive evaluations.\nresendDelay Duration (Optional) resendDelay defines the minimum amount of time to wait before resending an alert to Alertmanager.\nruleOutageTolerance Duration (Optional) ruleOutageTolerance defines the max time to tolerate prometheus outage for restoring \u0026ldquo;for\u0026rdquo; state of alert. It requires Thanos \u0026gt;= v0.30.0.\nruleQueryOffset Duration (Optional) ruleQueryOffset defines the default rule group\u0026rsquo;s query offset duration to use. It requires Thanos \u0026gt;= v0.38.0.\nruleConcurrentEval int32 (Optional) ruleConcurrentEval defines how many rules can be evaluated concurrently. It requires Thanos \u0026gt;= v0.37.0.\nruleGracePeriod Duration (Optional) ruleGracePeriod defines the minimum duration between alert and restored \u0026ldquo;for\u0026rdquo; state. This is maintained only for alerts with configured \u0026ldquo;for\u0026rdquo; time greater than grace period. It requires Thanos \u0026gt;= v0.30.0.\nretention Duration (Optional) retention defines the time duration ThanosRuler shall retain data for. Default is \u0026lsquo;24h\u0026rsquo;, and must match the regular expression [0-9]+(ms|s|m|h|d|w|y) (milliseconds seconds minutes hours days weeks years).\nThe field has no effect when remote-write is configured since the Ruler operates in stateless mode.\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * thanos-ruler * config-reloader\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting initContainers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\ntracingConfig Kubernetes core/v1.SecretKeySelector (Optional) tracingConfig defines the tracing configuration.\nThe configuration format is defined at https://thanos.io/tip/thanos/tracing.md/#configuration\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nThe operator performs no validation of the configuration.\ntracingConfigFile takes precedence over this field.\ntracingConfigFile string (Optional) tracingConfigFile defines the path of the tracing configuration file.\nThe configuration format is defined at https://thanos.io/tip/thanos/tracing.md/#configuration\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nThe operator performs no validation of the configuration file.\nThis field takes precedence over tracingConfig.\nlabels map[string]string (Optional) labels defines the external label pairs of the ThanosRuler resource.\nA default replica label thanos_ruler_replica will be always added as a label with the value of the pod\u0026rsquo;s name.\nalertDropLabels []string (Optional) alertDropLabels defines the label names which should be dropped in Thanos Ruler alerts.\nThe replica label thanos_ruler_replica will always be dropped from the alerts.\nexternalPrefix string (Optional) externalPrefix defines the Thanos Ruler instances will be available under. This is necessary to generate correct URLs. This is necessary if Thanos Ruler is not served from root of a DNS name.\nroutePrefix string (Optional) routePrefix defines the route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path.\ngrpcServerTlsConfig GRPCServerTLSConfig (Optional) grpcServerTlsConfig defines the gRPC server from which Thanos Quer
493ier reads recorded rule data.\nNote: Currently only the minVersion, caFile, certFile, keyFile, cipherSuites and curves fields are supported.\nalertQueryUrl string (Optional) alertQueryUrl defines how Thanos Ruler will set in the \u0026lsquo;Source\u0026rsquo; field of all alerts. Maps to the \u0026lsquo;\u0026ndash;alert.query-url\u0026rsquo; CLI arg.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nalertRelabelConfigs Kubernetes core/v1.SecretKeySelector (Optional) alertRelabelConfigs defines the alert relabeling in Thanos Ruler.\nAlert relabel configuration must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\nThe operator performs no validation of the configuration.\nalertRelabelConfigFile takes precedence over this field.\nalertRelabelConfigFile string (Optional) alertRelabelConfigFile defines the path to the alert relabeling configuration file.\nAlert relabel configuration must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\nThe operator performs no validation of the configuration file.\nThis field takes precedence over alertRelabelConfig.\nhostAliases []HostAlias (Optional) hostAliases defines pods\u0026rsquo; hostAliases configuration\nadditionalArgs []Argument (Optional) additionalArgs defines how to add additional arguments for the ThanosRuler container. It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the ThanosRuler container which may cause issues if they are invalid or not supported by the given ThanosRuler version. In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument the reconciliation will fail and an error will be logged.\nweb ThanosRulerWebSpec (Optional) web defines the configuration of the ThanosRuler web server.\nremoteWrite []RemoteWriteSpec (Optional) remoteWrite defines the list of remote write configurations.\nWhen the list isn\u0026rsquo;t empty, the ruler is configured with stateless mode.\nIt requires Thanos \u0026gt;= 0.24.0.\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 120 seconds.\nenableFeatures []EnableFeature (Optional) enableFeatures defines how to setup Thanos Ruler feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nFor more information see https://thanos.io/tip/components/rule.md/\nIt requires Thanos \u0026gt;= 0.39.0.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nstatus ThanosRulerStatus (Optional) status defines the most recent observed status of the ThanosRuler cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nAPIServerConfig (Appears on:CommonPrometheusFields) APIServerConfig defines how the Prometheus server connects to the Kubernetes API server.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config\nField Description host str
493ing host defines the Kubernetes API address consisting of a hostname or IP address followed by an optional port number.\nbasicAuth BasicAuth (Optional) basicAuth configuration for the API server.\nCannot be set at the same time as authorization, bearerToken, or bearerTokenFile.\nbearerTokenFile string (Optional) bearerTokenFile defines the file to read bearer token for accessing apiserver.\nCannot be set at the same time as basicAuth, authorization, or bearerToken.\nDeprecated: this will be removed in a future release. Prefer using authorization.\ntlsConfig TLSConfig (Optional) tlsConfig to use for the API server.\nauthorization Authorization (Optional) authorization section for the API server.\nCannot be set at the same time as basicAuth, bearerToken, or bearerTokenFile.\nbearerToken string (Optional) bearerToken is deprecated: this will be removed in a future release. Warning: this field shouldn\u0026rsquo;t be used because the token value appears in clear-text. Prefer using authorization.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nAdditionalLabelSelectors (string alias) (Appears on:TopologySpreadConstraint) Value Description \u0026#34;OnResource\u0026#34;\nAutomatically add a label selector that will select all pods matching the same Prometheus/PrometheusAgent resource (irrespective of their shards).\n\u0026#34;OnShard\u0026#34;\nAutomatically add a label selector that will select all pods matching the same shard.\nAlertingSpec (Appears on:PrometheusSpec) AlertingSpec defines parameters for alerting configuration of Prometheus servers.\nField Description alertmanagers []AlertmanagerEndpoints alertmanagers endpoints where Prometheus should send alerts to.\nAlertmanagerAPIVersion (string alias) (Appears on:AlertmanagerEndpoints) Value Description \u0026#34;V1\u0026#34;\n\u0026#34;V2\u0026#34;\nAlertmanagerConfigMatcherStrategy (Appears on:AlertmanagerSpec) Field Description type AlertmanagerConfigMatcherStrategyType (Optional) type defines the strategy used by AlertmanagerConfig objects to match alerts in the routes and inhibition rules.\nThe default value is OnNamespace.\nAlertmanagerConfigMatcherStrategyType (string alias) (Appears on:AlertmanagerConfigMatcherStrategy) Value Description \u0026#34;None\u0026#34;\nWith None, the route and inhibition rules of an AlertmanagerConfig object process all incoming alerts.\n\u0026#34;OnNamespace\u0026#34;\nWith OnNamespace, the route and inhibition rules of an AlertmanagerConfig object only process alerts that have a namespace label equal to the namespace of the object.\n\u0026#34;OnNamespaceExceptForAlertmanagerNamespace\u0026#34;\nWith OnNamespaceExceptForAlertmanagerNamespace, the route and inhibition rules of an AlertmanagerConfig object only process alerts that have a namespace label equal to the namespace of the object, unless the AlertmanagerConfig object is in the same namespace as the Alertmanager object, where it will process all alerts.\nAlertmanagerConfiguration (Appears on:AlertmanagerSpec) AlertmanagerConfiguration defines the Alertmanager configuration.\nField Description name string (Optional) name defines the name of the AlertmanagerConfig custom resource which is used to generate the Alertmanager configuration. It must be defined in the same namespace as the Alertmanager object. The operator will not enforce a namespace label for routes and inhibition rules.\nglobal AlertmanagerGlobalConfig (Optional) global defines the global parameters of the Alertmanager configuration.\ntemplates []SecretOrConfigMap (Optional) templates defines the custom notification templates.\nAlertmanagerEndpoints (Appears on:AlertingSpec) AlertmanagerEndpoints defines a selection of a single Endpoints object c
493ontaining Alertmanager IPs to fire alerts against.\nField Description namespace string (Optional) namespace of the Endpoints object.\nIf not set, the object will be discovered in the namespace of the Prometheus object.\nname string name of the Endpoints object in the namespace.\nport k8s.io/apimachinery/pkg/util/intstr.IntOrString port on which the Alertmanager API is exposed.\nscheme Scheme (Optional) scheme defines the HTTP scheme to use when sending alerts.\npathPrefix string (Optional) pathPrefix defines the prefix for the HTTP path alerts are pushed to.\ntlsConfig TLSConfig (Optional) tlsConfig to use for Alertmanager.\nbasicAuth BasicAuth (Optional) basicAuth configuration for Alertmanager.\nCannot be set at the same time as bearerTokenFile, authorization or sigv4.\nbearerTokenFile string (Optional) bearerTokenFile defines the file to read bearer token for Alertmanager.\nCannot be set at the same time as basicAuth, authorization, or sigv4.\nDeprecated: this will be removed in a future release. Prefer using authorization.\nauthorization SafeAuthorization (Optional) authorization section for Alertmanager.\nCannot be set at the same time as basicAuth, bearerTokenFile or sigv4.\nsigv4 Sigv4 (Optional) sigv4 defines AWS\u0026rsquo;s Signature Verification 4 for the URL.\nIt requires Prometheus \u0026gt;= v2.48.0.\nCannot be set at the same time as basicAuth, bearerTokenFile or authorization.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\napiVersion AlertmanagerAPIVersion (Optional) apiVersion defines the version of the Alertmanager API that Prometheus uses to send alerts. It can be \u0026ldquo;V1\u0026rdquo; or \u0026ldquo;V2\u0026rdquo;. The field has no effect for Prometheus \u0026gt;= v3.0.0 because only the v2 API is supported.\ntimeout Duration (Optional) timeout defines a per-target Alertmanager timeout when pushing alerts.\nenableHttp2 bool (Optional) enableHttp2 defines whether to enable HTTP2.\nrelabelings []RelabelConfig (Optional) relabelings defines the relabel configuration applied to the discovered Alertmanagers.\nalertRelabelings []RelabelConfig (Optional) alertRelabelings defines the relabeling configs applied before sending alerts to a specific Alertmanager. It requires Prometheus \u0026gt;= v2.51.0.\nAlertmanagerGlobalConfig (Appears on:AlertmanagerConfiguration) AlertmanagerGlobalConfig configures parameters that are valid in all other configuration contexts. See https://prometheus.io/docs/alerting/latest/configuration/#configuration-file\nField Description smtp GlobalSMTPConfig (Optional) smtp defines global SMTP parameters.\nresolveTimeout Duration (Optional) resolveTimeout defines the default value used by alertmanager if the alert does not include EndsAt, after this time passes it can declare the alert as resolved if it has not been updated. This has no impact on alerts from Prometheus, as they always include EndsAt.\nhttpConfig HTTPConfigWithProxy (Optional) httpConfig defines the default HTTP configuration.\nslackApiUrl Kubernetes core/v1.SecretKeySelector (Optional) slackApiUrl defines the default Slack API URL.\nopsGenieApiUrl Kubernetes core/v1.SecretKeySelector (Optional) opsGenieApiUrl defines the default OpsGenie API URL.\nopsGenieApiKey Kubernetes core/v1.SecretKeySelector (Optional) opsGenieApiKey defines the default OpsGenie API Key.\npagerdutyUrl URL (Optional) pagerdutyUrl defines the default Pagerduty URL.\ntelegram GlobalTelegramConfig (Optional) telegram defines the default Telegram config\njira GlobalJiraConfig (Optional) jira defines the default configuration for Jira.\nvictorops GlobalVictorOpsConfig (Optional) victorops defines the default configuration for VictorOps.\nrocketChat GlobalRocketChatConfig (Optional) rocketChat defines the default configuration for Rocket Chat.\nwebex GlobalWebexConfig (Optional) webex defines the default configuration for Webex.\nwechat GlobalWeChatConfig (Optional) wechat defines the default WeChat Config\nmattermost GlobalMattermost
493Config (Optional) mattermost defines the default Mattermost Config\nAlertmanagerLimitsSpec (Appears on:AlertmanagerSpec) AlertmanagerLimitsSpec defines the limits command line flags when starting Alertmanager.\nField Description maxSilences int32 (Optional) maxSilences defines the maximum number active and pending silences. This corresponds to the Alertmanager\u0026rsquo;s --silences.max-silences flag. It requires Alertmanager \u0026gt;= v0.28.0.\nmaxPerSilenceBytes ByteSize (Optional) maxPerSilenceBytes defines the maximum size of an individual silence as stored on disk. This corresponds to the Alertmanager\u0026rsquo;s --silences.max-per-silence-bytes flag. It requires Alertmanager \u0026gt;= v0.28.0.\nAlertmanagerSpec (Appears on:Alertmanager) AlertmanagerSpec is a specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nField Description podMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the Alertmanager pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;alertmanager\u0026rdquo; label, set to the name of the Alertmanager instance. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Alertmanager instance. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;alertmanager\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Alertmanager version. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;alertmanager\u0026rdquo;.\nimage string (Optional) image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Alertmanager is being configured.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy for the \u0026lsquo;alertmanager\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nversion string (Optional) version the cluster should be on.\ntag string (Optional) tag of Alertmanager container image to be deployed. Defaults to the value of version. Version is ignored if Tag is set. Deprecated: use \u0026lsquo;image\u0026rsquo; instead. The image tag can be specified as part of the image URL.\nsha string (Optional) sha of Alertmanager container image to be deployed. Defaults to the value of version. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use \u0026lsquo;image\u0026rsquo; instead. The image digest can be specified as part of the image URL.\nbaseImage string (Optional) baseImage that is used to deploy pods, without tag. Deprecated: use \u0026lsquo;image\u0026rsquo; instead.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\nsecrets []string (Optional) secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each Secret is added to the StatefulSet definition as a volume named secret-\u0026lt;secret-name\u0026gt;. The Secrets are mounted into /etc/alertmanager/secrets/\u0026lt;secret-name\u0026gt; in the \u0026lsquo;alertmanager\u0026rsquo; container.\nconfigMaps []string (Optional) configMaps defines a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each ConfigMap is added to the StatefulSet definition as a volume named configmap-\u0026lt;configmap-name\u0026gt;
493. The ConfigMaps are mounted into /etc/alertmanager/configmaps/\u0026lt;configmap-name\u0026gt; in the \u0026lsquo;alertmanager\u0026rsquo; container.\nconfigSecret string (Optional) configSecret defines the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains the configuration for this Alertmanager instance. If empty, it defaults to alertmanager-\u0026lt;alertmanager-name\u0026gt;.\nThe Alertmanager configuration should be available under the alertmanager.yaml key. Additional keys from the original secret are copied to the generated secret and mounted into the /etc/alertmanager/config directory in the alertmanager container.\nIf either the secret or the alertmanager.yaml key is missing, the operator provisions a minimal Alertmanager configuration with one empty receiver (effectively dropping alert notifications).\nlogLevel string (Optional) logLevel for Alertmanager to be configured with.\nlogFormat string (Optional) logFormat for Alertmanager to be configured with.\nreplicas int32 (Optional) replicas defines the expected size of the alertmanager cluster. The controller will eventually make the size of the running cluster equal to the expected size.\nretention GoDuration (Optional) retention defines the time duration Alertmanager shall retain data for. Default is \u0026lsquo;120h\u0026rsquo;, and must match the regular expression [0-9]+(ms|s|m|h) (milliseconds seconds minutes hours).\nstorage StorageSpec (Optional) storage defines the definition of how storage will be used by the Alertmanager instances.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the alertmanager container, that are generated as a result of StorageSpec objects.\npersistentVolumeClaimRetentionPolicy Kubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy (Optional) persistentVolumeClaimRetentionPolicy controls if and how PVCs are deleted during the lifecycle of a StatefulSet. The default behavior is all PVCs are retained. This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26. It requires enabling the StatefulSetAutoDeletePVC feature gate.\nexternalUrl string (Optional) externalUrl defines the URL used to access the Alertmanager web service. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name.\nroutePrefix string (Optional) routePrefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with kubectl proxy.\npaused bool (Optional) paused if set to true all actions on the underlying managed objects are not going to be performed, except for delete actions.\nnodeSelector map[string]string (Optional) nodeSelector defines which Nodes the Pods are scheduled on.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resource requests and limits of the Pods.\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines the pod\u0026rsquo;s scheduling constraints.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines the pod\u0026rsquo;s tolerations.\ntopologySpreadConstraints []Kubernetes core/v1.TopologySpreadConstraint (Optional) topologySpreadConstraints defines the Pod\u0026rsquo;s topology spread constraints.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines the DNS configuration for the pods.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\nserviceName string (Optional) serviceName defines the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named alertmanager-operated for Alertmanager resources. When deploying multiple Alertmanager resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nserviceAccountName string (Optional) serviceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\nlistenLocal bool (Optional) listenLocal defines the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. Note this is only for the Alertmanager UI, not the gossip communication.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * alertmanager * config-reloader * thanos-sidecar\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting init
493Containers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch.\nThe names of init container name managed by the operator are: * init-config-reloader.\nOverriding init containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\npriorityClassName string (Optional) priorityClassName assigned to the Pods\nadditionalPeers []string (Optional) additionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\nclusterAdvertiseAddress string (Optional) clusterAdvertiseAddress defines the explicit address to advertise in cluster. Needs to be provided for non RFC1918 1 addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918\nclusterGossipInterval GoDuration (Optional) clusterGossipInterval defines the interval between gossip attempts.\nclusterLabel string (Optional) clusterLabel defines the identifier that uniquely identifies the Alertmanager cluster. 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.\nclusterPushpullInterval GoDuration (Optional) clusterPushpullInterval defines the interval between pushpull attempts.\nclusterPeerTimeout GoDuration (Optional) clusterPeerTimeout defines the timeout for cluster peering.\nclusterPeerName string (Optional) clusterPeerName defines the name that this Alertmanager instance uses to advertise itself to other cluster peers (the --cluster.peer-name flag, available since Alertmanager v0.30.0).\nIf not set, the operator defaults to the pod\u0026rsquo;s name ($(POD_NAME)), which is injected via the Kubernetes downward API. Setting this field lets you override that default with either a literal value or a string referencing environment variables that are already available in the Alertmanager container (for example $(POD_NAME).$(NAMESPACE)).\n/ It requires Alertmanager \u0026gt;= 0.30.0.\nportName string (Optional) portName defines the port\u0026rsquo;s name for the pods and governing service. Defaults to web.\nforceEnableClusterMode bool (Optional) forceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.\nalertmanagerConfigSelector Kubernetes meta/v1.LabelSelector (Optional) alertmanagerConfigSelector defines the selector to be used for to merge and configure Alertmanager with.\nalertmanagerConfigNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) alertmanagerConfigNamespaceSelector defines the namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace.\nalertmanagerConfigMatcherStrategy AlertmanagerConfigMatcherStrategy (Optional) alertmanagerConfigMatcherStrategy defines how AlertmanagerConfig objects process incoming alerts.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nWhen the Alertmanager version is greater than or equal to v0.30.0, the duration is also used to delay the first flush of the aggregation groups. This delay helps ensuring that all alerts have been resent by the Prometheus instances to Alertmanager after a roll-out. It is possible to override this behavior passing a custom value via .spec.additionalArgs.\nhostAliases []HostAlias (Optional) hostAliases Pods configuration\nhostNetwork bool (Optional) hostNetwork controls whether the pod may use the node network namespace.\nMake sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/).\nWhen hostNetwork is enabled, this will set the DNS policy to ClusterFirstWithHostNet automatically (unless .spec.dnsPolicy is set to a different value).\nweb AlertmanagerWebSpec (Optional) web defines the web command line flags when starting Alertmanager.\nlimits AlertmanagerLimitsSpec (Optional) limits defines the limits command line flags when starting Alertmanager.\nclusterTLS ClusterTLSConfig (Optional) clusterTLS defines the mutual TLS configuration for the Alertmanager cluster\u0026rsquo;s gossip protocol.\nIt requires Alertmanager \u0026gt;= 0.24.0.\nalertmanagerConfiguration AlertmanagerConfiguration (Optional) alertmanagerConfiguration defines the configuration of Alertmanager.\nIf defined, it takes precedence over the configSecret field.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nautomountServiceAccountToken bool (Optional) automountServiceAccountToken defines whether a service account token should be automatically mounted
493in the pod. If the service account has automountServiceAccountToken: true, set the field to false to opt out of automounting API credentials.\nenableFeatures []string (Optional) enableFeatures defines the Alertmanager\u0026rsquo;s feature flags. By default, no features are enabled. Enabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nIt requires Alertmanager \u0026gt;= 0.27.0.\nadditionalArgs []Argument (Optional) additionalArgs allows setting additional arguments for the \u0026lsquo;Alertmanager\u0026rsquo; container. It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Alertmanager container which may cause issues if they are invalid or not supported by the given Alertmanager version.\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the Optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 120 seconds.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nAlertmanagerStatus (Appears on:Alertmanager) AlertmanagerStatus is the most recent observed status of the Alertmanager cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nField Description paused bool (Optional) paused defines whether any actions on the underlying managed objects are being performed. Only delete actions will be performed.\nreplicas int32 (Optional) replicas defines the total number of non-terminated pods targeted by this Alertmanager object (their labels match the selector).\nupdatedReplicas int32 (Optional) updatedReplicas defines the total number of non-terminated pods targeted by this Alertmanager object that have the desired version spec.\navailableReplicas int32 (Optional) availableReplicas defines the total number of available pods (ready for at least minReadySeconds) targeted by this Alertmanager cluster.\nunavailableReplicas int32 (Optional) unavailableReplicas defines the total number of unavailable pods targeted by this Alertmanager object.\nselector string (Optional) selector used to match the pods targeted by this Alertmanager object.\nconditions []Condition (Optional) conditions defines the current state of the Alertmanager object.\nAlertmanagerWebSpec (Appears on:AlertmanagerSpec) AlertmanagerWebSpec defines the web command line flags when starting Alertmanager.\nField Description tlsConfig WebTLSConfig (Optional) tlsConfig defines the TLS parameters for HTTPS.\nhttpConfig WebHTTPConfig (Optional) httpConfig defines HTTP parameters for web server.\ngetConcurrency uint32 (Optional) getConcurrency defines the maximum number of GET requests processed concurrently. This corresponds to the Alertmanager\u0026rsquo;s --web.get-concurrency flag.\ntimeout uint32 (Optional) timeout for HTTP requests. This corresponds to the Alertmanager\u0026rsquo;s --web.timeout flag.\nArbitraryFSAccessThroughSMsConfig (Appears on:CommonPrometheusFields) ArbitraryFSAccessThroughSMsConfig enables users to configure, whether a service monitor selected by the Prometheus instance is allowed to use arbitrary files on the file system of the Prometheus container. This is the case when e.g. a service monitor specifies a BearerTokenFile in an endpoint. A malicious user could create a service monitor selecting arbitrary secret files in the Prometheus container. Those secrets would then be sent with a scrape request by Prometheus to a malicious target. Denying the above would prevent the attack, users can instead use the BearerTokenSecret field.\nField Description de
493ny bool (Optional) deny prevents service monitors from accessing arbitrary files on the file system. When true, service monitors cannot use file-based configurations like BearerTokenFile that could potentially access sensitive files. When false (default), such access is allowed. Setting this to true enhances security by preventing potential credential theft attacks.\nArgument (Appears on:AlertmanagerSpec, CommonPrometheusFields, ThanosRulerSpec, ThanosSpec) Argument as part of the AdditionalArgs list.\nField Description name string name of the argument, e.g. \u0026ldquo;scrape.discovery-reload-interval\u0026rdquo;.\nvalue string (Optional) value defines the argument value, e.g. 30s. Can be empty for name-only arguments (e.g. \u0026ndash;storage.tsdb.no-lockfile)\nAttachMetadata (Appears on:PodMonitorSpec, ScrapeClass, ServiceMonitorSpec) Field Description node bool (Optional) node when set to true, Prometheus attaches node metadata to the discovered targets.\nThe Prometheus service account must have the list and watch permissions on the Nodes objects.\nNode metadata labels are not automatically added to scraped metrics. They are exposed as __meta_kubernetes_node_* labels and can be copied to timeseries with relabeling configuration.\nAuthorization (Appears on:APIServerConfig, RemoteReadSpec, RemoteWriteSpec, ScrapeClass) Field Description type string (Optional) type defines the authentication type. The value is case-insensitive.\n\u0026ldquo;Basic\u0026rdquo; is not a supported value.\nDefault: \u0026ldquo;Bearer\u0026rdquo;\ncredentials Kubernetes core/v1.SecretKeySelector (Optional) credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\ncredentialsFile string (Optional) credentialsFile defines the file to read a secret from, mutually exclusive with credentials.\nAzureAD (Appears on:RemoteWriteSpec) AzureAD defines the configuration for remote write\u0026rsquo;s azuread parameters.\nField Description cloud string (Optional) cloud defines the Azure Cloud. Options are \u0026lsquo;AzurePublic\u0026rsquo;, \u0026lsquo;AzureChina\u0026rsquo;, or \u0026lsquo;AzureGovernment\u0026rsquo;.\nmanagedIdentity ManagedIdentity (Optional) managedIdentity defines the Azure User-assigned Managed identity. Cannot be set at the same time as oauth, sdk or workloadIdentity.\noauth AzureOAuth (Optional) oauth defines the oauth config that is being used to authenticate. Cannot be set at the same time as managedIdentity, sdk or workloadIdentity.\nIt requires Prometheus \u0026gt;= v2.48.0 or Thanos \u0026gt;= v0.31.0.\nsdk AzureSDK (Optional) sdk defines the Azure SDK config that is being used to authenticate. See https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication Cannot be set at the same time as oauth, managedIdentity or workloadIdentity.\nIt requires Prometheus \u0026gt;= v2.52.0 or Thanos \u0026gt;= v0.36.0.\nworkloadIdentity AzureWorkloadIdentity (Optional) workloadIdentity defines the Azure Workload Identity authentication. Cannot be set at the same time as oauth, managedIdentity, or sdk.\nIt requires Prometheus \u0026gt;= 3.7.0. Currently not supported by Thanos.\nscope string (Optional) scope is the custom OAuth 2.0 scope to request when acquiring tokens. It requires Prometheus \u0026gt;= 3.9.0. Currently not supported by Thanos.\nAzureOAuth (Appears on:AzureAD) AzureOAuth defines the Azure OAuth settings.\nField Description clientId string clientId defines the clientId of the Azure Active Directory application that is being used to authenticate.\nclientSecret Kubernetes core/v1.SecretKeySelector clientSecret specifies a key of a Secret containing the client secret of the Azure Active Directory application that is being used to authenticate.\ntenantId string tenantId is the tenant ID of the Azure Active Directory application that is being used to authenticate.\nAzureSDK (Appears on:AzureAD) AzureSDK is used to store azure SDK config values.\nField Description tenantId string (Optional) tenantId defines the tenant ID of the azure active directory application that is being used to authenticate.\nAzureWorkloadIdentity (Appears on:AzureAD) AzureWorkloadIdentity defines the Azure Workload Identity authentication configuration.\nField Description clientId string clientId is the clientID of the Azure Active Directory application.\ntenantId string tenantId is the tenant ID of the Azure Active Directory application.\nBasicAuth (Appears on:APIServerConfig, AlertmanagerEndpoints, HTTPConfigWithoutTLS, RemoteReadSpec, RemoteWriteSpec, AzureSDConfig, ConsulSDConfig, DockerSDConfig, DockerSwarmSDConfig, EurekaSDConfig, HTTPConfig, HTTPSDConfig, HetznerSDConfig, KubernetesSDConfig, KumaSDConfig, LightSailSDConfig, NomadSDConfig, PuppetDBSDConfig, ScrapeConfigSpec, HTTPConfig) BasicAuth configures HTTP Basic Authentication settings.\nField Description username Kubernetes core/v1.SecretKeySelector (Optional) username defines a key of a Secret containing the username for authentication.\npassword Kubernetes core/v1.SecretKeySelector (Optional) password defines a key of a Secret containing the password for authentication.\nByteSize (string alias) (Appears on:AlertmanagerLimitsSpec, CommonPrometheusFields, PodMonitorSpec, PrometheusSpec, ServiceMonitorSpec, ScrapeConfigSpec) ByteSize is a valid memory size type based on powers-of-2, so 1KB is 1024B. Supported units: B, KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB Ex: 512MB.\
493nChunkEncodingFloats (string alias) (Appears on:ChunkEncodingSpec) Value Description \u0026#34;Xor\u0026#34;\n\u0026#34;Xor2\u0026#34;\nChunkEncodingSpec (Appears on:TSDBSpec) ChunkEncodingSpec configures per-chunk-type encoding overrides.\nField Description floats ChunkEncodingFloats (Optional) floats selects the encoding used for float chunks. Valid values are \u0026ldquo;Xor\u0026rdquo; and \u0026ldquo;Xor2\u0026rdquo;.\nNotice: * Setting \u0026ldquo;Xor\u0026rdquo; is incompatible with \u0026ndash;enable-feature=st-storage (XOR chunks do not store start timestamps). * Setting \u0026ldquo;Xor2\u0026rdquo; automatically adds the xor2-encoding feature flag.\nIt requires Prometheus \u0026gt;= v3.13.0.\nClientAuthType (string alias) (Appears on:WebTLSConfig) Taken from https://golang.org/pkg/crypto/tls/#ClientAuthType.\nValue Description \u0026#34;NoClientCert\u0026#34;\nNoClientCert indicates that no client certificate should be requested during the handshake, and if any certificates are sent they will not be verified.\n\u0026#34;RequestClientCert\u0026#34;\nRequestClientCert indicates that a client certificate should be requested during the handshake, but does not require that the client send any certificates.\n\u0026#34;RequireAndVerifyClientCert\u0026#34;\nRequireAndVerifyClientCert indicates that a client certificate should be requested during the handshake, and that at least one valid certificate is required to be sent by the client.\n\u0026#34;RequireAnyClientCert\u0026#34;\nRequireAnyClientCert indicates that a client certificate should be requested during the handshake, and that at least one certificate is required to be sent by the client, but that certificate is not required to be valid.\n\u0026#34;VerifyClientCertIfGiven\u0026#34;\nVerifyClientCertIfGiven indicates that a client certificate should be requested during the handshake, but does not require that the client sends a certificate. If the client does send a certificate it is required to be valid.\nClusterTLSConfig (Appears on:AlertmanagerSpec) ClusterTLSConfig defines the mutual TLS configuration for the Alertmanager cluster TLS protocol.\nField Description server WebTLSConfig server defines the server-side configuration for mutual TLS.\nclient SafeTLSConfig client defines the client-side configuration for mutual TLS.\nCommonPrometheusFields (Appears on:PrometheusSpec, PrometheusAgentSpec) CommonPrometheusFields are the options available to both the Prometheus server and agent.\nField Description podMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the Prometheus pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version. * \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\nserviceMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nserviceMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\npodMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\npodMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\nprobeSelector Kubernetes meta/v1.LabelSelector (Optional) probeSelector defines the probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nprobeNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) probeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nscrapeConfigSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nNote that the ScrapeConfig custom resource definition is currently at Alp
493ha level and will be graduated to Beta in a future release.\nscrapeConfigNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nNote that the ScrapeConfig custom resource definition is currently at Alpha level and will be graduated to Beta in a future release.\nversion string (Optional) version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files.\nIf not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\npaused bool (Optional) paused defines when a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\nimage string (Optional) image defines the container image name for Prometheus. If specified, it takes precedence over the spec.baseImage, spec.tag and spec.sha fields.\nSpecifying spec.version is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured.\nIf neither spec.image nor spec.baseImage are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets defines an optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\nreplicas int32 (Optional) replicas defines the number of replicas of each shard to deploy for a Prometheus deployment. spec.replicas multiplied by spec.shards is the total number of Pods created.\nDefault: 1\nshards int32 (Optional) shards defines the number of shards to distribute the scraped targets onto.\nspec.replicas multiplied by spec.shards is the total number of Pods being created.\nWhen not defined, the operator assumes only one shard.\nNote that scaling down shards will not reshard data onto the remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use either * Thanos sidecar + querier for query federation and Thanos Ruler for rules. * Remote-write to send metrics to a central location.\nBy default, the sharding of targets is performed on: * The __address__ target\u0026rsquo;s metadata label for PodMonitor, ServiceMonitor and ScrapeConfig resources. * The __param_target__ label for Probe resources.\nUsers can define their own sharding implementation by setting the __tmp_hash label during the target discovery with relabeling configuration (either in the monitoring resources or via scrape class).\nYou can also disable sharding on a specific target by setting the __tmp_disable_sharding label with relabeling configuration. When the label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\nDefault: 1\nshardingStrategy ShardingStrategy (Optional) shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\nWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes targets based on a hash of the target address.\nreplicaExternalLabelName string (Optional) replicaExternalLabelName defines the name of Prometheus external label used to denote the replica name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\nprometheusExternalLabelName string (Optional) prometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus\u0026rdquo;\nlogLevel string (Optional) logLevel for Prometheus and the config-reloader sidecar.\nlogFormat str
493ing (Optional) logFormat for Log level for Prometheus and the config-reloader sidecar.\nscrapeInterval Duration (Optional) scrapeInterval defines interval between consecutive scrapes.\nDefault: \u0026ldquo;30s\u0026rdquo;\nscrapeTimeout Duration (Optional) scrapeTimeout defines the number of seconds to wait until a scrape request times out. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nPrometheusText1.0.0 requires Prometheus \u0026gt;= v3.0.0.\nexternalLabels map[string]string (Optional) externalLabels defines the labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by spec.replicaExternalLabelName and spec.prometheusExternalLabelName take precedence over this list.\nenableRemoteWriteReceiver bool (Optional) enableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote write protocol.\nWARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\nIt requires Prometheus \u0026gt;= v2.33.0.\nenableOTLPReceiver bool (Optional) enableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\nNote that the OTLP receiver endpoint is automatically enabled if .spec.otlpConfig is defined.\nIt requires Prometheus \u0026gt;= v2.47.0.\nremoteWriteReceiverMessageVersions []RemoteWriteMessageVersion (Optional) remoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the remote writes.\nIt requires Prometheus \u0026gt;= v2.54.0.\nenableFeatures []EnableFeature (Optional) enableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nFor more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\nexternalUrl string (Optional) externalUrl defines the external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\nroutePrefix string (Optional) routePrefix defines the route prefix Prometheus registers HTTP handlers for.\nThis is useful when using spec.externalURL, and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with kubectl proxy.\nstorage StorageSpec (Optional) storage defines the storage used by Prometheus.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes allows the configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts allows the configuration of additional VolumeMounts.\nVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo; container, that are generated as a result of StorageSpec objects.\npersistentVolumeClaimRetentionPolicy Kubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy (Optional) persistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet. The default behavior is all PVCs are retained. This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26. It requires enabling the StatefulSetAutoDeletePVC feature gate.\nweb PrometheusWebSpec (Optional) web defines the configuration of the Prometheus web server.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo;
493 container.\nnodeSelector map[string]string (Optional) nodeSelector defines on which Nodes the Pods are scheduled.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nserviceAccountName string (Optional) serviceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\nautomountServiceAccountToken bool (Optional) automountServiceAccountToken defines whether a service account token should be automatically mounted in the pod. If the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\nWarning: be aware that by default, Prometheus requires the service account token for Kubernetes service discovery. It is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\nsecrets []string (Optional) secrets defines a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named secret-\u0026lt;secret-name\u0026gt;. The Secrets are mounted into /etc/prometheus/secrets/ in the \u0026lsquo;prometheus\u0026rsquo; container.\nconfigMaps []string (Optional) configMaps defines a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named configmap-\u0026lt;configmap-name\u0026gt;. The ConfigMaps are mounted into /etc/prometheus/configmaps/ in the \u0026lsquo;prometheus\u0026rsquo; container.\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines the Pods\u0026rsquo; tolerations if specified.\ntopologySpreadConstraints []TopologySpreadConstraint (Optional) topologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\nremoteWrite []RemoteWriteSpec (Optional) remoteWrite defines the list of remote write configurations.\notlp OTLPConfig (Optional) otlp defines the settings related to the OTLP receiver feature. It requires Prometheus \u0026gt;= v2.55.0.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines the DNS configuration for the pods.\nlistenLocal bool (Optional) listenLocal when true, the Prometheus server listens on the loopback address instead of the Pod IP\u0026rsquo;s address.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * prometheus * config-reloader * thanos-sidecar\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting init
493Containers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch.\nThe names of init container name managed by the operator are: * init-config-reloader.\nOverriding init containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\nadditionalScrapeConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.\napiserverConfig APIServerConfig (Optional) apiserverConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod\u0026rsquo;s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\npriorityClassName string (Optional) priorityClassName assigned to the Pods.\nportName string (Optional) portName used for the pods and governing service. Default: \u0026ldquo;web\u0026rdquo;\narbitraryFSAccessThroughSMs ArbitraryFSAccessThroughSMsConfig (Optional) arbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo; container. When a ServiceMonitor\u0026rsquo;s endpoint specifies a bearerTokenFile value (e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a malicious target can get access to the Prometheus service account\u0026rsquo;s token in the Prometheus\u0026rsquo; scrape request. Setting spec.arbitraryFSAccessThroughSM to \u0026lsquo;true\u0026rsquo; would prevent the attack. Users should instead provide the credentials using the spec.bearerTokenSecret field.\noverrideHonorLabels bool (Optional) overrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data to âexported_â for all targets created from ServiceMonitor, PodMonitor and ScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies. In practice,OverrideHonorLabels:true enforces honorLabels:false for all ServiceMonitor, PodMonitor and ScrapeConfig objects.\noverrideHonorTimestamps bool (Optional) overrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\nignoreNamespaceSelectors bool (Optional) ignoreNamespaceSelectors when true, spec.namespaceSelector from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object.\nenforcedNamespaceLabel string (Optional) enforcedNamespaceLabel when not empty, a label will be added to:\nAll metrics scraped from ServiceMonitor, PodMonitor, Probe and ScrapeConfig objects. All metrics generated from recording rules defined in PrometheusRule objects. All alerts generated from alerting rules defined in PrometheusRule objects. All vector selectors of PromQL expressions defined in PrometheusRule objects. The label will not added for objects referenced in spec.excludedFromEnforcement.\nThe label\u0026rsquo;s name is this field\u0026rsquo;s value. The label\u0026rsquo;s value is the namespace of the ServiceMonitor, PodMonitor, Probe, PrometheusRule or ScrapeConfig object.\nenforcedSampleLimit int64 (Optional) enforcedSampleLimit when defined specifies a global limit on the number of scraped samples that will be accepted. This overrides any spec.sampleLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.sampleLimit is greater than zero and less than spec.enforcedSampleLimit.\nIt is meant to be used by admins to keep the overall number of samples/series under a desired limit.\nWhen both enforcedSampleLimit and sampleLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined sampleLimit value will inherit the global sampleLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedSampleLimit is greater than the sampleLimit, the sampleLimit will be set to enforcedSampleLimit. * Scrape objects with a sampleLimit value less than or equal to enforcedSampleLimit keep their specific value. * Scrape objects with a sampleLimit value greater than enforcedSampleLimit are set to enforcedSampleLimit.\nenforcedTargetLimit int64 (Optional) enforcedTargetLimit when defined specifies a global limit on the number of scraped targets. The value overrides any spec.targetLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.targetLimit is greater than zero and less than spec.enforcedTargetLimit.\nIt is meant to be used by admins to to keep the overall number of targets under a desired limit.\nWhen both enforcedTargetLimit and targetLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined targetLimit value will inherit the global targetLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedTargetLimit is greater than the targetLimit, the targetLimit will be set to enforcedTargetLimit. * Scrape objects with a targetLimit value less than or equal to enforcedTargetLimit keep their specific value. * Scrape objects with a targetLimit value greater than enforcedTargetLimit are set to enforcedTargetLimit.\nenforcedLabelLimit int64 (Optional) enforcedLabelLimit when defined specifies a global limit on the number of labels per sample. The value overrides any spec.labelLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelLimit is greater than zero and less than spec.enforcedLabelLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelLimit and labelLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelLimit value will inherit the global labelLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelLimit is greater than the labelLimit, the labelLimit will be set to enforcedLabelLimit. * Scrape objects with a labelLimit value less than or equal to enforcedLabelLimit keep their specific value. * Scrape objects with a labelLimit value greater than enforcedLabelLimit are set to enforcedLabelLimit.\nenforcedLabelNameLengthLimit int64 (Optional) enforcedLabelNameLengthLimit when defined specifies a global limit on the length of labels name per sample. The value overrides any spec.labelNameLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelNameLengthLimit is greater than zero and less than spec.enforcedLabelNameLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelNameLengthLimit and labelNameLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelNameLengthLimit value will inherit the global labelNameLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelNameLengthLimit is greater than the labelNameLengthLimit, the labelNameLengthLimit will be set to enforcedLabelNameLengthLimit. * Scrape objects with a labelNameLengthLimit value less than or equal to enforcedLabelNameLengthLimit keep their specific value. * Scrape objects with a labelNameLengthLimit value greater than enforcedLabelNameLengthLimit are set to enforcedLabelNameLengthLimit.\nenforcedLabelValueLengthLimit int64 (Optional) enforcedLabelValueLengthLimit when not null defines a global limit on the length of labels value per sample. The value overrides any spec.labelValueLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelValueLengthLimit is greater than zero and less than spec.enforcedLabelValueLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelValueLengthLimit and labelValueLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelValueLengthLimit value will inherit the global labelValueLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelValueLengthLimit is greater than the labelValueLengthLimit, the labelValueLengthLimit will be set to enforcedLabelValueLengthLimit. * Scrape objects with a labelValueLengthLimit value less than or equal to enforcedLabelValueLengthLimit keep their specific value. * Scrape objects with a labelValueLengthLimit value greater than enforcedLabelValueLengthLimit are set to enforcedLabelValueLengthLimit.\nenforcedKeepDroppedTargets int64 (Optional) enforcedKeepDroppedTargets when defined specifies a global limit on the number of targets dropped by relabeling that will be kept in memory. The value overrides any spec.keepDroppedTargets set by ServiceMonitor, PodMonitor, Probe objects unless spec.keepDroppedTargets is greater than zero and less than spec.enforcedKeepDroppedTargets.\nIt requires Prometheus \u0026gt;= v2.47.0.\nWhen both enforcedKeepDroppedTargets and keepDroppedTargets are defined and greater than zero, the following rules apply: * Scrape objects without a defined keepDroppedTargets value will inherit the global keepDroppedTargets value (Prometheus \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedKeepDroppedTargets is greater than the keepDroppedTargets, the keepDroppedTargets will be set to enforcedKeepDroppedTargets. * Scrape objects with a keepDroppedTargets value less than or equal to enforcedKeepDroppedTargets keep their specific value. * Scrape objects with a keepDroppedTargets value greater than enforcedKeepDroppedTargets are set to enforcedKeepDroppedTargets.\nenforcedBodySizeLimit ByteSize (Optional) enforcedBodySizeLimit when defined specifies a global limit on the size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail.\nIt requires Prometheus \u0026gt;
493= v2.28.0.\nWhen both enforcedBodySizeLimit and bodySizeLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined bodySizeLimit value will inherit the global bodySizeLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedBodySizeLimit is greater than the bodySizeLimit, the bodySizeLimit will be set to enforcedBodySizeLimit. * Scrape objects with a bodySizeLimit value less than or equal to enforcedBodySizeLimit keep their specific value. * Scrape objects with a bodySizeLimit value greater than enforcedBodySizeLimit are set to enforcedBodySizeLimit.\nnameValidationScheme NameValidationSchemeOptions (Optional) nameValidationScheme defines the validation scheme for metric and label names.\nIt requires Prometheus \u0026gt;= v2.55.0.\nnameEscapingScheme NameEscapingSchemeOptions (Optional) nameEscapingScheme defines the character escaping scheme that will be requested when scraping for metric and label names that do not conform to the legacy Prometheus character set.\nIt requires Prometheus \u0026gt;= v3.4.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.4.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nIt requires Prometheus \u0026gt;= v3.5.0.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nhostAliases []HostAlias (Optional) hostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s hosts file if specified.\nadditionalArgs []Argument (Optional) additionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\nIt is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version.\nIn case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\nwalCompression bool (Optional) walCompression defines the compression of the write-ahead log (WAL) using Snappy.\nWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\nRequires Prometheus v2.11.0 and above.\nexcludedFromEnforcement []ObjectReference (Optional) excludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin.\nIt is only applicable if spec.enforcedNamespaceLabel set to true.\nhostNetwork bool (Optional) hostNetwork defines the host\u0026rsquo;s network namespace if true.\nMake sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/ ).\nWhen hostNetwork is enabled, this will set the DNS policy to ClusterFirstWithHostNet automatically (unless .spec.DNSPolicy is set to a different value).\npodTargetLabels []string (Optional) podTargetLabels are appended to the spec.podTargetLabels field of all PodMonitor and ServiceMonitor objects.\ntracingConfig TracingConfig (Optional) tracingConfig defines tracing in Prometheus.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nbodySizeLimit ByteSize (Optional) bodySizeLimit defines per-scrape on response body size. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\nlabelLimit int64 (Optional) labelLimit defines per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\nreloadStrategy ReloadStrategyType (Optional) reloadStrategy defines the strategy used to reload the Prometheus configuration. If not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\nmaximumStartupDurationSeconds int32 (Optional) maximumStartupDurationSeconds defines the maximum time that the prometheus container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete. If set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\nscrapeClasses []ScrapeClass (Optional) scrapeClasses defines the list of scrape classes to expose to scraping objects such as PodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nserviceDiscoveryRole ServiceDiscoveryRole (Optional) serviceDiscoveryRole defines the service discovery role used to discover targets from ServiceMonitor objects and Alertmanager endpoints.\nIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
493. If unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\ntsdb TSDBSpec (Optional) tsdb defines the runtime reloadable configuration of the timeseries database(TSDB). It requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\nscrapeFailureLogFile string (Optional) scrapeFailureLogFile defines the file to which scrape failures are logged. Reloading the configuration will reopen the file.\nIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods will mount the file into an emptyDir volume at /var/log/prometheus. If a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you must mount a volume in the specified directory and it must be writable. It requires Prometheus \u0026gt;= v2.55.0.\nserviceName string (Optional) serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named prometheus-operated for Prometheus resources, or prometheus-agent-operated for PrometheusAgent resources. When deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nruntime RuntimeConfig (Optional) runtime defines the values for the Prometheus process behavior\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 600 seconds.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nCondition (Appears on:AlertmanagerStatus, PrometheusStatus, ThanosRulerStatus) Condition represents the state of the resources associated with the Prometheus, Alertmanager or ThanosRuler resource.\nField Description type ConditionType type of the condition being reported.\nstatus ConditionStatus status of the condition.\nlastTransitionTime Kubernetes meta/v1.Time lastTransitionTime is the time of the last update to the current status property.\nreason string (Optional) reason for the condition\u0026rsquo;s last transition.\nmessage string (Optional) message defines human-readable message indicating details for the condition\u0026rsquo;s last transition.\nobservedGeneration int64 (Optional) observedGeneration defines the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.\nConditionStatus (string alias) (Appears on:Condition, ConfigResourceCondition) Value Description \u0026#34;Degraded\u0026#34;\n\u0026#34;False\u0026#34;\n\u0026#34;True\u0026#34;\n\u0026#34;Unknown\u0026#34;\nConditionType (string alias) (Appears on:Condition, ConfigResourceCondition) Value Description \u0026#34;Accepted\u0026#34;\nAccepted indicates whether the workload controller has successfully accepted the configuration resource and updated the configuration of the workload accordingly. The possible status values for this condition type are: - True: the configuration resource was successfully accepted by the controller and written to the configuration secret. - False: the controller rejected the configuration due to an error. - Unknown: the operator couldn\u0026rsquo;t determine the condition status.\n\u0026#34;Available\u0026#34;\nAvailable indicates whether enough pods are ready to provide the service. The possible status values for this condition type are: - True: all pods are running and ready, the service is fully available. - Degraded:
493some pods aren\u0026rsquo;t ready, the service is partially available. - False: no pods are running, the service is totally unavailable. - Unknown: the operator couldn\u0026rsquo;t determine the condition status.\n\u0026#34;Reconciled\u0026#34;\nReconciled indicates whether the operator has reconciled the state of the underlying resources with the object\u0026rsquo;s spec. The possible status values for this condition type are: - True: the reconciliation was successful. - False: the reconciliation failed. - Unknown: the operator couldn\u0026rsquo;t determine the condition status.\nConfigResourceCondition (Appears on:WorkloadBinding) ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.\nField Description type ConditionType type of the condition being reported. Currently, only \u0026ldquo;Accepted\u0026rdquo; is supported.\nstatus ConditionStatus status of the condition.\nlastTransitionTime Kubernetes meta/v1.Time lastTransitionTime defines the time of the last update to the current status property.\nreason string (Optional) reason for the condition\u0026rsquo;s last transition.\nmessage string (Optional) message defines the human-readable message indicating details for the condition\u0026rsquo;s last transition.\nobservedGeneration int64 (Optional) observedGeneration defines the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[].observedGeneration is 9, the condition is out of date with respect to the current state of the object.\nConfigResourceStatus (Appears on:PodMonitor, Probe, PrometheusRule, ServiceMonitor, AlertmanagerConfig, ScrapeConfig, AlertmanagerConfig) ConfigResourceStatus is the most recent observed status of the Configuration Resource (ServiceMonitor, PodMonitor, Probes, ScrapeConfig, PrometheusRule or AlertmanagerConfig). Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nField Description bindings []WorkloadBinding (Optional) bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.\nCoreV1TopologySpreadConstraint (Appears on:TopologySpreadConstraint) Field Description maxSkew int32 MaxSkew describes the degree to which pods may be unevenly distributed. When whenUnsatisfiable=DoNotSchedule, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When whenUnsatisfiable=ScheduleAnyway, it is used to give higher precedence to topologies that satisfy it. It\u0026rsquo;s a required field. Default value is 1 and 0 is not allowed.\ntopologyKey string TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a \u0026ldquo;bucket\u0026rdquo;, and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \u0026ldquo;kubernetes.io/hostname\u0026rdquo;, each Node is a domain of that topology. And, if TopologyKey is \u0026ldquo;topology.kubernetes.io/zone\u0026rdquo;, each zone is a domain of that topology. It\u0026rsquo;s a required field.\nwhenUnsatisfiable Kubernetes core/v1.UnsatisfiableConstraintAction WhenUnsatisfiable indicates how to deal with a pod if it doesn\u0026rsquo;t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \u0026ldquo;Unsatisfiable\u0026rdquo; for an incoming pod if and only if every possible node assignment for that pod would violate \u0026ldquo;MaxSkew\u0026rdquo; on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won\u0026rsquo;t make it more imbalanced. It\u0026rsquo;s a required field.\nlabelSelector Kubernetes meta/v1.LabelSelector (Optional) LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\nminDomains int32 (Optional) MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \u0026ldquo;global minimum\u0026rdquo; as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won\u0026rsquo;t schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so \u0026ldquo;global minimum\u0026rdquo; is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew.\nnodeAffinityPolicy Kubernetes core/v1.NodeInclusionPolicy (Optional) NodeAffinityPolicy indicates how we will treat Pod\u0026rsquo;s nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\nIf this value is nil, the behavior is equivalent to the Honor policy.\nnodeTaintsPolicy Kubernetes core/v1.NodeInclusionPolicy (Optional) NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included.\nIf this value is nil, the behavior is equivalent to the Ignore policy.\nmatchLabelKeys []string (Optional) MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when L
493abelSelector isn\u0026rsquo;t set. Keys that don\u0026rsquo;t exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\nDNSPolicy (string alias) (Appears on:AlertmanagerSpec, CommonPrometheusFields, ThanosRulerSpec) DNSPolicy specifies the DNS policy for the pod.\nValue Description \u0026#34;ClusterFirst\u0026#34;\nDNSClusterFirst defines that the pod should use cluster DNS first unless hostNetwork is true, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n\u0026#34;ClusterFirstWithHostNet\u0026#34;\nDNSClusterFirstWithHostNet defines that the pod should use cluster DNS first, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n\u0026#34;Default\u0026#34;\nDNSDefault defines that the pod should use the default (as determined by kubelet) DNS settings.\n\u0026#34;None\u0026#34;\nDNSNone defines that the pod should use empty DNS settings. DNS parameters such as nameservers and search paths should be defined via DNSConfig.\nDuration (string alias) (Appears on:AlertmanagerEndpoints, AlertmanagerGlobalConfig, CommonPrometheusFields, Endpoint, MetadataConfig, PodMetricsEndpoint, ProbeSpec, PrometheusSpec, QuerySpec, QueueConfig, RemoteReadSpec, RemoteWriteSpec, RetainConfig, Rule, RuleGroup, TSDBSpec, ThanosRulerSpec, ThanosSpec, TracingConfig, AzureSDConfig, ConsulSDConfig, DNSSDConfig, DigitalOceanSDConfig, DockerSDConfig, DockerSwarmSDConfig, EC2SDConfig, EurekaSDConfig, FileSDConfig, GCESDConfig, HTTPSDConfig, HetznerSDConfig, IonosSDConfig, KumaSDConfig, LightSailSDConfig, LinodeSDConfig, NomadSDConfig, OVHCloudSDConfig, OpenStackSDConfig, PagerDutyConfig, PuppetDBSDConfig, PushoverConfig, ScalewaySDConfig, ScrapeConfigSpec, SlackConfig, WebhookConfig, PagerDutyConfig, PushoverConfig, SlackConfig, WebhookConfig) Duration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function. Supported units: y, w, d, h, m, s, ms Examples: 30s, 1m, 1h20m15s, 15d\nEmbeddedObjectMetadata (Appears on:AlertmanagerSpec, CommonPrometheusFields, EmbeddedPersistentVolumeClaim, ThanosRulerSpec) EmbeddedObjectMetadata contains a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta Only fields which are relevant to embedded resources are included.\nField Description name string (Optional) name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\nlabels map[string]string (Optional) labels define the map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\nannotations map[string]string (Optional) annotations defines an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\nEmbeddedPersistentVolumeClaim (Appears on:StorageSpec) EmbeddedPersistentVolumeClaim is an embedded version of k8s.io/api/core/v1.PersistentVolumeClaim. It contains TypeMeta and a reduced ObjectMeta.\nField Description metadata EmbeddedObjectMetadata (Optional) metadata defines EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\nspec Kubernetes core/v1.PersistentVolumeClaimSpec (Optional) spec defines the specification of the characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\naccessModes []Kubernetes core/v1.PersistentVolumeAccessMode (Optional) accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\nselector Kubernetes meta/v1.LabelSelector (Optional) selector is a label query over volumes to consider for binding.\nresources Kubernetes core/v1.VolumeResourceRequirements (Optional) resources represents the minimum resources the volume should have. Users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\nvolumeName string (Optional) volumeName is the binding reference to the PersistentVolume backing this claim.\nstorageClassName string (Optional) storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\nvolumeMode Kubernetes core/v1.PersistentVolumeMode (Optional) volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\ndataSource Kubernetes core/v1.TypedLocalObjectReference (Optional) dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external
493controller can support the specified data source, it will create a new volume based on the contents of the specified data source. dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\ndataSourceRef Kubernetes core/v1.TypedObjectReference (Optional) dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn\u0026rsquo;t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn\u0026rsquo;t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\nvolumeAttributesClassName string (Optional) volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string or nil value indicates that no VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state, this field can be reset to its previous value (including nil) to cancel the modification. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\nstatus Kubernetes core/v1.PersistentVolumeClaimStatus (Optional) status is deprecated: this field is never set.\nEnableFeature (string alias) (Appears on:CommonPrometheusFields, ThanosRulerSpec) Endpoint (Appears on:ServiceMonitorSpec) Endpoint defines an endpoint serving Prometheus metrics to be scraped by Prometheus.\nField Description port string (Optional) port defines the name of the Service port which this endpoint refers to (e.g. .spec.ports[].name).\nIt takes precedence over targetPort.\ntargetPort k8s.io/apimachinery/pkg/util/intstr.IntOrString (Optional) targetPort defines the name or number of a container port on Pods selected by the Service. If a name, it matches against .spec.containers[].ports[].name of the Pods. If a number, it matches against .spec.containers[].ports[].containerPort of the Pods.\npath string (Optional) path defines the HTTP path from which to scrape for metrics.\nIf empty, Prometheus uses the default value (e.g. /metrics).\nscheme Scheme (Optional) scheme defines the HTTP scheme to use when scraping the metrics.\nparams map[string][]string (Optional) params define optional HTTP URL parameters.\ninterval Duration (Optional) interval at which Prometheus scrapes the metrics from the target.\nIf empty, Prometheus uses the global scrape interval.\nscrapeTimeout Duration (Optional) scrapeTimeout defines the timeout after which Prometheus considers the scrape to be failed.\nIf empty, Prometheus uses the global scrape timeout unless it is less than the target\u0026rsquo;s scrape interval value in which the latter is used. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nhonorLabels bool (Optional) honorLabels defines when true the metric\u0026rsquo;s labels when they collide with the target\u0026rsquo;s labels.\nhonorTimestamps bool (Optional) honorTimestamps defines whether Prometheus preserves the timestamps when exp
493osed by the target.\ntrackTimestampsStaleness bool (Optional) trackTimestampsStaleness defines whether Prometheus tracks staleness of the metrics that have an explicit timestamp present in scraped data. Has no effect if honorTimestamps is false.\nIt requires Prometheus \u0026gt;= v2.48.0.\nmetricRelabelings []RelabelConfig (Optional) metricRelabelings defines the relabeling rules to apply to the samples before ingestion.\nrelabelings []RelabelConfig (Optional) relabelings defines the relabeling rules to apply the target\u0026rsquo;s metadata labels.\nThe Operator automatically adds relabelings for a few standard Kubernetes fields.\nThe original scrape job\u0026rsquo;s name is available via the __tmp_prometheus_job_name label.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\nfilterRunning bool (Optional) filterRunning when true, the pods which are not running (e.g. either in Failed or Succeeded state) are dropped during the target discovery.\nIf unset, the filtering is enabled.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\nbearerTokenFile string (Optional) bearerTokenFile defines the file to read bearer token for scraping the target.\nDeprecated: use authorization instead.\nauthorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\ntlsConfig TLSConfig (Optional) tlsConfig defines TLS configuration used by the client.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nExemplars (Appears on:PrometheusSpec) Field Description maxSize int64 (Optional) maxSize defines the maximum number of exemplars stored in memory for all series.\nexemplar-storage itself must be enabled using the spec.enableFeature option for exemplars to be scraped in the first place.\nIf not set, Prometheus uses its default value. A value of zero or less than zero disables the storage.\nGRPCServerTLSConfig (Appears on:ThanosRulerSpec, ThanosSpec) GRPCServerTLSConfig defines TLS configuration for a gRPC server.\nField Description ca SecretOrConfigMap (Optional) ca defines the Certificate authority used when verifying server certificates.\ncert SecretOrConfigMap (Optional) cert defines the Client certificate to present when doing client-authentication.\nkeySecret Kubernetes core/v1.SecretKeySelector (Optional) keySecret defines the Secret
493containing the client key file for the targets.\nserverName string (Optional) serverName is used to verify the hostname for the targets.\ninsecureSkipVerify bool (Optional) insecureSkipVerify defines how to disable target certificate validation.\nminVersion TLSVersion (Optional) minVersion defines the minimum acceptable TLS version.\nIt requires Prometheus \u0026gt;= v2.35.0 or Thanos \u0026gt;= v0.28.0.\nmaxVersion TLSVersion (Optional) maxVersion defines the maximum acceptable TLS version.\nIt requires Prometheus \u0026gt;= v2.41.0 or Thanos \u0026gt;= v0.31.0.\ncaFile string (Optional) caFile defines the path to the CA cert in the Prometheus container to use for the targets.\ncertFile string (Optional) certFile defines the path to the client cert file in the Prometheus container for the targets.\nkeyFile string (Optional) keyFile defines the path to the client key file in the Prometheus container for the targets.\ncipherSuites []string (Optional) cipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.\nIf not defined, the Go default cipher suites are used. Available cipher suites are documented in the Go documentation: https://golang.org/pkg/crypto/tls/#pkg-constants\nIt requires Thanos \u0026gt;= v0.42.0. Note that the operator doesn\u0026rsquo;t verify if the Thanos version supports the provided values.\ncurves []string (Optional) curves defines the list of preferred elliptic curves for TLS handshakes.\nIf not defined, the Go default curves are used. Available curves are documented in the Go documentation: https://golang.org/pkg/crypto/tls/#CurveID\nIt requires Thanos \u0026gt;= v0.42.0. Note that the operator doesn\u0026rsquo;t verify if the Thanos version supports the provided values.\nGlobalJiraConfig (Appears on:AlertmanagerGlobalConfig) GlobalJiraConfig configures global Jira parameters.\nField Description apiURL URL (Optional) apiURL defines the default Jira API URL.\nIt requires Alertmanager \u0026gt;= v0.28.0.\nGlobalMattermostConfig (Appears on:AlertmanagerGlobalConfig) GlobalMattermostConfig configures global Mattermost parameters.\nField Description webhookURL Kubernetes core/v1.SecretKeySelector (Optional) webhookURL defines the default Mattermost Webhook URL.\nIt requires Alertmanager \u0026gt;= v0.32.0.\nGlobalRocketChatConfig (Appears on:AlertmanagerGlobalConfig) GlobalRocketChatConfig configures global Rocket Chat parameters.\nField Description apiURL URL (Optional) apiURL defines the default Rocket Chat API URL.\nIt requires Alertmanager \u0026gt;= v0.28.0.\ntoken Kubernetes core/v1.SecretKeySelector (Optional) token defines the default Rocket Chat token.\nIt requires Alertmanager \u0026gt;= v0.28.0.\ntokenID Kubernetes core/v1.SecretKeySelector (Optional) tokenID defines the default Rocket Chat Token ID.\nIt requires Alertmanager \u0026gt;= v0.28.0.\nGlobalSMTPConfig (Appears on:AlertmanagerGlobalConfig) GlobalSMTPConfig configures global SMTP parameters. See https://prometheus.io/docs/alerting/latest/configuration/#configuration-file\nField Description from string (Optional) from defines the default SMTP From header field.\nsmartHost HostPort (Optional) smartHost defines the default SMTP smarthost used for sending emails.\nhello string (Optional) hello defines the default hostname to identify to the SMTP server.\nauthUsername string (Optional) authUsername represents SMTP Auth using CRAM-MD5, LOGIN and PLAIN. If empty, Alertmanager doesn\u0026rsquo;t authenticate to the SMTP server.\nauthPassword Kubernetes core/v1.SecretKeySelector (Optional) authPassword represents SMTP Auth using LOGIN and PLAIN.\nauthIdentity string (Optional) authIdentity represents SMTP Auth using PLAIN\nauthSecret Kubernetes core/v1.SecretKeySelector (Optional) authSecret represents SMTP Auth using CRAM-MD5.\nrequireTLS bool (Optional) requireTLS defines the default SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the default TLS configuration for SMTP receivers\nforceImplicitTLS bool (Optional) forceImplicitTLS defines whether to force use of implicit TLS (direct TLS connection) for better security. true: force use of implicit TLS (direct TLS connection on any port) false: force disable implicit TLS (use explicit TLS/STARTTLS if required) nil (default): auto-detect based on port (465=implicit, other=explicit) for backward compatibility It requires Alertmanager \u0026gt;= v0.31.0.\nGlobalTelegramConfig (Appears on:AlertmanagerGlobalConfig) GlobalTelegramConfig configures global Telegram parameters.\nField Description apiURL URL (Optional) apiURL defines he default Telegram API URL.\nIt requires Alertmanager \u0026gt;= v0.24.0.\nGlobalVictorOpsConfig (Appears on:AlertmanagerGlobalConfig) GlobalVictorOpsConfig configures global VictorOps parameters.\nField Description apiURL URL (Optional) apiURL defines the default VictorOps API URL.\napiKey Kubernetes core/v1.SecretKeySelector (Optional) apiKey defines the default VictorOps API Key.\nGlobalWeChatConfig (Appears on:AlertmanagerGlobalConfig) Field Description apiURL URL (Optional) apiURL defines he default WeChat API URL. The default value is \u0026ldquo;https://qyapi.weixin.qq.com/cgi-bin/\u0026rdquo;\napiSecret Kubernetes core/v1.SecretKeySelector (Optional) apiSecret defines the default WeChat API Secret.\napiCorpID string (Optional) apiCorpID defines the default WeChat API Corporate ID.\nGlobalWebexConfig (Appears on:AlertmanagerGlobalConfig) GlobalWebexConfig configures global Webex parameters. See https://prometheus.io/docs/alerting/latest/configuration/#configuration-file\nField Description apiURL URL (Optional) apiURL defines the is the default Webex API URL.\nIt requires Alertmanager \u0026gt;= v0.25.0.\nGoDuration (string alias) (Appears on:AlertmanagerSpec) GoDuration is a valid time duration that can be parsed by Go\u0026rsquo;s time.ParseDuration() function. Supported units: h, m, s, ms Examples: 45ms, 30s, 1m, 1h20m15s\nHTTPConfig (Appears on:HTTPConfigWithProxy, ProbeSpec) HTTPConfig defines the HTTP configuration + TLS configuration (only from secret/configmap references).\nField Description authorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration used by the client.\nHTTPConfigWithProxy (Appears on:AlertmanagerGlobalConfig, PodMetricsEndpoint) HTTPConfigWithProxy defines the configuration for the HTTP client with proxy configuration. It is used for PodMonitor endpoints and Probes.\nField Description authorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration used by the client.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nHTTPConfigWithProxyAndTLSFiles (Appears on:Endpoint) HTTPConfigWithProxyAndTLSFiles defines the configuration for the HTTP client with proxy configuration and TLS configuration. It is used for ServiceMonitor endpoints.\nField Description authorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\ntlsConfig TLSConfig (Optional) tlsConfig defines TLS configuration used by the client.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nHTTPConfigWithTLSFiles (Appears on:HTTPConfigWithProxyAndTLSFiles) HTTPConfigWithTLSFiles defines HTTP configuration + TLS configuration (from secret/configmap references as well as files).\nField Description authorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\ntlsConfig TLSConfig (Optional) tlsConfig defines TLS configuration used by the client.\nHTTPConfigWithoutTLS (Appears on:HTTPConfig, HTTPConfigWithTLSFiles) HTTPConfigWithoutTLS defines the configuration for the HTTP client.\nField Description authorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\nHostAlias (Appears on:AlertmanagerSpec, CommonPrometheusFields, ThanosRulerSpec) HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod\u0026rsquo;s hosts file.\nField Description ip string ip defines the IP address of the host file entry.\nhostnames []string hostnames defines hostnames for the above IP address.\nHostPort (Appears on:GlobalSMTPConfig) HostPort represents a \u0026ldquo;host:port\u0026rdquo;
493 network address.\nField Description host string host defines the host\u0026rsquo;s address, it can be a DNS name or a literal IP address.\nport string port defines the host\u0026rsquo;s port, it can be a literal port number or a port name.\nLabelName (string alias) (Appears on:RelabelConfig) LabelName is a valid Prometheus label name. For Prometheus 3.x, a label name is valid if it contains UTF-8 characters. For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\nManagedIdentity (Appears on:AzureAD) ManagedIdentity defines the Azure User-assigned Managed identity.\nField Description clientId string (Optional) clientId defines the Azure User-assigned Managed identity.\nFor Prometheus \u0026gt;= 3.5.0 and Thanos \u0026gt;= 0.40.0, this field is allowed to be empty to support system-assigned managed identities.\nMetadataConfig (Appears on:RemoteWriteSpec) MetadataConfig configures the sending of series metadata to the remote storage.\nField Description send bool (Optional) send defines whether metric metadata is sent to the remote storage or not.\nThe setting is ignored when Remote Write message\u0026rsquo;s version 2.0 is used.\nsendInterval Duration (Optional) sendInterval defines how frequently metric metadata is sent to the remote storage.\nmaxSamplesPerSend int32 (Optional) maxSamplesPerSend defines the maximum number of metadata samples per send.\nIt requires Prometheus \u0026gt;= v2.29.0.\nNameEscapingSchemeOptions (string alias) (Appears on:CommonPrometheusFields, ScrapeConfigSpec) Specifies the character escaping scheme that will be applied when scraping for metric and label names that do not conform to the legacy Prometheus character set.\nSupported values are:\nAllowUTF8, full UTF-8 support, no escaping needed. Underscores, legacy-invalid characters are escaped to underscores. Dots, dot characters are escaped to _dot_, underscores to __, and all other legacy-invalid characters to underscores. Values, the string is prefixed by U__ and all invalid characters are escaped to their unicode value, surrounded by underscores. Value Description \u0026#34;AllowUTF8\u0026#34;\n\u0026#34;Dots\u0026#34;\n\u0026#34;Underscores\u0026#34;\n\u0026#34;Values\u0026#34;\nNameValidationSchemeOptions (string alias) (Appears on:CommonPrometheusFields, ScrapeConfigSpec) Specifies the validation scheme for metric and label names.\nSupported values are: - UTF8NameValidationScheme for UTF-8 support. - LegacyNameValidationScheme for letters, numbers, colons, and underscores.\nNote that LegacyNameValidationScheme cannot be used along with the OpenTelemetry NoUTF8EscapingWithSuffixes translation strategy (if enabled).\nValue Description \u0026#34;Legacy\u0026#34;\n\u0026#34;UTF8\u0026#34;\nNamespaceSelector (Appears on:PodMonitorSpec, ProbeTargetIngress, ServiceMonitorSpec) NamespaceSelector is a selector for selecting either all namespaces or a list of namespaces. If any is true, it takes precedence over matchNames. If matchNames is empty and any is false, it means that the objects are selected from the current namespace.\nField Description any bool (Optional) any defines the boolean describing whether all namespaces are selected in contrast to a list restricting them.\nmatchNames []string (Optional) matchNames defines the list of namespace names to select from.\nNativeHistogramConfig (Appears on:PodMonitorSpec, ProbeSpec, ServiceMonitorSpec, ScrapeConfigSpec) NativeHistogramConfig extends the native histogram configuration settings.\nField Description scrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nNonEmptyDuration (string alias) (Appears on:Rule, Route, Route) NonEmptyDuration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function. Compared to Duration, NonEmptyDuration enforces a minimum length of 1. Supported units: y, w, d, h, m, s, ms Examples: 30s, 1m, 1h20m15s, 15d\nOAuth2 (Appears on:HTTPConfigWithoutTLS, RemoteReadSpec, RemoteWriteSpec, AzureSDConfig, ConsulSDConfig, DigitalOceanSDConfig, DockerSDConfig, DockerSwarmSDConfig, EurekaSDConfig, HTTPConfig, HTTPSDConfig, HetznerSDConfig, IonosSDConfig, KubernetesSDConfig, KumaSDConfig, LightSailSDConfig, LinodeSDConfig, NomadSDConfig, PuppetDBSDConfig, ScrapeConfigSpec, HTTPConfig) OAuth2 configures OAuth2 settings.\nField Description clientId SecretOrConfigMap clientId defines a key of a Secret or
493ConfigMap containing the OAuth2 client\u0026rsquo;s ID.\nclientSecret Kubernetes core/v1.SecretKeySelector clientSecret defines a key of a Secret containing the OAuth2 client\u0026rsquo;s secret.\ntokenUrl URL tokenUrl defines the URL to fetch the token from.\nscopes []string scopes defines the OAuth2 scopes used for the token request.\nendpointParams map[string]string (Optional) endpointParams configures the HTTP parameters to append to the token URL.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server. It requires Prometheus \u0026gt;= v2.43.0.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nOTLPConfig (Appears on:CommonPrometheusFields) OTLPConfig is the configuration for writing to the OTLP endpoint.\nField Description promoteAllResourceAttributes bool (Optional) promoteAllResourceAttributes promotes all resource attributes to metric labels except the ones defined in ignoreResourceAttributes.\nCannot be true when promoteResourceAttributes is defined. It requires Prometheus \u0026gt;= v3.5.0.\nignoreResourceAttributes []string (Optional) ignoreResourceAttributes defines the list of OpenTelemetry resource attributes to ignore when promoteAllResourceAttributes is true.\nIt requires promoteAllResourceAttributes to be true. It requires Prometheus \u0026gt;= v3.5.0.\npromoteResourceAttributes []string (Optional) promoteResourceAttributes defines the list of OpenTelemetry Attributes that should be promoted to metric labels, defaults to none. Cannot be defined when promoteAllResourceAttributes is true.\ntranslationStrategy TranslationStrategyOption (Optional) translationStrategy defines how the OTLP receiver endpoint translates the incoming metrics.\nIt requires Prometheus \u0026gt;= v3.0.0.\nkeepIdentifyingResourceAttributes bool (Optional) keepIdentifyingResourceAttributes enables adding service.name, service.namespace and service.instance.id resource attributes to the target_info metric, on top of converting them into the instance and job labels.\nIt requires Prometheus \u0026gt;= v3.1.0.\nconvertHistogramsToNHCB bool (Optional) convertHistogramsToNHCB defines optional translation of OTLP explicit bucket histograms into native histograms with custom buckets. It requires Prometheus \u0026gt;= v3.4.0.\npromoteScopeMetadata bool (Optional) promoteScopeMetadata controls whether to promote OpenTelemetry scope metadata (i.e. name, version, schema URL, and attributes) to metric labels. As per the OpenTelemetry specification, the aforementioned scope metadata should be identifying, i.e. made into metric labels. It requires Prometheus \u0026gt;= v3.6.0.\nlabelNameUnderscoreSanitization bool (Optional) labelNameUnderscoreSanitization controls whether to enable prepending of \u0026lsquo;key\u0026rsquo; to labels starting with \u0026lsquo;\u0026rsquo;. Reserved labels starting with \u0026lsquo;__\u0026rsquo; are not modified. This is only relevant when translation_strategy uses underscore escaping (e.g., \u0026ldquo;UnderscoreEscapingWithSuffixes\u0026rdquo; or \u0026ldquo;UnderscoreEscapingWithoutSuffixes\u0026rdquo;).\nNotice: This one has no impact if nameEscapingScheme is AllowUTF8.\nIt requires Prometheus \u0026gt;= v3.8.0.\nlabelNamePreserveMultipleUnderscores bool (Optional) labelNamePreserveMultipleUnderscores enables preserving of multiple consecutive underscores in label names when translation_strategy uses underscore escaping. When true (default), multiple consecutive underscores are preserved during label name sanitization.\nNotice: This one has no impact if nameEscapingScheme is AllowUTF8.\nIt requires Prometheus \u0026gt;= v3.8.0.\nObjectReference (Appears on:CommonPrometheusFields, ThanosRulerSpec) ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\nField Description group string (Optional) group of the referent. When not specified, it defaults to monitoring.coreos.com\nresource string resource of the referent.\nnamespace string namespace of the referent. More info: https://kubernetes.io/docs/concepts/
493overview/working-with-objects/namespaces/\nname string (Optional) name of the referent. When not set, all resources in the namespace are matched.\nPodDNSConfig (Appears on:AlertmanagerSpec, CommonPrometheusFields, ThanosRulerSpec) PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.\nField Description nameservers []string (Optional) nameservers defines the list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy.\nsearches []string (Optional) searches defines the list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy.\noptions []PodDNSConfigOption (Optional) options defines the list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Resolution options given in Options will override those that appear in the base DNSPolicy.\nPodDNSConfigOption (Appears on:PodDNSConfig) PodDNSConfigOption defines DNS resolver options of a pod.\nField Description name string name is required and must be unique.\nvalue string (Optional) value is optional.\nPodManagementPolicyType (string alias) (Appears on:AlertmanagerSpec, CommonPrometheusFields, ThanosRulerSpec) Value Description \u0026#34;OrderedReady\u0026#34;\nOrderedReadyPodManagement will create pods in strictly increasing order on scale up and strictly decreasing order on scale down, progressing only when the previous pod is ready or terminated. At most one pod will be changed at any time.\n\u0026#34;Parallel\u0026#34;\nParallelPodManagement will create and delete pods as soon as the stateful set replica count is changed, and will not wait for pods to be ready or complete termination.\nPodMetricsEndpoint (Appears on:PodMonitorSpec) PodMetricsEndpoint defines an endpoint serving Prometheus metrics to be scraped by Prometheus.\nField Description port string (Optional) port defines the Pod port name which exposes the endpoint.\nIf the pod doesn\u0026rsquo;t expose a port with the same name, it will result in no targets being discovered.\nIf a Pod has multiple Ports with the same name (which is not recommended), one target instance per unique port number will be generated.\nIt takes precedence over the portNumber and targetPort fields.\nportNumber int32 (Optional) portNumber defines the Pod port number which exposes the endpoint.\nThe Pod must declare the specified Port in its spec or the target will be dropped by Prometheus.\nThis cannot be used to enable scraping of an undeclared port. To scrape targets on a port which isn\u0026rsquo;t exposed, you need to use relabeling to override the __address__ label (but beware of duplicate targets if the Pod has other declared ports).\nIn practice Prometheus will select targets for which the matches the target\u0026rsquo;s __meta_kubernetes_pod_container_port_number.\ntargetPort k8s.io/apimachinery/pkg/util/intstr.IntOrString (Optional) targetPort defines the name or number of the target port of the Pod object behind the Service, the port must be specified with container port property.\nDeprecated: use \u0026lsquo;port\u0026rsquo; or \u0026lsquo;portNumber\u0026rsquo; instead.\npath string (Optional) path defines the HTTP path from which to scrape for metrics.\nIf empty, Prometheus uses the default value (e.g. /metrics).\nscheme Scheme (Optional) scheme defines the HTTP scheme to use for scraping.\nparams map[string][]string (Optional) params define optional HTTP URL parameters.\ninterval Duration (Optional) interval at which Prometheus scrapes the metrics from the target.\nIf empty, Prometheus uses the global scrape interval.\nscrapeTimeout Duration (Optional) scrapeTimeout defines the timeout after which Prometheus considers the scrape to be failed.\nIf empty, Prometheus uses the global scrape timeout unless it is less than the target\u0026rsquo;s scrape interval value in which the latter is used. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nhonorLabels bool (Optional) honorLabels when true preserves the metric\u0026rsquo;s labels when they collide with the target\u0026rsquo;s labels.\nhonorTimestamps bool (Optional) honorTimestamps defines whether Prometheus preserves the timestamps when exp
493osed by the target.\ntrackTimestampsStaleness bool (Optional) trackTimestampsStaleness defines whether Prometheus tracks staleness of the metrics that have an explicit timestamp present in scraped data. Has no effect if honorTimestamps is false.\nIt requires Prometheus \u0026gt;= v2.48.0.\nmetricRelabelings []RelabelConfig (Optional) metricRelabelings defines the relabeling rules to apply to the samples before ingestion.\nrelabelings []RelabelConfig (Optional) relabelings defines the relabeling rules to apply the target\u0026rsquo;s metadata labels.\nThe Operator automatically adds relabelings for a few standard Kubernetes fields.\nThe original scrape job\u0026rsquo;s name is available via the __tmp_prometheus_job_name label.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\nfilterRunning bool (Optional) filterRunning when true, the pods which are not running (e.g. either in Failed or Succeeded state) are dropped during the target discovery.\nIf unset, the filtering is enabled.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\nauthorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration used by the client.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nPodMonitorSpec (Appears on:PodMonitor) PodMonitorSpec contains specification parameters for a PodMonitor.\nField Description jobLabel string (Optional) jobLabel defines the label to use to retrieve the job name from. jobLabel selects the label from the associated Kubernetes Pod object which will be used as the job label for all metrics.\nFor example if jobLabel is set to foo and the Kubernetes Pod object is labeled with foo: bar, then Prometheus adds the job=\u0026quot;bar\u0026quot; label to all ingested metrics.\nIf the value of this field is empty, the job label of the metrics defaults to the namespace and name of the PodMonitor object (e.g. \u0026lt;namespace\u0026gt;/\u0026lt;name\u0026gt;).\npodTargetLabels []string (Optional) podTargetLabels defines the labels which are transferred from the associated Kubernetes Pod object onto the ingested metrics.\npodMetricsEndpoints []PodMetricsEndpoint (Optional) podMetricsEndpoints defines how to scrape metrics from the selected pods.\nselector Kubernetes meta/v1.LabelSelector selector defines the label selector to select the Kubernetes Pod objects to scrape metrics from.\nselectorMechanism SelectorMechanism (Optional) selectorMechanism defines the mechanism used to select the endpoints to scrape. By default, the selection process relies on relabel configurations to filter the discovered targets. Alternatively, you can opt in for role selectors, which may offer better efficiency in large cluster
493s. Which strategy is best for your use case needs to be carefully evaluated.\nIt requires Prometheus \u0026gt;= v2.17.0.\nnamespaceSelector NamespaceSelector (Optional) namespaceSelector defines in which namespace(s) Prometheus should discover the pods. 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.\nsampleLimit int64 (Optional) sampleLimit defines a per-scrape limit on the number of scraped samples that will be accepted.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt requires Prometheus \u0026gt;= v3.0.0.\nlabelLimit int64 (Optional) labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nattachMetadata AttachMetadata (Optional) attachMetadata defines additional metadata which is added to the discovered targets.\nIt requires Prometheus \u0026gt;= v2.35.0.\nscrapeClass string (Optional) scrapeClass defines the scrape class to apply.\nbodySizeLimit ByteSize (Optional) bodySizeLimit when defined specifies a job level limit on the size of uncompressed response body that will be accepted by Prometheus.\nIt requires Prometheus \u0026gt;= v2.28.0.\nProbeParam (Appears on:ProbeSpec) ProbeParam defines specification of extra parameters for a Probe.\nField Description name string name defines the parameter name\nvalues []string (Optional) values defines the parameter values\nProbeSpec (Appears on:Probe) ProbeSpec contains specification parameters for a Probe.\nField Description jobName string (Optional) jobName assigned to scraped metrics by default.\nprober ProberSpec (Optional) prober defines the specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty.\nmodule string (Optional) module to use for probing specifying how to probe the target. Example module configuring in the blackbox exporter: https://github.com/prometheus/blackbox_exporter/blob/master/example.yml\ntargets ProbeTargets (Optional) targets defines a set of static or dynamically discovered targets to probe.\ninterval Duration (Optional) interval at which targets are probed using the configured prober. If not specified Prometheus\u0026rsquo; global scrape interval is used.\nscrapeTimeout Duration (Optional) scrapeTimeout defines the timeout for scraping metrics from the Prometheus exporter. If not specified, the Prometheus global scrape timeout is used. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nmetricRelabelings []RelabelConfig (Optional) metricRelabelings defines the RelabelConfig to apply to samples before ingestion.\nauthorization SafeAuthorization (Optional) authorization section for this endpoint\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt requires Prometheus \u0026gt;= v3.0.0.\nlabelLimit int64 (Optional) labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nscrapeClass string (Optional) scrapeClass defines the scrape class to apply.\nparams []ProbeParam (Optional) params defines the list of HTTP query parameters for the scrape. Please note that the .spec.module field takes precedence over the module parameter from this list when both are defined. The module name must be added using Module under ProbeSpec.\nauthorization SafeAuthorization (Optional) authorization configures the Authorization header credentials used by the client.\nCannot be set at the same time as basicAuth, bearerTokenSecret or oauth2.\nbasicAuth BasicAuth (Optional) basicAuth defines the Basic Authentication credentials used by the client.\nCannot be set at the same time as authorization, bearerTokenSecret or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 settings used by the client.\nIt requires Prometheus \u0026gt;= 2.27.0.\nCannot be set at the same time as authorization, basicAuth or bearerTokenSecret.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines a key of a Secret containing the bearer token used by the client for authentication. The secret needs to be in the same namespace as the custom resource and readable by the Prometheus Operator.\nCannot be set at the same time as authorization, basicAuth or oauth2.\nDeprecated: use authorization instead.\nfollowRedirects bool (Optional) followRedirects defines whether the client should follow HTTP 3xx redirects.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration used by the client.\nProbeTargetIngress (Appears on:ProbeTargets) ProbeTargetIngress defines the set of Ingress objects considered for probing. The operator configures a target for each host/path combination of each ingress object.\nField Description selector Kubernetes meta/v1.LabelSelector (Optional) selector to select the Ingress objects.\nnamespaceSelector NamespaceSelector (Optional) namespaceSelector defines from which namespaces to select Ingress objects.\nrelabelingConfigs []RelabelConfig (Optional) relabelingConfigs to apply to the label set of the target before it gets scraped. The original ingress address is available via the __tmp_prometheus_ingress_address label. It can be used to customize the probed URL. The original scrape job\u0026rsquo;s name is available via the __tmp_prometheus_job_name label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\nProbeTargetStaticConfig (Appears on:ProbeTargets) ProbeTargetStaticConfig defines the set of static targets considered for probing.\nField Description static []string (Optional) static defines the list of hosts to probe.\nlabels map[string]string (Optional) labels defines all labels assigned to all metrics scraped from the targets.\nrelabelingConfigs []RelabelConfig (Optional) relabelingConfigs defines relabelings to be apply to the label set of the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\nProbeTargets (Appears on:ProbeSpec) ProbeTargets defines how to discover the probed targets. One of the staticConfig or ingress must be defined. If both are defined, staticConfig takes precedence.\nField Description staticConfig ProbeTargetStaticConfig (Optional) staticConfig defines the static list of targets to probe and the relabeling configuration. If ingress is also defined, staticConfig takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.\ningress ProbeTargetIngress (Optional) ingress defines the Ingress objects to probe and the relabeling configuration. If staticConfig is also defined, staticConfig takes precedence.\nProberSpec (Appears on:ProbeSpec) ProberSpec contains specification parameters for the Prober used for probing.\nField Description url string url defines the address of the prober.\nUnlike what the name indicates, the value should be in the form of address:port without any scheme which should be specified in the scheme field.\nscheme Scheme (Optional) scheme defines the HTTP scheme to use when scraping the prober.\npath string (Optional) path to collect metrics from. Defaults to /probe.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nPrometheusRuleExcludeConfig (Appears on:PrometheusSpec, ThanosRulerSpec) PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics.\nField Description ruleNamespace string ruleNamespace defines the namespace of the excluded PrometheusRule object.\nruleName string ruleName defines the name of the excluded PrometheusRule object.\nPrometheusRuleSpec (Appears on:PrometheusRule) PrometheusRuleSpec contains specification parameters for a Rule.\nField Description groups []RuleGroup (Optional) groups defines the content of Prometheus rule file\nPrometheusSpec (Appears on:Prometheus) PrometheusSpec is a specification of the desired behavior of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nField Description podMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the Prometheus pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version. * \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\nserviceMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nserviceMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\npodMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\npodMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\nprobeSelector Kubernetes meta/v1.LabelSelector (Optional) probeSelector defines the probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nprobeNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) probeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nscrapeConfigSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nNote that the ScrapeConfig custom resource definition is currently at Alp
493ha level and will be graduated to Beta in a future release.\nscrapeConfigNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nNote that the ScrapeConfig custom resource definition is currently at Alpha level and will be graduated to Beta in a future release.\nversion string (Optional) version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files.\nIf not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\npaused bool (Optional) paused defines when a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\nimage string (Optional) image defines the container image name for Prometheus. If specified, it takes precedence over the spec.baseImage, spec.tag and spec.sha fields.\nSpecifying spec.version is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured.\nIf neither spec.image nor spec.baseImage are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets defines an optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\nreplicas int32 (Optional) replicas defines the number of replicas of each shard to deploy for a Prometheus deployment. spec.replicas multiplied by spec.shards is the total number of Pods created.\nDefault: 1\nshards int32 (Optional) shards defines the number of shards to distribute the scraped targets onto.\nspec.replicas multiplied by spec.shards is the total number of Pods being created.\nWhen not defined, the operator assumes only one shard.\nNote that scaling down shards will not reshard data onto the remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use either * Thanos sidecar + querier for query federation and Thanos Ruler for rules. * Remote-write to send metrics to a central location.\nBy default, the sharding of targets is performed on: * The __address__ target\u0026rsquo;s metadata label for PodMonitor, ServiceMonitor and ScrapeConfig resources. * The __param_target__ label for Probe resources.\nUsers can define their own sharding implementation by setting the __tmp_hash label during the target discovery with relabeling configuration (either in the monitoring resources or via scrape class).\nYou can also disable sharding on a specific target by setting the __tmp_disable_sharding label with relabeling configuration. When the label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\nDefault: 1\nshardingStrategy ShardingStrategy (Optional) shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\nWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes targets based on a hash of the target address.\nreplicaExternalLabelName string (Optional) replicaExternalLabelName defines the name of Prometheus external label used to denote the replica name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\nprometheusExternalLabelName string (Optional) prometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus\u0026rdquo;\nlogLevel string (Optional) logLevel for Prometheus and the config-reloader sidecar.\nlogFormat str
493ing (Optional) logFormat for Log level for Prometheus and the config-reloader sidecar.\nscrapeInterval Duration (Optional) scrapeInterval defines interval between consecutive scrapes.\nDefault: \u0026ldquo;30s\u0026rdquo;\nscrapeTimeout Duration (Optional) scrapeTimeout defines the number of seconds to wait until a scrape request times out. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nPrometheusText1.0.0 requires Prometheus \u0026gt;= v3.0.0.\nexternalLabels map[string]string (Optional) externalLabels defines the labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by spec.replicaExternalLabelName and spec.prometheusExternalLabelName take precedence over this list.\nenableRemoteWriteReceiver bool (Optional) enableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote write protocol.\nWARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\nIt requires Prometheus \u0026gt;= v2.33.0.\nenableOTLPReceiver bool (Optional) enableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\nNote that the OTLP receiver endpoint is automatically enabled if .spec.otlpConfig is defined.\nIt requires Prometheus \u0026gt;= v2.47.0.\nremoteWriteReceiverMessageVersions []RemoteWriteMessageVersion (Optional) remoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the remote writes.\nIt requires Prometheus \u0026gt;= v2.54.0.\nenableFeatures []EnableFeature (Optional) enableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nFor more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\nexternalUrl string (Optional) externalUrl defines the external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\nroutePrefix string (Optional) routePrefix defines the route prefix Prometheus registers HTTP handlers for.\nThis is useful when using spec.externalURL, and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with kubectl proxy.\nstorage StorageSpec (Optional) storage defines the storage used by Prometheus.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes allows the configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts allows the configuration of additional VolumeMounts.\nVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo; container, that are generated as a result of StorageSpec objects.\npersistentVolumeClaimRetentionPolicy Kubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy (Optional) persistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet. The default behavior is all PVCs are retained. This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26. It requires enabling the StatefulSetAutoDeletePVC feature gate.\nweb PrometheusWebSpec (Optional) web defines the configuration of the Prometheus web server.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo;
493 container.\nnodeSelector map[string]string (Optional) nodeSelector defines on which Nodes the Pods are scheduled.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nserviceAccountName string (Optional) serviceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\nautomountServiceAccountToken bool (Optional) automountServiceAccountToken defines whether a service account token should be automatically mounted in the pod. If the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\nWarning: be aware that by default, Prometheus requires the service account token for Kubernetes service discovery. It is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\nsecrets []string (Optional) secrets defines a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named secret-\u0026lt;secret-name\u0026gt;. The Secrets are mounted into /etc/prometheus/secrets/ in the \u0026lsquo;prometheus\u0026rsquo; container.\nconfigMaps []string (Optional) configMaps defines a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named configmap-\u0026lt;configmap-name\u0026gt;. The ConfigMaps are mounted into /etc/prometheus/configmaps/ in the \u0026lsquo;prometheus\u0026rsquo; container.\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines the Pods\u0026rsquo; tolerations if specified.\ntopologySpreadConstraints []TopologySpreadConstraint (Optional) topologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\nremoteWrite []RemoteWriteSpec (Optional) remoteWrite defines the list of remote write configurations.\notlp OTLPConfig (Optional) otlp defines the settings related to the OTLP receiver feature. It requires Prometheus \u0026gt;= v2.55.0.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines the DNS configuration for the pods.\nlistenLocal bool (Optional) listenLocal when true, the Prometheus server listens on the loopback address instead of the Pod IP\u0026rsquo;s address.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * prometheus * config-reloader * thanos-sidecar\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting init
493Containers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch.\nThe names of init container name managed by the operator are: * init-config-reloader.\nOverriding init containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\nadditionalScrapeConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.\napiserverConfig APIServerConfig (Optional) apiserverConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod\u0026rsquo;s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\npriorityClassName string (Optional) priorityClassName assigned to the Pods.\nportName string (Optional) portName used for the pods and governing service. Default: \u0026ldquo;web\u0026rdquo;\narbitraryFSAccessThroughSMs ArbitraryFSAccessThroughSMsConfig (Optional) arbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo; container. When a ServiceMonitor\u0026rsquo;s endpoint specifies a bearerTokenFile value (e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a malicious target can get access to the Prometheus service account\u0026rsquo;s token in the Prometheus\u0026rsquo; scrape request. Setting spec.arbitraryFSAccessThroughSM to \u0026lsquo;true\u0026rsquo; would prevent the attack. Users should instead provide the credentials using the spec.bearerTokenSecret field.\noverrideHonorLabels bool (Optional) overrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data to âexported_â for all targets created from ServiceMonitor, PodMonitor and ScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies. In practice,OverrideHonorLabels:true enforces honorLabels:false for all ServiceMonitor, PodMonitor and ScrapeConfig objects.\noverrideHonorTimestamps bool (Optional) overrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\nignoreNamespaceSelectors bool (Optional) ignoreNamespaceSelectors when true, spec.namespaceSelector from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object.\nenforcedNamespaceLabel string (Optional) enforcedNamespaceLabel when not empty, a label will be added to:\nAll metrics scraped from ServiceMonitor, PodMonitor, Probe and ScrapeConfig objects. All metrics generated from recording rules defined in PrometheusRule objects. All alerts generated from alerting rules defined in PrometheusRule objects. All vector selectors of PromQL expressions defined in PrometheusRule objects. The label will not added for objects referenced in spec.excludedFromEnforcement.\nThe label\u0026rsquo;s name is this field\u0026rsquo;s value. The label\u0026rsquo;s value is the namespace of the ServiceMonitor, PodMonitor, Probe, PrometheusRule or ScrapeConfig object.\nenforcedSampleLimit int64 (Optional) enforcedSampleLimit when defined specifies a global limit on the number of scraped samples that will be accepted. This overrides any spec.sampleLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.sampleLimit is greater than zero and less than spec.enforcedSampleLimit.\nIt is meant to be used by admins to keep the overall number of samples/series under a desired limit.\nWhen both enforcedSampleLimit and sampleLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined sampleLimit value will inherit the global sampleLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedSampleLimit is greater than the sampleLimit, the sampleLimit will be set to enforcedSampleLimit. * Scrape objects with a sampleLimit value less than or equal to enforcedSampleLimit keep their specific value. * Scrape objects with a sampleLimit value greater than enforcedSampleLimit are set to enforcedSampleLimit.\nenforcedTargetLimit int64 (Optional) enforcedTargetLimit when defined specifies a global limit on the number of scraped targets. The value overrides any spec.targetLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.targetLimit is greater than zero and less than spec.enforcedTargetLimit.\nIt is meant to be used by admins to to keep the overall number of targets under a desired limit.\nWhen both enforcedTargetLimit and targetLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined targetLimit value will inherit the global targetLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedTargetLimit is greater than the targetLimit, the targetLimit will be set to enforcedTargetLimit. * Scrape objects with a targetLimit value less than or equal to enforcedTargetLimit keep their specific value. * Scrape objects with a targetLimit value greater than enforcedTargetLimit are set to enforcedTargetLimit.\nenforcedLabelLimit int64 (Optional) enforcedLabelLimit when defined specifies a global limit on the number of labels per sample. The value overrides any spec.labelLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelLimit is greater than zero and less than spec.enforcedLabelLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelLimit and labelLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelLimit value will inherit the global labelLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelLimit is greater than the labelLimit, the labelLimit will be set to enforcedLabelLimit. * Scrape objects with a labelLimit value less than or equal to enforcedLabelLimit keep their specific value. * Scrape objects with a labelLimit value greater than enforcedLabelLimit are set to enforcedLabelLimit.\nenforcedLabelNameLengthLimit int64 (Optional) enforcedLabelNameLengthLimit when defined specifies a global limit on the length of labels name per sample. The value overrides any spec.labelNameLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelNameLengthLimit is greater than zero and less than spec.enforcedLabelNameLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelNameLengthLimit and labelNameLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelNameLengthLimit value will inherit the global labelNameLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelNameLengthLimit is greater than the labelNameLengthLimit, the labelNameLengthLimit will be set to enforcedLabelNameLengthLimit. * Scrape objects with a labelNameLengthLimit value less than or equal to enforcedLabelNameLengthLimit keep their specific value. * Scrape objects with a labelNameLengthLimit value greater than enforcedLabelNameLengthLimit are set to enforcedLabelNameLengthLimit.\nenforcedLabelValueLengthLimit int64 (Optional) enforcedLabelValueLengthLimit when not null defines a global limit on the length of labels value per sample. The value overrides any spec.labelValueLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelValueLengthLimit is greater than zero and less than spec.enforcedLabelValueLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelValueLengthLimit and labelValueLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelValueLengthLimit value will inherit the global labelValueLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelValueLengthLimit is greater than the labelValueLengthLimit, the labelValueLengthLimit will be set to enforcedLabelValueLengthLimit. * Scrape objects with a labelValueLengthLimit value less than or equal to enforcedLabelValueLengthLimit keep their specific value. * Scrape objects with a labelValueLengthLimit value greater than enforcedLabelValueLengthLimit are set to enforcedLabelValueLengthLimit.\nenforcedKeepDroppedTargets int64 (Optional) enforcedKeepDroppedTargets when defined specifies a global limit on the number of targets dropped by relabeling that will be kept in memory. The value overrides any spec.keepDroppedTargets set by ServiceMonitor, PodMonitor, Probe objects unless spec.keepDroppedTargets is greater than zero and less than spec.enforcedKeepDroppedTargets.\nIt requires Prometheus \u0026gt;= v2.47.0.\nWhen both enforcedKeepDroppedTargets and keepDroppedTargets are defined and greater than zero, the following rules apply: * Scrape objects without a defined keepDroppedTargets value will inherit the global keepDroppedTargets value (Prometheus \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedKeepDroppedTargets is greater than the keepDroppedTargets, the keepDroppedTargets will be set to enforcedKeepDroppedTargets. * Scrape objects with a keepDroppedTargets value less than or equal to enforcedKeepDroppedTargets keep their specific value. * Scrape objects with a keepDroppedTargets value greater than enforcedKeepDroppedTargets are set to enforcedKeepDroppedTargets.\nenforcedBodySizeLimit ByteSize (Optional) enforcedBodySizeLimit when defined specifies a global limit on the size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail.\nIt requires Prometheus \u0026gt;
493= v2.28.0.\nWhen both enforcedBodySizeLimit and bodySizeLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined bodySizeLimit value will inherit the global bodySizeLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedBodySizeLimit is greater than the bodySizeLimit, the bodySizeLimit will be set to enforcedBodySizeLimit. * Scrape objects with a bodySizeLimit value less than or equal to enforcedBodySizeLimit keep their specific value. * Scrape objects with a bodySizeLimit value greater than enforcedBodySizeLimit are set to enforcedBodySizeLimit.\nnameValidationScheme NameValidationSchemeOptions (Optional) nameValidationScheme defines the validation scheme for metric and label names.\nIt requires Prometheus \u0026gt;= v2.55.0.\nnameEscapingScheme NameEscapingSchemeOptions (Optional) nameEscapingScheme defines the character escaping scheme that will be requested when scraping for metric and label names that do not conform to the legacy Prometheus character set.\nIt requires Prometheus \u0026gt;= v3.4.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.4.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nIt requires Prometheus \u0026gt;= v3.5.0.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nhostAliases []HostAlias (Optional) hostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s hosts file if specified.\nadditionalArgs []Argument (Optional) additionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\nIt is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version.\nIn case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\nwalCompression bool (Optional) walCompression defines the compression of the write-ahead log (WAL) using Snappy.\nWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\nRequires Prometheus v2.11.0 and above.\nexcludedFromEnforcement []ObjectReference (Optional) excludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin.\nIt is only applicable if spec.enforcedNamespaceLabel set to true.\nhostNetwork bool (Optional) hostNetwork defines the host\u0026rsquo;s network namespace if true.\nMake sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/ ).\nWhen hostNetwork is enabled, this will set the DNS policy to ClusterFirstWithHostNet automatically (unless .spec.DNSPolicy is set to a different value).\npodTargetLabels []string (Optional) podTargetLabels are appended to the spec.podTargetLabels field of all PodMonitor and ServiceMonitor objects.\ntracingConfig TracingConfig (Optional) tracingConfig defines tracing in Prometheus.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nbodySizeLimit ByteSize (Optional) bodySizeLimit defines per-scrape on response body size. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\nlabelLimit int64 (Optional) labelLimit defines per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\nreloadStrategy ReloadStrategyType (Optional) reloadStrategy defines the strategy used to reload the Prometheus configuration. If not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\nmaximumStartupDurationSeconds int32 (Optional) maximumStartupDurationSeconds defines the maximum time that the prometheus container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete. If set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\nscrapeClasses []ScrapeClass (Optional) scrapeClasses defines the list of scrape classes to expose to scraping objects such as PodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nserviceDiscoveryRole ServiceDiscoveryRole (Optional) serviceDiscoveryRole defines the service discovery role used to discover targets from ServiceMonitor objects and Alertmanager endpoints.\nIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
493. If unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\ntsdb TSDBSpec (Optional) tsdb defines the runtime reloadable configuration of the timeseries database(TSDB). It requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\nscrapeFailureLogFile string (Optional) scrapeFailureLogFile defines the file to which scrape failures are logged. Reloading the configuration will reopen the file.\nIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods will mount the file into an emptyDir volume at /var/log/prometheus. If a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you must mount a volume in the specified directory and it must be writable. It requires Prometheus \u0026gt;= v2.55.0.\nserviceName string (Optional) serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named prometheus-operated for Prometheus resources, or prometheus-agent-operated for PrometheusAgent resources. When deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nruntime RuntimeConfig (Optional) runtime defines the values for the Prometheus process behavior\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 600 seconds.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nbaseImage string (Optional) baseImage is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead.\ntag string (Optional) tag is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead. The image\u0026rsquo;s tag can be specified as part of the image name.\nsha string (Optional) sha is deprecated: use \u0026lsquo;spec.image\u0026rsquo; instead. The image\u0026rsquo;s digest can be specified as part of the image name.\nretention Duration (Optional) retention defines how long to retain the Prometheus data.\nDefault: \u0026ldquo;24h\u0026rdquo; if spec.retention, spec.retentionSize and spec.retentionPercentage are empty.\nretentionSize ByteSize (Optional) retentionSize defines the maximum number of bytes used by the Prometheus data.\nretentionPercentage k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) retentionPercentage defines the maximum percentage of the data volume\u0026rsquo;s capacity used by the Prometheus data.\nThe value is a number between 0 and 100. If set to 0, percentage-based retention is disabled.\nIt requires Prometheus \u0026gt;= v3.11.0 and is ignored by older versions.\nshardRetentionPolicy ShardRetentionPolicy (Optional) shardRetentionPolicy defines the retention policy for the Prometheus shards.\n(Beta) Using this mode requires the PrometheusShardRetentionPolicy feature gate (enabled by default).\ndisableCompaction bool (Optional) disableCompaction when true, the Prometheus compaction is disabled.\nWhen spec.thanos.objectStorageConfig or spec.thanos.objectStorageConfigFile are defined, the operator\u0026rsquo;s default handling depends on the Prometheus and Thanos sidecar versions: - With Prometheus \u0026lt; v3.9.0 or a Thanos sidecar \u0026lt; v0.42.0, block compaction is disabled to avoid race conditions during block uploads (as the Thanos documentation recommends). - With Prometheus \u0026gt;= v3.9.0 and a Thanos sidecar \u0026gt;= v0.42.0, local compaction is kept enabled and coordinated with the sidecar through the shipper meta file (--storage.tsdb.delay-compact-file.path), so blocks are only compacted after they have been uploaded. Setting this field to true always disables local compaction regardless of the versions.\nrules Rules (Optional) rules defines the configuration of the Prometheus rules\u0026rsquo; engine.\nprometheusRulesExcludedFromEnforce []PrometheusRuleExcludeConfig (Optional) prometheusRulesExcludedFromEnforce defines the list of PrometheusRule objects to which the namespace label enforcement doesn\u0026rsquo;t apply. This is only relevant when spec.enforcedNamespaceLabel is set to true. Deprecated: use spec.excludedFromEnforcement instead.\nruleSelector Kubernetes meta/v1.LabelSelector (Optional) ruleSelector defines the prometheusRule objects to be selected for rule evaluation. An empty label selector matches all objects. A null label selector matches no objects.\nruleNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) ruleNamespaceSelector defines the namespaces to match for PrometheusRule discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nquery QuerySpec (Optional) query defines the configuration of the Prometheus query service.\nalerting AlertingSpec (Optional) alerting defines the settings related to Alertmanager.\nadditionalAlertRelabelConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalAlertRelabelConfigs defines a key of a Secret containing additional Prometheus alert relabel configurations. The alert relabel configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation:\nhttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\nThe user is responsible for making sure that the configurations are valid\nNote that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel configs are going to break Prometheus after the upgrade.\nadditionalAlertManagerConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalAlertManagerConfigs defines a key of a Secret containing additional Prometheus Alertmanager configurations. The Alertmanager configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation:\nhttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\nThe user is responsible for making sure that the configurations are valid\nNote that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.\nremoteRead []RemoteReadSpec (Optional) remoteRead defines the list of remote read configurations.\nthanos ThanosSpec (Optional) thanos defines the configuration of the optional Thanos sidecar.\nqueryLogFile string (Optional) queryLogFile specifies where the file to which PromQL queries are logged.\nIf the filename has an empty path, e.g. \u0026lsquo;query.log\u0026rsquo;, The Prometheus Pods will mount the file into an emptyDir volume at /var/log/prometheus. If a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/query.log\u0026rsquo;
493, you must mount a volume in the specified directory and it must be writable. This is because the prometheus container runs with a read-only root filesystem for security reasons. Alternatively, the location can be set to a standard I/O stream, e.g. /dev/stdout, to log query information to the default Prometheus log stream.\nallowOverlappingBlocks bool (Optional) allowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus.\nDeprecated: this flag has no effect for Prometheus \u0026gt;= 2.39.0 where overlapping blocks are enabled by default.\nexemplars Exemplars (Optional) exemplars related settings that are runtime reloadable. It requires to enable the exemplar-storage feature flag to be effective.\nevaluationInterval Duration (Optional) evaluationInterval defines the interval between rule evaluations. Default: \u0026ldquo;30s\u0026rdquo;\nruleQueryOffset Duration (Optional) ruleQueryOffset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past. It requires Prometheus \u0026gt;= v2.53.0.\nenableAdminAPI bool (Optional) enableAdminAPI defines access to the Prometheus web admin API.\nWARNING: Enabling the admin APIs enables mutating endpoints, to delete data, shutdown Prometheus, and more. Enabling this should be done with care and the user is advised to add additional authentication authorization via a proxy to ensure only clients authorized to perform these actions can do so.\nFor more information: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\nPrometheusStatus (Appears on:Prometheus, PrometheusAgent) PrometheusStatus is the most recent observed status of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nField Description paused bool (Optional) paused defines whether any actions on the underlying managed objects are being performed. Only delete actions will be performed.\nreplicas int32 (Optional) replicas defines the total number of non-terminated pods targeted by this Prometheus deployment (their labels match the selector).\nupdatedReplicas int32 (Optional) updatedReplicas defines the total number of non-terminated pods targeted by this Prometheus deployment that have the desired version spec.\navailableReplicas int32 (Optional) availableReplicas defines the total number of available pods (ready for at least minReadySeconds) targeted by this Prometheus deployment.\nunavailableReplicas int32 (Optional) unavailableReplicas defines the total number of unavailable pods targeted by this Prometheus deployment.\nconditions []Condition (Optional) conditions defines the current state of the Prometheus deployment.\nshardStatuses []ShardStatus (Optional) shardStatuses defines the list has one entry per shard. Each entry provides a summary of the shard status.\nshards int32 (Optional) shards defines the most recently observed number of shards.\nselector string (Optional) selector used to match the pods targeted by this Prometheus resource.\nPrometheusWebSpec (Appears on:CommonPrometheusFields) PrometheusWebSpec defines the configuration of the Prometheus web server.\nField Description tlsConfig WebTLSConfig (Optional) tlsConfig defines the TLS parameters for HTTPS.\nhttpConfig WebHTTPConfig (Optional) httpConfig defines HTTP parameters for web server.\npageTitle string (Optional) pageTitle defines the prometheus web page title.\nmaxConnections int32 (Optional) maxConnections defines the maximum number of simultaneous connections A zero value means that Prometheus doesn\u0026rsquo;t accept any incoming connection.\nProxyConfig (Appears on:APIServerConfig, AlertmanagerEndpoints, HTTPConfigWithProxy, HTTPConfigWithProxyAndTLSFiles, OAuth2, ProberSpec, RemoteReadSpec, RemoteWriteSpec, AzureSDConfig, ConsulSDConfig, DigitalOceanSDConfig, DockerSDConfig, DockerSwarmSDConfig, EC2SDConfig, EurekaSDConfig, HTTPConfig, HTTPSDConfig, HetznerSDConfig, IonosSDConfig, KubernetesSDConfig, KumaSDConfig, LightSailSDConfig, LinodeSDConfig, NomadSDConfig, PuppetDBSDConfig, ScalewaySDConfig, ScrapeConfigSpec, HTTPConfig) Field Description proxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nQuerySpec (Appears on:PrometheusSpec) QuerySpec defines the query command line flags when starting Prometheus.\nField Description lookbackDelta string (Optional) lookbackDelta defines the delta difference allowed for retrieving metrics during expression evaluations.\nmaxConcurrency int32 (Optional) maxConcurrency defines the number of concurrent queries that can be run at once.\nmaxSamples int32 (Optional) maxSamples defines the maximum number of samples a single query can load into memory. Note that queries will fail if they would load more samples than this into memory, so this also limits the number of samples a query can return.\ntimeout Duration (Optional) timeout defines the maximum time a query may take before being aborted.\nQueueConfig (Appears on:RemoteWriteSpec) QueueConfig allows the tuning of remote write\u0026rsquo;s queue_config parameters. This object is referenced in the RemoteWriteSpec object.\nField Description capacity int (Optional) capacity defines the number of samples to buffer per shard before we start dropping them.\nminShards int (Optional) minShards defines the minimum number of shards, i.e. amount of concurrency.\nmaxShards int (Optional) maxShards defines the maximum number of shards, i.e. amount of concurrency.\nmaxSamplesPerSend int (Optional) maxSamplesPerSend defines the maximum number of samples per send.\nbatchSendDeadline Duration (Optional) batchSendDeadline defines the maximum time a sample will wait in buffer.\nmaxRetries int (Optional) maxRetries defines the maximum number of times to retry a batch on recoverable errors.\nminBackoff Duration (Optional) minBackoff defines the initial retry delay. Gets doubled for every retry.\nmaxBackoff Duration (Optional) maxBackoff defines the maximum retry delay.\nretryOnRateLimit bool (Optional) retryOnRateLimit defines the retry upon receiving a 429 status code from the remote-write storage.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nsampleAgeLimit Duration (Optional) sampleAgeLimit drops samples older than the limit. It requires Prometheus \u0026gt;= v2.50.0 or Thanos \u0026gt;= v0.32.0.\nRelabelConfig (Appears on:AlertmanagerEndpoints, Endpoint, PodMetricsEndpoint, ProbeSpec, ProbeTargetIngress, ProbeTargetStaticConfig, RemoteWriteSpec, ScrapeClass, ScrapeConfigSpec) RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\nField Description sourceLabels []LabelName (Optional) sourceLabels defines the source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\nseparator string (Optional) separator defines the string between concatenated SourceLabels.\ntargetLabel string (Optional) targetLabel defines the label to which the resulting string is written in a replacement.\nIt is mandatory for Replace, HashMod, Lowercase, Uppercase, KeepEqual and DropEqual actions.\nRegex capture groups are available.\nregex string (Optional) regex defines the regular expression against which the extracted value is matched.\nmodulus int64 (Optional) modulus to take of the hash of the source label values.\nOnly applicable when the action is HashMod.\nreplacement string (Optional) replacement value against which a Replace action is performed if the regular expression matches.\nRegex capture groups are available.\naction string (Optional) action to perform based on the regex matching.\nUppercase and Lowercase actions require Prometheus \u0026gt;= v2.36.0. DropEqual and KeepEqual actions require Prometheus \u0026gt;= v2.41.0.\nDefault: \u0026ldquo;Replace\u0026rdquo;\nReloadStrategyType (string alias) (Appears on:CommonPrometheusFields) Value Description \u0026#34;HTTP\u0026#34;\nHTTPReloadStrategyType reloads the configuration using the /-/reload HTTP endpoint.\n\u0026#34;ProcessSignal\u0026#34;\nProcessSignalReloadStrategyType reloads the configuration by sending a SIGHUP signal to the process.\nRemoteReadSpec (Appears on:PrometheusSpec) RemoteReadSpec defines the configuration for Prometheus to read back samples from a remote endpoint.\nField Description url URL url defines the URL of the endpoint to query from.\nIt must use the HTTP or HTTPS scheme.\nname string (Optional) name of the remote read queue, it must be unique if specified. The name is used in metrics and logging in order to differentiate read configurations.\nIt requires Prometheus \u0026gt;= v2.15.0.\nrequiredMatchers map[string]string (Optional) requiredMatchers defines an optional list of equality matchers which have to be present in a selector to query the remote read endpoint.\nremoteTimeout Duration (Optional) remoteTimeout defines the timeout for requests to the remote read endpoint.\nheaders map[string]string (Optional) headers defines the custom HTTP headers to be sent along with each remote read request. Be aware that headers that are set by Prometheus itself can\u0026rsquo;t be overwritten. Only valid in Prometheus versions 2.26.0 and newer.\nreadRecent bool (Optional) readRecent defines whether reads should be made for queries for time ranges that the local storage should have complete data for.\noauth2 OAuth2 (Optional) oauth2 configuration for the URL.\nIt requires Prometheus \u0026gt;= v2.27.0.\nCannot be set at the same time as authorization, or basicAuth.\nbasicAuth BasicAuth (Optional) basicAuth configuration for the URL.\nCannot be set at the same time as authorization, or oauth2.\nbearerTokenFile string (Optional) bearerTokenFile defines the file from which to read the bearer token for the URL.\nDeprecated: this will be removed in a future release. Prefer using authorization.\nauthorization Authorization (Optional) authorization section for the URL.\nIt requires Prometheus \u0026gt;= v2.26.0.\nCannot be set at the same time as basicAuth, or oauth2.\nbearerToken string (Optional) bearerToken is deprecated: this will be removed in a future release. Warning: this field shouldn\u0026rsquo;t be used because the token value appears in clear-text. Prefer using authorization.\ntlsConfig TLSConfig (Optional) tlsConfig to use for the URL.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nIt requires Prometheus \u0026gt;= v2.26.0.\nfilterExternalLabels bool (Optional) filterExternalLabels defines whether to use the external labels as selectors for the remote read endpoint.\nIt requires Prometheus \u0026gt;= v2.34.0.\nRemoteWriteMessageVersion (string alias) (Appears on:CommonPrometheusFields, RemoteWriteSpec) Value Description \u0026#34;V1.0\u0026#34;\nRemote Write message\u0026rsquo;s version 1.0.\n\u0026#34;V2.0\u0026#34;\nRemote Write message\u0026rsquo;s version 2.0.\nRemoteWriteSpec (Appears on:CommonPrometheusFields, ThanosRulerSpec) RemoteWriteSpec defines the configuration to write samples from Prometheus to a remote endpoint.\nField Description url URL url defines the URL of the endpoint to send samples to.\nIt must use the HTTP or HTTPS scheme.\nname string (Optional) name of the remote write queue, it must be unique if specified. The name is used in metrics and logging in order to differentiate queues.\nIt requires Prometheus \u0026gt;= v2.15.0 or Thanos \u0026gt;= 0.24.0.\nmessageVersion RemoteWriteMessageVersion (Optional) messageVersion defines the Remote Write message\u0026rsquo;s version to use when writing to the endpoint.\nVersion1.0 corresponds to the prometheus.WriteRequest protobuf message introduced in Remote Write 1.0. Version2.0 corresponds to the io.prometheus.write.v2.Request protobuf message introduced in Remote Write 2.0.\nWhen Version2.0 is selected, Prometheus will automatically be configured to append the metadata of scraped metrics to the WAL.\nBefore setting this field, consult with your remote storage provider what message version it supports.\nIt requires Prometheus \u0026gt;= v2.54.0 or Thanos \u0026gt;= v0.37.0.\nsendExemplars bool (Optional) sendExemplars enables sending of exemplars over remote write. Note that exemplar-storage itself must be enabled using the spec.enableFeatures option for exemplars to be scraped in the first place.\nIt requires Prometheus \u0026gt;= v2.27.0 or Thanos \u0026gt;= v0.24.0.\nsendNativeHistograms bool (Optional) sendNativeHistograms enables sending of native histograms, also known as sparse histograms over remote write.\nIt requires Prometheus \u0026gt;= v2.40.0 or Thanos \u0026gt;= v0.30.0.\nremoteTimeout Duration (Optional) remoteTimeout defines the timeout for requests to the remote write endpoint.\nheaders map[string]string (Optional) headers defines the custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can\u0026rsquo;t be overwritten.\nIt requires Prometheus \u0026gt;= v2.25.0 or Thanos \u0026gt;= v0.24.0.\nwriteRelabelConfigs []RelabelConfig (Optional) writeRelabelConfigs defines the list of remote write relabel configurations.\noauth2 OAuth2 (Optional) oauth2 configuration for the URL.\nIt requires Prometheus \u0026gt;= v2.27.0 or Thanos \u0026gt;= v0.24.0.\nCannot be set at the same time as sigv4, authorization, basicAuth, or azureAd.\nbasicAuth BasicAuth (Optional) basicAuth configuration for the URL.\nCannot be set at the same time as sigv4, authorization, oauth2, or azureAd.\nbearerTokenFile string (Optional) bearerTokenFile defines the file from which to read bearer token for the URL.\nDeprecated: this will be removed in a future release. Prefer using authorization.\nauthorization Authorization (Optional) authorization section for the URL.\nIt requires Prometheus \u0026gt;= v2.26.0 or Thanos \u0026gt;= v0.24.0.\nCannot be set at the same time as sigv4, basicAuth, oauth2, or azureAd.\nsigv4 Sigv4 (Optional) sigv4 defines the AWS\u0026rsquo;s Signature Verification 4 for the URL.\nIt requires Prometheus \u0026gt;= v2.26.0 or Thanos \u0026gt;= v0.24.0.\nCannot be set at the same time as authorization, basicAuth, oauth2, or azureAd.\nazureAd AzureAD (Optional) azureAd for the URL.\nIt requires Prometheus \u0026gt;= v2.45.0 or Thanos \u0026gt;= v0.31.0.\nCannot be set at the same time as authorization, basicAuth, oauth2, or sigv4.\nbearerToken string (Optional) bearerToken is deprecated: this will be removed in a future release. Warning: this field shouldn\u0026rsquo;t be used because the token value appears in clear-text. Prefer using authorization.\ntlsConfig TLSConfig (Optional) tlsConfig to use for the URL.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nIt requires Prometheus \u0026gt;= v2.26.0 or Thanos \u0026gt;= v0.24.0.\nqueueConfig QueueConfig (Optional) queueConfig allows tuning of the remote write queue parameters.\nmetadataConfig MetadataConfig (Optional) metadataConfig defines how to send a series metadata to the remote storage.\nWhen the field is empty, no metadata is sent. But when the field is null, metadata is sent.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nroundRobinDNS bool (Optional) roundRobinDNS controls the DNS resolution behavior for remote-write connections. When enabled: - The remote-write mechanism will resolve the hostname via DNS. - It will randomly select one of the resolved IP addresses and connect to it.\nWhen disabled (default behavior): - The Go standard library will handle hostname resolution. - It will attempt connections to each resolved IP address sequentially.\nNote: The connection timeout applies to the entire resolution and connection process.\nIf disabled, the timeout is distributed across all connection attempts. It requires Prometheus \u0026gt;= v3.1.0 or Thanos \u0026gt;= v0.38.0.\nRetainConfig (Appears on:ShardRetentionPolicy) Field Description retentionPeriod Duration retentionPeriod defines how long the scaled-down shard(s) need to be kept before being deleted.\nRollingUpdateStatefulSetStrategy (Appears on:StatefulSetUpdateStrategy) RollingUpdateStatefulSetStrategy is used to communicate parameter for the RollingUpdate strategy.\nField Description maxUnavailable k8s.io/apimachinery/pkg/util/intstr.IntOrString (Optional) maxUnavailable is the maximum number of pods that can be unavailable during the update. The value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable.\nRule (Appears on:RuleGroup) Rule describes an alerting or recording rule See Prometheus documentation: alerting or recording rule\nField Description record string (Optional) record defines the name of the time series to output to. Must be a valid metric name. Only one of record and alert must be set.\nalert string (Optional) alert defines the name of the alert. Must be a valid label value. Only one of record and alert must be set.\nexpr k8s.io/apimachinery/pkg/util/intstr.IntOrString expr defines the PromQL expression to evaluate.\nfor Duration (Optional) for defines how alerts are considered firing once they have been returned for this long.\nkeep_firing_for NonEmptyDuration (Optional) keep_firing_for defines how long an alert will continue firing after the condition that triggered it has cleared.\nlabels map[string]string (Optional) labels defines labels to add or overwrite.\nannotations map[string]string (Optional) annotations defines annotations to add to each alert. Only valid for alerting rules.\nRuleGroup (Appears on:PrometheusRuleSpec) RuleGroup is a list of sequentially evaluated recording and alerting rules.\nField Description name string name defines the name of the rule group.\nlabels map[string]string (Optional) labels define the labels to add or over
493write before storing the result for its rules. The labels defined at the rule level take precedence.\nIt requires Prometheus \u0026gt;= 3.0.0. The field is ignored for Thanos Ruler.\ninterval Duration (Optional) interval defines how often rules in the group are evaluated.\nquery_offset Duration (Optional) query_offset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past.\nIt requires Prometheus \u0026gt;= v2.53.0. It is not supported for ThanosRuler.\nrules []Rule (Optional) rules defines the list of alerting and recording rules.\npartial_response_strategy string (Optional) partial_response_strategy is only used by ThanosRuler and will be ignored by Prometheus instances. More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response\nlimit int (Optional) limit defines the number of alerts an alerting rule and series a recording rule can produce. Limit is supported starting with Prometheus \u0026gt;= 2.31 and Thanos Ruler \u0026gt;= 0.24.\nRules (Appears on:PrometheusSpec) Field Description alert RulesAlert (Optional) alert defines the parameters of the Prometheus rules\u0026rsquo; engine.\nAny update to these parameters trigger a restart of the pods.\nRulesAlert (Appears on:Rules) Field Description forOutageTolerance string (Optional) forOutageTolerance defines the max time to tolerate prometheus outage for restoring \u0026lsquo;for\u0026rsquo; state of alert.\nforGracePeriod string (Optional) forGracePeriod defines the minimum duration between alert and restored \u0026lsquo;for\u0026rsquo; state.\nThis is maintained only for alerts with a configured \u0026lsquo;for\u0026rsquo; time greater than the grace period.\nresendDelay string (Optional) resendDelay defines the minimum amount of time to wait before resending an alert to Alertmanager.\nRuntimeConfig (Appears on:CommonPrometheusFields) RuntimeConfig configures the values for the process behavior.\nField Description goGC int32 (Optional) goGC defines the Go garbage collection target percentage. Lowering this number may increase the CPU usage. See: https://tip.golang.org/doc/gc-guide#GOGC\nSafeAuthorization (Appears on:AlertmanagerEndpoints, Authorization, HTTPConfigWithoutTLS, ProbeSpec, AzureSDConfig, ConsulSDConfig, DigitalOceanSDConfig, DockerSDConfig, DockerSwarmSDConfig, EurekaSDConfig, HTTPConfig, HTTPSDConfig, HetznerSDConfig, IonosSDConfig, KubernetesSDConfig, KumaSDConfig, LightSailSDConfig, LinodeSDConfig, NomadSDConfig, PuppetDBSDConfig, ScrapeConfigSpec, HTTPConfig) SafeAuthorization specifies a subset of the Authorization struct, that is safe for use because it doesn\u0026rsquo;t provide access to the Prometheus container\u0026rsquo;s filesystem.\nField Description type string (Optional) type defines the authentication type. The value is case-insensitive.\n\u0026ldquo;Basic\u0026rdquo; is not a supported value.\nDefault: \u0026ldquo;Bearer\u0026rdquo;\ncredentials Kubernetes core/v1.SecretKeySelector (Optional) credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\nSafeTLSConfig (Appears on:ClusterTLSConfig, GlobalSMTPConfig, HTTPConfig, OAuth2, TLSConfig, AzureSDConfig, ConsulSDConfig, DigitalOceanSDConfig, DockerSDConfig, DockerSwarmSDConfig, EC2SDConfig, EmailConfig, EurekaSDConfig, HTTPConfig, HTTPSDConfig, HetznerSDConfig, IonosSDConfig, KubernetesSDConfig, KumaSDConfig, LightSailSDConfig, LinodeSDConfig, NomadSDConfig, OpenStackSDConfig, PuppetDBSDConfig, ScalewaySDConfig, ScrapeConfigSpec, EmailConfig, HTTPConfig) SafeTLSConfig defines safe TLS configurations.\nField Description ca SecretOrConfigMap (Optional) ca defines the Certificate authority used when verifying server certificates.\ncert SecretOrConfigMap (Optional) cert defines the Client certificate to present when doing client-authentication.\nkeySecret Kubernetes core/v1.SecretKeySelector (Optional) keySecret defines the Secret containing the client key file for the targets.\nserverName string (Optional) serverName is used to verify the hostname for the targets.\ninsecureSkipVerify bool (Optional) insecureSkipVerify defines how to disable target certificate validation.\nminVersion TLSVersion (Optional) minVersion defines the minimum acceptable TLS version.\nIt requires Prometheus \u0026gt;= v2.35.0 or Thanos \u0026gt;= v0.28.0.\nmaxVersion TLSVersion (Optional) maxVersion defines the maximum acceptable TLS version.\nIt requires Prometheus \u0026gt;= v2.41.0 or Thanos \u0026gt;= v0.31.0.\nScheme (string alias) (Appears on:AlertmanagerEndpoints, Endpoint, PodMetricsEndpoint, ProberSpec, ConsulSDConfig, ScrapeConfigSpec) Supported values are HTTP and HTTPS. You can also rewrite the __scheme__ label via relabeling configuration.\nIf empty, the value defaults to HTTP.\nValue Description \u0026#34;HTTP\u0026#34;\n\u0026#34;HTTPS\u0026#34;\nScrapeClass (Appears on:CommonPrometheusFields) Field Description name string name of the scrape class.\ndefault bool (Optional) default defines that the scrape applies to all scrape objects that don\u0026rsquo;t configure an explicit scrape class name.\nOnly one scrape class can be set as the default.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type. It will only apply if the scrape resource doesn\u0026rsquo;t specify any FallbackScrapeProtocol\nIt requires Prometheus \u0026gt;= v3.0.0.\ntlsConfig TLSConfig (Optional) tlsConfig defines the TLS settings to use for the scrape. When the scrape objects define their own CA, certificate and/or key, they take precedence over the corresponding scrape class fields.\nFor now only the caFile, certFile and keyFile fields are supported.\nauthorization Authorization (Optional) authorization section for the ScrapeClass. It will only apply if the scrape resource doesn\u0026rsquo;t specify any Authorization.\nrelabelings []RelabelConfig (Optional) relabelings defines the relabeling rules to apply to all scrape targets.\nThe Operator automatically adds relabelings for a few standard Kubernetes fields like __meta_kubernetes_namespace and __meta_kubernetes_service_name. Then the Operator adds the scrape class relabelings defined here. Then the Operator adds the target-specific relabelings defined in the scrape object.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\nmetricRelabelings []RelabelConfig (Optional) metricRelabelings defines the relabeling rules to apply to all samples before ingestion.\nThe Operator adds the scrape class metric relabelings defined here. Then the Operator adds the target-specific metric relabelings defined in ServiceMonitors, PodMonitors, Probes and ScrapeConfigs. Then the Operator adds namespace enforcement relabeling rule, specified in \u0026lsquo;.spec.enforcedNamespaceLabel\u0026rsquo;.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\nattachMetadata AttachMetadata (Optional) attachMetadata defines additional metadata to the discovered targets. When the scrape object defines its own configuration, it takes precedence over the scrape class configuration.\nScrapeProtocol (string alias) (Appears on:CommonPrometheusFields, PodMonitorSpec, ProbeSpec, ScrapeClass, ServiceMonitorSpec, ScrapeConfigSpec) ScrapeProtocol represents a protocol used by Prometheus for scraping metrics. Supported values are: * OpenMetricsText0.0.1 * OpenMetricsText1.0.0 * PrometheusProto * PrometheusText0.0.4 * PrometheusText1.0.0\nValue Description \u0026#34;OpenMetricsText0.0.1\u0026#34;\n\u0026#34;OpenMetricsText1.0.0\u0026#34;\n\u0026#34;PrometheusProto\u0026#34;\n\u0026#34;PrometheusText0.0.4\u0026#34;\n\u0026#34;PrometheusText1.0.0\u0026#34;\nSecretOrConfigMap (Appears on:AlertmanagerConfiguration, OAuth2, SafeTLSConfig, WebTLSConfig) SecretOrConfigMap allows to specify data as a Secret or
493ConfigMap. Fields are mutually exclusive.\nField Description secret Kubernetes core/v1.SecretKeySelector (Optional) secret defines the Secret containing data to use for the targets.\nconfigMap Kubernetes core/v1.ConfigMapKeySelector (Optional) configMap defines the ConfigMap containing data to use for the targets.\nSelectorMechanism (string alias) (Appears on:PodMonitorSpec, ServiceMonitorSpec) Value Description \u0026#34;RelabelConfig\u0026#34;\n\u0026#34;RoleSelector\u0026#34;\nServiceDiscoveryRole (string alias) (Appears on:CommonPrometheusFields, ServiceMonitorSpec) Value Description \u0026#34;EndpointSlice\u0026#34;\n\u0026#34;Endpoints\u0026#34;\nServiceMonitorSpec (Appears on:ServiceMonitor) ServiceMonitorSpec defines the specification parameters for a ServiceMonitor.\nField Description jobLabel string (Optional) jobLabel selects the label from the associated Kubernetes Service object which will be used as the job label for all metrics.\nFor example if jobLabel is set to foo and the Kubernetes Service object is labeled with foo: bar, then Prometheus adds the job=\u0026quot;bar\u0026quot; label to all ingested metrics.\nIf the value of this field is empty or if the label doesn\u0026rsquo;t exist for the given Service, the job label of the metrics defaults to the name of the associated Kubernetes Service.\ntargetLabels []string (Optional) targetLabels defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.\npodTargetLabels []string (Optional) podTargetLabels defines the labels which are transferred from the associated Kubernetes Pod object onto the ingested metrics.\nendpoints []Endpoint endpoints defines the list of endpoints part of this ServiceMonitor. Defines how to scrape metrics from Kubernetes Endpoints objects. In most cases, an Endpoints object is backed by a Kubernetes Service object with the same name and labels.\nselector Kubernetes meta/v1.LabelSelector selector defines the label selector to select the Kubernetes Endpoints objects to scrape metrics from.\nselectorMechanism SelectorMechanism (Optional) selectorMechanism defines the mechanism used to select the endpoints to scrape. By default, the selection process relies on relabel configurations to filter the discovered targets. Alternatively, you can opt in for role selectors, which may offer better efficiency in large clusters. Which strategy is best for your use case needs to be carefully evaluated.\nIt requires Prometheus \u0026gt;= v2.17.0.\nnamespaceSelector NamespaceSelector (Optional) namespaceSelector defines in which namespace(s) Prometheus should discover the services. 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.\nsampleLimit int64 (Optional) sampleLimit defines a per-scrape limit on the number of scraped samples that will be accepted.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt requires Prometheus \u0026gt;= v3.0.0.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted.\nlabelLimit int64 (Optional) labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\nIt requires Prometheus \u0026gt;= v2.27.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nattachMetadata AttachMetadata (Optional) attachMetadata defines additional metadata which is added to the discovered targets.\nIt requires Prometheus \u0026gt;= v2.37.0.\nscrapeClass string (Optional) scrapeClass defines the scrape class to apply.\nbodySizeLimit ByteSize (Optional) bodySizeLimit when defined, bodySizeLimit specifies a job level limit on the size of uncompressed response body that will be accepted by Prometheus.\nIt requires Prometheus \u0026gt;
493= v2.28.0.\nserviceDiscoveryRole ServiceDiscoveryRole (Optional) serviceDiscoveryRole defines the service discovery role used to discover targets.\nIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;. Otherwise it defaults to the value defined in the Prometheus/PrometheusAgent resource.\nShardRetentionPolicy (Appears on:PrometheusSpec) Field Description whenScaled WhenScaledRetentionType (Optional) whenScaled defines the retention policy when the Prometheus shards are scaled down. * Delete, the operator will delete the pods from the scaled-down shard(s). * Retain, the operator will keep the pods from the scaled-down shard(s), so the data can still be queried.\nIf not defined, the operator assumes the Delete value.\nretain RetainConfig (Optional) retain defines the config for retention when the retention policy is set to Retain.\nIf not defined, the operator will use the retention duration configured for the Prometheus data. If the resource uses size-based retention, the shard(s) are kept forever (unless manually deleted).\nShardStatus (Appears on:PrometheusStatus) Field Description shardID string shardID defines the identifier of the shard.\nreplicas int32 replicas defines the total number of pods targeted by this shard.\nupdatedReplicas int32 updatedReplicas defines the total number of non-terminated pods targeted by this shard that have the desired spec.\navailableReplicas int32 availableReplicas defines the total number of available pods (ready for at least minReadySeconds) targeted by this shard.\nunavailableReplicas int32 unavailableReplicas defines the Total number of unavailable pods targeted by this shard.\nShardingStrategy (Appears on:CommonPrometheusFields) ShardingStrategy defines the sharding strategy for Prometheus.\nField Description mode ShardingStrategyMode (Optional) mode defines the sharding mode. Can be \u0026lsquo;Address\u0026rsquo; or \u0026lsquo;Topology\u0026rsquo;.\n\u0026lsquo;Address\u0026rsquo; is the default mode and distributes targets across shards based on a hash of the target address.\n\u0026lsquo;Topology\u0026rsquo; enables zone-aware sharding where each shard is assigned to a specific topology zone and only scrapes targets in that zone. (Alpha) Using the \u0026lsquo;Topology\u0026rsquo; mode requires the PrometheusTopologySharding feature gate to be enabled.\ntopology TopologyShardingStrategy (Optional) topology defines the configuration for topology-aware sharding. This field is only valid when mode is set to \u0026lsquo;Topology\u0026rsquo;.\nShardingStrategyMode (string alias) (Appears on:ShardingStrategy) ShardingStrategyMode defines the sharding mode for Prometheus.\nValue Description \u0026#34;Address\u0026#34;\nAddressShardingStrategyMode is the default sharding mode. Targets are distributed across shards based on a hash of the target address.\n\u0026#34;Topology\u0026#34;\nTopologyShardingStrategyMode enables zone-aware sharding. Each shard is assigned to a specific topology zone and only scrapes targets in that zone.\n(Beta) Using this mode requires the PrometheusTopologySharding feature gate (enabled by default).\nSigv4 (Appears on:AlertmanagerEndpoints, RemoteWriteSpec, SNSConfig, SNSConfig) Sigv4 defines AWS\u0026rsquo;s Signature Verification 4 signing process to sign requests.\nField Description region string (Optional) region defines the AWS region. If blank, the region from the default credentials chain used.\naccessKey Kubernetes core/v1.SecretKeySelector (Optional) accessKey defines the AWS API key. If not specified, the environment variable AWS_ACCESS_KEY_ID is used.\nsecretKey Kubernetes core/v1.SecretKeySelector (Optional) secretKey defines the AWS API secret. If not specified, the environment variable AWS_SECRET_ACCESS_KEY is used.\nprofile string (Optional) profile defines the named AWS profile used to authenticate.\nroleArn string (Optional) roleArn defines the named AWS profile used to authenticate.\nexternalId string (Optional) externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn. It requires Prometheus \u0026gt;= v3.11.0 or Alertmanager \u0026gt;= v0.34.0. Currently not supported by Thanos.\nuseFIPSSTSEndpoint bool (Optional) useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint. It requires Prometheus \u0026gt;= v2.54.0.\nStatefulSetUpdateStrategy (Appears on:AlertmanagerSpec, CommonPrometheusFields, ThanosRulerSpec) StatefulSetUpdateStrategy indicates the strategy used when updating the StatefulSet. It includes any additional parameters necessary to perform the update for the indicated strategy.\nField Description type StatefulSetUpdateStrategyType type indicates the type of the StatefulSetUpdateStrategy.\nDefault is RollingUpdate.\nrollingUpdate RollingUpdateStatefulSetStrategy (Optional) rollingUpdate is used to communicate parameters when type is RollingUpdate.\nStatefulSetUpdateStrategyType (string alias) (Appears on:StatefulSetUpdateStrategy) StatefulSetUpdateStrategyType is a string enumeration type that enumerates all possible update strategies for the StatefulSet pods.\nValue Description \u0026#34;OnDelete\u0026#34;\nOnDeleteStatefulSetStrategyType triggers the legacy behavior. Version tracking and ordered rolling restarts are disabled. Pods are recreated from the StatefulSetSpec when they are manually deleted. When a scale operation is performed with this strategy, new Pods will be created from the the specification version indicated by the StatefulSet\u0026rsquo;s currentRevision.\n\u0026#34;RollingUpdate\u0026#34;\nRollingUpdateStatefulSetStrategyType indicates that update will be applied to all Pods in the StatefulSet with respect to the StatefulSet ordering constraints. When a scale operation is performed with this strategy, new Pods will be created from the specification version indicated by the StatefulSet\u0026rsquo;s updateRevision.\nStorageSpec (Appears on:AlertmanagerSpec, CommonPrometheusFields, ThanosRulerSpec) StorageSpec defines the configured storage for a group Prometheus servers. If no storage option is specified, then by default an EmptyDir will be used.\nIf multiple storage options are specified, priority will be given as follows: 1. emptyDir 2. ephemeral 3. volumeClaimTemplate\nField Description disableMountSubPath bool (Optional) disableMountSubPath deprecated: subPath usage will be removed in a future release.\nemptyDir Kubernetes core/v1.EmptyDirVolumeSource (Optional) emptyDir to be used by the StatefulSet. If specified, it takes precedence over ephemeral and volumeClaimTemplate. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\nephemeral Kubernetes core/v1.EphemeralVolumeSource (Optional) ephemeral to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes\nvolumeClaimTemplate EmbeddedPersistentVolumeClaim (Optional) volumeClaimTemplate defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\nTLSConfig (Appears on:APIServerConfig, AlertmanagerEndpoints, GRPCServerTLSConfig, HTTPConfigWithTLSFiles, RemoteReadSpec, RemoteWriteSpec, ScrapeClass, TracingConfig) TLSConfig defines full TLS configuration.\nField Description ca SecretOrConfigMap (Optional) ca defines the Certificate authority used when verifying server certificates.\ncert SecretOrConfigMap (Optional) cert defines the Client certificate to present when doing client-authentication.\nkeySecret Kubernetes core/v1.SecretKeySelector (Optional) keySecret defines the Secret
493containing the client key file for the targets.\nserverName string (Optional) serverName is used to verify the hostname for the targets.\ninsecureSkipVerify bool (Optional) insecureSkipVerify defines how to disable target certificate validation.\nminVersion TLSVersion (Optional) minVersion defines the minimum acceptable TLS version.\nIt requires Prometheus \u0026gt;= v2.35.0 or Thanos \u0026gt;= v0.28.0.\nmaxVersion TLSVersion (Optional) maxVersion defines the maximum acceptable TLS version.\nIt requires Prometheus \u0026gt;= v2.41.0 or Thanos \u0026gt;= v0.31.0.\ncaFile string (Optional) caFile defines the path to the CA cert in the Prometheus container to use for the targets.\ncertFile string (Optional) certFile defines the path to the client cert file in the Prometheus container for the targets.\nkeyFile string (Optional) keyFile defines the path to the client key file in the Prometheus container for the targets.\nTLSFilesConfig (Appears on:TLSConfig) TLSFilesConfig extends the TLS configuration with file parameters.\nField Description caFile string (Optional) caFile defines the path to the CA cert in the Prometheus container to use for the targets.\ncertFile string (Optional) certFile defines the path to the client cert file in the Prometheus container for the targets.\nkeyFile string (Optional) keyFile defines the path to the client key file in the Prometheus container for the targets.\nTLSVersion (string alias) (Appears on:SafeTLSConfig) Value Description \u0026#34;TLS10\u0026#34;\n\u0026#34;TLS11\u0026#34;\n\u0026#34;TLS12\u0026#34;\n\u0026#34;TLS13\u0026#34;\nTSDBSpec (Appears on:CommonPrometheusFields) Field Description outOfOrderTimeWindow Duration (Optional) outOfOrderTimeWindow defines how old an out-of-order/out-of-bounds sample can be with respect to the TSDB max time.\nAn out-of-order/out-of-bounds sample is ingested into the TSDB as long as the timestamp of the sample is \u0026gt;= (TSDB.MaxTime - outOfOrderTimeWindow).\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nIt requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\nstaleSeriesCompactionThreshold k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) staleSeriesCompactionThreshold configures the trigger point for compacting stale series from memory into persistent blocks and removing those stale series from memory.\nThe threshold is a number between 0.0 and 1.0. It represents the ratio of stale series in memory to the total series in memory. The stale series compaction is triggered when this ratio crosses the configured threshold. It may not trigger the stale series compaction if the usual head compaction is about to happen soon.\nIf set to 0, stale series compaction is disabled.\nIt requires Prometheus \u0026gt;= v3.10.0.\nchunkEncoding ChunkEncodingSpec (Optional) chunkEncoding configures per-chunk-type encoding overrides.\nIt requires Prometheus \u0026gt;= v3.13.0.\nNotice: Setting \u0026ldquo;Xor\u0026rdquo; is incompatible with \u0026ndash;enable-feature=st-storage (XOR chunks do not store start timestamps).\nThanosRulerSpec (Appears on:ThanosRuler) ThanosRulerSpec is a specification of the desired behavior of the ThanosRuler. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nField Description version string (Optional) version of Thanos to be deployed.\npodMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the ThanosRuler pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;thanos-ruler\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the ThanosRuler instance. * \u0026ldquo;thanos-ruler\u0026rdquo; label, set to the name of the ThanosRuler instance. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;thanos-ruler\u0026rdquo;
493.\nimage string (Optional) image defines Thanos container image URL.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy defines for the \u0026lsquo;thanos\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets defines an optional list of references to secrets in the same namespace to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\npaused bool (Optional) paused defines when a ThanosRuler deployment is paused, no actions except for deletion will be performed on the underlying objects.\nreplicas int32 (Optional) replicas defines the number of thanos ruler instances to deploy.\nnodeSelector map[string]string (Optional) nodeSelector defines which Nodes the Pods are scheduled on.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resource requirements for single Pods. If not provided, no requests/limits will be set\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines when specified, the pod\u0026rsquo;s scheduling constraints.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines when specified, the pod\u0026rsquo;s tolerations.\ntopologySpreadConstraints []Kubernetes core/v1.TopologySpreadConstraint (Optional) topologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext defines the pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines Defines the DNS configuration for the pods.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\npriorityClassName string (Optional) priorityClassName defines the priority class assigned to the Pods\nserviceName string (Optional) serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named thanos-ruler-operated for ThanosRuler resources. When deploying multiple ThanosRuler resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nserviceAccountName string (Optional) serviceAccountName defines the name of the ServiceAccount to use to run the Thanos Ruler Pods.\nstorage StorageSpec (Optional) storage defines the specification of how storage shall be used.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes defines how configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts defines how the configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the ruler container, that are generated as a result of StorageSpec objects.\nobjectStorageConfig Kubernetes core/v1.SecretKeySelector (Optional) objectStorageConfig defines the configuration format is defined at https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\nThe operator performs no validation of the configuration.\nobjectStorageConfigFile takes precedence over this field.\nobjectStorageConfigFile string (Optional) objectStorageConfigFile defines the path of the object storage configuration file.\nThe configuration format is defined at https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\nThe operator performs no validation of the configuration file.\nThis field takes precedence over objectStorageConfig.\nlistenLocal bool (Optional) listenLocal defines the Thanos ruler listen on loopback, so that it does not bind against the Pod IP.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\nqueryEndpoints []string (Optional) queryEndpoints defines the list of Thanos Query endpoints from which to query metrics.\nFor Thanos \u0026gt;= v0.11.0, it is recommended to use queryConfig instead.\nqueryConfig takes precedence over this field.\nqueryConfig Kubernetes core/v1.SecretKeySelector (Optional) queryConfig defines the list of Thanos Query endpoints from which to query metrics.\nThe configuration format is defined at https://thanos.io/tip/components/rule.md/#query-api\nIt requires Thanos \u0026gt;= v0.11.0.\nThe operator performs no validation of the configuration.\nThis field takes precedence over queryEndpoints.\nalertmanagersUrl []string (Optional) alertmanagersUrl defines the list of Alertmanager endpoints to send alerts to.\nFor Thanos \u0026gt;= v0.10.0, it is recommended to use alertmanagersConfig instead.\nalertmanagersConfig takes precedence over this field.\nalertmanagersConfig Kubernetes core/v1.SecretKeySelector (Optional) alertmanagersConfig defines the list of Alertmanager endpoints to send alerts to.\nThe configuration format is defined at https://thanos.io/tip/components/rule.md/#alertmanager.\nIt requires Thanos \u0026gt;= v0.10.0.\nThe operator performs no validation of the configuration.\nThis field takes precedence over alertmanagersUrl.\nruleSelector Kubernetes meta/v1.LabelSelector (Optional) ruleSelector defines the PrometheusRule objects to be selected for rule evaluation. An empty label selector matches all objects. A null label selector matches no objects.\nruleNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) ruleNamespaceSelector defines the namespaces to be selected for Rules discovery. If unspecified, only the same namespace as the ThanosRuler object is in is used.\nenforcedNamespaceLabel string (Optional) enforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. The label value will always be the namespace of the object that is being created.\nexcludedFromEnforcement []ObjectReference (Optional) excludedFromEnforcement defines the list of references to PrometheusRule objects to be excluded from enforcing a namespace label of origin. Applies only if enforcedNamespaceLabel set to true.\nprometheusRulesExcludedFromEnforce []PrometheusRuleExcludeConfig (Optional) prometheusRulesExcludedFromEnforce defines a list of Prometheus rules to be excluded from enforcing of adding namespace labels. Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair Deprecated: use excludedFromEnforcement instead.\nlogLevel string (Optional) logLevel for ThanosRuler to be configured with.\nlogFormat str
493ing (Optional) logFormat for ThanosRuler to be configured with.\nportName string (Optional) portName defines the port name used for the pods and governing service. Defaults to web.\nevaluationInterval Duration (Optional) evaluationInterval defines the interval between consecutive evaluations.\nresendDelay Duration (Optional) resendDelay defines the minimum amount of time to wait before resending an alert to Alertmanager.\nruleOutageTolerance Duration (Optional) ruleOutageTolerance defines the max time to tolerate prometheus outage for restoring \u0026ldquo;for\u0026rdquo; state of alert. It requires Thanos \u0026gt;= v0.30.0.\nruleQueryOffset Duration (Optional) ruleQueryOffset defines the default rule group\u0026rsquo;s query offset duration to use. It requires Thanos \u0026gt;= v0.38.0.\nruleConcurrentEval int32 (Optional) ruleConcurrentEval defines how many rules can be evaluated concurrently. It requires Thanos \u0026gt;= v0.37.0.\nruleGracePeriod Duration (Optional) ruleGracePeriod defines the minimum duration between alert and restored \u0026ldquo;for\u0026rdquo; state. This is maintained only for alerts with configured \u0026ldquo;for\u0026rdquo; time greater than grace period. It requires Thanos \u0026gt;= v0.30.0.\nretention Duration (Optional) retention defines the time duration ThanosRuler shall retain data for. Default is \u0026lsquo;24h\u0026rsquo;, and must match the regular expression [0-9]+(ms|s|m|h|d|w|y) (milliseconds seconds minutes hours days weeks years).\nThe field has no effect when remote-write is configured since the Ruler operates in stateless mode.\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * thanos-ruler * config-reloader\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting initContainers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\ntracingConfig Kubernetes core/v1.SecretKeySelector (Optional) tracingConfig defines the tracing configuration.\nThe configuration format is defined at https://thanos.io/tip/thanos/tracing.md/#configuration\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nThe operator performs no validation of the configuration.\ntracingConfigFile takes precedence over this field.\ntracingConfigFile string (Optional) tracingConfigFile defines the path of the tracing configuration file.\nThe configuration format is defined at https://thanos.io/tip/thanos/tracing.md/#configuration\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nThe operator performs no validation of the configuration file.\nThis field takes precedence over tracingConfig.\nlabels map[string]string (Optional) labels defines the external label pairs of the ThanosRuler resource.\nA default replica label thanos_ruler_replica will be always added as a label with the value of the pod\u0026rsquo;s name.\nalertDropLabels []string (Optional) alertDropLabels defines the label names which should be dropped in Thanos Ruler alerts.\nThe replica label thanos_ruler_replica will always be dropped from the alerts.\nexternalPrefix string (Optional) externalPrefix defines the Thanos Ruler instances will be available under. This is necessary to generate correct URLs. This is necessary if Thanos Ruler is not served from root of a DNS name.\nroutePrefix string (Optional) routePrefix defines the route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path.\ngrpcServerTlsConfig GRPCServerTLSConfig (Optional) grpcServerTlsConfig defines the gRPC server from which Thanos Quer
493ier reads recorded rule data.\nNote: Currently only the minVersion, caFile, certFile, keyFile, cipherSuites and curves fields are supported.\nalertQueryUrl string (Optional) alertQueryUrl defines how Thanos Ruler will set in the \u0026lsquo;Source\u0026rsquo; field of all alerts. Maps to the \u0026lsquo;\u0026ndash;alert.query-url\u0026rsquo; CLI arg.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nalertRelabelConfigs Kubernetes core/v1.SecretKeySelector (Optional) alertRelabelConfigs defines the alert relabeling in Thanos Ruler.\nAlert relabel configuration must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\nThe operator performs no validation of the configuration.\nalertRelabelConfigFile takes precedence over this field.\nalertRelabelConfigFile string (Optional) alertRelabelConfigFile defines the path to the alert relabeling configuration file.\nAlert relabel configuration must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\nThe operator performs no validation of the configuration file.\nThis field takes precedence over alertRelabelConfig.\nhostAliases []HostAlias (Optional) hostAliases defines pods\u0026rsquo; hostAliases configuration\nadditionalArgs []Argument (Optional) additionalArgs defines how to add additional arguments for the ThanosRuler container. It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the ThanosRuler container which may cause issues if they are invalid or not supported by the given ThanosRuler version. In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument the reconciliation will fail and an error will be logged.\nweb ThanosRulerWebSpec (Optional) web defines the configuration of the ThanosRuler web server.\nremoteWrite []RemoteWriteSpec (Optional) remoteWrite defines the list of remote write configurations.\nWhen the list isn\u0026rsquo;t empty, the ruler is configured with stateless mode.\nIt requires Thanos \u0026gt;= 0.24.0.\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 120 seconds.\nenableFeatures []EnableFeature (Optional) enableFeatures defines how to setup Thanos Ruler feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nFor more information see https://thanos.io/tip/components/rule.md/\nIt requires Thanos \u0026gt;= 0.39.0.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nThanosRulerStatus (Appears on:ThanosRuler) ThanosRulerStatus is the most recent observed status of the ThanosRuler. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nField Description paused bool (Optional) paused defines whether any actions on the underlying managed objects are being performed. Only delete actions will be performed.\nreplicas int32 (Optional) replicas defines the total number of non-terminated pods targeted by this ThanosRuler deployment (their labels match the selector).\nupdatedReplicas int32 (Optional) updatedReplicas defines the total number of non-terminated pods targeted by this ThanosRuler deployment that have the desired version spec.\navailableReplicas int32 (Optional) availableReplicas defines the total number of available pods (ready for at least minReadySeconds) targeted by this ThanosRuler deployment.\nunavailableReplicas int32 (Optional) unavailableReplicas defines the total number of unavailable pods targeted by this ThanosRuler deployment.\nconditions []Condition (Optional) conditions defines the current state of the ThanosRuler object.\nThanosRulerWebSpec (Appears on:ThanosRulerSpec) ThanosRulerWebSpec defines the configuration of the ThanosRuler web server.\nField Description tlsConfig WebTLSConfig (Optional) tlsConfig defines the TLS parameters for HTTPS.\nhttpConfig WebHTTPConfig (Optional) httpConfig defines HTTP parameters for web server.\nThanosSpec (Appears on:PrometheusSpec) ThanosSpec defines the configuration of the Thanos sidecar.\nField Description image str
493ing (Optional) image defines the container image name for Thanos. If specified, it takes precedence over the spec.thanos.baseImage, spec.thanos.tag and spec.thanos.sha fields.\nSpecifying spec.thanos.version is still necessary to ensure the Prometheus Operator knows which version of Thanos is being configured.\nIf neither spec.thanos.image nor spec.thanos.baseImage are defined, the operator will use the latest upstream version of Thanos available at the time when the operator was released.\nversion string (Optional) version of Thanos being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files.\nIf not specified, the operator assumes the latest upstream release of Thanos available at the time when the version of the operator was released.\ntag string (Optional) tag is deprecated: use \u0026lsquo;image\u0026rsquo; instead. The image\u0026rsquo;s tag can be specified as as part of the image name.\nsha string (Optional) sha is deprecated: use \u0026lsquo;image\u0026rsquo; instead. The image digest can be specified as part of the image name.\nbaseImage string (Optional) baseImage is deprecated: use \u0026lsquo;image\u0026rsquo; instead.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resources requests and limits of the Thanos sidecar.\nobjectStorageConfig Kubernetes core/v1.SecretKeySelector (Optional) objectStorageConfig defines the Thanos sidecar\u0026rsquo;s configuration to upload TSDB blocks to object storage.\nMore info: https://thanos.io/tip/thanos/storage.md/\nobjectStorageConfigFile takes precedence over this field.\nobjectStorageConfigFile string (Optional) objectStorageConfigFile defines the Thanos sidecar\u0026rsquo;s configuration file to upload TSDB blocks to object storage.\nMore info: https://thanos.io/tip/thanos/storage.md/\nThis field takes precedence over objectStorageConfig.\nlistenLocal bool (Optional) listenLocal is deprecated: use grpcListenLocal and httpListenLocal instead.\ngrpcListenLocal bool (Optional) grpcListenLocal defines when true, the Thanos sidecar listens on the loopback interface instead of the Pod IP\u0026rsquo;s address for the gRPC endpoints.\nIt has no effect if listenLocal is true.\nhttpListenLocal bool (Optional) httpListenLocal when true, the Thanos sidecar listens on the loopback interface instead of the Pod IP\u0026rsquo;s address for the HTTP endpoints.\nIt has no effect if listenLocal is true.\ntracingConfig Kubernetes core/v1.SecretKeySelector (Optional) tracingConfig defines the tracing configuration for the Thanos sidecar.\ntracingConfigFile takes precedence over this field.\nMore info: https://thanos.io/tip/thanos/tracing.md/\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\ntracingConfigFile string (Optional) tracingConfigFile defines the tracing configuration file for the Thanos sidecar.\nThis field takes precedence over tracingConfig.\nMore info: https://thanos.io/tip/thanos/tracing.md/\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\ngrpcServerTlsConfig GRPCServerTLSConfig (Optional) grpcServerTlsConfig defines the TLS parameters for the gRPC server providing the StoreAPI.\nNote: Currently only the minVersion, caFile, certFile, keyFile, cipherSuites and curves fields are supported.\nlogLevel string (Optional) logLevel for the Thanos sidecar.\nlogFormat string (Optional) logFormat for the Thanos sidecar.\nminTime string (Optional) minTime defines the start of time range limit served by the Thanos sidecar\u0026rsquo;s StoreAPI. The field\u0026rsquo;s value should be a constant time in RFC3339 format or a time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y.\nblockSize Duration (Optional) blockSize controls the size of TSDB blocks produced by Prometheus. The default value is 2h to match the upstream Prometheus defaults.\nWARNING: Changing the block duration can impact the performance and efficiency of the entire Prometheus/Thanos stack due to how it interacts with memory and Thanos compactors. It is recommended to keep this value set to a multiple of 120 times your longest scrape or rule interval. For example, 30s * 120 = 1h.\
493nreadyTimeout Duration (Optional) readyTimeout defines the maximum time that the Thanos sidecar will wait for Prometheus to start.\ngetConfigInterval Duration (Optional) getConfigInterval defines how often to retrieve the Prometheus configuration.\ngetConfigTimeout Duration (Optional) getConfigTimeout defines the maximum time to wait when retrieving the Prometheus configuration.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts allows configuration of additional VolumeMounts for Thanos. VolumeMounts specified will be appended to other VolumeMounts in the \u0026lsquo;thanos-sidecar\u0026rsquo; container.\nadditionalArgs []Argument (Optional) additionalArgs allows setting additional arguments for the Thanos container. The arguments are passed as-is to the Thanos container which may cause issues if they are invalid or not supported the given Thanos version. In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\nTopologyShardingStrategy (Appears on:ShardingStrategy) TopologyShardingStrategy defines the configuration for topology-aware sharding.\nField Description externalLabelName string (Optional) externalLabelName defines the name of the Prometheus external label used to communicate the topology zone assigned to the Prometheus instance. If not defined, it defaults to \u0026ldquo;zone\u0026rdquo;. If set to the empty string, no external label is added to the Prometheus configuration.\nvalues []string (Optional) values defines the list of topology values (e.g. zone names) to be used for sharding. The configured number of shards must be greater than or equal to the number of values.\
493nTopologySpreadConstraint (Appears on:CommonPrometheusFields) Field Description maxSkew int32 MaxSkew describes the degree to which pods may be unevenly distributed. When whenUnsatisfiable=DoNotSchedule, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When whenUnsatisfiable=ScheduleAnyway, it is used to give higher precedence to topologies that satisfy it. It\u0026rsquo;s a required field. Default value is 1 and 0 is not allowed.\ntopologyKey string TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a \u0026ldquo;bucket\u0026rdquo;, and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \u0026ldquo;kubernetes.io/hostname\u0026rdquo;, each Node is a domain of that topology. And, if TopologyKey is \u0026ldquo;topology.kubernetes.io/zone\u0026rdquo;, each zone is a domain of that topology. It\u0026rsquo;s a required field.\nwhenUnsatisfiable Kubernetes core/v1.UnsatisfiableConstraintAction WhenUnsatisfiable indicates how to deal with a pod if it doesn\u0026rsquo;t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \u0026ldquo;Unsatisfiable\u0026rdquo; for an incoming pod if and only if every possible node assignment for that pod would violate \u0026ldquo;MaxSkew\u0026rdquo; on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won\u0026rsquo;t make it more imbalanced. It\u0026rsquo;s a required field.\nlabelSelector Kubernetes meta/v1.LabelSelector (Optional) LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\nminDomains int32 (Optional) MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \u0026ldquo;global minimum\u0026rdquo; as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won\u0026rsquo;t schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so \u0026ldquo;global minimum\u0026rdquo; is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew.\nnodeAffinityPolicy Kubernetes core/v1.NodeInclusionPolicy (Optional) NodeAffinityPolicy indicates how we will treat Pod\u0026rsquo;s nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\nIf this value is nil, the behavior is equivalent to the Honor policy.\nnodeTaintsPolicy Kubernetes core/v1.NodeInclusionPolicy (Optional) NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included.\nIf this value is nil, the behavior is equivalent to the Ignore policy.\nmatchLabelKeys []string (Optional) MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when L
493abelSelector isn\u0026rsquo;t set. Keys that don\u0026rsquo;t exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\nadditionalLabelSelectors AdditionalLabelSelectors (Optional) additionalLabelSelectors Defines what Prometheus Operator managed labels should be added to labelSelector on the topologySpreadConstraint.\nTracingConfig (Appears on:CommonPrometheusFields) Field Description clientType string (Optional) clientType defines the client used to export the traces. Supported values are HTTP and GRPC.\nendpoint string endpoint to send the traces to. Should be provided in format :.\nsamplingFraction k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) samplingFraction defines the probability a given trace will be sampled. Must be a float from 0 through 1.\ninsecure bool (Optional) insecure if disabled, the client will use a secure connection.\nheaders map[string]string (Optional) headers defines the key-value pairs to be used as headers associated with gRPC or HTTP requests.\ncompression string (Optional) compression key for supported compression types. The only supported value is Gzip.\ntimeout Duration (Optional) timeout defines the maximum time the exporter will wait for each batch export.\ntlsConfig TLSConfig (Optional) tlsConfig to use when sending traces.\nTranslationStrategyOption (string alias) (Appears on:OTLPConfig) TranslationStrategyOption represents a translation strategy option for the OTLP endpoint. Supported values are: * NoUTF8EscapingWithSuffixes * UnderscoreEscapingWithSuffixes * UnderscoreEscapingWithoutSuffixes * NoTranslation\nValue Description \u0026#34;NoTranslation\u0026#34;\nIt requires Prometheus \u0026gt;= v3.4.0.\n\u0026#34;NoUTF8EscapingWithSuffixes\u0026#34;\n\u0026#34;UnderscoreEscapingWithSuffixes\u0026#34;\n\u0026#34;UnderscoreEscapingWithoutSuffixes\u0026#34;\nIt requires Prometheus \u0026gt;= v3.6.0.\nURL (string alias) (Appears on:AlertmanagerGlobalConfig, GlobalJiraConfig, GlobalRocketChatConfig, GlobalTelegramConfig, GlobalVictorOpsConfig, GlobalWeChatConfig, GlobalWebexConfig, OAuth2, RemoteReadSpec, RemoteWriteSpec) URL represents a valid URL\nWebConfigFileFields (Appears on:AlertmanagerWebSpec, PrometheusWebSpec, ThanosRulerWebSpec) WebConfigFileFields defines the file content for \u0026ndash;web.config.file flag.\nField Description tlsConfig WebTLSConfig (Optional) tlsConfig defines the TLS parameters for HTTPS.\nhttpConfig WebHTTPConfig (Optional) httpConfig defines HTTP parameters for web server.\nWebHTTPConfig (Appears on:WebConfigFileFields) WebHTTPConfig defines HTTP parameters for web server.\nField Description http2 bool (Optional) http2 enable HTTP/2 support. Note that HTTP/2 is only supported with TLS. When TLSConfig is not configured, HTTP/2 will be disabled. Whenever the value of the field changes, a rolling update will be triggered.\nheaders WebHTTPHeaders (Optional) headers defines a list of headers that can be added to HTTP responses.\nWebHTTPHeaders (Appears on:WebHTTPConfig) WebHTTPHeaders defines the list of headers that can be added to HTTP responses.\nField Description contentSecurityPolicy string (Optional) contentSecurityPolicy defines the Content-Security-Policy header to HTTP responses. Unset if blank.\nxFrameOptions string (Optional) xFrameOptions defines the X-Frame-Options header to HTTP responses. Unset if blank. Accepted values are deny and sameorigin. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\nxContentTypeOptions string (Optional) xContentTypeOptions defines the X-Content-Type-Options header to HTTP responses. Unset if blank. Accepted value is nosniff. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\nxXSSProtection string (Optional) xXSSProtection defines the X-XSS-Protection header to all responses. Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\nstrictTransportSecurity string (Optional) strictTransportSecurity defines the Strict-Transport-Security header to HTTP responses. Unset if blank. Please make sure that you use this with care as this header might force browsers to load Prometheus and the other applications hosted on the same domain and subdomains over HTTPS. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\nWebTLSConfig (Appears on:ClusterTLSConfig, WebConfigFileFields) WebTLSConfig defines the TLS parameters for HTTPS.\nField Description cert SecretOrConfigMap (Optional) cert defines the Secret or
493ConfigMap containing the TLS certificate for the web server.\nEither keySecret or keyFile must be defined.\nIt is mutually exclusive with certFile.\ncertFile string (Optional) certFile defines the path to the TLS certificate file in the container for the web server.\nEither keySecret or keyFile must be defined.\nIt is mutually exclusive with cert.\nkeySecret Kubernetes core/v1.SecretKeySelector (Optional) keySecret defines the secret containing the TLS private key for the web server.\nEither cert or certFile must be defined.\nIt is mutually exclusive with keyFile.\nkeyFile string (Optional) keyFile defines the path to the TLS private key file in the container for the web server.\nIf defined, either cert or certFile must be defined.\nIt is mutually exclusive with keySecret.\nclient_ca SecretOrConfigMap (Optional) client_ca defines the Secret or ConfigMap containing the CA certificate for client certificate authentication to the server.\nIt is mutually exclusive with clientCAFile.\nclientCAFile string (Optional) clientCAFile defines the path to the CA certificate file for client certificate authentication to the server.\nIt is mutually exclusive with client_ca.\nclientAuthType ClientAuthType (Optional) clientAuthType defines the server policy for client TLS authentication.\nFor more detail on clientAuth options: https://golang.org/pkg/crypto/tls/#ClientAuthType\nminVersion string (Optional) minVersion defines the minimum TLS version that is acceptable.\nmaxVersion string (Optional) maxVersion defines the Maximum TLS version that is acceptable.\ncipherSuites []string (Optional) cipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.\nIf not defined, the Go default cipher suites are used. Available cipher suites are documented in the Go documentation: https://golang.org/pkg/crypto/tls/#pkg-constants\npreferServerCipherSuites bool (Optional) preferServerCipherSuites defines whether the server selects the client\u0026rsquo;s most preferred cipher suite, or the server\u0026rsquo;s most preferred cipher suite.\nIf true then the server\u0026rsquo;s preference, as expressed in the order of elements in cipherSuites, is used.\ncurvePreferences []string (Optional) curvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference order.\nAvailable curves are documented in the Go documentation: https://golang.org/pkg/crypto/tls/#CurveID\nWhenScaledRetentionType (string alias) (Appears on:ShardRetentionPolicy) WorkloadBinding (Appears on:ConfigResourceStatus) WorkloadBinding is a link between a configuration resource and a workload resource.\nField Description group string group defines the group of the referenced resource.\nresource string resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).\nname string name defines the name of the referenced object.\nnamespace string namespace defines the namespace of the referenced object.\nconditions []ConfigResourceCondition (Optional) conditions defines the current state of the configuration resource when bound to the referenced Workload object.\nmonitoring.coreos.com/v1alpha1 Resource Types: AlertmanagerConfig PrometheusAgent ScrapeConfig AlertmanagerConfig AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems.\nField Description apiVersion string monitoring.coreos.com/v1alpha1 kind string AlertmanagerConfig metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec AlertmanagerConfigSpec spec defines the specification of AlertmanagerConfigSpec\nroute Route (Optional) route defines the Alertmanager route definition for alerts matching the resource\u0026rsquo;s namespace. If present, it will be added to the generated Alertmanager configuration as a first-level route.\nreceivers []Receiver (Optional) receivers defines the list of receivers.\ninhibitRules []InhibitRule (Optional) inhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching the resource\u0026rsquo;s namespace.\nmuteTimeIntervals []MuteTimeInterval (Optional) muteTimeIntervals defines the list of MuteTimeInterval specifying when the routes should be muted.\nstatus ConfigResourceStatus (Optional) status defines the status subresource. It is under active development and is updated only when the \u
4930026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\nMost recent observed status of the ServiceMonitor. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nPrometheusAgent The PrometheusAgent custom resource definition (CRD) defines a desired Prometheus Agent setup to run in a Kubernetes cluster.\nThe CRD is very similar to the Prometheus CRD except for features which aren\u0026rsquo;t available in agent mode like rule evaluation, persistent storage and Thanos sidecar.\nField Description apiVersion string monitoring.coreos.com/v1alpha1 kind string PrometheusAgent metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec PrometheusAgentSpec spec defines the specification of the desired behavior of the Prometheus agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nmode PrometheusAgentMode (Optional) mode defines how the Prometheus operator deploys the PrometheusAgent pod(s).\n(Alpha) Using this field requires the PrometheusAgentDaemonSet feature gate to be enabled.\npodMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the Prometheus pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version. * \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\nserviceMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nserviceMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\npodMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\npodMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\nprobeSelector Kubernetes meta/v1.LabelSelector (Optional) probeSelector defines the probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nprobeNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) probeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nscrapeConfigSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nNote that the ScrapeConfig custom resource definition is currently at Alp
493ha level and will be graduated to Beta in a future release.\nscrapeConfigNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nNote that the ScrapeConfig custom resource definition is currently at Alpha level and will be graduated to Beta in a future release.\nversion string (Optional) version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files.\nIf not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\npaused bool (Optional) paused defines when a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\nimage string (Optional) image defines the container image name for Prometheus. If specified, it takes precedence over the spec.baseImage, spec.tag and spec.sha fields.\nSpecifying spec.version is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured.\nIf neither spec.image nor spec.baseImage are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets defines an optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\nreplicas int32 (Optional) replicas defines the number of replicas of each shard to deploy for a Prometheus deployment. spec.replicas multiplied by spec.shards is the total number of Pods created.\nDefault: 1\nshards int32 (Optional) shards defines the number of shards to distribute the scraped targets onto.\nspec.replicas multiplied by spec.shards is the total number of Pods being created.\nWhen not defined, the operator assumes only one shard.\nNote that scaling down shards will not reshard data onto the remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use either * Thanos sidecar + querier for query federation and Thanos Ruler for rules. * Remote-write to send metrics to a central location.\nBy default, the sharding of targets is performed on: * The __address__ target\u0026rsquo;s metadata label for PodMonitor, ServiceMonitor and ScrapeConfig resources. * The __param_target__ label for Probe resources.\nUsers can define their own sharding implementation by setting the __tmp_hash label during the target discovery with relabeling configuration (either in the monitoring resources or via scrape class).\nYou can also disable sharding on a specific target by setting the __tmp_disable_sharding label with relabeling configuration. When the label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\nDefault: 1\nshardingStrategy ShardingStrategy (Optional) shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\nWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes targets based on a hash of the target address.\nreplicaExternalLabelName string (Optional) replicaExternalLabelName defines the name of Prometheus external label used to denote the replica name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\nprometheusExternalLabelName string (Optional) prometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus\u0026rdquo;\nlogLevel string (Optional) logLevel for Prometheus and the config-reloader sidecar.\nlogFormat str
493ing (Optional) logFormat for Log level for Prometheus and the config-reloader sidecar.\nscrapeInterval Duration (Optional) scrapeInterval defines interval between consecutive scrapes.\nDefault: \u0026ldquo;30s\u0026rdquo;\nscrapeTimeout Duration (Optional) scrapeTimeout defines the number of seconds to wait until a scrape request times out. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nPrometheusText1.0.0 requires Prometheus \u0026gt;= v3.0.0.\nexternalLabels map[string]string (Optional) externalLabels defines the labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by spec.replicaExternalLabelName and spec.prometheusExternalLabelName take precedence over this list.\nenableRemoteWriteReceiver bool (Optional) enableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote write protocol.\nWARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\nIt requires Prometheus \u0026gt;= v2.33.0.\nenableOTLPReceiver bool (Optional) enableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\nNote that the OTLP receiver endpoint is automatically enabled if .spec.otlpConfig is defined.\nIt requires Prometheus \u0026gt;= v2.47.0.\nremoteWriteReceiverMessageVersions []RemoteWriteMessageVersion (Optional) remoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the remote writes.\nIt requires Prometheus \u0026gt;= v2.54.0.\nenableFeatures []EnableFeature (Optional) enableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nFor more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\nexternalUrl string (Optional) externalUrl defines the external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\nroutePrefix string (Optional) routePrefix defines the route prefix Prometheus registers HTTP handlers for.\nThis is useful when using spec.externalURL, and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with kubectl proxy.\nstorage StorageSpec (Optional) storage defines the storage used by Prometheus.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes allows the configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts allows the configuration of additional VolumeMounts.\nVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo; container, that are generated as a result of StorageSpec objects.\npersistentVolumeClaimRetentionPolicy Kubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy (Optional) persistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet. The default behavior is all PVCs are retained. This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26. It requires enabling the StatefulSetAutoDeletePVC feature gate.\nweb PrometheusWebSpec (Optional) web defines the configuration of the Prometheus web server.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo;
493 container.\nnodeSelector map[string]string (Optional) nodeSelector defines on which Nodes the Pods are scheduled.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nserviceAccountName string (Optional) serviceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\nautomountServiceAccountToken bool (Optional) automountServiceAccountToken defines whether a service account token should be automatically mounted in the pod. If the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\nWarning: be aware that by default, Prometheus requires the service account token for Kubernetes service discovery. It is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\nsecrets []string (Optional) secrets defines a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named secret-\u0026lt;secret-name\u0026gt;. The Secrets are mounted into /etc/prometheus/secrets/ in the \u0026lsquo;prometheus\u0026rsquo; container.\nconfigMaps []string (Optional) configMaps defines a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named configmap-\u0026lt;configmap-name\u0026gt;. The ConfigMaps are mounted into /etc/prometheus/configmaps/ in the \u0026lsquo;prometheus\u0026rsquo; container.\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines the Pods\u0026rsquo; tolerations if specified.\ntopologySpreadConstraints []TopologySpreadConstraint (Optional) topologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\nremoteWrite []RemoteWriteSpec (Optional) remoteWrite defines the list of remote write configurations.\notlp OTLPConfig (Optional) otlp defines the settings related to the OTLP receiver feature. It requires Prometheus \u0026gt;= v2.55.0.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines the DNS configuration for the pods.\nlistenLocal bool (Optional) listenLocal when true, the Prometheus server listens on the loopback address instead of the Pod IP\u0026rsquo;s address.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * prometheus * config-reloader * thanos-sidecar\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting init
493Containers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch.\nThe names of init container name managed by the operator are: * init-config-reloader.\nOverriding init containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\nadditionalScrapeConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.\napiserverConfig APIServerConfig (Optional) apiserverConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod\u0026rsquo;s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\npriorityClassName string (Optional) priorityClassName assigned to the Pods.\nportName string (Optional) portName used for the pods and governing service. Default: \u0026ldquo;web\u0026rdquo;\narbitraryFSAccessThroughSMs ArbitraryFSAccessThroughSMsConfig (Optional) arbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo; container. When a ServiceMonitor\u0026rsquo;s endpoint specifies a bearerTokenFile value (e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a malicious target can get access to the Prometheus service account\u0026rsquo;s token in the Prometheus\u0026rsquo; scrape request. Setting spec.arbitraryFSAccessThroughSM to \u0026lsquo;true\u0026rsquo; would prevent the attack. Users should instead provide the credentials using the spec.bearerTokenSecret field.\noverrideHonorLabels bool (Optional) overrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data to âexported_â for all targets created from ServiceMonitor, PodMonitor and ScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies. In practice,OverrideHonorLabels:true enforces honorLabels:false for all ServiceMonitor, PodMonitor and ScrapeConfig objects.\noverrideHonorTimestamps bool (Optional) overrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\nignoreNamespaceSelectors bool (Optional) ignoreNamespaceSelectors when true, spec.namespaceSelector from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object.\nenforcedNamespaceLabel string (Optional) enforcedNamespaceLabel when not empty, a label will be added to:\nAll metrics scraped from ServiceMonitor, PodMonitor, Probe and ScrapeConfig objects. All metrics generated from recording rules defined in PrometheusRule objects. All alerts generated from alerting rules defined in PrometheusRule objects. All vector selectors of PromQL expressions defined in PrometheusRule objects. The label will not added for objects referenced in spec.excludedFromEnforcement.\nThe label\u0026rsquo;s name is this field\u0026rsquo;s value. The label\u0026rsquo;s value is the namespace of the ServiceMonitor, PodMonitor, Probe, PrometheusRule or ScrapeConfig object.\nenforcedSampleLimit int64 (Optional) enforcedSampleLimit when defined specifies a global limit on the number of scraped samples that will be accepted. This overrides any spec.sampleLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.sampleLimit is greater than zero and less than spec.enforcedSampleLimit.\nIt is meant to be used by admins to keep the overall number of samples/series under a desired limit.\nWhen both enforcedSampleLimit and sampleLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined sampleLimit value will inherit the global sampleLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedSampleLimit is greater than the sampleLimit, the sampleLimit will be set to enforcedSampleLimit. * Scrape objects with a sampleLimit value less than or equal to enforcedSampleLimit keep their specific value. * Scrape objects with a sampleLimit value greater than enforcedSampleLimit are set to enforcedSampleLimit.\nenforcedTargetLimit int64 (Optional) enforcedTargetLimit when defined specifies a global limit on the number of scraped targets. The value overrides any spec.targetLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.targetLimit is greater than zero and less than spec.enforcedTargetLimit.\nIt is meant to be used by admins to to keep the overall number of targets under a desired limit.\nWhen both enforcedTargetLimit and targetLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined targetLimit value will inherit the global targetLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedTargetLimit is greater than the targetLimit, the targetLimit will be set to enforcedTargetLimit. * Scrape objects with a targetLimit value less than or equal to enforcedTargetLimit keep their specific value. * Scrape objects with a targetLimit value greater than enforcedTargetLimit are set to enforcedTargetLimit.\nenforcedLabelLimit int64 (Optional) enforcedLabelLimit when defined specifies a global limit on the number of labels per sample. The value overrides any spec.labelLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelLimit is greater than zero and less than spec.enforcedLabelLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelLimit and labelLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelLimit value will inherit the global labelLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelLimit is greater than the labelLimit, the labelLimit will be set to enforcedLabelLimit. * Scrape objects with a labelLimit value less than or equal to enforcedLabelLimit keep their specific value. * Scrape objects with a labelLimit value greater than enforcedLabelLimit are set to enforcedLabelLimit.\nenforcedLabelNameLengthLimit int64 (Optional) enforcedLabelNameLengthLimit when defined specifies a global limit on the length of labels name per sample. The value overrides any spec.labelNameLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelNameLengthLimit is greater than zero and less than spec.enforcedLabelNameLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelNameLengthLimit and labelNameLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelNameLengthLimit value will inherit the global labelNameLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelNameLengthLimit is greater than the labelNameLengthLimit, the labelNameLengthLimit will be set to enforcedLabelNameLengthLimit. * Scrape objects with a labelNameLengthLimit value less than or equal to enforcedLabelNameLengthLimit keep their specific value. * Scrape objects with a labelNameLengthLimit value greater than enforcedLabelNameLengthLimit are set to enforcedLabelNameLengthLimit.\nenforcedLabelValueLengthLimit int64 (Optional) enforcedLabelValueLengthLimit when not null defines a global limit on the length of labels value per sample. The value overrides any spec.labelValueLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelValueLengthLimit is greater than zero and less than spec.enforcedLabelValueLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelValueLengthLimit and labelValueLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelValueLengthLimit value will inherit the global labelValueLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelValueLengthLimit is greater than the labelValueLengthLimit, the labelValueLengthLimit will be set to enforcedLabelValueLengthLimit. * Scrape objects with a labelValueLengthLimit value less than or equal to enforcedLabelValueLengthLimit keep their specific value. * Scrape objects with a labelValueLengthLimit value greater than enforcedLabelValueLengthLimit are set to enforcedLabelValueLengthLimit.\nenforcedKeepDroppedTargets int64 (Optional) enforcedKeepDroppedTargets when defined specifies a global limit on the number of targets dropped by relabeling that will be kept in memory. The value overrides any spec.keepDroppedTargets set by ServiceMonitor, PodMonitor, Probe objects unless spec.keepDroppedTargets is greater than zero and less than spec.enforcedKeepDroppedTargets.\nIt requires Prometheus \u0026gt;= v2.47.0.\nWhen both enforcedKeepDroppedTargets and keepDroppedTargets are defined and greater than zero, the following rules apply: * Scrape objects without a defined keepDroppedTargets value will inherit the global keepDroppedTargets value (Prometheus \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedKeepDroppedTargets is greater than the keepDroppedTargets, the keepDroppedTargets will be set to enforcedKeepDroppedTargets. * Scrape objects with a keepDroppedTargets value less than or equal to enforcedKeepDroppedTargets keep their specific value. * Scrape objects with a keepDroppedTargets value greater than enforcedKeepDroppedTargets are set to enforcedKeepDroppedTargets.\nenforcedBodySizeLimit ByteSize (Optional) enforcedBodySizeLimit when defined specifies a global limit on the size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail.\nIt requires Prometheus \u0026gt;
493= v2.28.0.\nWhen both enforcedBodySizeLimit and bodySizeLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined bodySizeLimit value will inherit the global bodySizeLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedBodySizeLimit is greater than the bodySizeLimit, the bodySizeLimit will be set to enforcedBodySizeLimit. * Scrape objects with a bodySizeLimit value less than or equal to enforcedBodySizeLimit keep their specific value. * Scrape objects with a bodySizeLimit value greater than enforcedBodySizeLimit are set to enforcedBodySizeLimit.\nnameValidationScheme NameValidationSchemeOptions (Optional) nameValidationScheme defines the validation scheme for metric and label names.\nIt requires Prometheus \u0026gt;= v2.55.0.\nnameEscapingScheme NameEscapingSchemeOptions (Optional) nameEscapingScheme defines the character escaping scheme that will be requested when scraping for metric and label names that do not conform to the legacy Prometheus character set.\nIt requires Prometheus \u0026gt;= v3.4.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.4.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nIt requires Prometheus \u0026gt;= v3.5.0.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nhostAliases []HostAlias (Optional) hostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s hosts file if specified.\nadditionalArgs []Argument (Optional) additionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\nIt is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version.\nIn case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\nwalCompression bool (Optional) walCompression defines the compression of the write-ahead log (WAL) using Snappy.\nWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\nRequires Prometheus v2.11.0 and above.\nexcludedFromEnforcement []ObjectReference (Optional) excludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin.\nIt is only applicable if spec.enforcedNamespaceLabel set to true.\nhostNetwork bool (Optional) hostNetwork defines the host\u0026rsquo;s network namespace if true.\nMake sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/ ).\nWhen hostNetwork is enabled, this will set the DNS policy to ClusterFirstWithHostNet automatically (unless .spec.DNSPolicy is set to a different value).\npodTargetLabels []string (Optional) podTargetLabels are appended to the spec.podTargetLabels field of all PodMonitor and ServiceMonitor objects.\ntracingConfig TracingConfig (Optional) tracingConfig defines tracing in Prometheus.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nbodySizeLimit ByteSize (Optional) bodySizeLimit defines per-scrape on response body size. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\nlabelLimit int64 (Optional) labelLimit defines per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\nreloadStrategy ReloadStrategyType (Optional) reloadStrategy defines the strategy used to reload the Prometheus configuration. If not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\nmaximumStartupDurationSeconds int32 (Optional) maximumStartupDurationSeconds defines the maximum time that the prometheus container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete. If set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\nscrapeClasses []ScrapeClass (Optional) scrapeClasses defines the list of scrape classes to expose to scraping objects such as PodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nserviceDiscoveryRole ServiceDiscoveryRole (Optional) serviceDiscoveryRole defines the service discovery role used to discover targets from ServiceMonitor objects and Alertmanager endpoints.\nIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
493. If unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\ntsdb TSDBSpec (Optional) tsdb defines the runtime reloadable configuration of the timeseries database(TSDB). It requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\nscrapeFailureLogFile string (Optional) scrapeFailureLogFile defines the file to which scrape failures are logged. Reloading the configuration will reopen the file.\nIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods will mount the file into an emptyDir volume at /var/log/prometheus. If a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you must mount a volume in the specified directory and it must be writable. It requires Prometheus \u0026gt;= v2.55.0.\nserviceName string (Optional) serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named prometheus-operated for Prometheus resources, or prometheus-agent-operated for PrometheusAgent resources. When deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nruntime RuntimeConfig (Optional) runtime defines the values for the Prometheus process behavior\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 600 seconds.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nstatus PrometheusStatus (Optional) status defines the most recent observed status of the Prometheus cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nScrapeConfig ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration.\nField Description apiVersion string monitoring.coreos.com/v1alpha1 kind string ScrapeConfig metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec ScrapeConfigSpec spec defines the specification of ScrapeConfigSpec.\njobName string (Optional) jobName defines the value of the job label assigned to the scraped metrics by default.\nThe job_name field in the rendered scrape configuration is always controlled by the operator to prevent duplicate job names, which Prometheus does not allow. Instead the job label is set by means of relabeling configs.\nstaticConfigs []StaticConfig (Optional) staticConfigs defines a list of static targets with a common label set.\nfileSDConfigs []FileSDConfig (Optional) fileSDConfigs defines a list of file service discovery configurations.\nhttpSDConfigs []HTTPSDConfig (Optional) httpSDConfigs defines a list of HTTP service discovery configurations.\nkubernetesSDConfigs []KubernetesSDConfig (Optional) kubernetesSDConfigs defines a list of Kubernetes service discovery configurations.\nconsulSDConfigs []ConsulSDConfig (Optional) consulSDConfigs defines a list of Consul service discovery configurations.\ndnsSDConfigs []DNSSDConfig (Optional) dnsSDConfigs defines a list of DNS service discovery configurations.\nec2SDConfigs []EC2SDConfig (Optional) ec2SDConfigs defines a list of EC2 service discovery configurations.\nazureSDConfigs []AzureSDConfig (Optional) azureSDConfigs defines a list of Azure service discovery configurations.\ngceSDConfigs []GCESDConfig (Optional) gceSDConfigs defines a list of GCE service discovery configurations.\nopenstackSDConfigs []OpenStackSDConfig (Optional) openstackSDConfigs defines a list of OpenStack service discovery configurations.\ndigitalOceanSDConfigs []DigitalOceanSDConfig (Optional) digitalOceanSDConfigs defines a list of DigitalOcean service discovery configurations.\nkumaSDConfigs []KumaSDConfig (Optional) kumaSDConfigs defines a list of Kuma service discovery configurations.\neurekaSDConfigs []EurekaSDConfig (Optional) eurekaSDConfigs defines a list of Eureka service discovery configurations.\ndockerSDConfigs []DockerSDConfig (Optional) dockerSDConfigs defines a list of Docker service discovery configurations.\nlinodeSDConfigs []LinodeSDConfig (Optional) linodeSDConfigs defines a list of Linode service discovery configurations.\nhetznerSDConfigs []HetznerSDConfig (Optional) hetznerSDConfigs defines a list of Hetzner service discovery configurations.\nnomadSDConfigs []NomadSDConfig (Optional) nomadSDConfigs defines a list of Nomad service discovery configurations.\ndockerSwarmSDConfigs []DockerSwarmSDConfig (Optional) dockerSwarmSDConfigs defines a list of Dockerswarm service discovery configurations.\npuppetDBSDConfigs []PuppetDBSDConfig (Optional) puppetDBSDConfigs defines a list of PuppetDB service discovery configurations.\nlightSailSDConfigs []LightSailSDConfig (Optional) lightSailSDConfigs defines a list of Lightsail service discovery configurations.\novhcloudSDConfigs []OVHCloudSDConfig (Optional) ovhcloudSDConfigs defines a list of OVHcloud service discovery configurations.\nscalewaySDConfigs []ScalewaySDConfig (Optional) scalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.\nionosSDConfigs []IonosSDConfig (Optional) ionosSDConfigs defines a list of IONOS service discovery configurations.\nrelabelings []RelabelConfig (Optional) relabelings defines how to rewrite the target\u0026rsquo;s labels before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job\u0026rsquo;s name is available via the __tmp_prometheus_job_name label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\nmetricsPath string (Optional) metricsPath defines the HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).\nscrapeInterval Duration (Optional) scrapeInterval defines the interval between consecutive scrapes.\nscrapeTimeout Duration (Optional) scrapeTimeout defines the number of seconds to wait until a scrape request times out. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt requires Prometheus \u0026gt;= v3.0.0.\nhonorTimestamps bool (Optional) honorTimestamps defines whether Prometheus preserves the timestamps when exp
493osed by the target.\ntrackTimestampsStaleness bool (Optional) trackTimestampsStaleness defines whether Prometheus tracks staleness of the metrics that have an explicit timestamp present in scraped data. Has no effect if honorTimestamps is false. It requires Prometheus \u0026gt;= v2.48.0.\nhonorLabels bool (Optional) honorLabels defines when true the metric\u0026rsquo;s labels when they collide with the target\u0026rsquo;s labels.\nparams map[string][]string (Optional) params defines optional HTTP URL parameters\nscheme Scheme (Optional) scheme defines the protocol scheme used for requests.\nenableCompression bool (Optional) enableCompression when false, Prometheus will request uncompressed response from the scraped target.\nIt requires Prometheus \u0026gt;= v2.49.0.\nIf unset, Prometheus uses true by default.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request.\nauthorization SafeAuthorization (Optional) authorization defines the header to use on every scrape request.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to use on every scrape request\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted.\nlabelLimit int64 (Optional) labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nbodySizeLimit ByteSize (Optional) bodySizeLimit defines a per-scrape limit on the size of the uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail.\nIt requires Prometheus \u0026gt;= v2.28.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nmetricRelabelings []RelabelConfig (Optional) metricRelabelings defines the metricRelabelings to apply to samples before ingestion.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nnameValidationScheme NameValidationSchemeOptions (Optional) nameValidationScheme defines the validation scheme for metric and label names.\nIt requires Prometheus \u0026gt;= v3.0.0.\nnameEscapingScheme NameEscapingSchemeOptions (Optional) nameEscapingScheme defines the metric name escaping mode to request through content negotiation.\nIt requires Prometheus \u0026gt;= v3.4.0.\nscrapeClass string (Optional) scrapeClass defines the scrape class to apply.\nstatus ConfigResourceStatus (Optional) status defines the status subresource. It is under active development and is updated only when the \u0026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\nMost recent observed status of the ScrapeConfig. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nAlertmanagerConfigSpec (Appears on:AlertmanagerConfig) AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By default, the Alertmanager configuration only applies to alerts for which the namespace label is equal to the namespace of the AlertmanagerConfig resource (see the .spec.alertmanagerConfigMatcherStrategy field of the Alertmanager CRD).\nField Description route Route (Optional) route defines the Alertmanager route definition for alerts matching the resource\u0026rsquo;s namespace. If present, it will be added to the generated Alertmanager configuration as a first-level route.\nreceivers []Receiver (Optional) receivers defines the list of receivers.\ninhibitRules []InhibitRule (Optional) inhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching the resource\u0026rsquo;s namespace.\nmuteTimeIntervals []MuteTimeInterval (Optional) muteTimeIntervals defines the list of MuteTimeInterval specifying when the routes should be muted.\nAttachMetadata (Appears on:KubernetesSDConfig) Field Description node bool (Optional) node attaches node metadata to discovered targets. When set to true, Prometheus must have the get permission on the Nodes objects. Only valid for Pod, Endpoint and Endpointslice roles.\nAuthenticationMethodType (string alias) (Appears on:AzureSDConfig) Value Description \u0026#34;ManagedIdentity\u0026#34;\n\u0026#34;OAuth\u0026#34;\n\u0026#34;SDK\u0026#34;\n\u0026#34;WorkloadIdentity\u0026#34;\nAzureSDConfig (Appears on:ScrapeConfigSpec) AzureSDConfig allow retrieving scrape targets from Azure VMs. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#azure_sd_config\nField Description environment string (Optional) environment defines the Azure environment.\nauthenticationMethod AuthenticationMethodType (Optional) authenticationMethod defines the authentication method, either OAuth or ManagedIdentity or SDK. See https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview SDK authentication method uses environment variables by default. See https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\nsubscriptionID string subscriptionID defines subscription ID. Always required.\ntenantID string (Optional) tenantID defines tenant ID. Only required with the OAuth authentication method.\nclientID string (Optional) clientID defines client ID. Only required with the OAuth authentication method.\nclientSecret Kubernetes core/v1.SecretKeySelector (Optional) clientSecret defines client secret. Only required with the OAuth authentication method.\nresourceGroup string (Optional) resourceGroup defines resource group name. Limits discovery to this resource group. Requires Prometheus v2.35.0 and above\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must instead be specified in the relabeling rule.\nbasicAuth BasicAuth (Optional) basicAuth defines the information to authenticate against the target HTTP endpoint. More info: https://prometheus.io/docs/operating/configuration/#endpoints Cannot be set at the same time as authorization, or oAuth2.\nauthorization SafeAuthorization (Optional) authorization defines the authorization header configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as oAuth2, or basicAuth.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration applying to the target HTTP endpoint.\nConsulSDConfig (Appears on:ScrapeConfigSpec) ConsulSDConfig defines a Consul service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#consul_sd_config\nField Description server string server defines the consul server address. A valid string consisting of a hostname or IP followed by an optional port number.\npathPrefix string (Optional) pathPrefix defines the prefix for URIs for when consul is behind an API gateway (reverse proxy).\nIt requires Prometheus \u0026gt;= 2.45.0.\ntokenRef Kubernetes core/v1.SecretKeySelector (Optional) tokenRef defines the consul ACL TokenRef, if not provided it will use the ACL from the local Consul Agent.\ndatacenter string (Optional) datacenter defines the consul Datacenter name, if not provided it will use the local Consul Agent Datacenter.\nnamespace string (Optional) namespace are only supported in Consul Enterprise.\nIt requires Prometheus \u0026gt;= 2.28.0.\npartition string (Optional) partition defines the admin Partitions are only supported in Consul Enterprise.\nscheme Scheme (Optional) scheme defines the HTTP Scheme.\nservices []string (Optional) services defines a list of services for which targets are retrieved. If omitted, all services are scraped.\ntags []string (Optional) tags defines an optional list of tags used to filter nodes for a given service. Services must contain all tags in the list. Starting with Consul 1.14, it is recommended to use filter with the ServiceTags selector instead.\ntagSeparator string (Optional) tagSeparator defines the string by which Consul tags are joined into the tag label. If unset, Prometheus uses its default value.\nnodeMeta map[string]string (Optional) nodeMeta defines the node metadata key/value pairs to filter nodes for a given service. Starting with Consul 1.14, it is recommended to use filter with the NodeMeta selector instead.\nfilter string (Optional) filter defines the filter expression used to filter the catalog results. See https://developer.hashicorp.com/consul/api-docs/catalog#filtering It requires Prometheus \u0026gt;= 3.0.0.\nhealthFilter string (Optional) healthFilter defines the filter expression used to filter the health results. See https://developer.hashicorp.com/consul/api-docs/health#filtering It requires Prometheus \u0026gt;= 3.11.2.\nallowStale bool (Optional) allowStale Consul results (see https://www.consul.io/api/features/consistency.html). Will reduce load on Consul. If unset, Prometheus uses its default value.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nbasicAuth BasicAuth (Optional) basicAuth defines the information to authenticate against the Consul Server. More info: https://prometheus.io/docs/operating/configuration/#endpoints Cannot be set at the same time as authorization, or oauth2.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Consul Server. Cannot be set at the same time as basicAuth, or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as authorization, or basicAuth.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Consul API.\nDNSRecordType (string alias) (Appears on:DNSSDConfig) Value Description \u0026#34;A\u0026#34;\n\u0026#34;AAAA\u0026#34;\n\u0026#34;MX\u0026#34;\n\u0026#34;NS\u0026#34;\n\u0026#34;SRV\u0026#34;\nDNSSDConfig (Appears on:ScrapeConfigSpec) DNSSDConfig allows specifying a set of DNS domain names which are periodically queried to discover a list of targets. The DNS servers to be contacted are read from /etc/resolv.conf. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dns_sd_config\nField Description names []string names defines a list of DNS domain names to be queried.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\ntype DNSRecordType (Optional) type defines the type of DNS query to perform. One of SRV, A, AAAA, MX or NS. If not set, Prometheus uses its default value.\nWhen set to NS, it requires Prometheus \u0026gt;= v2.49.0. When set to MX, it requires Prometheus \u0026gt;= v2.38.0\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must Ignored for SRV records\nDayOfMonthRange (Appears on:TimeInterval) DayOfMonthRange is an inclusive range of days of the month beginning at 1\nField Description start int (Optional) start of the inclusive range\nend int (Optional) end of the inclusive range\nDigitalOceanSDConfig (Appears on:ScrapeConfigSpec) DigitalOceanSDConfig allow retrieving scrape targets from DigitalOcean\u0026rsquo;s Droplets API. This service discovery uses the public IPv4 address by default, by that can be changed with relabeling See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#digitalocean_sd_config\nField Description authorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the DigitalOcean API. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the DigitalOcean API.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nDiscordConfig (Appears on:Receiver) DiscordConfig configures notifications via Discord. See https://prometheus.io/docs/alerting/latest/configuration/#discord_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL Kubernetes core/v1.SecretKeySelector apiURL defines the secret\u0026rsquo;s key that contains the Discord webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\ntitle string (Optional) title defines the template of the message\u0026rsquo;s title.\nmessage string (Optional) message defines the template of the message\u0026rsquo;s body.\ncontent string (Optional) content defines the template of the content\u0026rsquo;s body.\nusername string (Optional) username defines the username of the message sender.\navatarURL URL (Optional) avatarURL defines the avatar url of the message sender.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration.\nDockerSDConfig (Appears on:ScrapeConfigSpec) Docker SD configurations allow retrieving scrape targets from Docker Engine hosts. This SD discovers \u0026ldquo;containers\u0026rdquo; and will create a target for each network IP and port the container is configured to expose. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#docker_sd_config\nField Description host str
493ing host defines the address of the docker daemon.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Docker daemon.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must\nhostNetworkingHost string (Optional) hostNetworkingHost defines the host to use if the container is in host networking mode.\nmatchFirstNetwork bool (Optional) matchFirstNetwork defines whether to match the first network if the container has multiple networks defined. If unset, Prometheus uses true by default. It requires Prometheus \u0026gt;
493= v2.54.1.\nfilters Filters (Optional) filters defines filters to limit the discovery process to a subset of the available resources.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Docker daemon. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nDockerSwarmRole (string alias) (Appears on:DockerSwarmSDConfig) DockerSwarmRole defines the role of Docker Swarm targets to retrieve.\nValue Description \u0026#34;Nodes\u0026#34;\n\u0026#34;Services\u0026#34;\n\u0026#34;Tasks\u0026#34;\nDockerSwarmSDConfig (Appears on:ScrapeConfigSpec) DockerSwarmSDConfig configurations allow retrieving scrape targets from Docker Swarm engine. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dockerswarm_sd_config\nField Description host string host defines the address of the Docker daemon\nrole DockerSwarmRole role of the targets to retrieve. Must be Services, Tasks, or Nodes.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must tasks and services that don\u0026rsquo;t have published ports.\nfilters Filters (Optional) filters defines the filters to limit the discovery process to a subset of available resources. The available filters are listed in the upstream documentation: Services: https://docs.docker.com/engine/api/v1.40/#operation/ServiceList Tasks: https://docs.docker.com/engine/api/v1.40/#operation/TaskList Nodes: https://docs.docker.com/engine/api/v1.40/#operation/NodeList\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Docker Swarm API. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as authorization, or basicAuth.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Docker Swarm daemon.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nEC2SDConfig (Appears on:ScrapeConfigSpec) EC2SDConfig allow retrieving scrape targets from AWS EC2 instances. The private IP address is used by default, but may be changed to the public IP address with relabeling. The IAM credentials used must have the ec2:DescribeInstances permission to discover scrape targets See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ec2_sd_config\nThe EC2 service discovery requires AWS API keys or role ARN for authentication. BasicAuth, Authorization and OAuth2 fields are not present on purpose.\nField Description region string (Optional) region defines the AWS region.\naccessKey Kubernetes core/v1.SecretKeySelector (Optional) accessKey defines the AWS API key.\nsecretKey Kubernetes core/v1.SecretKeySelector (Optional) secretKey defines the AWS API secret.\nroleARN string (Optional) roleARN defines an alternative to using AWS API keys.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must instead be specified in the relabeling rule.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nfilters Filters (Optional) filters can be used optionally to filter the instance list by other criteria. Available filter criteria can be found here: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html Filter API documentation: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Filter.html It requires Prometheus \u0026gt;= v2.3.0\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the EC2 API. It requires Prometheus \u0026gt;= v2.41.0\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects. It requires Prometheus \u0026gt;= v2.41.0\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2. It requires Prometheus \u0026gt;= v2.41.0\nEmailConfig (Appears on:Receiver) EmailConfig configures notifications via Email.\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nto string (Optional) to defines the email address to send notifications to. This is the recipient address for alert notifications.\nfrom string (Optional) from defines the sender address for email notifications. This appears as the \u0026ldquo;From\u0026rdquo; field in the email header.\nhello string (Optional) hello defines the hostname to identify to the SMTP server. This is used in the SMTP HELO/EHLO command during the connection handshake.\nsmarthost string (Optional) smarthost defines the SMTP host and port through which emails are sent. Format should be \u0026ldquo;hostname:port\u0026rdquo;, e.g. \u0026ldquo;smtp.example.com:587\u0026rdquo;.\nauthUsername string (Optional) authUsername defines the username to use for SMTP authentication. This is used for SMTP AUTH when the server requires authentication.\nauthPassword Kubernetes core/v1.SecretKeySelector (Optional) authPassword defines the secret\u0026rsquo;s key that contains the password to use for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nauthSecret Kubernetes core/v1.SecretKeySelector (Optional) authSecret defines the secret\u0026rsquo;s key that contains the CRAM-MD5 secret. This is used for CRAM-MD5 authentication mechanism. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nauthIdentity string (Optional) authIdentity defines the identity to use for SMTP authentication. This is typically used with PLAIN authentication mechanism.\nheaders []KeyValue (Optional) headers defines additional email header key/value pairs. These override any headers previously set by the notification implementation.\nhtml string (Optional) html defines the HTML body of the email notification. This allows for rich formatting in the email content.\ntext string (Optional) text defines the plain text body of the email notification. This provides a fallback for email clients that don\u0026rsquo;t support HTML.\nrequireTLS bool (Optional) requireTLS defines the SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration for SMTP connections. This includes settings for certificates, CA validation, and TLS protocol options.\nforceImplicitTLS bool (Optional) forceImplicitTLS defines whether to force use of implicit TLS (direct TLS connection) for better security. true: force use of implicit TLS (direct TLS connection on any port) false: force disable implicit TLS (use explicit TLS/STARTTLS if required) nil (default): auto-detect based on port (465=implicit, other=explicit) for backward compatibility It requires Alertmanager \u0026gt;= v0.31.0.\nthreading EmailThreadingConfig (Optional) threading defines the threading configuration for email receiver. It requires Alertmanager \u0026gt;= v0.30.0.\nEmailThreadingConfig (Appears on:EmailConfig) Field Description threadByDate ThreadByDateType threadByDate defines what granularity of current date to thread by. Accepted values: Daily, None. (None means group by alert group key, no date).\nEurekaSDConfig (Appears on:ScrapeConfigSpec) Eureka SD configurations allow retrieving scrape targets using the Eureka REST API. Prometheus will periodically check the REST endpoint and create a target for every app instance. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#eureka_sd_config\nField Description server URL server defines the URL to connect to the Eureka server.\nbasicAuth BasicAuth (Optional) basicAuth defines the BasicAuth information to use on every scrape request.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Eureka server. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Eureka server.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nFileSDConfig (Appears on:ScrapeConfigSpec) FileSDConfig defines a Prometheus file service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config\nField Description files []SDFile files defines the list of files to be used for file discovery. Recommendation: use absolute paths. While relative paths work, the prometheus-operator project makes no guarantees about the working directory where the configuration file is stored. Files must be mounted using Prometheus.ConfigMaps or Prometheus.Secrets.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nFilter Filter name and value pairs to limit the discovery process to a subset of available resources.\nField Description name string name of the Filter.\nvalues []string values defines values to filter on.\nFilters ([]github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1alpha1.Filter alias) (Appears on:DockerSDConfig, DockerSwarmSDConfig, EC2SDConfig) GCESDConfig (Appears on:ScrapeConfigSpec) GCESDConfig configures scrape targets from GCP GCE instances. The private IP address is used by default, but may be changed to the public IP address with relabeling. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#gce_sd_config\nThe GCE service discovery will load the Google Cloud credentials from the file specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable. See https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform\nA pre-requisite for using GCESDConfig is that a Secret containing valid Google Cloud credentials is mounted into the Prometheus or PrometheusAgent pod via the .spec.secrets field and that the GOOGLE_APPLICATION_CREDENTIALS environment variable is set to /etc/prometheus/secrets//.\nField Description project string project defines the Google Cloud Project ID\nzone string zone defines the zone of the scrape targets. If you need multiple zones use multiple GCESDConfigs.\nfilter string (Optional) filter defines the filter that can be used optionally to filter the instance list by other criteria Syntax of this filter is described in the filter query parameter section: https://cloud.google.com/compute/docs/reference/latest/instances/list\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must instead be specified in the relabeling rule.\ntagSeparator string (Optional) tagSeparator defines the tag separator is used to separate the tags on concatenation\nHTTPConfig (Appears on:DiscordConfig, MSTeamsConfig, MSTeamsV2Config, OpsGenieConfig, PagerDutyConfig, PushoverConfig, RocketChatConfig, SNSConfig, SlackConfig, TelegramConfig, VictorOpsConfig, WeChatConfig, WebexConfig, WebhookConfig) HTTPConfig defines a client HTTP configuration. See https://prometheus.io/docs/alerting/latest/configuration/#http_config\nField Description authorization SafeAuthorization (Optional) authorization defines the authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\nbasicAuth BasicAuth (Optional) basicAuth defines the basic authentication credentials for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 client credentials used to fetch a token for the targets. This enables OAuth2 authentication flow for HTTP requests.\nbearerTokenSecret Kubernetes core/v1.SecretKeySelector (Optional) bearerTokenSecret defines the secret\u0026rsquo;s key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration for the client. This includes settings for certificates, CA validation, and TLS protocol options.\nproxyURL string (Optional) proxyURL defines an optional proxy URL for HTTP requests. If defined, this field takes precedence over proxyUrl.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects specifies whether the client should follow HTTP 3xx redirects. When true, the client will automatically follow redirect responses.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\nHTTPSDConfig (Appears on:ScrapeConfigSpec) HTTPSDConfig defines a prometheus HTTP service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config\nField Description url URL url defines the URL from which the targets are fetched.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request. More info: https://prometheus.io/docs/operating/configuration/#endpoints Cannot be set at the same time as authorization, or oAuth2.\nauthorization SafeAuthorization (Optional) authorization defines the authorization header configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as oAuth2, or basicAuth.\noauth2 OAuth2 (Optional) oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as authorization, or basicAuth.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration applying to the target HTTP endpoint.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nHetznerRole (string alias) (Appears on:HetznerSDConfig) HetznerRole defines the Hetzner role of entities that should be discovered.\nValue Description \u0026#34;Hcloud\u0026#34;\n\u0026#34;Robot\u0026#34;\nHetznerSDConfig (Appears on:ScrapeConfigSpec) HetznerSDConfig allow retrieving scrape targets from Hetzner Cloud API and Robot API. This service discovery uses the public IPv4 address by default, but that can be changed with relabeling See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#hetzner_sd_config\nField Description role HetznerRole role defines the Hetzner role of entities that should be discovered.\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Hetzner API. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Hetzner API.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nlabelSelector string (Optional) labelSelector defines the label selector used to filter the servers when fetching them from the API. It requires Prometheus \u0026gt;= v3.5.0.\nInhibitRule (Appears on:AlertmanagerConfigSpec) InhibitRule defines an inhibition rule that allows to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\nField Description targetMatch []Matcher (Optional) targetMatch defines matchers that have to be fulfilled in the alerts to be muted. The operator enforces that the alert matches the resource\u0026rsquo;s namespace. When these conditions are met, matching alerts will be inhibited (silenced).\nsourceMatch []Matcher (Optional) sourceMatch defines matchers for which one or more alerts have to exist for the inhibition to take effect. The operator enforces that the alert matches the resource\u0026rsquo;s namespace. These are the \u0026ldquo;trigger\u0026rdquo; alerts that cause other alerts to be inhibited.\nequal []string (Optional) equal defines labels that must have an equal value in the source and target alert for the inhibition to take effect. This ensures related alerts are properly grouped.\nIonosSDConfig (Appears on:ScrapeConfigSpec) IonosSDConfig configurations allow retrieving scrape targets from IONOS resources. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ionos_sd_config\nField Description datacenterID string datacenterID defines the unique ID of the IONOS data center.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nauthorization SafeAuthorization authorization defines the header configuration to authenticate against the IONOS API. Cannot be set at the same time as oauth2.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the IONOS API.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\nK8SSelectorConfig (Appears on:KubernetesSDConfig) K8SSelectorConfig is Kubernetes Selector Config\nField Description role KubernetesRole role defines the type of Kubernetes resource to limit the service discovery to. Accepted values are: Node, Pod, Endpoints, EndpointSlice, Service, Ingress.\nlabel str
493ing (Optional) label defines an optional label selector to limit the service discovery to resources with specific labels and label values. e.g: node.kubernetes.io/instance-type=master\nfield string (Optional) field defines an optional field selector to limit the service discovery to resources which have fields with specific values. e.g: metadata.name=foobar\nKeyValue (Appears on:EmailConfig, OpsGenieConfig, PagerDutyConfig, VictorOpsConfig) KeyValue defines a (key, value) tuple.\nField Description key string key defines the key of the tuple. This is the identifier or name part of the key-value pair.\nvalue string value defines the value of the tuple. This is the data or content associated with the key.\nKubernetesRole (string alias) (Appears on:K8SSelectorConfig, KubernetesSDConfig) Value Description \u0026#34;Endpoints\u0026#34;\n\u0026#34;EndpointSlice\u0026#34;\n\u0026#34;Ingress\u0026#34;\n\u0026#34;Node\u0026#34;\n\u0026#34;Pod\u0026#34;\n\u0026#34;Service\u0026#34;\nKubernetesSDConfig (Appears on:ScrapeConfigSpec) KubernetesSDConfig allows retrieving scrape targets from Kubernetes\u0026rsquo; REST API. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config\nField Description apiServer string (Optional) apiServer defines the API server address consisting of a hostname or IP address followed by an optional port number. If left empty, Prometheus is assumed to run inside of the cluster. It will discover API servers automatically and use the pod\u0026rsquo;s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\nrole KubernetesRole role defines the Kubernetes role of the entities that should be discovered. Role Endpointslice requires Prometheus \u0026gt;= v2.21.0\nnamespaces NamespaceDiscovery (Optional) namespaces defines the namespace discovery. If omitted, Prometheus discovers targets across all namespaces.\nattachMetadata AttachMetadata (Optional) attachMetadata defines the metadata to attach to discovered targets. It requires Prometheus \u0026gt;= v2.35.0 when using the Pod role and Prometheus \u0026gt;= v2.37.0 for Endpoints and Endpointslice roles.\nselectors []K8SSelectorConfig (Optional) selectors defines the selector to select objects. It requires Prometheus \u0026gt;= v2.17.0\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request. Cannot be set at the same time as authorization, or oauth2.\nauthorization SafeAuthorization (Optional) authorization defines the authorization header to use on every scrape request. Cannot be set at the same time as basicAuth, or oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as authorization, or basicAuth.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Kubernetes API.\nKumaSDConfig (Appears on:ScrapeConfigSpec) KumaSDConfig allow retrieving scrape targets from Kuma\u0026rsquo;s control plane. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kuma_sd_config\nField Description server URL server defines the address of the Kuma Control Plane\u0026rsquo;s MADS xDS server.\nclientID string (Optional) clientID is used by Kuma Control Plane to compute Monitoring Assignment for specific Prometheus backend. It requires Prometheus \u0026gt;= v2.50.0.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nfetchTimeout Duration (Optional) fetchTimeout defines the time after which the monitoring assignments are refreshed.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Kuma control plane.\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Kuma control plane. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nLightSailSDConfig (Appears on:ScrapeConfigSpec) LightSailSDConfig configurations allow retrieving scrape targets from AWS Lightsail instances. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#lightsail_sd_config\nField Description region string (Optional) region defines the AWS region.\naccessKey Kubernetes core/v1.SecretKeySelector (Optional) accessKey defines the AWS API key.\nsecretKey Kubernetes core/v1.SecretKeySelector (Optional) secretKey defines the AWS API secret.\nroleARN string (Optional) roleARN defines the AWS Role ARN, an alternative to using AWS API keys.\nendpoint string (Optional) endpoint defines the custom endpoint to be used.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request. Cannot be set at the same time as authorization, or oauth2.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Lightsail API. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as authorization, or basicAuth.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Lightsail API.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nLinodeSDConfig (Appears on:ScrapeConfigSpec) LinodeSDConfig configurations allow retrieving scrape targets from Linode\u0026rsquo;s Linode APIv4. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#linode_sd_config\nField Description region string (Optional) region defines the region to filter on.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must\ntagSeparator string (Optional) tagSeparator defines the string by which Linode Instance tags are joined into the tag label.el.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Linode API. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as authorization, or basicAuth.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Linode API.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nMSTeamsConfig (Appears on:Receiver) MSTeamsConfig configures notifications via Microsoft Teams. It requires Alertmanager \u0026gt;= 0.26.0.\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nwebhookUrl Kubernetes core/v1.SecretKeySelector webhookUrl defines the MSTeams webhook URL for sending notifications. This is the incoming webhook URL configured in your Teams channel.\ntitle string (Optional) title defines the message title template for Teams notifications. This appears as the main heading of the Teams message card.\nsummary string (Optional) summary defines the message summary template for Teams notifications. This provides a brief overview that appears in Teams notification previews. It requires Alertmanager \u0026gt;= 0.27.0.\ntext string (Optional) text defines the message body template for Teams notifications. This contains the detailed content of the Teams message.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for Teams webhook requests.\nMSTeamsV2Config (Appears on:Receiver) MSTeamsV2Config configures notifications via Microsoft Teams using the new message format with adaptive cards as required by flows. See https://prometheus.io/docs/alerting/latest/configuration/#msteamsv2_config It requires Alertmanager \u0026gt;= 0.28.0.\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nwebhookURL Kubernetes core/v1.SecretKeySelector (Optional) webhookURL defines the MSTeams incoming webhook URL for adaptive card notifications. This webhook must support the newer adaptive cards format required by Teams flows.\ntitle string (Optional) title defines the message title template for adaptive card notifications. This appears as the main heading in the Teams adaptive card.\ntext string (Optional) text defines the message body template for adaptive card notifications. This contains the detailed content displayed in the Teams adaptive card format.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for Teams webhook requests.\nMatchType (string alias) (Appears on:Matcher) MatchType is a comparison operator on a Matcher\nValue Description \u0026#34;=\u0026#34;\n\u0026#34;!=\u0026#34;\n\u0026#34;!~\u0026#34;\n\u0026#34;=~\u0026#34;\nMatcher (Appears on:InhibitRule, Route) Matcher defines how to match on alert\u0026rsquo;s labels.\nField Description name string name defines the label to match. This specifies which alert label should be evaluated.\nvalue string (Optional) value defines the label value to match. This is the expected value for the specified label.\nmatchType MatchType (Optional) matchType defines the match operation available with AlertManager \u0026gt;= v0.22.0. Takes precedence over Regex (deprecated) if non-empty. Valid values: \u0026ldquo;=\u0026rdquo; (equality), \u0026ldquo;!=\u0026rdquo; (inequality), \u0026ldquo;=~\u0026rdquo; (regex match), \u0026ldquo;!~\u0026rdquo; (regex non-match).\nregex bool (Optional) regex defines whether to match on equality (false) or regular-expression (true). Deprecated: for AlertManager \u0026gt;= v0.22.0, matchType should be used instead.\nMonth (string alias) Month of the year\nValue Description \u0026#34;april\u0026#34;\n\u0026#34;
493august\u0026#34;\n\u0026#34;december\u0026#34;\n\u0026#34;february\u0026#34;\n\u0026#34;january\u0026#34;\n\u0026#34;july\u0026#34;\n\u0026#34;june\u0026#34;\n\u0026#34;march\u0026#34;\n\u0026#34;may\u0026#34;\n\u0026#34;november\u0026#34;\n\u0026#34;october\u0026#34;\n\u0026#34;september\u0026#34;\nMonthRange (string alias) (Appears on:TimeInterval) MonthRange is an inclusive range of months of the year beginning in January Months can be specified by name (e.g \u0026lsquo;January\u0026rsquo;) by numerical month (e.g \u0026lsquo;1\u0026rsquo;) or as an inclusive range (e.g \u0026lsquo;January:March\u0026rsquo;, \u0026lsquo;1:3\u0026rsquo;, \u0026lsquo;1:March\u0026rsquo;)\nMuteTimeInterval (Appears on:AlertmanagerConfigSpec) MuteTimeInterval specifies the periods in time when notifications will be muted\nField Description name string name of the time interval\ntimeIntervals []TimeInterval (Optional) timeIntervals defines a list of TimeInterval\nNamespaceDiscovery (Appears on:KubernetesSDConfig) NamespaceDiscovery is the configuration for discovering Kubernetes namespaces.\nField Description ownNamespace bool (Optional) ownNamespace includes the namespace in which the Prometheus pod runs to the list of watched namespaces.\nnames []string (Optional) names defines a list of namespaces where to watch for resources. If empty and ownNamespace isn\u0026rsquo;t true, Prometheus watches for resources in all namespaces.\nNomadSDConfig (Appears on:ScrapeConfigSpec) NomadSDConfig configurations allow retrieving scrape targets from Nomad\u0026rsquo;s Service API. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#nomad_sd_config\nField Description allowStale bool (Optional) allowStale defines the information to access the Nomad API. It is to be defined as the Nomad documentation requires.\nnamespace string (Optional) namespace defines the Nomad namespace to query for service discovery. When specified, only resources within this namespace will be discovered.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nregion string (Optional) region defines the Nomad region to query for service discovery. When specified, only resources within this region will be discovered.\nserver URL server defines the Nomad server address to connect to for service discovery. This should be the full URL including protocol (e.g., \u0026ldquo;https://nomad.example.com:4646\u0026rdquo;).\ntagSeparator string (Optional) tagSeparator defines the separator used to join multiple tags. This determines how Nomad service tags are concatenated into Prometheus labels.\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the Nomad API. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Nomad API.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nOVHCloudSDConfig (Appears on:ScrapeConfigSpec) OVHCloudSDConfig configurations allow retrieving scrape targets from OVHcloud\u0026rsquo;s dedicated servers and VPS using their API. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ovhcloud_sd_config\nField Description applicationKey string applicationKey defines the access key to use for OVHCloud API authentication. This is obtained from the OVHCloud API credentials at https://api.ovh.com.\napplicationSecret Kubernetes core/v1.SecretKeySelector applicationSecret defines the secret key for OVHCloud API authentication. This contains the application secret obtained during OVHCloud API credential creation.\nconsumerKey Kubernetes core/v1.SecretKeySelector consumerKey defines the consumer key for OVHCloud API authentication. This is the third component of OVHCloud\u0026rsquo;s three-key authentication system.\nservice OVHService service defines the service type of the targets to retrieve. Must be either VPS or DedicatedServer to specify which OVHCloud resources to discover.\nendpoint string (Optional) endpoint defines a custom API endpoint to be used. When not specified, defaults to the standard OVHCloud API endpoint for the region.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nOVHService (string alias) (Appears on:OVHCloudSDConfig) Service of the targets to retrieve. Must be VPS or DedicatedServer.\nValue Description \u0026#34;DedicatedServer\u0026#34;\n\u0026#34;VPS\u0026#34;\nOpenStackAvailability (string alias) (Appears on:OpenStackSDConfig) OpenStackAvailability defines the availability of the endpoint to connect to.\nValue Description \u0026#34;Admin\u0026#34;\n\u0026#34;Internal\u0026#34;\n\u0026#34;Public\u0026#34;\nOpenStackRole (string alias) (Appears on:OpenStackSDConfig) Value Description \u0026#34;Hypervisor\u0026#34;\n\u0026#34;Instance\u0026#34;\n\u0026#34;LoadBalancer\u0026#34;\nOpenStackSDConfig (Appears on:ScrapeConfigSpec) OpenStackSDConfig allow retrieving scrape targets from OpenStack Nova instances. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#openstack_sd_config\nField Description role OpenStackRole role defines the OpenStack role of entities that should be discovered.\nNote: The LoadBalancer role requires Prometheus \u0026gt;= v3.2.0.\nregion string region defines the OpenStack Region.\nidentityEndpoint URL (Optional) identityEndpoint defines the HTTP endpoint that is required to work with the Identity API of the appropriate version.\nusername string (Optional) username defines the username required if using Identity V2 API. Consult with your provider\u0026rsquo;s control panel to discover your account\u0026rsquo;s username. In Identity V3, either userid or a combination of username and domainId or domainName are needed\nuserid string (Optional) userid defines the OpenStack userid.\npassword Kubernetes core/v1.SecretKeySelector (Optional) password defines the password for the Identity V2 and V3 APIs. Consult with your provider\u0026rsquo;s control panel to discover your account\u0026rsquo;s preferred method of authentication.\ndomainName string (Optional) domainName defines at most one of domainId and domainName that must be provided if using username with Identity V3. Otherwise, either are optional.\ndomainID string (Optional) domainID defines The OpenStack domainID.\nprojectName string (Optional) projectName defines an optional field for the Identity V2 API. Some providers allow you to specify a ProjectName instead of the ProjectId. Some require both. Your provider\u0026rsquo;s authentication policies will determine how these fields influence authentication.\nprojectID string (Optional) projectID defines the OpenStack projectID.\napplicationCredentialName string (Optional) applicationCredentialName defines the ApplicationCredentialID or ApplicationCredentialName fields are required if using an application credential to authenticate. Some providers allow you to create an application credential to authenticate rather than a password.\napplicationCredentialId string (Optional) applicationCredentialId defines the OpenStack applicationCredentialId.\napplicationCredentialSecret Kubernetes core/v1.SecretKeySelector (Optional) applicationCredentialSecret defines the required field if using an application credential to authenticate.\nallTenants bool (Optional) allTenants defines whether the service discovery should list all instances for all projects. It is only relevant for the \u0026lsquo;instance\u0026rsquo; role and usually requires admin permissions.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must instead be specified in the relabeling rule.\navailability OpenStackAvailability (Optional) availability defines the availability of the endpoint to connect to.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration applying to the target HTTP endpoint.\nOpsGenieConfig (Appears on:Receiver) OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiKey Kubernetes core/v1.SecretKeySelector (Optional) apiKey defines the secret\u0026rsquo;s key that contains the OpsGenie API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\napiURL URL (Optional) apiURL defines the URL to send OpsGenie API requests to. When not specified, defaults to the standard OpsGenie API endpoint.\nmessage string (Optional) message defines the alert text limited to 130 characters. This appears as the main alert title in OpsGenie.\ndescription string (Optional) description defines the detailed description of the incident. This provides additional context beyond the message field.\nsource string (Optional) source defines the backlink to the sender of the notification. This helps identify where the alert originated from.\ntags string (Optional) tags defines a comma separated list of tags attached to the notifications. These help categorize and filter alerts within OpsGenie.\nnote string (Optional) note defines an additional alert note. This provides supplementary information about the alert.\npriority string (Optional) priority defines the priority level of alert. Possible values are P1, P2, P3, P4, and P5, where P1 is highest priority.\nupdateAlerts bool (Optional) updateAlerts defines Whether to update message and description of the alert in OpsGenie if it already exists By default, the alert is never updated in OpsGenie, the new message only appears in activity log.\ndetails []KeyValue (Optional) details defines a set of arbitrary key/value pairs that provide further detail about the incident. These appear as additional fields in the OpsGenie alert.\nresponders []OpsGenieConfigResponder (Optional) responders defines the list of responders responsible for notifications. These determine who gets notified when the alert is created.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for OpsGenie API requests.\nentity string (Optional) entity defines an optional field that can be used to specify which domain alert is related to. This helps group related alerts together in OpsGenie.\nactions string (Optional) actions defines a comma separated list of actions that will be available for the alert. These appear as action buttons in the OpsGenie interface.\nOpsGenieConfigResponder (Appears on:OpsGenieConfig) OpsGenieConfigResponder defines a responder to an incident. One of id, name or username has to be defined.\nField Description id string (Optional) id defines the unique identifier of the responder. This corresponds to the responder\u0026rsquo;s ID within OpsGenie.\nname string (Optional) name defines the display name of the responder. This is used when the responder is identified by name rather than ID.\nusername string (Optional) username defines the username of the responder. This is typically used for user-type responders when identifying by username.\ntype string type defines the type of responder. Valid values include \u0026ldquo;user\u0026rdquo;, \u0026ldquo;team\u0026rdquo;, \u0026ldquo;schedule\u0026rdquo;, and \u0026ldquo;escalation\u0026rdquo;. This determines how OpsGenie interprets the other identifier fields.\nPagerDutyConfig (Appears on:Receiver) PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nroutingKey Kubernetes core/v1.SecretKeySelector (Optional) routingKey defines the secret\u0026rsquo;s key that contains the PagerDuty integration key (when using Events API v2). Either this field or serviceKey needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nserviceKey Kubernetes core/v1.SecretKeySelector (Optional) serviceKey defines the secret\u0026rsquo;s key that contains the PagerDuty service key (when using integration type \u0026ldquo;Prometheus\u0026rdquo;). Either this field or routingKey needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nurl URL (Optional) url defines the URL to send requests to.\nclient string (Optional) client defines the client identification.\nclientURL string (Optional) clientURL defines the backlink to the sender of notification.\ndescription string (Optional) description of the incident.\nseverity string (Optional) severity of the incident.\nclass string (Optional) class defines the class/type of the event.\ngroup string (Optional) group defines a cluster or grouping of sources.\ncomponent string (Optional) component defines the part or component of the affected system that is broken.\ndetails []KeyValue (Optional) details defines the arbitrary key/value pairs that provide further detail about the incident.\npagerDutyImageConfigs []PagerDutyImageConfig (Optional) pagerDutyImageConfigs defines a list of image details to attach that provide further detail about an incident.\npagerDutyLinkConfigs []PagerDutyLinkConfig (Optional) pagerDutyLinkConfigs defines a list of link details to attach that provide further detail about an incident.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration.\nsource string (Optional) source defines the unique location of the affected system.\ntimeout Duration (Optional) timeout is the maximum time allowed to invoke the pagerduty It requires Alertmanager \u0026gt;= v0.30.0.\nPagerDutyImageConfig (Appears on:PagerDutyConfig) PagerDutyImageConfig attaches images to an incident\nField Description src string (Optional) src of the image being attached to the incident\nhref string (Optional) href defines the optional URL; makes the image a clickable link.\nalt string (Optional) alt is the optional alternative text for the image.\nPagerDutyLinkConfig (Appears on:PagerDutyConfig) PagerDutyLinkConfig attaches text links to an incident\nField Description href string (Optional) href defines the URL of the link to be attached\nalt string (Optional) alt defines the text that describes the purpose of the link, and can be used as the link\u0026rsquo;s text.\nParsedRange ParsedRange is an integer representation of a range\nField Description start int (Optional) start defines the beginning of the range\nend int (Optional) end defines the end of the range\nPrometheusAgentMode (string alias) (Appears on:PrometheusAgentSpec) Value Description \u0026#34;DaemonSet\u
4930026#34;\nDeploys PrometheusAgent as DaemonSet.\n\u0026#34;StatefulSet\u0026#34;\nDeploys PrometheusAgent as StatefulSet.\nPrometheusAgentSpec (Appears on:PrometheusAgent) PrometheusAgentSpec is a specification of the desired behavior of the Prometheus agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nField Description mode PrometheusAgentMode (Optional) mode defines how the Prometheus operator deploys the PrometheusAgent pod(s).\n(Alpha) Using this field requires the PrometheusAgentDaemonSet feature gate to be enabled.\npodMetadata EmbeddedObjectMetadata (Optional) podMetadata defines labels and annotations which are propagated to the Prometheus pods.\nThe following items are reserved and cannot be overridden: * \u0026ldquo;prometheus\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/instance\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;app.kubernetes.io/managed-by\u0026rdquo; label, set to \u0026ldquo;prometheus-operator\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/name\u0026rdquo; label, set to \u0026ldquo;prometheus\u0026rdquo;. * \u0026ldquo;app.kubernetes.io/version\u0026rdquo; label, set to the Prometheus version. * \u0026ldquo;operator.prometheus.io/name\u0026rdquo; label, set to the name of the Prometheus object. * \u0026ldquo;operator.prometheus.io/shard\u0026rdquo; label, set to the shard number of the Prometheus object. * \u0026ldquo;kubectl.kubernetes.io/default-container\u0026rdquo; annotation, set to \u0026ldquo;prometheus\u0026rdquo;.\nserviceMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nserviceMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) serviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\npodMonitorSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\npodMonitorNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) podMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector (default value) matches the current namespace only.\nprobeSelector Kubernetes meta/v1.LabelSelector (Optional) probeSelector defines the probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nprobeNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) probeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nscrapeConfigSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects.\nIf spec.serviceMonitorSelector, spec.podMonitorSelector, spec.probeSelector and spec.scrapeConfigSelector are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration\u0026rsquo;s Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the prometheus.yaml.gz key. This behavior is deprecated and will be removed in the next major version of the custom resource definition. It is recommended to use spec.additionalScrapeConfigs instead.\nNote that the ScrapeConfig custom resource definition is currently at Alp
493ha level and will be graduated to Beta in a future release.\nscrapeConfigNamespaceSelector Kubernetes meta/v1.LabelSelector (Optional) scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\nNote that the ScrapeConfig custom resource definition is currently at Alpha level and will be graduated to Beta in a future release.\nversion string (Optional) version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files.\nIf not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\npaused bool (Optional) paused defines when a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\nimage string (Optional) image defines the container image name for Prometheus. If specified, it takes precedence over the spec.baseImage, spec.tag and spec.sha fields.\nSpecifying spec.version is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured.\nIf neither spec.image nor spec.baseImage are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\nimagePullPolicy Kubernetes core/v1.PullPolicy (Optional) imagePullPolicy defines the image pull policy for the \u0026lsquo;prometheus\u0026rsquo;, \u0026lsquo;init-config-reloader\u0026rsquo; and \u0026lsquo;config-reloader\u0026rsquo; containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\nimagePullSecrets []Kubernetes core/v1.LocalObjectReference (Optional) imagePullSecrets defines an optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\nreplicas int32 (Optional) replicas defines the number of replicas of each shard to deploy for a Prometheus deployment. spec.replicas multiplied by spec.shards is the total number of Pods created.\nDefault: 1\nshards int32 (Optional) shards defines the number of shards to distribute the scraped targets onto.\nspec.replicas multiplied by spec.shards is the total number of Pods being created.\nWhen not defined, the operator assumes only one shard.\nNote that scaling down shards will not reshard data onto the remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use either * Thanos sidecar + querier for query federation and Thanos Ruler for rules. * Remote-write to send metrics to a central location.\nBy default, the sharding of targets is performed on: * The __address__ target\u0026rsquo;s metadata label for PodMonitor, ServiceMonitor and ScrapeConfig resources. * The __param_target__ label for Probe resources.\nUsers can define their own sharding implementation by setting the __tmp_hash label during the target discovery with relabeling configuration (either in the monitoring resources or via scrape class).\nYou can also disable sharding on a specific target by setting the __tmp_disable_sharding label with relabeling configuration. When the label value isn\u0026rsquo;t empty, all Prometheus shards will scrape the target.\nDefault: 1\nshardingStrategy ShardingStrategy (Optional) shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\nWhen not defined, the operator defaults to the \u0026lsquo;Address\u0026rsquo; mode which distributes targets based on a hash of the target address.\nreplicaExternalLabelName string (Optional) replicaExternalLabelName defines the name of Prometheus external label used to denote the replica name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus_replica\u0026rdquo;\nprometheusExternalLabelName string (Optional) prometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance name. The external label will not be added when the field is set to the empty string (\u0026quot;\u0026quot;).\nDefault: \u0026ldquo;prometheus\u0026rdquo;\nlogLevel string (Optional) logLevel for Prometheus and the config-reloader sidecar.\nlogFormat str
493ing (Optional) logFormat for Log level for Prometheus and the config-reloader sidecar.\nscrapeInterval Duration (Optional) scrapeInterval defines interval between consecutive scrapes.\nDefault: \u0026ldquo;30s\u0026rdquo;\nscrapeTimeout Duration (Optional) scrapeTimeout defines the number of seconds to wait until a scrape request times out. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nPrometheusText1.0.0 requires Prometheus \u0026gt;= v3.0.0.\nexternalLabels map[string]string (Optional) externalLabels defines the labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by spec.replicaExternalLabelName and spec.prometheusExternalLabelName take precedence over this list.\nenableRemoteWriteReceiver bool (Optional) enableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote write protocol.\nWARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\nIt requires Prometheus \u0026gt;= v2.33.0.\nenableOTLPReceiver bool (Optional) enableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\nNote that the OTLP receiver endpoint is automatically enabled if .spec.otlpConfig is defined.\nIt requires Prometheus \u0026gt;= v2.47.0.\nremoteWriteReceiverMessageVersions []RemoteWriteMessageVersion (Optional) remoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the remote writes.\nIt requires Prometheus \u0026gt;= v2.54.0.\nenableFeatures []EnableFeature (Optional) enableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\nEnabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\nFor more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\nexternalUrl string (Optional) externalUrl defines the external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\nroutePrefix string (Optional) routePrefix defines the route prefix Prometheus registers HTTP handlers for.\nThis is useful when using spec.externalURL, and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with kubectl proxy.\nstorage StorageSpec (Optional) storage defines the storage used by Prometheus.\nvolumes []Kubernetes core/v1.Volume (Optional) volumes allows the configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\nvolumeMounts []Kubernetes core/v1.VolumeMount (Optional) volumeMounts allows the configuration of additional VolumeMounts.\nVolumeMounts will be appended to other VolumeMounts in the \u0026lsquo;prometheus\u0026rsquo; container, that are generated as a result of StorageSpec objects.\npersistentVolumeClaimRetentionPolicy Kubernetes apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy (Optional) persistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet. The default behavior is all PVCs are retained. This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26. It requires enabling the StatefulSetAutoDeletePVC feature gate.\nweb PrometheusWebSpec (Optional) web defines the configuration of the Prometheus web server.\nresources Kubernetes core/v1.ResourceRequirements (Optional) resources defines the resources requests and limits of the \u0026lsquo;prometheus\u0026rsquo;
493 container.\nnodeSelector map[string]string (Optional) nodeSelector defines on which Nodes the Pods are scheduled.\nschedulerName string (Optional) schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\nserviceAccountName string (Optional) serviceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\nautomountServiceAccountToken bool (Optional) automountServiceAccountToken defines whether a service account token should be automatically mounted in the pod. If the field isn\u0026rsquo;t set, the operator mounts the service account token by default.\nWarning: be aware that by default, Prometheus requires the service account token for Kubernetes service discovery. It is possible to use strategic merge patch to project the service account token into the \u0026lsquo;prometheus\u0026rsquo; container.\nsecrets []string (Optional) secrets defines a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named secret-\u0026lt;secret-name\u0026gt;. The Secrets are mounted into /etc/prometheus/secrets/ in the \u0026lsquo;prometheus\u0026rsquo; container.\nconfigMaps []string (Optional) configMaps defines a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named configmap-\u0026lt;configmap-name\u0026gt;. The ConfigMaps are mounted into /etc/prometheus/configmaps/ in the \u0026lsquo;prometheus\u0026rsquo; container.\naffinity Kubernetes core/v1.Affinity (Optional) affinity defines the Pods\u0026rsquo; affinity scheduling rules if specified.\ntolerations []Kubernetes core/v1.Toleration (Optional) tolerations defines the Pods\u0026rsquo; tolerations if specified.\ntopologySpreadConstraints []TopologySpreadConstraint (Optional) topologySpreadConstraints defines the pod\u0026rsquo;s topology spread constraints if specified.\nremoteWrite []RemoteWriteSpec (Optional) remoteWrite defines the list of remote write configurations.\notlp OTLPConfig (Optional) otlp defines the settings related to the OTLP receiver feature. It requires Prometheus \u0026gt;= v2.55.0.\nsecurityContext Kubernetes core/v1.PodSecurityContext (Optional) securityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\ndnsPolicy DNSPolicy (Optional) dnsPolicy defines the DNS policy for the pods.\ndnsConfig PodDNSConfig (Optional) dnsConfig defines the DNS configuration for the pods.\nlistenLocal bool (Optional) listenLocal when true, the Prometheus server listens on the loopback address instead of the Pod IP\u0026rsquo;s address.\npodManagementPolicy PodManagementPolicyType (Optional) podManagementPolicy defines the policy for creating/deleting pods when scaling up and down.\nUnlike the default StatefulSet behavior, the default policy is Parallel to avoid manual intervention in case a pod gets stuck during a rollout.\nNote that updating this value implies the recreation of the StatefulSet which incurs a service outage.\nupdateStrategy StatefulSetUpdateStrategy (Optional) updateStrategy indicates the strategy that will be employed to update Pods in the StatefulSet when a revision is made to statefulset\u0026rsquo;s Pod Template.\nThe default strategy is RollingUpdate.\nenableServiceLinks bool (Optional) enableServiceLinks defines whether information about services should be injected into pod\u0026rsquo;s environment variables\ncontainers []Kubernetes core/v1.Container (Optional) containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch.\nThe names of containers managed by the operator are: * prometheus * config-reloader * thanos-sidecar\nOverriding containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\ninitContainers []Kubernetes core/v1.Container (Optional) initContainers allows injecting init
493Containers to the Pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch.\nThe names of init container name managed by the operator are: * init-config-reloader.\nOverriding init containers which are managed by the operator require careful testing, especially when upgrading to a new version of the operator.\nadditionalScrapeConfigs Kubernetes core/v1.SecretKeySelector (Optional) additionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.\napiserverConfig APIServerConfig (Optional) apiserverConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod\u0026rsquo;s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\npriorityClassName string (Optional) priorityClassName assigned to the Pods.\nportName string (Optional) portName used for the pods and governing service. Default: \u0026ldquo;web\u0026rdquo;\narbitraryFSAccessThroughSMs ArbitraryFSAccessThroughSMsConfig (Optional) arbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the \u0026lsquo;prometheus\u0026rsquo; container. When a ServiceMonitor\u0026rsquo;s endpoint specifies a bearerTokenFile value (e.g. \u0026lsquo;/var/run/secrets/kubernetes.io/serviceaccount/token\u0026rsquo;), a malicious target can get access to the Prometheus service account\u0026rsquo;s token in the Prometheus\u0026rsquo; scrape request. Setting spec.arbitraryFSAccessThroughSM to \u0026lsquo;true\u0026rsquo; would prevent the attack. Users should instead provide the credentials using the spec.bearerTokenSecret field.\noverrideHonorLabels bool (Optional) overrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data to âexported_â for all targets created from ServiceMonitor, PodMonitor and ScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies. In practice,OverrideHonorLabels:true enforces honorLabels:false for all ServiceMonitor, PodMonitor and ScrapeConfig objects.\noverrideHonorTimestamps bool (Optional) overrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\nignoreNamespaceSelectors bool (Optional) ignoreNamespaceSelectors when true, spec.namespaceSelector from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object.\nenforcedNamespaceLabel string (Optional) enforcedNamespaceLabel when not empty, a label will be added to:\nAll metrics scraped from ServiceMonitor, PodMonitor, Probe and ScrapeConfig objects. All metrics generated from recording rules defined in PrometheusRule objects. All alerts generated from alerting rules defined in PrometheusRule objects. All vector selectors of PromQL expressions defined in PrometheusRule objects. The label will not added for objects referenced in spec.excludedFromEnforcement.\nThe label\u0026rsquo;s name is this field\u0026rsquo;s value. The label\u0026rsquo;s value is the namespace of the ServiceMonitor, PodMonitor, Probe, PrometheusRule or ScrapeConfig object.\nenforcedSampleLimit int64 (Optional) enforcedSampleLimit when defined specifies a global limit on the number of scraped samples that will be accepted. This overrides any spec.sampleLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.sampleLimit is greater than zero and less than spec.enforcedSampleLimit.\nIt is meant to be used by admins to keep the overall number of samples/series under a desired limit.\nWhen both enforcedSampleLimit and sampleLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined sampleLimit value will inherit the global sampleLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedSampleLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedSampleLimit is greater than the sampleLimit, the sampleLimit will be set to enforcedSampleLimit. * Scrape objects with a sampleLimit value less than or equal to enforcedSampleLimit keep their specific value. * Scrape objects with a sampleLimit value greater than enforcedSampleLimit are set to enforcedSampleLimit.\nenforcedTargetLimit int64 (Optional) enforcedTargetLimit when defined specifies a global limit on the number of scraped targets. The value overrides any spec.targetLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.targetLimit is greater than zero and less than spec.enforcedTargetLimit.\nIt is meant to be used by admins to to keep the overall number of targets under a desired limit.\nWhen both enforcedTargetLimit and targetLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined targetLimit value will inherit the global targetLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedTargetLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedTargetLimit is greater than the targetLimit, the targetLimit will be set to enforcedTargetLimit. * Scrape objects with a targetLimit value less than or equal to enforcedTargetLimit keep their specific value. * Scrape objects with a targetLimit value greater than enforcedTargetLimit are set to enforcedTargetLimit.\nenforcedLabelLimit int64 (Optional) enforcedLabelLimit when defined specifies a global limit on the number of labels per sample. The value overrides any spec.labelLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelLimit is greater than zero and less than spec.enforcedLabelLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelLimit and labelLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelLimit value will inherit the global labelLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelLimit is greater than the labelLimit, the labelLimit will be set to enforcedLabelLimit. * Scrape objects with a labelLimit value less than or equal to enforcedLabelLimit keep their specific value. * Scrape objects with a labelLimit value greater than enforcedLabelLimit are set to enforcedLabelLimit.\nenforcedLabelNameLengthLimit int64 (Optional) enforcedLabelNameLengthLimit when defined specifies a global limit on the length of labels name per sample. The value overrides any spec.labelNameLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelNameLengthLimit is greater than zero and less than spec.enforcedLabelNameLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelNameLengthLimit and labelNameLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelNameLengthLimit value will inherit the global labelNameLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelNameLengthLimit is greater than the labelNameLengthLimit, the labelNameLengthLimit will be set to enforcedLabelNameLengthLimit. * Scrape objects with a labelNameLengthLimit value less than or equal to enforcedLabelNameLengthLimit keep their specific value. * Scrape objects with a labelNameLengthLimit value greater than enforcedLabelNameLengthLimit are set to enforcedLabelNameLengthLimit.\nenforcedLabelValueLengthLimit int64 (Optional) enforcedLabelValueLengthLimit when not null defines a global limit on the length of labels value per sample. The value overrides any spec.labelValueLengthLimit set by ServiceMonitor, PodMonitor, Probe objects unless spec.labelValueLengthLimit is greater than zero and less than spec.enforcedLabelValueLengthLimit.\nIt requires Prometheus \u0026gt;= v2.27.0.\nWhen both enforcedLabelValueLengthLimit and labelValueLengthLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined labelValueLengthLimit value will inherit the global labelValueLengthLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedLabelValueLengthLimit is greater than the labelValueLengthLimit, the labelValueLengthLimit will be set to enforcedLabelValueLengthLimit. * Scrape objects with a labelValueLengthLimit value less than or equal to enforcedLabelValueLengthLimit keep their specific value. * Scrape objects with a labelValueLengthLimit value greater than enforcedLabelValueLengthLimit are set to enforcedLabelValueLengthLimit.\nenforcedKeepDroppedTargets int64 (Optional) enforcedKeepDroppedTargets when defined specifies a global limit on the number of targets dropped by relabeling that will be kept in memory. The value overrides any spec.keepDroppedTargets set by ServiceMonitor, PodMonitor, Probe objects unless spec.keepDroppedTargets is greater than zero and less than spec.enforcedKeepDroppedTargets.\nIt requires Prometheus \u0026gt;= v2.47.0.\nWhen both enforcedKeepDroppedTargets and keepDroppedTargets are defined and greater than zero, the following rules apply: * Scrape objects without a defined keepDroppedTargets value will inherit the global keepDroppedTargets value (Prometheus \u0026gt;= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedKeepDroppedTargets is greater than the keepDroppedTargets, the keepDroppedTargets will be set to enforcedKeepDroppedTargets. * Scrape objects with a keepDroppedTargets value less than or equal to enforcedKeepDroppedTargets keep their specific value. * Scrape objects with a keepDroppedTargets value greater than enforcedKeepDroppedTargets are set to enforcedKeepDroppedTargets.\nenforcedBodySizeLimit ByteSize (Optional) enforcedBodySizeLimit when defined specifies a global limit on the size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail.\nIt requires Prometheus \u0026gt;
493= v2.28.0.\nWhen both enforcedBodySizeLimit and bodySizeLimit are defined and greater than zero, the following rules apply: * Scrape objects without a defined bodySizeLimit value will inherit the global bodySizeLimit value (Prometheus \u0026gt;= 2.45.0) or the enforcedBodySizeLimit value (Prometheus \u0026lt; v2.45.0). If Prometheus version is \u0026gt;= 2.45.0 and the enforcedBodySizeLimit is greater than the bodySizeLimit, the bodySizeLimit will be set to enforcedBodySizeLimit. * Scrape objects with a bodySizeLimit value less than or equal to enforcedBodySizeLimit keep their specific value. * Scrape objects with a bodySizeLimit value greater than enforcedBodySizeLimit are set to enforcedBodySizeLimit.\nnameValidationScheme NameValidationSchemeOptions (Optional) nameValidationScheme defines the validation scheme for metric and label names.\nIt requires Prometheus \u0026gt;= v2.55.0.\nnameEscapingScheme NameEscapingSchemeOptions (Optional) nameEscapingScheme defines the character escaping scheme that will be requested when scraping for metric and label names that do not conform to the legacy Prometheus character set.\nIt requires Prometheus \u0026gt;= v3.4.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\nIt requires Prometheus \u0026gt;= v3.4.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nIt requires Prometheus \u0026gt;= v3.5.0.\nminReadySeconds int32 (Optional) minReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready without any of its container crashing for it to be considered available.\nIf unset, pods will be considered available as soon as they are ready.\nhostAliases []HostAlias (Optional) hostAliases defines the optional list of hosts and IPs that will be injected into the Pod\u0026rsquo;s hosts file if specified.\nadditionalArgs []Argument (Optional) additionalArgs allows setting additional arguments for the \u0026lsquo;prometheus\u0026rsquo; container.\nIt is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version.\nIn case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\nwalCompression bool (Optional) walCompression defines the compression of the write-ahead log (WAL) using Snappy.\nWAL compression is enabled by default for Prometheus \u0026gt;= 2.20.0\nRequires Prometheus v2.11.0 and above.\nexcludedFromEnforcement []ObjectReference (Optional) excludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin.\nIt is only applicable if spec.enforcedNamespaceLabel set to true.\nhostNetwork bool (Optional) hostNetwork defines the host\u0026rsquo;s network namespace if true.\nMake sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/ ).\nWhen hostNetwork is enabled, this will set the DNS policy to ClusterFirstWithHostNet automatically (unless .spec.DNSPolicy is set to a different value).\npodTargetLabels []string (Optional) podTargetLabels are appended to the spec.podTargetLabels field of all PodMonitor and ServiceMonitor objects.\ntracingConfig TracingConfig (Optional) tracingConfig defines tracing in Prometheus.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nbodySizeLimit ByteSize (Optional) bodySizeLimit defines per-scrape on response body size. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\nlabelLimit int64 (Optional) labelLimit defines per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.45.0 and newer.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nNote that the global limit only applies to scrape objects that don\u0026rsquo;t specify an explicit limit value. If you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\nreloadStrategy ReloadStrategyType (Optional) reloadStrategy defines the strategy used to reload the Prometheus configuration. If not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\nmaximumStartupDurationSeconds int32 (Optional) maximumStartupDurationSeconds defines the maximum time that the prometheus container\u0026rsquo;s startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete. If set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\nscrapeClasses []ScrapeClass (Optional) scrapeClasses defines the list of scrape classes to expose to scraping objects such as PodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\nThis is an experimental feature, it may change in any upcoming release in a breaking way.\nserviceDiscoveryRole ServiceDiscoveryRole (Optional) serviceDiscoveryRole defines the service discovery role used to discover targets from ServiceMonitor objects and Alertmanager endpoints.\nIf set, the value should be either \u0026ldquo;Endpoints\u0026rdquo; or \u0026ldquo;EndpointSlice\u0026rdquo;
493. If unset, the operator assumes the \u0026ldquo;Endpoints\u0026rdquo; role.\ntsdb TSDBSpec (Optional) tsdb defines the runtime reloadable configuration of the timeseries database(TSDB). It requires Prometheus \u0026gt;= v2.39.0 or PrometheusAgent \u0026gt;= v2.54.0.\nscrapeFailureLogFile string (Optional) scrapeFailureLogFile defines the file to which scrape failures are logged. Reloading the configuration will reopen the file.\nIf the filename has an empty path, e.g. \u0026lsquo;file.log\u0026rsquo;, The Prometheus Pods will mount the file into an emptyDir volume at /var/log/prometheus. If a full path is provided, e.g. \u0026lsquo;/var/log/prometheus/file.log\u0026rsquo;, you must mount a volume in the specified directory and it must be writable. It requires Prometheus \u0026gt;= v2.55.0.\nserviceName string (Optional) serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service. 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. If empty, the operator will create and manage a headless service named prometheus-operated for Prometheus resources, or prometheus-agent-operated for PrometheusAgent resources. When deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each. See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\nruntime RuntimeConfig (Optional) runtime defines the values for the Prometheus process behavior\nterminationGracePeriodSeconds int64 (Optional) terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down) which may lead to data corruption.\nDefaults to 600 seconds.\nhostUsers bool (Optional) hostUsers supports the user space in Kubernetes.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\nThe feature requires at least Kubernetes 1.28 with the UserNamespacesSupport feature gate enabled. Starting Kubernetes 1.33, the feature is enabled by default.\nPuppetDBSDConfig (Appears on:ScrapeConfigSpec) PuppetDBSDConfig configurations allow retrieving scrape targets from PuppetDB resources. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#puppetdb_sd_config\nField Description url URL url defines the URL of the PuppetDB root query endpoint.\nquery string query defines the Puppet Query Language (PQL) query. Only resources are supported. https://puppet.com/docs/puppetdb/latest/api/query/v4/pql.html\nincludeParameters bool (Optional) includeParameters defines whether to include the parameters as meta labels. Note: Enabling this exposes parameters in the Prometheus UI and API. Make sure that you don\u0026rsquo;t have secrets exposed as parameters if you enable this.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request. Cannot be set at the same time as authorization, or oauth2.\nauthorization SafeAuthorization (Optional) authorization defines the header configuration to authenticate against the PuppetDB API. Cannot be set at the same time as oauth2.\noauth2 OAuth2 (Optional) oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint. Cannot be set at the same time as authorization, or basicAuth.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the PuppetDB server.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nPushoverConfig (Appears on:Receiver) PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nuserKey Kubernetes core/v1.SecretKeySelector (Optional) userKey defines the secret\u0026rsquo;s key that contains the recipient user\u0026rsquo;s user key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. Either userKey or userKeyFile is required.\nuserKeyFile string (Optional) userKeyFile defines the user key file that contains the recipient user\u0026rsquo;s user key. Either userKey or userKeyFile is required. It requires Alertmanager \u0026gt;= v0.26.0.\ntoken Kubernetes core/v1.SecretKeySelector (Optional) token defines the secret\u0026rsquo;s key that contains the registered application\u0026rsquo;s API token. See https://pushover.net/apps for application registration. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. Either token or tokenFile is required.\ntokenFile string (Optional) tokenFile defines the token file that contains the registered application\u0026rsquo;s API token. See https://pushover.net/apps for application registration. Either token or tokenFile is required. It requires Alertmanager \u0026gt;= v0.26.0.\ntitle string (Optional) title defines the notification title displayed in the Pushover message. This appears as the bold header text in the notification.\nmessage string (Optional) message defines the notification message content. This is the main body text of the Pushover notification.\nurl string (Optional) url defines a supplementary URL shown alongside the message. This creates a clickable link within the Pushover notification.\nurlTitle string (Optional) urlTitle defines a title for the supplementary URL. If not specified, the raw URL is shown instead.\nttl Duration (Optional) ttl defines the time to live for the alert notification. This determines how long the notification remains active before expiring.\ndevice string (Optional) device defines the name of a specific device to send the notification to. If not specified, the notification is sent to all user\u0026rsquo;s devices.\nsound string (Optional) sound defines the name of one of the sounds supported by device clients. This overrides the user\u0026rsquo;s default sound choice for this notification.\npriority string (Optional) priority defines the notification priority level. See https://pushover.net/api#priority for valid values and behavior.\nretry string (Optional) retry defines how often the Pushover servers will send the same notification to the user. Must be at least 30 seconds. Only applies to priority 2 notifications.\nexpire string (Optional) expire defines how long your notification will continue to be retried for, unless the user acknowledges the notification. Only applies to priority 2 notifications.\nhtml bool (Optional) html defines whether notification message is HTML or plain text. When true, the message can include HTML formatting tags. html and monospace formatting are mutually exclusive.\nmonospace bool (Optional) monospace optional HTML/monospace formatting for the message, see https://pushover.net/api#html html and monospace formatting are mutually exclusive.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for Pushover API requests.\nReceiver (Appears on:AlertmanagerConfigSpec) Receiver defines one or more notification integrations.\nField Description name string name defines the name of the receiver. Must be unique across all items from the list.\nopsgenieConfigs []OpsGenieConfig (Optional) opsgenieConfigs defines the list of OpsGenie configurations.\npagerdutyConfigs []PagerDutyConfig (Optional) pagerdutyConfigs defines the List of PagerDuty configurations.\ndiscordConfigs []DiscordConfig (Optional) discordConfigs defines the list of Slack configurations.\nslackConfigs []SlackConfig (Optional) slackConfigs defines the list of Slack configurations.\nwebhookConfigs []WebhookConfig (Optional) webhookConfigs defines the List of webhook configurations.\nwechatConfigs []WeChatConfig (Optional) wechatConfigs defines the list of WeChat configurations.\nemailConfigs []EmailConfig (Optional) emailConfigs defines the list of Email configurations.\nvictoropsConfigs []VictorOpsConfig (Optional) victoropsConfigs defines the list of VictorOps configurations.\npushoverConfigs []PushoverConfig (Optional) pushoverConfigs defines the list of Pushover configurations.\nsnsConfigs []SNSConfig (Optional) snsConfigs defines the list of SNS configurations\ntelegramConfigs []TelegramConfig (Optional) telegramConfigs defines the list of Telegram configurations.\nwebexConfigs []WebexConfig (Optional) webexConfigs defines the list of Webex configurations.\nmsteamsConfigs []MSTeamsConfig (Optional) msteamsConfigs defines the list of MSTeams configurations. It requires Alertmanager \u0026gt;= 0.26.0.\nmsteamsv2Configs []MSTeamsV2Config (Optional) msteamsv2Configs defines the list of MSTeamsV2 configurations. It requires Alertmanager \u0026gt;= 0.28.0.\nrocketchatConfigs []RocketChatConfig (Optional) rocketchatConfigs defines the list of RocketChat configurations. It requires Alertmanager \u0026gt;= 0.28.0.\nRocketChatActionConfig (Appears on:RocketChatConfig) RocketChatActionConfig defines actions for RocketChat messages.\nField Description text str
493ing (Optional) text defines the button text displayed to users. This is the label that appears on the interactive button.\nurl string (Optional) url defines the URL the button links to when clicked. This creates a clickable button that opens the specified URL.\nmsg string (Optional) msg defines the message to send when the button is clicked. This allows the button to post a predefined message to the channel.\nRocketChatConfig (Appears on:Receiver) RocketChatConfig configures notifications via RocketChat. It requires Alertmanager \u0026gt;= 0.28.0.\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL URL (Optional) apiURL defines the API URL for RocketChat. Defaults to https://open.rocket.chat/ if not specified.\nchannel string (Optional) channel defines the channel to send alerts to. This can be a channel name (e.g., \u0026ldquo;#alerts\u0026rdquo;) or a direct message recipient.\ntoken Kubernetes core/v1.SecretKeySelector token defines the sender token for RocketChat authentication. This is the personal access token or bot token used to authenticate API requests. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\ntokenID Kubernetes core/v1.SecretKeySelector tokenID defines the sender token ID for RocketChat authentication. This is the user ID associated with the token used for API requests. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\ncolor string (Optional) color defines the message color displayed in RocketChat. This appears as a colored bar alongside the message.\nemoji string (Optional) emoji defines the emoji to be displayed as an avatar. If provided, this emoji will be used instead of the default avatar or iconURL.\niconURL string (Optional) iconURL defines the icon URL for the message avatar. This displays a custom image as the message sender\u0026rsquo;s avatar.\ntext string (Optional) text defines the message text to send. This is optional because attachments can be used instead of or alongside text.\ntitle string (Optional) title defines the message title displayed prominently in the message. This appears as bold text at the top of the message attachment.\ntitleLink string (Optional) titleLink defines the URL that the title will link to when clicked. This makes the message title clickable in the RocketChat interface.\nfields []RocketChatFieldConfig (Optional) fields defines additional fields for the message attachment. These appear as structured key-value pairs within the message.\nshortFields bool (Optional) shortFields defines whether to use short fields in the message layout. When true, fields may be displayed side by side to save space.\nimageURL string (Optional) imageURL defines the image URL to display within the message. This embeds an image directly in the message attachment.\nthumbURL string (Optional) thumbURL defines the thumbnail URL for the message. This displays a small thumbnail image alongside the message content.\nlinkNames bool (Optional) linkNames defines whether to enable automatic linking of usernames and channels. When true, @username and #channel references become clickable links.\nactions []RocketChatActionConfig (Optional) actions defines interactive actions to include in the message. These appear as buttons that users can click to trigger responses.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for RocketChat API requests.\nRocketChatFieldConfig (Appears on:RocketChatConfig) RocketChatFieldConfig defines additional fields for RocketChat messages.\nField Description title string (Optional) title defines the title of this field. This appears as bold text labeling the field content.\nvalue string (Optional) value defines the value of this field, displayed underneath the title. This contains the actual data or content for the field.\nshort bool (Optional) short defines whether this field should be a short field. When true, the field may be displayed inline with other short fields to save space.\nRoute (Appears on:AlertmanagerConfigSpec) Route defines a node in the routing tree.\nField Description receiver string (Optional) receiver defines the name of the receiver for this route. If not empty, it should be listed in the receivers field.\ngroupBy []string (Optional) groupBy defines the list of labels to group by. Labels must not be repeated (unique list). Special label \u0026ldquo;\u0026hellip;\u0026rdquo; (aggregate by all possible labels), if provided, must be the only element in the list.\ngroupWait NonEmptyDuration (Optional) groupWait defines how long to wait before sending the initial notification. Example: \u0026ldquo;30s\u0026rdquo;\ngroupInterval NonEmptyDuration (Optional) groupInterval defines how long to wait before sending an updated notification. Must be greater than 0. Example: \u0026ldquo;5m\u0026rdquo;\nrepeatInterval NonEmptyDuration (Optional) repeatInterval defines how long to wait before repeating the last notification. Must be greater than 0. Example: \u0026ldquo;4h\u0026rdquo;\nmatchers []Matcher (Optional) matchers defines the list of matchers that the alert\u0026rsquo;s labels should match. For the first level route, the operator removes any existing equality and regexp matcher on the namespace label and adds a namespace: \u0026lt;object namespace\u0026gt; matcher.\ncontinue bool (Optional) continue defines the boolean indicating whether an alert should continue matching subsequent sibling nodes. It will always be overridden to true for the first-level route by the Prometheus operator.\nroutes []k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1.JSON (Optional) routes defines the child routes.\nmuteTimeIntervals []string (Optional) muteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,\nactiveTimeIntervals []string (Optional) activeTimeIntervals is a list of MuteTimeInterval names when this route should be active.\nSDFile (string alias) (Appears on:FileSDConfig) SDFile represents a file used for service discovery\nSNSConfig (Appears on:Receiver) SNSConfig configures notifications via AWS SNS. See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL string (Optional) apiURL defines the SNS API URL, e.g. https://sns.us-east-2.amazonaws.com. If not specified, the SNS API URL from the SNS SDK will be used.\nsigv4 Sigv4 (Optional) sigv4 configures AWS\u0026rsquo;s Signature Verification 4 signing process to sign requests. This includes AWS credentials and region configuration for authentication.\ntopicARN string (Optional) topicARN defines the SNS topic ARN, e.g. arn:aws:sns:us-east-2:698519295917:My-Topic. If you don\u0026rsquo;t specify this value, you must specify a value for the PhoneNumber or TargetARN.\nsubject string (Optional) subject defines the subject line when the message is delivered to email endpoints. This field is only used when sending to email subscribers of an SNS topic.\nphoneNumber string (Optional) phoneNumber defines the phone number if message is delivered via SMS in E.164 format. If you don\u0026rsquo;t specify this value, you must specify a value for the TopicARN or TargetARN.\ntargetARN string (Optional) targetARN defines the mobile platform endpoint ARN if message is delivered via mobile notifications. If you don\u0026rsquo;t specify this value, you must specify a value for the TopicARN or PhoneNumber.\nmessage string (Optional) message defines the message content of the SNS notification. This is the actual notification text that will be sent to subscribers.\nattributes map[string]string (Optional) attributes defines SNS message attributes as key-value pairs. These provide additional metadata that can be used for message filtering and routing.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for SNS API requests.\nuseAWSHTTPClient bool (Optional) useAWSHTTPClient forces the AWS SDK\u0026rsquo;s BuildableClient instead of alertmanager\u0026rsquo;s tracing-wrapped HTTP client. Auto-enabled when AWS_CA_BUNDLE is set; set explicitly when configuring ca_bundle via shared AWS config.\nIt requires Alertmanager \u0026gt;= 0.33.0.\nScalewayRole (string alias) (Appears on:ScalewaySDConfig) Role of the targets to retrieve. Must be Instance or Baremetal.\nValue Description \u0026#34;Baremetal\u0026#34;\n\u0026#34;Instance\u0026#34;\nScalewaySDConfig (Appears on:ScrapeConfigSpec) ScalewaySDConfig configurations allow retrieving scrape targets from Scaleway instances and baremetal services. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scaleway_sd_config\nNote: The _file variants of credential fields (e.g. secret_key_file) from the Prometheus configuration are not supported. Use Kubernetes secrets via secretKey instead.\nField Description accessKey string accessKey defines the access key to use. https://console.scaleway.com/project/credentials\nsecretKey Kubernetes core/v1.SecretKeySelector secretKey defines the secret key to use when listing targets.\nprojectID string projectID defines the Project ID of the targets.\nrole ScalewayRole role defines the service of the targets to retrieve. Must be Instance or Baremetal.\nport int32 (Optional) port defines the port to scrape metrics from. If using the public IP address, this must\napiURL URL (Optional) apiURL defines the API URL to use when doing the server listing requests.\nzone string (Optional) zone defines the availability zone of your targets (e.g. fr-par-1).\nnameFilter string (Optional) nameFilter defines a name filter (works as a
493LIKE) to apply on the server listing request.\ntagsFilter []string (Optional) tagsFilter defines a tag filter (a server needs to have all defined tags to be listed) to apply on the server listing request.\nrefreshInterval Duration (Optional) refreshInterval defines the time after which the provided names are refreshed. If not set, Prometheus uses its default value.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to connect to the Scaleway API.\nScrapeConfigSpec (Appears on:ScrapeConfig) ScrapeConfigSpec is a specification of the desired configuration for a scrape configuration.\nField Description jobName string (Optional) jobName defines the value of the job label assigned to the scraped metrics by default.\nThe job_name field in the rendered scrape configuration is always controlled by the operator to prevent duplicate job names, which Prometheus does not allow. Instead the job label is set by means of relabeling configs.\nstaticConfigs []StaticConfig (Optional) staticConfigs defines a list of static targets with a common label set.\nfileSDConfigs []FileSDConfig (Optional) fileSDConfigs defines a list of file service discovery configurations.\nhttpSDConfigs []HTTPSDConfig (Optional) httpSDConfigs defines a list of HTTP service discovery configurations.\nkubernetesSDConfigs []KubernetesSDConfig (Optional) kubernetesSDConfigs defines a list of Kubernetes service discovery configurations.\nconsulSDConfigs []ConsulSDConfig (Optional) consulSDConfigs defines a list of Consul service discovery configurations.\ndnsSDConfigs []DNSSDConfig (Optional) dnsSDConfigs defines a list of DNS service discovery configurations.\nec2SDConfigs []EC2SDConfig (Optional) ec2SDConfigs defines a list of EC2 service discovery configurations.\nazureSDConfigs []AzureSDConfig (Optional) azureSDConfigs defines a list of Azure service discovery configurations.\ngceSDConfigs []GCESDConfig (Optional) gceSDConfigs defines a list of GCE service discovery configurations.\nopenstackSDConfigs []OpenStackSDConfig (Optional) openstackSDConfigs defines a list of OpenStack service discovery configurations.\ndigitalOceanSDConfigs []DigitalOceanSDConfig (Optional) digitalOceanSDConfigs defines a list of DigitalOcean service discovery configurations.\nkumaSDConfigs []KumaSDConfig (Optional) kumaSDConfigs defines a list of Kuma service discovery configurations.\neurekaSDConfigs []EurekaSDConfig (Optional) eurekaSDConfigs defines a list of Eureka service discovery configurations.\ndockerSDConfigs []DockerSDConfig (Optional) dockerSDConfigs defines a list of Docker service discovery configurations.\nlinodeSDConfigs []LinodeSDConfig (Optional) linodeSDConfigs defines a list of Linode service discovery configurations.\nhetznerSDConfigs []HetznerSDConfig (Optional) hetznerSDConfigs defines a list of Hetzner service discovery configurations.\nnomadSDConfigs []NomadSDConfig (Optional) nomadSDConfigs defines a list of Nomad service discovery configurations.\ndockerSwarmSDConfigs []DockerSwarmSDConfig (Optional) dockerSwarmSDConfigs defines a list of Dockerswarm service discovery configurations.\npuppetDBSDConfigs []PuppetDBSDConfig (Optional) puppetDBSDConfigs defines a list of PuppetDB service discovery configurations.\nlightSailSDConfigs []LightSailSDConfig (Optional) lightSailSDConfigs defines a list of Lightsail service discovery configurations.\novhcloudSDConfigs []OVHCloudSDConfig (Optional) ovhcloudSDConfigs defines a list of OVHcloud service discovery configurations.\nscalewaySDConfigs []ScalewaySDConfig (Optional) scalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.\nionosSDConfigs []IonosSDConfig (Optional) ionosSDConfigs defines a list of IONOS service discovery configurations.\nrelabelings []RelabelConfig (Optional) relabelings defines how to rewrite the target\u0026rsquo;s labels before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job\u0026rsquo;s name is available via the __tmp_prometheus_job_name label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\nmetricsPath string (Optional) metricsPath defines the HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).\nscrapeInterval Duration (Optional) scrapeInterval defines the interval between consecutive scrapes.\nscrapeTimeout Duration (Optional) scrapeTimeout defines the number of seconds to wait until a scrape request times out. The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\nscrapeProtocols []ScrapeProtocol (Optional) scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the protocols supported by Prometheus in order of preference (from most to least preferred).\nIf unset, Prometheus uses its default value.\nIt requires Prometheus \u0026gt;= v2.49.0.\nfallbackScrapeProtocol ScrapeProtocol (Optional) fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\nIt requires Prometheus \u0026gt;= v3.0.0.\nhonorTimestamps bool (Optional) honorTimestamps defines whether Prometheus preserves the timestamps when exp
493osed by the target.\ntrackTimestampsStaleness bool (Optional) trackTimestampsStaleness defines whether Prometheus tracks staleness of the metrics that have an explicit timestamp present in scraped data. Has no effect if honorTimestamps is false. It requires Prometheus \u0026gt;= v2.48.0.\nhonorLabels bool (Optional) honorLabels defines when true the metric\u0026rsquo;s labels when they collide with the target\u0026rsquo;s labels.\nparams map[string][]string (Optional) params defines optional HTTP URL parameters\nscheme Scheme (Optional) scheme defines the protocol scheme used for requests.\nenableCompression bool (Optional) enableCompression when false, Prometheus will request uncompressed response from the scraped target.\nIt requires Prometheus \u0026gt;= v2.49.0.\nIf unset, Prometheus uses true by default.\nenableHTTP2 bool (Optional) enableHTTP2 defines whether to enable HTTP2.\nbasicAuth BasicAuth (Optional) basicAuth defines information to use on every scrape request.\nauthorization SafeAuthorization (Optional) authorization defines the header to use on every scrape request.\noauth2 OAuth2 (Optional) oauth2 defines the configuration to use on every scrape request.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration to use on every scrape request\nsampleLimit int64 (Optional) sampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\ntargetLimit int64 (Optional) targetLimit defines a limit on the number of scraped targets that will be accepted.\nlabelLimit int64 (Optional) labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nlabelNameLengthLimit int64 (Optional) labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nlabelValueLengthLimit int64 (Optional) labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\nbodySizeLimit ByteSize (Optional) bodySizeLimit defines a per-scrape limit on the size of the uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail.\nIt requires Prometheus \u0026gt;= v2.28.0.\nscrapeNativeHistograms bool (Optional) scrapeNativeHistograms defines whether to enable scraping of native histograms. It requires Prometheus \u0026gt;= v3.8.0.\nscrapeClassicHistograms bool (Optional) scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram. It requires Prometheus \u0026gt;= v2.45.0.\nNotice: scrapeClassicHistograms corresponds to the always_scrape_classic_histograms field in the Prometheus configuration.\nnativeHistogramBucketLimit int64 (Optional) nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram, buckets will be merged to stay within the limit. It requires Prometheus \u0026gt;= v2.45.0.\nnativeHistogramMinBucketFactor k8s.io/apimachinery/pkg/api/resource.Quantity (Optional) nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this, buckets will be merged to increase the factor sufficiently. It requires Prometheus \u0026gt;= v2.50.0.\nconvertClassicHistogramsToNHCB bool (Optional) convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets. It requires Prometheus \u0026gt;= v3.0.0.\nkeepDroppedTargets int64 (Optional) keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.\nIt requires Prometheus \u0026gt;= v2.47.0.\nmetricRelabelings []RelabelConfig (Optional) metricRelabelings defines the metricRelabelings to apply to samples before ingestion.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;
493= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nnameValidationScheme NameValidationSchemeOptions (Optional) nameValidationScheme defines the validation scheme for metric and label names.\nIt requires Prometheus \u0026gt;= v3.0.0.\nnameEscapingScheme NameEscapingSchemeOptions (Optional) nameEscapingScheme defines the metric name escaping mode to request through content negotiation.\nIt requires Prometheus \u0026gt;= v3.4.0.\nscrapeClass string (Optional) scrapeClass defines the scrape class to apply.\nSlackAction (Appears on:SlackConfig) SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information.\nField Description type string type defines the type of interactive component. Common values include \u0026ldquo;button\u0026rdquo; for clickable buttons and \u0026ldquo;select\u0026rdquo; for dropdown menus.\ntext string text defines the user-visible label displayed on the action element. For buttons, this is the button text. For select menus, this is the placeholder text.\nurl string (Optional) url defines the URL to open when the action is triggered. Only applicable for button-type actions. When set, clicking the button opens this URL.\nstyle string (Optional) style defines the visual appearance of the action element. Valid values include \u0026ldquo;default\u0026rdquo;, \u0026ldquo;primary\u0026rdquo; (green), and \u0026ldquo;danger\u0026rdquo; (red).\nname string (Optional) name defines a unique identifier for the action within the message. This value is sent back to your application when the action is triggered.\nvalue string (Optional) value defines the payload sent when the action is triggered. This data is included in the callback sent to your application.\nconfirm SlackConfirmationField (Optional) confirm defines an optional confirmation dialog that appears before the action is executed. When set, users must confirm their intent before the action proceeds.\nSlackConfig (Appears on:Receiver) SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL Kubernetes core/v1.SecretKeySelector (Optional) apiURL defines the secret\u0026rsquo;s key that contains the Slack webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nchannel string (Optional) channel defines the channel or user to send notifications to.\nusername string (Optional) username defines the slack bot user name.\ncolor string (Optional) color defines the color of the left border of the Slack message attachment. Can be a hex color code (e.g., \u0026ldquo;#ff0000\u0026rdquo;) or a predefined color name.\ntitle string (Optional) title defines the title text displayed in the Slack message attachment.\ntitleLink string (Optional) titleLink defines the URL that the title will link to when clicked.\npretext string (Optional) pretext defines optional text that appears above the message attachment block.\ntext string (Optional) text defines the main text content of the Slack message attachment.\nfields []SlackField (Optional) fields defines a list of Slack fields that are sent with each notification.\nshortFields bool (Optional) shortFields determines whether fields are displayed in a compact format. When true, fields are shown side by side when possible.\nfooter string (Optional) footer defines small text displayed at the bottom of the message attachment.\nfallback string (Optional) fallback defines a plain-text summary of the attachment for clients that don\u0026rsquo;t support attachments.\ncallbackId string (Optional) callbackId defines an identifier for the message used in interactive components.\niconEmoji string (Optional) iconEmoji defines the emoji to use as the bot\u0026rsquo;s avatar (e.g., \u0026ldquo;ð»\u0026rdquo;).\niconURL string (Optional) iconURL defines the URL to an image to use as the bot\u0026rsquo;s avatar.\nimageURL string (Optional) imageURL defines the URL to an image file that will be displayed inside the message attachment.\nthumbURL string (Optional) thumbURL defines the URL to an image file that will be displayed as a thumbnail on the right side of the message attachment.\nlinkNames bool (Optional) linkNames enables automatic linking of channel names and usernames in the message. When true, @channel and @username will be converted to clickable links.\nmrkdwnIn []string (Optional) mrkdwnIn defines which fields should be parsed as Slack markdown. Valid values include \u0026ldquo;pretext\u0026rdquo;, \u0026ldquo;text\u0026rdquo;, and \u0026ldquo;fields\u0026rdquo;.\nactions []SlackAction (Optional) actions defines a list of Slack actions that are sent with each notification.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration.\ntimeout Duration (Optional) timeout defines the maximum time to wait for a webhook request to complete, before failing the request and allowing it to be retried. It requires Alertmanager \u0026gt;= v0.30.0.\nmessageText string (Optional) messageText defines text content of the Slack message. If set, this is sent as the top-level \u0026lsquo;text\u0026rsquo; field in the Slack payload. It requires Alertmanager \u0026gt;= v0.31.0.\nupdateMessage bool (Optional) updateMessage enables updating existing Slack messages instead of creating new ones when alert state changes. Please note that Webhook URLs do not support updates. It requires Alertmanager \u0026gt;= v0.32.0.\nSlackConfirmationField (Appears on:SlackAction) SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information.\nField Description text str
493ing text defines the main message displayed in the confirmation dialog. This should be a clear question or statement asking the user to confirm their action.\ntitle string (Optional) title defines the title text displayed at the top of the confirmation dialog. When not specified, a default title will be used.\nokText string (Optional) okText defines the label for the confirmation button in the dialog. When not specified, defaults to \u0026ldquo;Okay\u0026rdquo;. This button proceeds with the action.\ndismissText string (Optional) dismissText defines the label for the cancel button in the dialog. When not specified, defaults to \u0026ldquo;Cancel\u0026rdquo;. This button cancels the action.\nSlackField (Appears on:SlackConfig) SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information.\nField Description title string title defines the label or header text displayed for this field. This appears as bold text above the field value in the Slack message.\nvalue string value defines the content or data displayed for this field. This appears below the title and can contain plain text or Slack markdown.\nshort bool (Optional) short determines whether this field can be displayed alongside other short fields. When true, Slack may display this field side by side with other short fields. When false or not specified, the field takes the full width of the message.\nStaticConfig (Appears on:ScrapeConfigSpec) StaticConfig defines a Prometheus static configuration. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\nField Description targets []Target targets defines the list of targets for this static configuration.\nlabels map[string]string (Optional) labels defines labels assigned to all metrics scraped from the targets.\nTarget (string alias) (Appears on:StaticConfig) Target represents a target for Prometheus to scrape\nTelegramConfig (Appears on:Receiver) TelegramConfig configures notifications via Telegram. See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL URL (Optional) apiURL defines the Telegram API URL, e.g. https://api.telegram.org. If not specified, the default Telegram API URL will be used.\nbotToken Kubernetes core/v1.SecretKeySelector (Optional) botToken defines the Telegram bot token. It is mutually exclusive with botTokenFile. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. Either botToken or botTokenFile is required.\nbotTokenFile string (Optional) botTokenFile defines the file to read the Telegram bot token from. It is mutually exclusive with botToken. Either botToken or botTokenFile is required. It requires Alertmanager \u0026gt;= v0.26.0.\nchatID int64 chatID defines the Telegram chat ID where messages will be sent. This can be a user ID, group ID, or channel ID (with @ prefix for public channels).\nmessageThreadID int64 (Optional) messageThreadID defines the Telegram Group Topic ID for threaded messages. This allows sending messages to specific topics within Telegram groups. It requires Alertmanager \u0026gt;= 0.26.0.\nmessage string (Optional) message defines the message template for the Telegram notification. This is the content that will be sent to the specified chat.\ndisableNotifications bool (Optional) disableNotifications controls whether Telegram notifications are sent silently. When true, users will receive the message without notification sounds.\nparseMode string (Optional) parseMode defines the parse mode for telegram message formatting. Valid values are \u0026ldquo;MarkdownV2\u0026rdquo;, \u0026ldquo;Markdown\u0026rdquo;, and \u0026ldquo;HTML\u0026rdquo;. This determines how text formatting is interpreted in the message.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for Telegram API requests.\nThreadByDateType (string alias) (Appears on:EmailThreadingConfig) Value Description \u0026#34;Daily\u0026#34;\n\u0026#34;None\u0026#34;\nTime (string alias) (Appears on:TimeRange) Time defines a time in 24hr format\nTimeInterval (Appears on:MuteTimeInterval) TimeInterval describes intervals of time\nField Description times []TimeRange (Optional) times defines a list of TimeRange\nweekdays []WeekdayRange (Optional) weekdays defines a list of WeekdayRange\ndaysOfMonth []DayOfMonthRange (Optional) daysOfMonth defines a list of DayOfMonthRange\nmonths []MonthRange (Optional) months defines a list of MonthRange\nyears []YearRange (Optional) years defines a list of YearRange\nTimeRange (Appears on:TimeInterval) TimeRange defines a start and end time in 24hr format\nField Description startTime Time (Optional) startTime defines the start time in 24hr format.\nendTime Time (Optional) endTime defines the end time in 24hr format.\nURL (string alias) (Appears on:DiscordConfig, EurekaSDConfig, HTTPSDConfig, KumaSDConfig, NomadSDConfig, OpenStackSDConfig, OpsGenieConfig, PagerDutyConfig, PuppetDBSDConfig, RocketChatConfig, ScalewaySDConfig, TelegramConfig, VictorOpsConfig, WeChatConfig, WebexConfig) URL represents a valid URL\nVictorOpsConfig (Appears on:Receiver) VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiKey Kubernetes core/v1.SecretKeySelector (Optional) apiKey defines the secret\u0026rsquo;s key that contains the API key to use when talking to the VictorOps API. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\napiUrl URL (Optional) apiUrl defines the VictorOps API URL. When not specified, defaults to the standard VictorOps API endpoint.\nroutingKey string routingKey defines a key used to map the alert to a team. This determines which VictorOps team will receive the alert notification.\nmessageType string (Optional) messageType describes the behavior of the alert. Valid values are \u0026ldquo;CRITICAL\u0026rdquo;, \u0026ldquo;WARNING\u0026rdquo;, and \u0026ldquo;INFO\u0026rdquo;.\nentityDisplayName string (Optional) entityDisplayName contains a summary of the alerted problem. This appears as the main title or identifier for the incident.\nstateMessage string (Optional) stateMessage contains a long explanation of the alerted problem. This provides detailed context about the incident.\nmonitoringTool string (Optional) monitoringTool defines the monitoring tool the state message is from. This helps identify the source system that generated the alert.\ncustomFields []KeyValue (Optional) customFields defines additional custom fields for notification. These provide extra metadata that will be included with the VictorOps incident.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client\u0026rsquo;s configuration for VictorOps API requests.\nWeChatConfig (Appears on:Receiver) WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiSecret Kubernetes core/v1.SecretKeySelector (Optional) apiSecret defines the secret\u0026rsquo;s key that contains the WeChat API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\napiURL URL (Optional) apiURL defines the WeChat API URL. When not specified, defaults to the standard WeChat Work API endpoint.\ncorpID string (Optional) corpID defines the corp id for authentication. This is the unique identifier for your WeChat Work organization.\nagentID string (Optional) agentID defines the application agent ID within WeChat Work. This identifies which WeChat Work application will send the notifications.\ntoUser string (Optional) toUser defines the target user(s) to receive the notification. Can be a single user ID or multiple user IDs separated by \u0026lsquo;|\u0026rsquo;.\ntoParty string (Optional) toParty defines the target department(s) to receive the notification. Can be a single department ID or multiple department IDs separated by \u0026lsquo;|\u0026rsquo;
493.\ntoTag string (Optional) toTag defines the target tag(s) to receive the notification. Can be a single tag ID or multiple tag IDs separated by \u0026lsquo;|\u0026rsquo;.\nmessage string (Optional) message defines the API request data as defined by the WeChat API. This contains the actual notification content to be sent.\nmessageType string (Optional) messageType defines the type of message to send. Valid values include \u0026ldquo;text\u0026rdquo;, \u0026ldquo;markdown\u0026rdquo;, and other WeChat Work supported message types.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for WeChat API requests.\nWebexConfig (Appears on:Receiver) WebexConfig configures notification via Cisco Webex See https://prometheus.io/docs/alerting/latest/configuration/#webex_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL URL (Optional) apiURL defines the Webex Teams API URL i.e. https://webexapis.com/v1/messages\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client\u0026rsquo;s configuration.\nmessage string (Optional) message defines the message template\nroomID string roomID defines the ID of the Webex Teams room where to send the messages.\nWebhookConfig (Appears on:Receiver) WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nurl string (Optional) url defines the URL to send HTTP POST requests to. urlSecret takes precedence over url. One of urlSecret and url should be defined.\nurlSecret Kubernetes core/v1.SecretKeySelector (Optional) urlSecret defines the secret\u0026rsquo;s key that contains the webhook URL to send HTTP requests to. urlSecret takes precedence over url. One of urlSecret and url should be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for webhook requests.\nmaxAlerts int32 (Optional) maxAlerts defines the maximum number of alerts to be sent per webhook message. When 0, all alerts are included in the webhook payload.\ntimeout Duration (Optional) timeout defines the maximum time to wait for a webhook request to complete, before failing the request and allowing it to be retried. It requires Alertmanager \u0026gt;= v0.28.0.\npayload string (Optional) payload define custom payload to be sent to the webhook endpoint. This is an advanced configuration option that allows you to define a custom payload using Go templates. It requires Alertmanager \u0026gt;= v0.32.0.\nWeekday (string alias) Weekday is day of the week\nValue Description \u0026#34;friday\u0026#34;\n\u0026#34;monday\u0026#34;\n\u0026#34;saturday\u0026#34;\n\u0026#34;sunday\u0026#34;\n\u0026#34;thursday\u0026#34;\n\u0026#34;tuesday\u0026#34;\n\u0026#34;wednesday\u0026#34;\nWeekdayRange (string alias) (Appears on:TimeInterval) WeekdayRange is an inclusive range of days of the week beginning on Sunday Days can be specified by name (e.g \u0026lsquo;Sunday\u0026rsquo;) or as an inclusive range (e.g \u0026lsquo;Monday:Friday\u0026rsquo;)\nYearRange (string alias) (Appears on:TimeInterval) YearRange is an inclusive range of years\nmonitoring.coreos.com/v1beta1 Resource Types: AlertmanagerConfig AlertmanagerConfig The AlertmanagerConfig custom resource definition (CRD) defines how Alertmanager objects process Prometheus alerts. It allows to specify alert grouping and routing, notification receivers and inhibition rules.\nAlertmanager objects select AlertmanagerConfig objects using label and namespace selectors.\nField Description apiVersion string monitoring.coreos.com/v1beta1 kind string AlertmanagerConfig metadata Kubernetes meta/v1.ObjectMeta (Optional) metadata defines ObjectMeta as the metadata that all persisted resources.\nRefer to the Kubernetes API documentation for the fields of the metadata field. spec AlertmanagerConfigSpec spec defines the specification of AlertmanagerConfigSpec\nroute Route (Optional) route defines the Alertmanager route definition for incoming alerts. It will be added to the generated Alertmanager configuration as a first-level route. The matching behavior of the route depends on the Alertmanager\u0026rsquo;s AlertmanagerConfigMatcherStrategyType.\nreceivers []Receiver (Optional) receivers defines the list of receivers.\ninhibitRules []InhibitRule (Optional) inhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching the resource\u0026rsquo;s namespace.\ntimeIntervals []TimeInterval (Optional) timeIntervals defines the list of timeIntervals specifying when the routes should be muted.\nstatus ConfigResourceStatus (Optional) status defines the status subresource. It is under active development and is updated only when the \u
4930026ldquo;StatusForConfigurationResources\u0026rdquo; feature gate is enabled.\nMost recent observed status of the ServiceMonitor. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\nAlertmanagerConfigSpec (Appears on:AlertmanagerConfig) AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the namespace label is equal to the namespace of the AlertmanagerConfig resource.\nField Description route Route (Optional) route defines the Alertmanager route definition for incoming alerts. It will be added to the generated Alertmanager configuration as a first-level route. The matching behavior of the route depends on the Alertmanager\u0026rsquo;s AlertmanagerConfigMatcherStrategyType.\nreceivers []Receiver (Optional) receivers defines the list of receivers.\ninhibitRules []InhibitRule (Optional) inhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching the resource\u0026rsquo;s namespace.\ntimeIntervals []TimeInterval (Optional) timeIntervals defines the list of timeIntervals specifying when the routes should be muted.\nDayOfMonthRange (Appears on:TimePeriod) DayOfMonthRange is an inclusive range of days of the month beginning at 1\nField Description start int (Optional) start of the inclusive range\nend int (Optional) end of the inclusive range\nDiscordConfig (Appears on:Receiver) DiscordConfig configures notifications via Discord. See https://prometheus.io/docs/alerting/latest/configuration/#discord_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL Kubernetes core/v1.SecretKeySelector apiURL defines the secret\u0026rsquo;s key that contains the Discord webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\ntitle string (Optional) title defines the template of the message\u0026rsquo;s title.\nmessage string (Optional) message defines the template of the message\u0026rsquo;s body.\ncontent string (Optional) content defines the template of the content\u0026rsquo;s body.\nusername string (Optional) username defines the username of the message sender.\navatarURL URL (Optional) avatarURL defines the avatar url of the message sender.\nhttpConfig HTTPConfig (Optional) httpConfig defines HTTP client configuration.\nEmailConfig (Appears on:Receiver) EmailConfig configures notifications via Email.\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nto string (Optional) to defines the email address to send notifications to. This is the recipient address for alert notifications.\nfrom string (Optional) from defines the sender address for email notifications. This appears as the \u0026ldquo;From\u0026rdquo; field in the email header.\nhello string (Optional) hello defines the hostname to identify to the SMTP server. This is used in the SMTP HELO/EHLO command during the connection handshake.\nsmarthost string (Optional) smarthost defines the SMTP host and port through which emails are sent. Format should be \u0026ldquo;hostname:port\u0026rdquo;, e.g. \u0026ldquo;smtp.example.com:587\u0026rdquo;.\nauthUsername string (Optional) authUsername defines the username to use for SMTP authentication. This is used for SMTP AUTH when the server requires authentication.\nauthPassword SecretKeySelector (Optional) authPassword defines the secret\u0026rsquo;s key that contains the password to use for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nauthSecret SecretKeySelector (Optional) authSecret defines the secret\u0026rsquo;s key that contains the CRAM-MD5 secret. This is used for CRAM-MD5 authentication mechanism. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nauthIdentity string (Optional) authIdentity defines the identity to use for SMTP authentication. This is typically used with PLAIN authentication mechanism.\nheaders []KeyValue (Optional) headers defines additional email header key/value pairs. These override any headers previously set by the notification implementation.\nhtml str
493ing (Optional) html defines the HTML body of the email notification. This allows for rich formatting in the email content.\ntext string (Optional) text defines the plain text body of the email notification. This provides a fallback for email clients that don\u0026rsquo;t support HTML.\nrequireTLS bool (Optional) requireTLS defines the SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration for SMTP connections. This includes settings for certificates, CA validation, and TLS protocol options.\nforceImplicitTLS bool (Optional) forceImplicitTLS defines whether to force use of implicit TLS (direct TLS connection) for better security. true: force use of implicit TLS (direct TLS connection on any port) false: force disable implicit TLS (use explicit TLS/STARTTLS if required) nil (default): auto-detect based on port (465=implicit, other=explicit) for backward compatibility It requires Alertmanager \u0026gt;= v0.31.0.\nthreading EmailThreadingConfig (Optional) threading defines the threading configuration for email receiver. It requires Alertmanager \u0026gt;= v0.30.0.\nEmailThreadingConfig (Appears on:EmailConfig) Field Description threadByDate ThreadByDateType threadByDate defines what granularity of current date to thread by. Accepted values: Daily, None. (None means group by alert group key, no date).\nHTTPConfig (Appears on:DiscordConfig, MSTeamsConfig, MSTeamsV2Config, OpsGenieConfig, PagerDutyConfig, PushoverConfig, RocketChatConfig, SNSConfig, SlackConfig, TelegramConfig, VictorOpsConfig, WeChatConfig, WebexConfig, WebhookConfig) HTTPConfig defines a client HTTP configuration. See https://prometheus.io/docs/alerting/latest/configuration/#http_config\nField Description authorization SafeAuthorization (Optional) authorization defines the authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\nbasicAuth BasicAuth (Optional) basicAuth defines the basic authentication credentials for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\noauth2 OAuth2 (Optional) oauth2 defines the OAuth2 client credentials used to fetch a token for the targets. This enables OAuth2 authentication flow for HTTP requests.\nbearerTokenSecret SecretKeySelector (Optional) bearerTokenSecret defines the secret\u0026rsquo;s key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\ntlsConfig SafeTLSConfig (Optional) tlsConfig defines the TLS configuration for the client. This includes settings for certificates, CA validation, and TLS protocol options.\nproxyURL string (Optional) proxyURL defines an optional proxy URL for HTTP requests. If defined, this field takes precedence over proxyUrl.\nproxyUrl string (Optional) proxyUrl defines the HTTP proxy server to use.\nnoProxy string (Optional) noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyFromEnvironment bool (Optional) proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nproxyConnectHeader map[string][]Kubernetes core/v1.SecretKeySelector (Optional) proxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests.\nIt requires Prometheus \u0026gt;= v2.43.0, Alertmanager \u0026gt;= v0.25.0 or Thanos \u0026gt;= v0.32.0.\nfollowRedirects bool (Optional) followRedirects defines whether HTTP requests follow HTTP 3xx redirects. When true, the client will automatically follow redirect responses.\nenableHttp2 bool (Optional) enableHttp2 can be used to disable HTTP2.\nInhibitRule (Appears on:AlertmanagerConfigSpec) InhibitRule defines an inhibition rule that allows to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\nField Description targetMatch []Matcher (Optional) targetMatch defines matchers that have to be fulfilled
493in the alerts to be muted. The operator enforces that the alert matches the resource\u0026rsquo;s namespace. When these conditions are met, matching alerts will be inhibited (silenced).\nsourceMatch []Matcher (Optional) sourceMatch defines matchers for which one or more alerts have to exist for the inhibition to take effect. The operator enforces that the alert matches the resource\u0026rsquo;s namespace. These are the \u0026ldquo;trigger\u0026rdquo; alerts that cause other alerts to be inhibited.\nequal []string (Optional) equal defines labels that must have an equal value in the source and target alert for the inhibition to take effect. This ensures related alerts are properly grouped.\nKeyValue (Appears on:EmailConfig, OpsGenieConfig, PagerDutyConfig, VictorOpsConfig) KeyValue defines a (key, value) tuple.\nField Description key string key defines the key of the tuple. This is the identifier or name part of the key-value pair.\nvalue string value defines the value of the tuple. This is the data or content associated with the key.\nMSTeamsConfig (Appears on:Receiver) MSTeamsConfig configures notifications via Microsoft Teams. It requires Alertmanager \u0026gt;= 0.26.0.\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nwebhookUrl Kubernetes core/v1.SecretKeySelector webhookUrl defines the MSTeams webhook URL for sending notifications. This is the incoming webhook URL configured in your Teams channel.\ntitle string (Optional) title defines the message title template for Teams notifications. This appears as the main heading of the Teams message card.\nsummary string (Optional) summary defines the message summary template for Teams notifications. This provides a brief overview that appears in Teams notification previews. It requires Alertmanager \u0026gt;= 0.27.0.\ntext string (Optional) text defines the message body template for Teams notifications. This contains the detailed content of the Teams message.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for Teams webhook requests.\nMSTeamsV2Config (Appears on:Receiver) MSTeamsV2Config configures notifications via Microsoft Teams using the new message format with adaptive cards as required by flows. See https://prometheus.io/docs/alerting/latest/configuration/#msteamsv2_config It requires Alertmanager \u0026gt;= 0.28.0.\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nwebhookURL Kubernetes core/v1.SecretKeySelector (Optional) webhookURL defines the MSTeams incoming webhook URL for adaptive card notifications. This webhook must support the newer adaptive cards format required by Teams flows.\ntitle string (Optional) title defines the message title template for adaptive card notifications. This appears as the main heading in the Teams adaptive card.\ntext string (Optional) text defines the message body template for adaptive card notifications. This contains the detailed content displayed in the Teams adaptive card format.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for Teams webhook requests.\nMatchType (string alias) (Appears on:Matcher) MatchType is a comparison operator on a Matcher\nValue Description \u0026#34;=\u0026#34;\n\u0026#34;!=\u0026#34;\n\u0026#34;!~\u0026#34;\n\u0026#34;=~\u0026#34;\nMatcher (Appears on:InhibitRule, Route) Matcher defines how to match on alert\u0026rsquo;s labels.\nField Description name string name defines the label to match. This specifies which alert label should be evaluated.\nvalue string (Optional) value defines the label value to match. This is the expected value for the specified label.\nmatchType MatchType (Optional) matchType defines the match operation available with AlertManager \u0026gt;= v0.22.0. Takes precedence over Regex (deprecated) if non-empty. Valid values: \u0026ldquo;=\u0026rdquo; (equality), \u0026ldquo;!=\u0026rdquo; (inequality), \u0026ldquo;=~\u0026rdquo; (regex match), \u0026ldquo;!~\u0026rdquo; (regex non-match).\nMonth (string alias) Month of the year\nValue Description \u0026#34;april\u0026#34;\n\u0026#34;
493august\u0026#34;\n\u0026#34;december\u0026#34;\n\u0026#34;february\u0026#34;\n\u0026#34;january\u0026#34;\n\u0026#34;july\u0026#34;\n\u0026#34;june\u0026#34;\n\u0026#34;march\u0026#34;\n\u0026#34;may\u0026#34;\n\u0026#34;november\u0026#34;\n\u0026#34;october\u0026#34;\n\u0026#34;september\u0026#34;\nMonthRange (string alias) (Appears on:TimePeriod) MonthRange is an inclusive range of months of the year beginning in January Months can be specified by name (e.g \u0026lsquo;January\u0026rsquo;) by numerical month (e.g \u0026lsquo;1\u0026rsquo;) or as an inclusive range (e.g \u0026lsquo;January:March\u0026rsquo;, \u0026lsquo;1:3\u0026rsquo;, \u0026lsquo;1:March\u0026rsquo;)\nOpsGenieConfig (Appears on:Receiver) OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiKey SecretKeySelector (Optional) apiKey defines the secret\u0026rsquo;s key that contains the OpsGenie API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\napiURL URL (Optional) apiURL defines the URL to send OpsGenie API requests to. When not specified, defaults to the standard OpsGenie API endpoint.\nmessage string (Optional) message defines the alert text limited to 130 characters. This appears as the main alert title in OpsGenie.\ndescription string (Optional) description defines the detailed description of the incident. This provides additional context beyond the message field.\nsource string (Optional) source defines the backlink to the sender of the notification. This helps identify where the alert originated from.\ntags string (Optional) tags defines a comma separated list of tags attached to the notifications. These help categorize and filter alerts within OpsGenie.\nnote string (Optional) note defines an additional alert note. This provides supplementary information about the alert.\npriority string (Optional) priority defines the priority level of alert. Possible values are P1, P2, P3, P4, and P5, where P1 is highest priority.\ndetails []KeyValue (Optional) details defines a set of arbitrary key/value pairs that provide further detail about the incident. These appear as additional fields in the OpsGenie alert.\nresponders []OpsGenieConfigResponder (Optional) responders defines the list of responders responsible for notifications. These determine who gets notified when the alert is created.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for OpsGenie API requests.\nentity string (Optional) entity defines an optional field that can be used to specify which domain alert is related to. This helps group related alerts together in OpsGenie.\nactions string (Optional) actions defines a comma separated list of actions that will be available for the alert. These appear as action buttons in the OpsGenie interface.\nOpsGenieConfigResponder (Appears on:OpsGenieConfig) OpsGenieConfigResponder defines a responder to an incident. One of id, name or username has to be defined.\nField Description id string (Optional) id defines the unique identifier of the responder. This corresponds to the responder\u0026rsquo;s ID within OpsGenie.\nname string (Optional) name defines the display name of the responder. This is used when the responder is identified by name rather than ID.\nusername string (Optional) username defines the username of the responder. This is typically used for user-type responders when identifying by username.\ntype string type defines the type of responder. Valid values include \u0026ldquo;user\u0026rdquo;, \u0026ldquo;team\u0026rdquo;, \u0026ldquo;schedule\u0026rdquo;, and \u0026ldquo;escalation\u0026rdquo;. This determines how OpsGenie interprets the other identifier fields.\nPagerDutyConfig (Appears on:Receiver) PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nroutingKey SecretKeySelector (Optional) routingKey defines the secret\u0026rsquo;s key that contains the PagerDuty integration key (when using Events API v2). Either this field or serviceKey needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nserviceKey SecretKeySelector (Optional) serviceKey defines the secret\u0026rsquo;s key that contains the PagerDuty service key (when using integration type \u0026ldquo;Prometheus\u0026rdquo;). Either this field or routingKey needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nurl URL (Optional) url defines the URL to send requests to.\nclient string (Optional) client defines the client identification.\nclientURL string (Optional) clientURL defines the backlink to the sender of notification.\ndescription string (Optional) description of the incident.\nseverity string (Optional) severity of the incident.\nclass string (Optional) class defines the class/type of the event.\ngroup string (Optional) group defines a cluster or grouping of sources.\ncomponent string (Optional) component defines the part or component of the affected system that is broken.\ndetails []KeyValue (Optional) details defines the arbitrary key/value pairs that provide further detail about the incident.\npagerDutyImageConfigs []PagerDutyImageConfig (Optional) pagerDutyImageConfigs defines a list of image details to attach that provide further detail about an incident.\npagerDutyLinkConfigs []PagerDutyLinkConfig (Optional) pagerDutyLinkConfigs defines a list of link details to attach that provide further detail about an incident.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration.\nsource string (Optional) source defines the unique location of the affected system.\ntimeout Duration (Optional) timeout is the maximum time allowed to invoke the pagerduty It requires Alertmanager \u0026gt;= v0.30.0.\nPagerDutyImageConfig (Appears on:PagerDutyConfig) PagerDutyImageConfig attaches images to an incident\nField Description src string (Optional) src of the image being attached to the incident\nhref string (Optional) href defines the optional URL; makes the image a clickable link.\nalt string (Optional) alt is the optional alternative text for the image.\nPagerDutyLinkConfig (Appears on:PagerDutyConfig) PagerDutyLinkConfig attaches text links to an incident\nField Description href string (Optional) href defines the URL of the link to be attached\nalt string (Optional) alt defines the text that describes the purpose of the link, and can be used as the link\u0026rsquo;s text.\nParsedRange ParsedRange is an integer representation of a range\nField Description start int (Optional) start defines the beginning of the range\nend int (Optional) end defines the end of the range\nPushoverConfig (Appears on:Receiver) PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nuserKey SecretKeySelector (Optional) userKey defines the secret\u0026rsquo;s key that contains the recipient user\u0026rsquo;s user key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. Either userKey or userKeyFile is required.\nuserKeyFile string (Optional) userKeyFile defines the user key file that contains the recipient user\u0026rsquo;s user key. Either userKey or userKeyFile is required. It requires Alertmanager \u0026gt;= v0.26.0.\ntoken SecretKeySelector (Optional) token defines the secret\u0026rsquo;s key that contains the registered application\u0026rsquo;s API token. See https://pushover.net/apps for application registration. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. Either token or tokenFile is required.\ntokenFile string (Optional) tokenFile defines the token file that contains the registered application\u0026rsquo;s API token. See https://pushover.net/apps for application registration. Either token or tokenFile is required. It requires Alertmanager \u0026gt;= v0.26.0.\ntitle string (Optional) title defines the notification title displayed in the Pushover message. This appears as the bold header text in the notification.\nmessage string (Optional) message defines the notification message content. This is the main body text of the Pushover notification.\nurl string (Optional) url defines a supplementary URL shown alongside the message. This creates a clickable link within the Pushover notification.\nurlTitle string (Optional) urlTitle defines a title for the supplementary URL. If not specified, the raw URL is shown instead.\nttl Duration (Optional) ttl defines the time to live for the alert notification. This determines how long the notification remains active before expiring.\ndevice string (Optional) device defines the name of a specific device to send the notification to. If not specified, the notification is sent to all user\u0026rsquo;s devices.\nsound string (Optional) sound defines the name of one of the sounds supported by device clients. This overrides the user\u0026rsquo;s default sound choice for this notification.\npriority string (Optional) priority defines the notification priority level. See https://pushover.net/api#priority for valid values and behavior.\nretry string (Optional) retry defines how often the Pushover servers will send the same notification to the user. Must be at least 30 seconds. Only applies to priority 2 notifications.\nexpire string (Optional) expire defines how long your notification will continue to be retried for, unless the user acknowledges the notification. Only applies to priority 2 notifications.\nhtml bool (Optional) html defines whether notification message is HTML or plain text. When true, the message can include HTML formatting tags. html and monospace formatting are mutually exclusive.\nmonospace bool (Optional) monospace optional HTML/monospace formatting for the message, see https://pushover.net/api#html html and monospace formatting are mutually exclusive.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for Pushover API requests.\nReceiver (Appears on:AlertmanagerConfigSpec) Receiver defines one or more notification integrations.\nField Description name string name defines the name of the receiver. Must be unique across all items from the list.\nopsgenieConfigs []OpsGenieConfig (Optional) opsgenieConfigs defines the list of OpsGenie configurations.\npagerdutyConfigs []PagerDutyConfig (Optional) pagerdutyConfigs defines the List of PagerDuty configurations.\ndiscordConfigs []DiscordConfig (Optional) discordConfigs defines the list of Discord configurations.\nslackConfigs []SlackConfig (Optional) slackConfigs defines the list of Slack configurations.\nwebhookConfigs []WebhookConfig (Optional) webhookConfigs defines the List of webhook configurations.\nwechatConfigs []WeChatConfig (Optional) wechatConfigs defines the list of WeChat configurations.\nemailConfigs []EmailConfig (Optional) emailConfigs defines the list of Email configurations.\nvictoropsConfigs []VictorOpsConfig (Optional) victoropsConfigs defines the list of VictorOps configurations.\npushoverConfigs []PushoverConfig (Optional) pushoverConfigs defines the list of Pushover configurations.\nsnsConfigs []SNSConfig (Optional) snsConfigs defines the list of SNS configurations\ntelegramConfigs []TelegramConfig (Optional) telegramConfigs defines the list of Telegram configurations.\nwebexConfigs []WebexConfig (Optional) webexConfigs defines the list of Webex configurations.\nmsteamsConfigs []MSTeamsConfig (Optional) msteamsConfigs defines the list of MSTeams configurations. It requires Alertmanager \u0026gt;= 0.26.0.\nmsteamsv2Configs []MSTeamsV2Config (Optional) msteamsv2Configs defines the list of MSTeamsV2 configurations. It requires Alertmanager \u0026gt;= 0.28.0.\nrocketchatConfigs []RocketChatConfig (Optional) rocketchatConfigs defines the list of RocketChat configurations. It requires Alertmanager \u0026gt;= 0.28.0.\nRocketChatActionConfig (Appears on:RocketChatConfig) RocketChatActionConfig defines actions for RocketChat messages.\nField Description text str
493ing (Optional) text defines the button text displayed to users. This is the label that appears on the interactive button.\nurl string (Optional) url defines the URL the button links to when clicked. This creates a clickable button that opens the specified URL.\nmsg string (Optional) msg defines the message to send when the button is clicked. This allows the button to post a predefined message to the channel.\nRocketChatConfig (Appears on:Receiver) RocketChatConfig configures notifications via RocketChat. It requires Alertmanager \u0026gt;= 0.28.0.\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL URL (Optional) apiURL defines the API URL for RocketChat. Defaults to https://open.rocket.chat/ if not specified.\nchannel string (Optional) channel defines the channel to send alerts to. This can be a channel name (e.g., \u0026ldquo;#alerts\u0026rdquo;) or a direct message recipient.\ntoken Kubernetes core/v1.SecretKeySelector token defines the sender token for RocketChat authentication. This is the personal access token or bot token used to authenticate API requests. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\ntokenID Kubernetes core/v1.SecretKeySelector tokenID defines the sender token ID for RocketChat authentication. This is the user ID associated with the token used for API requests. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\ncolor string (Optional) color defines the message color displayed in RocketChat. This appears as a colored bar alongside the message.\nemoji string (Optional) emoji defines the emoji to be displayed as an avatar. If provided, this emoji will be used instead of the default avatar or iconURL.\niconURL string (Optional) iconURL defines the icon URL for the message avatar. This displays a custom image as the message sender\u0026rsquo;s avatar.\ntext string (Optional) text defines the message text to send. This is optional because attachments can be used instead of or alongside text.\ntitle string (Optional) title defines the message title displayed prominently in the message. This appears as bold text at the top of the message attachment.\ntitleLink string (Optional) titleLink defines the URL that the title will link to when clicked. This makes the message title clickable in the RocketChat interface.\nfields []RocketChatFieldConfig (Optional) fields defines additional fields for the message attachment. These appear as structured key-value pairs within the message.\nshortFields bool (Optional) shortFields defines whether to use short fields in the message layout. When true, fields may be displayed side by side to save space.\nimageURL string (Optional) imageURL defines the image URL to display within the message. This embeds an image directly in the message attachment.\nthumbURL string (Optional) thumbURL defines the thumbnail URL for the message. This displays a small thumbnail image alongside the message content.\nlinkNames bool (Optional) linkNames defines whether to enable automatic linking of usernames and channels. When true, @username and #channel references become clickable links.\nactions []RocketChatActionConfig (Optional) actions defines interactive actions to include in the message. These appear as buttons that users can click to trigger responses.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for RocketChat API requests.\nRocketChatFieldConfig (Appears on:RocketChatConfig) RocketChatFieldConfig defines a field for RocketChat messages.\nField Description title string (Optional) title defines the title of this field. This appears as bold text labeling the field content.\nvalue string (Optional) value defines the value of this field, displayed underneath the title. This contains the actual data or content for the field.\nshort bool (Optional) short defines whether this field should be a short field. When true, the field may be displayed inline with other short fields to save space.\nRoute (Appears on:AlertmanagerConfigSpec) Route defines a node in the routing tree.\nField Description receiver string (Optional) receiver defines the name of the receiver for this route. If not empty, it should be listed in the receivers field.\ngroupBy []string (Optional) groupBy defines the list of labels to group by. Labels must not be repeated (unique list). Special label \u0026ldquo;\u0026hellip;\u0026rdquo; (aggregate by all possible labels), if provided, must be the only element in the list.\ngroupWait NonEmptyDuration (Optional) groupWait defines how long to wait before sending the initial notification. Example: \u0026ldquo;30s\u0026rdquo;\ngroupInterval NonEmptyDuration (Optional) groupInterval defines how long to wait before sending an updated notification. Must be greater than 0. Example: \u0026ldquo;5m\u0026rdquo;\nrepeatInterval NonEmptyDuration (Optional) repeatInterval defines how long to wait before repeating the last notification. Must be greater than 0. Example: \u0026ldquo;4h\u0026rdquo;\nmatchers []Matcher (Optional) matchers defines the list of matchers that the alert\u0026rsquo;s labels should match. For the first level route, the operator removes any existing equality and regexp matcher on the namespace label and adds a namespace: \u0026lt;object namespace\u0026gt; matcher, unless configured otherwise in Alertmanager\u0026rsquo;s AlertmanagerConfigMatcherStrategyType.\ncontinue bool (Optional) continue defines the boolean indicating whether an alert should continue matching subsequent sibling nodes. It will always be overridden to true for the first-level route by the Prometheus operator.\nroutes []k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1.JSON (Optional) routes defines the child routes.\nmuteTimeIntervals []string (Optional) muteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,\nactiveTimeIntervals []string (Optional) activeTimeIntervals is a list of TimeInterval names when this route should be active.\nSNSConfig (Appears on:Receiver) SNSConfig configures notifications via AWS SNS. See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL string (Optional) apiURL defines the SNS API URL, e.g. https://sns.us-east-2.amazonaws.com. If not specified, the SNS API URL from the SNS SDK will be used.\nsigv4 Sigv4 (Optional) sigv4 configures AWS\u0026rsquo;s Signature Verification 4 signing process to sign requests. This includes AWS credentials and region configuration for authentication.\ntopicARN string (Optional) topicARN defines the SNS topic ARN, e.g. arn:aws:sns:us-east-2:698519295917:My-Topic. If you don\u0026rsquo;t specify this value, you must specify a value for the PhoneNumber or TargetARN.\nsubject string (Optional) subject defines the subject line when the message is delivered to email endpoints. This field is only used when sending to email subscribers of an SNS topic.\nphoneNumber string (Optional) phoneNumber defines the phone number if message is delivered via SMS in E.164 format. If you don\u0026rsquo;t specify this value, you must specify a value for the TopicARN or TargetARN.\ntargetARN string (Optional) targetARN defines the mobile platform endpoint ARN if message is delivered via mobile notifications. If you don\u0026rsquo;t specify this value, you must specify a value for the TopicARN or PhoneNumber.\nmessage string (Optional) message defines the message content of the SNS notification. This is the actual notification text that will be sent to subscribers.\nattributes map[string]string (Optional) attributes defines SNS message attributes as key-value pairs. These provide additional metadata that can be used for message filtering and routing.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for SNS API requests.\nuseAWSHTTPClient bool (Optional) useAWSHTTPClient forces the AWS SDK\u0026rsquo;s BuildableClient instead of alertmanager\u0026rsquo;s tracing-wrapped HTTP client. Auto-enabled when AWS_CA_BUNDLE is set; set explicitly when configuring ca_bundle via shared AWS config.\nIt requires Alertmanager \u0026gt;= 0.33.0.\nSecretKeySelector (Appears on:EmailConfig, HTTPConfig, OpsGenieConfig, PagerDutyConfig, PushoverConfig, SlackConfig, TelegramConfig, VictorOpsConfig, WeChatConfig, WebhookConfig) SecretKeySelector selects a key of a Secret.\nField Description name string name defines the name of the secret in the object\u0026rsquo;s namespace to select from.\nkey string key defines the key of the secret to select from. Must be a valid secret key.\nSlackAction (Appears on:SlackConfig) SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information.\nField Description type string type defines the type of interactive component. Common values include \u0026ldquo;button\u0026rdquo; for clickable buttons and \u0026ldquo;select\u0026rdquo; for dropdown menus.\ntext string text defines the user-visible label displayed on the action element. For buttons, this is the button text. For select menus, this is the placeholder text.\nurl string (Optional) url defines the URL to open when the action is triggered. Only applicable for button-type actions. When set, clicking the button opens this URL.\nstyle string (Optional) style defines the visual appearance of the action element. Valid values include \u0026ldquo;default\u0026rdquo;, \u0026ldquo;primary\u0026rdquo; (green), and \u0026ldquo;danger\u0026rdquo; (red).\nname string (Optional) name defines a unique identifier for the action within the message. This value is sent back to your application when the action is triggered.\nvalue string (Optional) value defines the payload sent when the action is triggered. This data is included in the callback sent to your application.\nconfirm SlackConfirmationField (Optional) confirm defines an optional confirmation dialog that appears before the action is executed. When set, users must confirm their intent before the action proceeds.\nSlackConfig (Appears on:Receiver) SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL SecretKeySelector (Optional) apiURL defines the secret\u0026rsquo;s key that contains the Slack webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nchannel string (Optional) channel defines the channel or user to send notifications to.\nusername string (Optional) username defines the slack bot user name.\ncolor string (Optional) color defines the color of the left border of the Slack message attachment. Can be a hex color code (e.g., \u0026ldquo;#ff0000\u0026rdquo;) or a predefined color name.\ntitle string (Optional) title defines the title text displayed in the Slack message attachment.\ntitleLink string (Optional) titleLink defines the URL that the title will link to when clicked.\npretext str
493ing (Optional) pretext defines optional text that appears above the message attachment block.\ntext string (Optional) text defines the main text content of the Slack message attachment.\nfields []SlackField (Optional) fields defines a list of Slack fields that are sent with each notification.\nshortFields bool (Optional) shortFields determines whether fields are displayed in a compact format. When true, fields are shown side by side when possible.\nfooter string (Optional) footer defines small text displayed at the bottom of the message attachment.\nfallback string (Optional) fallback defines a plain-text summary of the attachment for clients that don\u0026rsquo;t support attachments.\ncallbackId string (Optional) callbackId defines an identifier for the message used in interactive components.\niconEmoji string (Optional) iconEmoji defines the emoji to use as the bot\u0026rsquo;s avatar (e.g., \u0026ldquo;ð»\u0026rdquo;).\niconURL string (Optional) iconURL defines the URL to an image to use as the bot\u0026rsquo;s avatar.\nimageURL string (Optional) imageURL defines the URL to an image file that will be displayed inside the message attachment.\nthumbURL string (Optional) thumbURL defines the URL to an image file that will be displayed as a thumbnail on the right side of the message attachment.\nlinkNames bool (Optional) linkNames enables automatic linking of channel names and usernames in the message. When true, @channel and @username will be converted to clickable links.\nmrkdwnIn []string (Optional) mrkdwnIn defines which fields should be parsed as Slack markdown. Valid values include \u0026ldquo;pretext\u0026rdquo;, \u0026ldquo;text\u0026rdquo;, and \u0026ldquo;fields\u0026rdquo;.\nactions []SlackAction (Optional) actions defines a list of Slack actions that are sent with each notification.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration.\ntimeout Duration (Optional) timeout defines the maximum time to wait for a webhook request to complete, before failing the request and allowing it to be retried. It requires Alertmanager \u0026gt;= v0.30.0.\nmessageText string (Optional) messageText defines text content of the Slack message. If set, this is sent as the top-level \u0026lsquo;text\u0026rsquo; field in the Slack payload. It requires Alertmanager \u0026gt;= v0.31.0.\nupdateMessage bool (Optional) updateMessage enables updating existing Slack messages instead of creating new ones when alert state changes. Please note that Webhook URLs do not support updates. It requires Alertmanager \u0026gt;= v0.32.0.\nSlackConfirmationField (Appears on:SlackAction) SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information.\nField Description text string text defines the main message displayed in the confirmation dialog. This should be a clear question or statement asking the user to confirm their action.\ntitle string (Optional) title defines the title text displayed at the top of the confirmation dialog. When not specified, a default title will be used.\nokText string (Optional) okText defines the label for the confirmation button in the dialog. When not specified, defaults to \u0026ldquo;Okay\u0026rdquo;. This button proceeds with the action.\ndismissText string (Optional) dismissText defines the label for the cancel button in the dialog. When not specified, defaults to \u0026ldquo;Cancel\u0026rdquo;. This button cancels the action.\nSlackField (Appears on:SlackConfig) SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information.\nField Description title string title defines the label or header text displayed for this field. This appears as bold text above the field value in the Slack message.\nvalue string value defines the content or data displayed for this field. This appears below the title and can contain plain text or Slack markdown.\nshort bool (Optional) short determines whether this field can be displayed alongside other short fields. When true, Slack may display this field side by side with other short fields. When false or not specified, the field takes the full width of the message.\nTelegramConfig (Appears on:Receiver) TelegramConfig configures notifications via Telegram. See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL URL (Optional) apiURL defines the Telegram API URL, e.g. https://api.telegram.org. If not specified, the default Telegram API URL will be used.\nbotToken SecretKeySelector (Optional) botToken defines the Telegram bot token. It is mutually exclusive with botTokenFile. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. Either botToken or botTokenFile is required.\nbotTokenFile string (Optional) botTokenFile defines the file to read the Telegram bot token from. It is mutually exclusive with botToken. Either botToken or botTokenFile is required. It requires Alertmanager \u0026gt;= v0.26.0.\nchatID int64 chatID defines the Telegram chat ID where messages will be sent. This can be a user ID, group ID, or channel ID (with @ prefix for public channels).\nmessageThreadID int64 (Optional) messageThreadID defines the Telegram Group Topic ID for threaded messages. This allows sending messages to specific topics within Telegram groups. It requires Alertmanager \u0026gt;= 0.26.0.\nmessage string (Optional) message defines the message template for the Telegram notification. This is the content that will be sent to the specified chat.\ndisableNotifications bool (Optional) disableNotifications controls whether Telegram notifications are sent silently. When true, users will receive the message without notification sounds.\nparseMode string (Optional) parseMode defines the parse mode for telegram message formatting. Valid values are \u0026ldquo;MarkdownV2\u0026rdquo;, \u0026ldquo;Markdown\u0026rdquo;, and \u0026ldquo;HTML\u0026rdquo;. This determines how text formatting is interpreted in the message.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for Telegram API requests.\nThreadByDateType (string alias) (Appears on:EmailThreadingConfig) Value Description \u0026#34;Daily\u0026#34;\n\u0026#34;None\u0026#34;\nTime (string alias) (Appears on:TimeRange) Time defines a time in 24hr format\nTimeInterval (Appears on:AlertmanagerConfigSpec) TimeInterval specifies the peri
493ods in time when notifications will be muted or active.\nField Description name string name of the time interval.\ntimeIntervals []TimePeriod (Optional) timeIntervals defines a list of TimePeriod.\nTimePeriod (Appears on:TimeInterval) TimePeriod describes periods of time.\nField Description times []TimeRange (Optional) times defines a list of TimeRange\nweekdays []WeekdayRange (Optional) weekdays defines a list of WeekdayRange\ndaysOfMonth []DayOfMonthRange (Optional) daysOfMonth defines a list of DayOfMonthRange\nmonths []MonthRange (Optional) months defines a list of MonthRange\nyears []YearRange (Optional) years defines a list of YearRange\nTimeRange (Appears on:TimePeriod) TimeRange defines a start and end time in 24hr format\nField Description startTime Time (Optional) startTime defines the start time in 24hr format.\nendTime Time (Optional) endTime defines the end time in 24hr format.\nURL (string alias) (Appears on:DiscordConfig, OpsGenieConfig, PagerDutyConfig, RocketChatConfig, TelegramConfig, VictorOpsConfig, WeChatConfig, WebexConfig) URL represents a valid URL\nVictorOpsConfig (Appears on:Receiver) VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiKey SecretKeySelector (Optional) apiKey defines the secret\u0026rsquo;s key that contains the API key to use when talking to the VictorOps API. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\napiUrl URL (Optional) apiUrl defines the VictorOps API URL. When not specified, defaults to the standard VictorOps API endpoint.\nroutingKey string routingKey defines a key used to map the alert to a team. This determines which VictorOps team will receive the alert notification.\nmessageType string (Optional) messageType describes the behavior of the alert. Valid values are \u0026ldquo;CRITICAL\u0026rdquo;, \u0026ldquo;WARNING\u0026rdquo;, and \u0026ldquo;INFO\u0026rdquo;.\nentityDisplayName string (Optional) entityDisplayName contains a summary of the alerted problem. This appears as the main title or identifier for the incident.\nstateMessage string (Optional) stateMessage contains a long explanation of the alerted problem. This provides detailed context about the incident.\nmonitoringTool string (Optional) monitoringTool defines the monitoring tool the state message is from. This helps identify the source system that generated the alert.\ncustomFields []KeyValue (Optional) customFields defines additional custom fields for notification. These provide extra metadata that will be included with the VictorOps incident.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client\u0026rsquo;s configuration for VictorOps API requests.\nWeChatConfig (Appears on:Receiver) WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiSecret SecretKeySelector (Optional) apiSecret defines the secret\u0026rsquo;s key that contains the WeChat API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\napiURL URL (Optional) apiURL defines the WeChat API URL. When not specified, defaults to the standard WeChat Work API endpoint.\ncorpID string (Optional) corpID defines the corp id for authentication. This is the unique identifier for your WeChat Work organization.\nagentID string (Optional) agentID defines the application agent ID within WeChat Work. This identifies which WeChat Work application will send the notifications.\ntoUser string (Optional) toUser defines the target user(s) to receive the notification. Can be a single user ID or multiple user IDs separated by \u0026lsquo;|\u0026rsquo;.\ntoParty string (Optional) toParty defines the target department(s) to receive the notification. Can be a single department ID or multiple department IDs separated by \u0026lsquo;|\u0026rsquo;
493.\ntoTag string (Optional) toTag defines the target tag(s) to receive the notification. Can be a single tag ID or multiple tag IDs separated by \u0026lsquo;|\u0026rsquo;.\nmessage string (Optional) message defines the API request data as defined by the WeChat API. This contains the actual notification content to be sent.\nmessageType string (Optional) messageType defines the type of message to send. Valid values include \u0026ldquo;text\u0026rdquo;, \u0026ldquo;markdown\u0026rdquo;, and other WeChat Work supported message types.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for WeChat API requests.\nWebexConfig (Appears on:Receiver) WebexConfig configures notification via Cisco Webex See https://prometheus.io/docs/alerting/latest/configuration/#webex_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\napiURL URL (Optional) apiURL defines the Webex Teams API URL i.e. https://webexapis.com/v1/messages\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client\u0026rsquo;s configuration. You must use this configuration to supply the bot token as part of the HTTP Authorization header.\nmessage string (Optional) message defines the message template\nroomID string roomID defines the ID of the Webex Teams room where to send the messages.\nWebhookConfig (Appears on:Receiver) WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\nField Description sendResolved bool (Optional) sendResolved defines whether or not to notify about resolved alerts.\nurl string (Optional) url defines the URL to send HTTP POST requests to. urlSecret takes precedence over url. One of urlSecret and url should be defined.\nurlSecret SecretKeySelector (Optional) urlSecret defines the secret\u0026rsquo;s key that contains the webhook URL to send HTTP requests to. urlSecret takes precedence over url. One of urlSecret and url should be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\nhttpConfig HTTPConfig (Optional) httpConfig defines the HTTP client configuration for webhook requests.\nmaxAlerts int32 (Optional) maxAlerts defines the maximum number of alerts to be sent per webhook message. When 0, all alerts are included in the webhook payload.\ntimeout Duration (Optional) timeout defines the maximum time to wait for a webhook request to complete, before failing the request and allowing it to be retried. It requires Alertmanager \u0026gt;= v0.28.0.\npayload string (Optional) payload define custom payload to be sent to the webhook endpoint. This is an advanced configuration option that allows you to define a custom payload using Go templates. It requires Alertmanager \u0026gt;= v0.32.0.\nWeekday (string alias) Weekday is day of the week\nValue Description \u0026#34;friday\u0026#34;\n\u0026#34;monday\u0026#34;\n\u0026#34;saturday\u0026#34;\n\u0026#34;sunday\u0026#34;\n\u0026#34;thursday\u0026#34;\n\u0026#34;tuesday\u0026#34;\n\u0026#34;wednesday\u0026#34;\nWeekdayRange (string alias) (Appears on:TimePeriod) WeekdayRange is an inclusive range of days of the week beginning on Sunday Days can be specified by name (e.g \u0026lsquo;Sunday\u0026rsquo;) or as an inclusive range (e.g \u0026lsquo;Monday:Friday\u0026rsquo;)\nYearRange (string alias) (Appears on:TimePeriod) YearRange is an inclusive range of years\n" 494 } 495 ); 496 index.add( 497 { 498 id: 7, 499 href: "/docs/platform/", 500 title: "Platform Guide", 501 description: "Help Prometheus Operator.", 502 content: "" 503 } 504 ); 505 index.add( 506 { 507 id: 8, 508 href: "/docs/platform/platform-guide/", 509 title: "Getting Started", 510 description: "Getting started page for Platform Guide", 511 content: "This guide assumes you have a basic understanding of the Prometheus Operator. If you are new to it, please start with the Introduction page before proceeding. This guide will walk
511you through deploying Prometheus and Alertmanager instances.\nDeploying Prometheus # To deploy a Prometheus instance, you must create the RBAC rules for the Prometheus service account.\nFirst, create a ServiceAccount for Prometheus.\napiVersion: v1 kind: ServiceAccount metadata: name: prometheus Next, create a ClusterRole that grants Prometheus the necessary permissions to discover and scrape the targets within the cluster.\napiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus rules: - apiGroups: [\u0026#34;\u0026#34;] resources: - nodes - nodes/metrics - services - endpoints - pods verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] - apiGroups: [\u0026#34;\u0026#34;] resources: - configmaps verbs: [\u0026#34;get\u0026#34;] - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] - apiGroups: - networking.k8s.io resources: - ingresses verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] - nonResourceURLs: [\u0026#34;/metrics\u0026#34;] verbs: [\u0026#34;get\u0026#34;] Now, create a ClusterRoleBinding to bind the ClusterRole to the Prometheus ServiceAccount.\napiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus subjects: - kind: ServiceAccount name: prometheus namespace: default Apply all these manifests to create the necessary RBAC resources. Now you are all set to deploy a Prometheus instance. Here is an example of a basic Prometheus instance manifest.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: serviceAccountName: prometheus To verify that the instance is up and running, run:\nkubectl get -n default prometheus prometheus -w For more information, see the Prometheus Operator RBAC guide.\nDeploying Alertmanager # Let us take a simple example that creates 3 replicas of Alertmanager.\napiVersion: monitoring.coreos.com/v1 kind: Alertmanager metadata: name: example spec: replicas: 3 Wait for all Alertmanager pods to be ready:\nkubectl get pods -l alertmanager=example -w However, Alertmanager as it is now is of no use to us. To properly use Alertmanager, it is important to understand the relationship between Prometheus and Alertmanager. Alertmanager is used to:\nDeduplicate alerts received from Prometheus. Silence alerts. Route and send grouped notifications to various integrations (PagerDuty, OpsGenie, mail, chat, â¦). So, to put Alertmanager instances to use, you would need to integrate it with Prometheus.\nIntegrating Alertmanager With Prometheus # Exposing the Alertmanager service # To access the Alertmanager interface, you have to expose the service to the outside. For simplicity, we use a NodePort Service.\napiVersion: v1 kind: Service metadata: name: alertmanager-example spec: type: NodePort ports: - name: web nodePort: 30903 port: 9093 protocol: TCP targetPort: web selector: alertmanager: example Once the Service is created, the Alertmanager web server is available under the node\u0026rsquo;s IP address on port 30903.\nNote: Exposing the Alertmanager web server this way may not be an applicable solution. Read more about the possible options in the Ingress guide.\nConfiguring Alertmanager in Prometheus # The Alertmanager cluster is now fully functional and highly available, but no alerts are fired against it.\nFirst, create a Prometheus instance that will send alerts to the Alertmanager cluster:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: example spec: serviceAccountName: prometheus replicas: 2 alerting: alertmanagers: - namespace: default name: alertmanager-example port: web The Prometheus resource discovers all of the Alertmanager instances behind the Service created before (pay attention to name, namespace and port fields which should match with the definition of the Alertmanager Service).\nOpen the Prometheus web interface, go to the \u0026ldquo;Status \u0026gt; Runtime \u0026amp; Build Information\u0026rdquo; page and check that the Prometheus has discovered 3 Alertmanager instances.\n" 512 } 513 ); 514 index.add( 515 { 516 id: 9, 517 href: "/docs/platform/exposing-prometheus-and-alertmanager/", 518 title: "Exposing Prometheus and Alertmanager", 519 description: "Guide to exposing Prometheus and Alertmanager in Kubernetes using NodePort, ClusterIP, or Ingress for external access.", 520 content: "\nNote: Starting with v0.39.0, Prometheus Operator requires use of Kubernetes v1.16.x and up. Exposing Prometheus and Alertmanager # The Prometheus Operator takes care of operating Prometheus and Alertmanagers clusters. Kubernetes provides several ways to expose these cluster
520s to the outside world. This document outlines best practices and caveats for exposing Prometheus and Alertmanager clusters.\nNodePort # The easiest way to expose Prometheus or Alertmanager is to use a Service of type NodePort.\nCreate a simple Prometheus object with one replica:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: main spec: resources: requests: memory: 400Mi All Prometheus Pods are labeled with prometheus: \u0026lt;prometheus-name\u0026gt;. If the Prometheus object\u0026rsquo;s name is main, the selector is prometheus: main. This means that the respective manifest for the Service must define the selector as prometheus: main.\napiVersion: v1 kind: Service metadata: name: prometheus-main spec: type: NodePort ports: - name: web nodePort: 30900 port: 9090 protocol: TCP targetPort: web selector: prometheus: main After creating a Service with the above manifest, the web UI of Prometheus will be accessible by browsing to any of the worker nodes using http://\u0026lt;node-ip\u0026gt;:30900/.\nExposing the Alertmanager works in the same fashion, with the selector alertmanager: \u0026lt;alertmanager-name\u0026gt;.\napiVersion: monitoring.coreos.com/v1 kind: Alertmanager metadata: name: main spec: replicas: 3 resources: requests: memory: 400Mi And the Service.\napiVersion: v1 kind: Service metadata: name: alertmanager-main spec: type: NodePort ports: - name: web nodePort: 30903 port: 9093 protocol: TCP targetPort: web selector: alertmanager: main The Alertmanager web UI will be available at http://\u0026lt;node-ip\u0026gt;:30903/.\nKubernetes API # The Kubernetes API has a feature of forwarding requests from the API to a cluster internal Service. The general URL scheme to access these is:\nhttp(s)://control-plane-host/api/v1/proxy/namespaces/\u0026lt;namespace\u0026gt;/services/\u0026lt;service-name\u0026gt;:\u0026lt;port-name-or-number\u0026gt;/ For ease of use, use kubectl proxy. It proxies requests from a local address to the Kubernetes API server and handles authentication.\nTo be able to do so, create a Service of type ClusterIP:\napiVersion: v1 kind: Service metadata: name: prometheus-main spec: type: ClusterIP ports: - name: web port: 9090 protocol: TCP targetPort: web selector: prometheus: main Prometheus and Alertmanager must be configured with the full URL at which they will be exposed. Therefore the Prometheus manifest requires an entry for externalUrl:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: main spec: externalUrl: http://127.0.0.1:8001/api/v1/proxy/namespaces/default/services/prometheus-main:web/ resources: requests: memory: 400Mi Note the externalUrl uses the host 127.0.0.1:8001, which is how kubectl proxy exposes the Kubernetes API by default.\nOnce the Prometheus Pods are running they are reachable under the specified externalUrl.\nThe Alertmanager object\u0026rsquo;s manifest follows the same rules:\napiVersion: monitoring.coreos.com/v1 kind: Alertmanager metadata: name: main spec: replicas: 3 externalUrl: http://127.0.0.1:8001/api/v1/proxy/namespaces/default/services/alertmanager-main:web/ resources: requests: memory: 400Mi And the respective Service:\napiVersion: v1 kind: Service metadata: name: alertmanager-main spec: type: ClusterIP ports: - name: web port: 9093 protocol: TCP targetPort: web selector: alertmanager: main Then it will be available under http://127.0.0.1:8001/api/v1/proxy/namespaces/default/services/alertmanager-main:web/.\nNote the URL for the Service uses the host 127.0.0.1:8001, which is how kubectl proxy exposes the Kubernetes API by default.\nIngress # Exposing the Prometheus or Alertmanager web UI through an Ingress object requires a running Ingress controller. For more information, see the Kubernetes documentation on Ingress.\nThis example was tested with the NGINX Ingress Controller. For a quick-start for running the NGINX Ingress Controller follow the instructions in the NGINX Ingress installation guide.\nBe certain to evaluate available Ingress controllers for the specifics of your production environment. The NGINX Ingress Controller may or may not be suitable. Consider other solutions, like HA Proxy, Traefik, GCE, or AWS.\nWARNING: If your Ingress
520is exposed to the internet, everyone can have full access on your resources. It\u0026rsquo;s strongly recommend to enable an external authentication or whitelisting IP address.\nAn Ingress object also requires a Service to be set up, as the requests are routed from the Ingress endpoint to the internal Service.\napiVersion: v1 kind: Service metadata: name: prometheus-main spec: type: ClusterIP ports: - name: web port: 9090 protocol: TCP targetPort: web selector: prometheus: main --- apiVersion: v1 kind: Service metadata: name: alertmanager-main spec: type: ClusterIP ports: - name: web port: 9093 protocol: TCP targetPort: web selector: alertmanager: main A corresponding Ingress object would be:\napiVersion: extensions/v1 kind: Ingress metadata: name: monitoring annotations: ingress.kubernetes.io/whitelist-source-range: 10.0.0.0/16 # change this range to admin IPs nginx.ingress.kubernetes.io/rewrite-target: /$2 spec: rules: - http: paths: - backend: serviceName: prometheus-main servicePort: 9090 path: /prometheus(/|$)(.*) - backend: serviceName: alertmanager-main servicePort: 9093 path: /alertmanager(/|$)(.*) Finally, the Prometheus and Alertmanager objects must be created, specifying the externalUrl at which they will be found.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: main spec: externalUrl: http://monitoring.my.systems/prometheus resources: requests: memory: 400Mi --- apiVersion: monitoring.coreos.com/v1 kind: Alertmanager metadata: name: main spec: replicas: 3 externalUrl: http://monitoring.my.systems/alertmanager resources: requests: memory: 400Mi Note the path /prometheus at the end of the externalUrl, as specified in the Ingress object.\n" 521 } 522 ); 523 index.add( 524 { 525 id: 10, 526 href: "/docs/platform/webhook/", 527 title: "Admission webhook", 528 description: "Guide to deploy and run the admission webhook service", 529 content: "This guide describes how to deploy and use the Prometheus operator\u0026rsquo;s admission webhook service.\nThe admission webhook service is able to\nValidate requests ensuring that PrometheusRule and AlertmanagerConfig objects are semantically valid. Mutate requests enforcing that all annotations of PrometheusRule objects are coerced into string values. Convert AlertmanagerConfig objects between v1alpha1 and v1beta1 versions. This guide assumes that you have already deployed the Prometheus Operator and that admission controllers are enabled on your cluster.\nPrerequisites # The Kubernetes API server expects admission webhook services to communicate over HTTPS so we need:\nValid TLS certificate and key provisioned for the admission webhook service. Kubernetes Secret containing the TLS certificate and key. For this guide, we assume that a Secret named admission-webhook-certs exists in the same namespace as the webhook deployment and that it contains the base64-encoded PEM certificate (tls.crt) and key (tls.key) for the admission webhook service.\napiVersion: v1 data: tls.crt: LS0tLS...LS0tCg== tls.key: LS0tLS...LS0tCg== kind: Secret metadata: name: admission-webhook-certs namespace: default The recommended approach is to use cert-manager which manages both the lifecycle of the TLS certificates and the integration with the Kubernetes API with respect to the webhook configuration (e.g. automatic injection of the CA bundle).\nWhile installing cert-manager is beyond the scope of this guide, below is an example of a Certificate object which triggers the creation of the admission-webhook-certs secret using a SelfSigned issuer. The certificate is valid for the Kubernetes service prometheus-operator-admission-webhook in the default namespace.\napiVersion: cert-manager.io/v1 kind: Certificate metadata: name: prometheus-operator-admission-webhook namespace: default spec: dnsNames: - prometheus-operator-admission-webhook.default.svc secretName: admission-webhook-certs issuerRef: name: selfsigned-cluster-issuer kind: ClusterIssuer Deploying the admission webhook # You can apply the following manifests to run a deployment of the webhook with 2 replicas.\napiVersion: v1 automountServiceAccountToken: false kind: ServiceAccount metadata: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/version: 0.94.1 name: prometheus-operator-admission-webhook namespace: default apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/version: 0.94.1 name: prometheus-operator-admission-webhook namespace: default spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook strategy: rollingUpdate: maxUnavailable: 1 template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator-admission-webhook labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/version: 0.94.1 spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook namespaces: - default topologyKey: kubernetes.io/hostname automountServiceAccountToken: false
529containers: - args: - --web.enable-tls=true - --web.cert-file=/etc/tls/private/tls.crt - --web.key-file=/etc/tls/private/tls.key image: quay.io/prometheus-operator/admission-webhook:v0.94.1 name: prometheus-operator-admission-webhook ports: - containerPort: 8443 name: https resources: limits: cpu: 200m memory: 200Mi requests: cpu: 50m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /etc/tls/private name: tls-certificates readOnly: true securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault serviceAccountName: prometheus-operator-admission-webhook volumes: - name: tls-certificates secret: items: - key: tls.crt path: tls.crt - key: tls.key path: tls.key secretName: admission-webhook-certs You can now expose the webhook as a Kubernetes service by applying the following manifest.\napiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/version: 0.94.1 name: prometheus-operator-admission-webhook namespace: default spec: ports: - name: https port: 443 targetPort: https selector: app.kubernetes.io/name: prometheus-operator-admission-webhook Managing webhook configurations # Once the Prometheus operator\u0026rsquo;s admission webhook service is up and running, you can create ValidatingWebhookConfiguration and/or MutatingWebhookConfiguration API objects that defines when/how the Kubernetes API should contact the service.\nFor more details, refer to the Kubernetes documentation.\nPrometheusRule # Validating PrometheusRule resources # The /admission-prometheusrules/validate endpoint of the admission webhook service ensures that PrometheusRule objects are semantically valid.\nThe following example configures a validating admission webhook rejecting invalid PrometheusRule objects.\nNote: If you\u0026rsquo;re not using cert-manager, check the CA Bundle section.\napiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: name: prometheus-operator-rulesvalidation annotations: cert-manager.io/inject-ca-from: default/prometheus-operator-admission-webhook webhooks: - clientConfig: service: name: prometheus-operator-admission-webhook namespace: default path: /admission-prometheusrules/validate failurePolicy: Fail name: prometheusrulevalidate.monitoring.coreos.com namespaceSelector: {} rules: - apiGroups: - monitoring.coreos.com apiVersions: - \u0026#39;*\u0026#39; operations: - CREATE - UPDATE resources: - prometheusrules admissionReviewVersions: [\u0026#34;v1\u0026#34;, \u0026#34;v1beta1\u0026#34;] sideEffects: None Mutating PrometheusRule resources # The /admission-prometheusrules/mutate endpoint mutates PrometheusRule objects so that integer and boolean YAML data elements are coerced into strings.\nThe following example deploys a mutating admission webhook.\nNote: If you\u0026rsquo;re not using cert-manager, check the CA Bundle section.\napiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: name: prometheus-operator-rulesmutation annotations: cert-manager.io/inject-ca-from: default/prometheus-operator-admission-webhook webhooks: - clientConfig: service: name: prometheus-operator-admission-webhook namespace: default path: /admission-prometheusrules/mutate failurePolicy: Fail name: prometheusrulemutate.monitoring.coreos.com namespaceSelector: {} rules: - apiGroups: - monitoring.coreos.com apiVersions: - \u0026#39;*\u0026#39; operations: - CREATE - UPDATE resources: - prometheusrules admissionReviewVersions: [\u0026#34;v1\u0026#34;, \u0026#34;v1beta1\u0026#34;] sideEffects: None AlertmanagerConfig # The /admission-alertmanagerconfigs/validate endpoint rejects AlertmanagerConfig objects that are not semantically valid.\nThe following example configures a validating admission webhook rejecting invalid AlertmanagerConfig objects.\nNote: If you\u0026rsquo;re not using cert-manager, check the CA Bundle section.\napiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: name: prometheus-operator-alertmanager-config-validation annotations: cert-manager.io/inject-ca-from: default/prometheus-operator-admission-webhook webhooks: - clientConfig: service: name: prometheus-operator-admission-webhook namespace: default path: /admission-alertmanagerconfigs/validate failurePolicy: Fail name: alertmanagerconfigsvalidate.monitoring.coreos.com namespaceSelector: {} rules: - apiGroups: - monitoring.coreos.com apiVersions: - v1alpha1 operations: - CREATE - UPDATE resources: - alertmanagerconfigs admissionReviewVersions: [\u0026#34;v1\u0026#34;, \u0026#34;v1beta1\u0026#34;] sideEffects: None Converting AlertmanagerConfig resources # The /convert endpoint converts Alertmanagerconfig objects between v1alpha1 and v1beta1 ver
529sions.\nFor more details, refer to the Kubernetes documentation.\nThe following command patches the alertmanagerconfigs.monitoring.coreos.com CRD to enable the conversion.\ncat \u0026lt;\u0026lt;EOF | kubectl patch crds/alertmanagerconfigs.monitoring.coreos.com --patch-file /dev/stdin { \u0026#34;spec\u0026#34;: { \u0026#34;conversion\u0026#34;: { \u0026#34;strategy\u0026#34;: \u0026#34;Webhook\u0026#34;, \u0026#34;webhook\u0026#34;: { \u0026#34;clientConfig\u0026#34;: { \u0026#34;service\u0026#34;: { \u0026#34;name\u0026#34;: \u0026#34;prometheus-operator-admission-webhook\u0026#34;, \u0026#34;namespace\u0026#34;: \u0026#34;default\u0026#34;, \u0026#34;path\u0026#34;: \u0026#34;/convert\u0026#34;, \u0026#34;port\u0026#34;: 443 } }, \u0026#34;conversionReviewVersions\u0026#34;: [ \u0026#34;v1beta1\u0026#34;, \u0026#34;v1alpha1\u0026#34; ] } } } } EOF Annotate the AlertmanagerConfig CRD to let cert-manager inject the service CA bundle.\nkubectl annotate crds alertmanagerconfigs.monitoring.coreos.com cert-manager.io/inject-ca-from=default/prometheus-operator-admission-webhook Note: If you\u0026rsquo;re not using cert-manager, check the CA Bundle section.\nCA bundle # When contacting the webhook service during request admissions or CRD conversion, the Kubernetes API verifies the server certificate using the caBundle field defined in clientConfig. The field should contain the base64-encoded CA certificate that signed the webhook\u0026rsquo;s TLS certificate.\nCertificate managers like cert-manager supports automatic CA injection into webhook configurations and custom resource definitions. If you are not using a certificate manager, you need to manually specify the caBundle field in ValidatingWebhookConfiguration, MutatingWebhookConfiguration and CustomResourceDefinition.\n" 530 } 531 ); 532 index.add( 533 { 534 id: 11, 535 href: "/docs/platform/prometheus-agent/", 536 title: "Prometheus Agent", 537 description: "Guide for running Prometheus in Agent mode", 538 content: " ð Prometheus Operator \u003e= v0.64.0 is required. As mentioned in Prometheus\u0026rsquo;s blog, Prometheus Agent is a deployment model optimized for environments where all collected data is forwarded to a long-term storage solution, e.g. Cortex, Thanos or Prometheus, that do not need storage or rule evaluation.\nFirst of all, make sure that the PrometheusAgent CRD is installed in the cluster and that the operator has the proper RBAC permissions to reconcile the PrometheusAgent resources.\napiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/version: 0.94.1 name: prometheus-operator rules: - apiGroups: - monitoring.coreos.com resources: - alertmanagers - alertmanagers/finalizers - prometheusagents - prometheusagents/finalizers - prometheuses - prometheuses/finalizers - thanosrulers - thanosrulers/finalizers verbs: - patch - apiGroups: - monitoring.coreos.com resources: - alertmanagers/finalizers - prometheusagents/finalizers - prometheuses/finalizers - thanosrulers/finalizers verbs: - update - apiGroups: - monitoring.coreos.com resources: - alertmanagers/status - podmonitors/status - probes/status - prometheuses/status - prometheusagents/status - prometheusrules/status - scrapeconfigs/status - servicemonitors/status - thanosrulers/status verbs: - create - update - patch - delete - apiGroups: - monitoring.coreos.com resources: - alertmanagers - alertmanagerconfigs - podmonitors - probes - prometheusagents - prometheuses - prometheusrules - servicemonitors - scrapeconfigs - thanosrulers verbs: - get - list - watch - apiGroups: - apps resources: - statefulsets verbs: - get - list - watch - create - update - patch - delete - apiGroups: - \u0026#34;\u0026#34; resources: - configmaps - secrets verbs: - get - list - watch - create - update - delete - apiGroups: - \u0026#34;\u0026#34; resources: - pods verbs: - list - delete - apiGroups: - \u0026#34;\u0026#34; resources: - services - services/finalizers verbs: - get - create - update - delete - apiGroups: - \u0026#34;
538\u0026#34; resources: - nodes verbs: - list - watch - apiGroups: - \u0026#34;\u0026#34; resources: - namespaces verbs: - get - list - watch - apiGroups: - events.k8s.io resources: - events verbs: - patch - create - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - apiGroups: - \u0026#34;\u0026#34; resources: - endpoints verbs: - get - create - update - delete Similarly to Prometheus, Prometheus Agent will also require permission to scrape targets. Because of this, we will create a new service account for the Agent with the necessary permissions to scrape targets.\nStart with the ServiceAccount, ClusterRole and ClusterRoleBinding:\napiVersion: v1 kind: ServiceAccount metadata: name: prometheus-agent apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus-agent rules: - apiGroups: [\u0026#34;\u0026#34;] resources: - services - endpoints - pods verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] - apiGroups: [\u0026#34;\u0026#34;] resources: - configmaps verbs: [\u0026#34;get\u0026#34;] - apiGroups: - networking.k8s.io resources: - ingresses verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] - nonResourceURLs: [\u0026#34;/metrics\u0026#34;] verbs: [\u0026#34;get\u0026#34;] apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-agent roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus-agent subjects: - kind: ServiceAccount name: prometheus-agent namespace: default Lastly, we can deploy the Agent. The spec field is very similar to the Prometheus CRD but the features that aren\u0026rsquo;t applicable to the agent mode (like alerting, retention, Thanos, \u0026hellip;) are not available.\napiVersion: monitoring.coreos.com/v1alpha1 kind: PrometheusAgent metadata: name: prometheus-agent spec: replicas: 2 serviceAccountName: prometheus-agent serviceMonitorSelector: matchLabels: team: frontend Continue with the Getting Started page to learn how to monitor applications running on Kubernetes.\n" 539 } 540 ); 541 index.add( 542 { 543 id: 12, 544 href: "/docs/platform/thanos/", 545 title: "Thanos", 546 description: "Thanos and the Prometheus Operator.", 547 content: "Thanos is a set of components that can be composed into a highly available, multi Prometheus metric system with potentially unlimited storage capacity, if your Object Storage allows for it.\nBefore continuing with Prometheus Operator Thanos integration, it is recommended to read more about Thanos in the official documentation.\nWhat does the Prometheus Operator help with? # Prometheus Operator can manage:\nthe Thanos sidecar component with the Prometheus custom resource definition. Deployed within the Prometheus pod, it can hook into the Thanos querying system as well as optionally back up your data to object storage. Thanos Ruler instances with the ThanosRuler custom resource definition. Other Thanos components such the Querier, the Receiver, the Compactor and the Store Gateway should be deployed independently of the Prometheus Operator and its Thanos configuration. The kube-thanos project has some starting points for other Thanos components deployments.\nPrometheus Custom Resource with Thanos Sidecar # The Prometheus CRD has support for adding a Thanos sidecar to the Prometheus Pod. To enable the sidecar, the thanos section must be set to a non empty value. For example, the simplest c
547onfiguration is to just set a valid thanos container image url.\n... spec: ... thanos: image: quay.io/thanos/thanos:v0.28.1 ... Configuring Thanos Object Storage # You can configure the Thanos sidecar to upload TSDB blocks to object storage by providing a Kubernetes Secret containing the required configuration.\nFor more information and examples about the configuration itself, take a look at the Thanos documentation.\nOnce you have written your configuration save it to a file. Here\u0026rsquo;s an example:\ntype: s3 config: bucket: thanos endpoint: ams3.digitaloceanspaces.com access_key: XXX secret_key: XXX Let\u0026rsquo;s assume you saved this file to /tmp/thanos-config.yaml. You can use the following command to create a secret called thanos-objstore-config inside your cluster in the monitoring namespace.\nkubectl -n monitoring create secret generic thanos-objstore-config --from-file=thanos.yaml=/tmp/thanos-config.yaml Then you can specify this secret inside the Thanos field of the Prometheus spec as mentioned earlier:\n... spec: ... thanos: image: quay.io/thanos/thanos:v0.28.1 objectStorageConfig: key: thanos.yaml name: thanos-objstore-config ... This will attach Thanos sidecar that will backup all new blocks that Prometheus produces every 2 hours to the object storage.\nNOTE: With Prometheus older than v3.9.0 or a Thanos sidecar older than v0.42.0, this option disables the local Prometheus compaction (--storage.tsdb.min-block-duration == --storage.tsdb.max-block-duration). This means that Thanos compactor is the main singleton component responsible for compactions on a global, object storage level.\nNOTE: With Prometheus \u0026gt;= v3.9.0 and a Thanos sidecar \u0026gt;= v0.42.0, the operator keeps local Prometheus compaction enabled and instead coordinates uploads through the sidecar\u0026rsquo;s shipper meta file: Prometheus is started with --storage.tsdb.delay-compact-file.path and the sidecar with --shipper.meta-file-name and --shipper.ignore-unequal-block-size, so that Prometheus only compacts blocks that have already been uploaded to object storage. This avoids the query/memory overhead of running Prometheus without local compaction. Set spec.disableCompaction: true to force the old behavior of disabling local compaction.\nThanos Ruler # The Thanos Ruler component evaluates Prometheus recording and alerting rules against chosen query API. A ThanosRuler instance requires at least one Query API server defined either by the .spec.queryConfig field or the .spec.queryEndpoints field. It can also be c
547onfigured to send alerts to Alertmanager with the .spec.alertmanagersConfig.\n... apiVersion: monitoring.coreos.com/v1 kind: ThanosRuler metadata: name: thanos-ruler-demo labels: example: thanos-ruler namespace: monitoring spec: image: quay.io/thanos/thanos:v0.28.1 ruleSelector: matchLabels: role: my-thanos-rules queryEndpoints: - dnssrv+_http._tcp.my-thanos-querier.monitoring.svc.cluster.local alertmanagersConfig: key: alertmanager-configs.yaml name: thanosruler-alertmanager-config More context for your Alertmanager configuration can be found in the Thanos documentation. An example:\napiVersion: v1 kind: Secret metadata: name: thanosruler-alertmanager-config stringData: alertmanager-configs.yaml: |- alertmanagers: - static_configs: - \u0026#34;dnssrv+_web._tcp.alertmanager-operated.monitoring.svc.cluster.local\u0026#34; api_version: v2 Can be saved as /tmp/alertmanager-configs.yaml, and you can create in your namespace, for example monitoring as thanosruler-alertmanager-config imperatively with:\nkubectl -n monitoring create secret generic thanosruler-alertmanager-config --from-file=alertmanager-configs.yaml=/tmp/alertmanager-configs.yaml The recording and alerting rules used by a ThanosRuler component, are configured using the same PrometheusRule objects which are used by Prometheus. In the given example, the rules contained in any PrometheusRule object which match the label role=my-thanos-rules will be loaded by the Thanos Ruler pods.\nOther Thanos Components # Deploying the sidecar was the first step towards getting Thanos up and running, but there are more components to be deployed to get a complete Thanos setup.\nQuerier Additionally, when object storage backup is desired:\nStore Compactor kube-thanos project has already supported several thanos components. For more details, please checkout kube-thanos.\n" 548 } 549 ); 550 index.add( 551 { 552 id: 13, 553 href: "/docs/platform/rbac/", 554 title: "RBAC", 555 description: "Role-based access control for the Prometheus operator", 556 content: "Role-based access control (RBAC) for the Prometheus Operator involves two parts, RBAC rules for the Operator itself and RBAC rules for the Prometheus Pods themselves created by the Operator as Prometheus requires access to the Kubernetes API for target and Alertmanager discovery.\nPrometheus Operator RBAC # In order for the Prometheus Operator to work in an RBAC based authorization environment, a ClusterRole with access to all the resources the Operator requires for the Kubernetes API needs to be created. This section is intended to describe, why the specified rules are required.\nHere is a ready to use manifest of a ClusterRole that can be used to start the Prometheus Operator:\napiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/version: 0.94.1 name: prometheus-operator rules: - apiGroups: - monitoring.coreos.com resources: - alertmanagers - alertmanagers/finalizers - prometheusagents - prometheusagents/finalizers - prometheuses - prometheuses/finalizers - thanosrulers - thanosrulers/finalizers verbs: - patch - apiGroups: - monitoring.coreos.com resources: - alertmanagers/finalizers - prometheusagents/finalizers - prometheuses/finalizers - thanosrulers/finalizers verbs: - update - apiGroups: - monitoring.coreos.com resources: - alertmanagers/status - podmonitors/status - probes/status - prometheuses/status - prometheusagents/status - prometheusrules/status - scrapeconfigs/status - servicemonitors/status - thanosrulers/status verbs: - create - update - patch - delete - apiGroups: - monitoring.coreos.com resources: - alertmanagers - alertmanagerconfigs - podmonitors - probes - prometheusagents - prometheuses - prometheusrules - servicemonitors - scrapeconfigs - thanosrulers verbs: - get - list - watch - apiGroups: - apps resources: - statefulsets verbs: - get - list - watch - create - update - patch - delete - apiGroups: - \u0026#34;\u0026#34; resources: - configmaps - secrets verbs: - get - list - watch - create - update - delete - apiGroups: - \u0026#34;
556\u0026#34; resources: - pods verbs: - list - delete - apiGroups: - \u0026#34;\u0026#34; resources: - services - services/finalizers verbs: - get - create - update - delete - apiGroups: - \u0026#34;\u0026#34; resources: - nodes verbs: - list - watch - apiGroups: - \u0026#34;\u0026#34; resources: - namespaces verbs: - get - list - watch - apiGroups: - events.k8s.io resources: - events verbs: - patch - create - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - apiGroups: - \u0026#34;\u0026#34; resources: - endpoints verbs: - get - create - update - delete Note: A cluster admin is required to create this ClusterRole and create a ClusterRoleBinding or RoleBinding to the ServiceAccount used by the Prometheus Operator Pod. The ServiceAccount used by the Prometheus Operator Pod can be specified in the Deployment object used to deploy it.\nAs the Prometheus Operator works extensively with its customresourcedefinitions, it requires all actions on those objects. Those are:\nalertmanagers podmonitors probes prometheuses prometheusrules servicemonitors thanosrulers The operator materializes Alertmanager, Prometheus and ThanosRuler objects as statefulsets therefore all changes to an Alertmanager or Prometheus object result in a change to the matching statefulsets, which means all actions must be permitted.\nAdditionally as the Prometheus Operator generates configurations, it requires all actions on configmaps and secrets.\nWhen the Prometheus Operator performs version migrations from one version of Prometheus or Alertmanager to the other, it needs to list pods running an old version and delete those.\nThe Prometheus Operator reconciles services called prometheus-operated and alertmanager-operated, which are used as governing Services for the StatefulSets. To perform this reconciliation it needs the permission to get, create, update and delete these services.\nAs the kubelet is currently not self-hosted, the Prometheus Operator has a feature to synchronize the IPs of the kubelets into an Endpoints object, which requires access to list and watch of nodes (kubelets) and create and update for the endpoints resource.\nPrometheus RBAC # The Prometheus server itself accesses the Kubernetes API to discover targets and Alertmanagers. Therefore a separate ClusterRole for those Prometheus servers needs to exist.\nAs Prometheus does not modify any Objects in the Kubernetes API, but just reads them it simply requires the get, list, and watch actions. As Prometheus can also be used to scrape metrics from the Kubernetes apiserver, it also requires access to the /metrics/ endpoint of it.\nIn addition to the rules for Prometheus itself, the Prometheus sidecar needs to be able to get configmaps to be able to pull in rule files from configmap objects.\napiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus rules: - apiGroups: [\u0026#34;\u0026#34;] resources: - nodes - nodes/metrics - services - endpoints - pods verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] - apiGroups: [\u0026#34;\u0026#34;] resources: - configmaps verbs: [\u0026#34;get\u0026#34;] - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] - apiGroups: - networking.k8s.io resources: - ingresses verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] - nonResourceURLs: [\u0026#34;/metrics\u0026#34;] verbs: [\u0026#34;get\u0026#34;] Note: A cluster admin is required to create this ClusterRole and create a ClusterRoleBinding or RoleBinding to the ServiceAccount used by the Prometheus Pods. The ServiceAccount used by the Prometheus Pods can be specified in the Prometheus object.\nExample # To demonstrate how to use a ClusterRole with a ClusterRoleBinding and a ServiceAccount here an example. It is assumed, that both of the ClusterRoles described above have already been created.\nSay the Prometheus Operator shall be deployed in the default namespace. First a ServiceAccount needs to be setup.\napiVersion: v1 automountServiceAccountToken: false kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/version: 0.94.1 name: prometheus-operator namespace: default Note that the ServiceAccountName also has to actually be used in spec.template.spec.serviceAccount of the Deployment of the Prometheus Operator.\nAnd then a ClusterRoleBinding:\napiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/version: 0.94.1 name: prometheus-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus-operator subjects: - kind: ServiceAccount name: prometheus-operator namespace: default Because the Pod that the Prometheus Operator is running in uses the ServiceAccount named prometheus-operator and the ClusterRoleBinding associates it with the ClusterRole named prometheus-operator, it now has the required permissions to access all the resources as described above.\nWhen creating Prometheus objects the procedure is similar. It starts with a ServiceAccount.\napiVersion: v1 kind: ServiceAccount metadata: name: prometheus And then because the ClusterRole named prometheus, as de
556scribed above, is likely to be used multiple times, a ClusterRoleBinding instead of a RoleBinding is used.\napiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus subjects: - kind: ServiceAccount name: prometheus namespace: default See Using Authorization Plugins for further usage information on RBAC components.\n" 557 } 558 ); 559 index.add( 560 { 561 id: 14, 562 href: "/docs/platform/rbac-crd/", 563 title: "RBAC for CRDs", 564 description: "Aggregated roles on the Prometheus Operator CustomResourceDefinitions.", 565 content: "Aggregated ClusterRoles # It can be useful to aggregate permissions on the Prometheus Operator CustomResourceDefinitions to the default user-facing roles, like view, edit and admin.\nThis can be achieved using aggregated ClusterRoles. This lets admins include rules for custom resources, such as those served by CustomResourceDefinitions or Aggregated API servers, on the default roles.\nNote: ClusterRole aggregation is available starting Kubernetes 1.9.\nExample # In order to aggregate read (resp. edit) permissions for the Prometheus Operator CustomResourceDefinitions to the view (resp. edit / admin) role(s), a cluster admin can create the ClusterRoles below.\nThis grants:\nUsers with view role permissions to view the Prometheus Operator CRDs within their namespaces, Users with edit and admin roles permissions to create, edit and delete Prometheus Operator CRDs within their namespaces. kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: prometheus-crd-view labels: rbac.authorization.k8s.io/aggregate-to-admin: \u0026#34;true\u0026#34; rbac.authorization.k8s.io/aggregate-to-edit: \u0026#34;true\u0026#34; rbac.authorization.k8s.io/aggregate-to-view: \u0026#34;true\u0026#34; rules: - apiGroups: [\u0026#34;monitoring.coreos.com\u0026#34;] resources: [\u0026#34;alertmanagers\u0026#34;, \u0026#34;alertmanagerconfigs\u0026#34;, \u0026#34;prometheuses\u0026#34;, \u0026#34;prometheusrules\u0026#34;, \u0026#34;servicemonitors\u0026#34;, \u0026#34;podmonitors\u0026#34;, \u0026#34;probes\u0026#34;] verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;] --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: prometheus-crd-edit labels: rbac.authorization.k8s.io/aggregate-to-edit: \u0026#34;true\u0026#34; rbac.authorization.k8s.io/aggregate-to-admin: \u0026#34;true\u0026#34; rules: - apiGroups: [\u0026#34;monitoring.coreos.com\u0026#34;] resources: [\u0026#34;alertmanagers\u0026#34;, \u0026#34;alertmanagerconfigs\u0026#34;, \u0026#34;prometheuses\u0026#34;, \u0026#34;prometheusrules\u0026#34;, \u0026#34;servicemonitors\u0026#34;, \u0026#34;podmonitors\u0026#34;, \u0026#34;probes\u0026#34;] verbs: [\u0026#34;get\u0026#34;, \u0026#34;list\u0026#34;, \u0026#34;watch\u0026#34;, \u0026#34;create\u0026#34;, \u0026#34;update\u0026#34;, \u0026#34;patch\u0026#34;, \u0026#34;delete\u0026#34;] " 566 } 567 ); 568 index.add( 569 { 570 id: 15, 571 href: "/docs/platform/high-availability/", 572 title: "High Availability", 573 description: "High Availability is a must for the monitoring infrastructure.", 574 content: "High availability is not only important for customer facing software, but if the monitoring infrastructure is not highly available, then there is a risk that operations people are not notified for alerts of the customer facing software. Therefore high availability must be just as thought through for the monitoring stack, as for anything else.\nPrometheus # To run Prometheus in a highly available manner, two (or more) instances need to be running with the same configuration except that they will have one external label with a different value to identify them. The Prometheus instances scrape the same targets and evaluate the same rules, hence they will have the same data in memory and on disk, with a slight twist that given their different external label, the scrapes and evaluations won\u0026rsquo;t happen at exactly the same time. As a consequence, query requests executed against each Prometheus instance may return slightly different results. For alert evaluation this situation does not change anything, as alerts are typically only fired when a certain query triggers for a period of time. For dashboarding, sticky
574sessions (using sessionAffinity on the Kubernetes Service) should be used, to get consistent graphs when refreshing or you can use something like Thanos Querier to federate the data.\nRunning multiple Prometheus instances avoids having a single point of failure but it doesn\u0026rsquo;t help scaling out Prometheus in case a single Prometheus instance can\u0026rsquo;t handle all the targets and rules. This is where Prometheus\u0026rsquo; sharding feature comes into play. Sharding aims at splitting the scrape targets into multiple groups, each assigned to one Prometheus shard and small enough that they can be handled by a single Prometheus instance. If possible, functional sharding is recommended: in this case, the Prometheus shard X scrapes all pods of Service A, B and C while shard Y scrapes pods from Service D, E and F. When functional sharding is not possible, the Prometheus Operator is also able to support automatic sharding: the targets will be assigned to Prometheus shards based on their addresses. The main drawback of this solution is the additional complexity: to query all data, query federation (e.g. Thanos Query) and distributed rule evaluation engine (e.g. Thanos Ruler) should be deployed to fan in the relevant data for queries and rule evaluations. Single shards of Prometheus can be run highly available as described before.\nOne of the goals with the Prometheus Operator is that we want to completely automate sharding and federation. We are currently implementing some of the groundwork to make this possible, and figuring out the best approach to do so, but it is definitely on the roadmap!\nAlertmanager # To ensure high-availability of the Alertmanager service, Prometheus instances are configured to send their alerts to all configured Alertmanager instances (as described in the Alertmanager documentation). The Alertmanager instances creates a gossip-based cluster to replicate alert silences and notification logs.\nThe Prometheus Operator manages the following configuration\nAlertmanager discovery using the Kubernetes API for Prometheus. Highly-available cluster for Alertmanager when replicas \u0026gt; 1. Exporters # For exporters, high availability depends on the particular exporter. In the case of kube-state-metrics, because it is effectively stateless, it is the same as running any other stateless service in a highly available manner. Simply run multiple replicas that are being load balanced. Key for this is that the backing service, in this case the Kubernetes API server is highly available, ensuring that the data source of kube-state-metrics is not a single point of failure.\n" 575 } 576 ); 577 index.add( 578 { 579 id: 16, 580 href: "/docs/platform/sharding/", 581 title: "Sharding", 582 description: "Sharding Prometheus", 583 content: "When there are too much data to ingest and process, scaling Prometheus vertically may come to an end and it might become necessary to distribute scraped targets across multiple Prometheus shards.\nDesign # The Prometheus operator will create .spec.shards StatefulSets multiplied by .spec.replicas pods.\nBy default, shards use the Prometheus modulus configuration which takes the hash of the source label values in order to split scraped targets based on the number of shards. By default, Prometheus hashes the value of the\n__address__ label for ServiceMonitor and PodMonitor resources __param_target__ label for Probe resources To query globally, deploy the Thanos querier connecting to all Thanos sidecars (in the same way, use the Thanos ruler to evaluate rules across shards). Another option is to remote write the samples to a central location.\nLimitations:\nScaling down the number of shards doesn\u0026rsquo;t reshard existing data onto remaining instances. It must be manually moved (see also Scaling below). Scaling up the number of shards will not reshard existing data either. It will continue to be available from the same instances. Configuration # Implementing a custom target distribution # To implement a custom distribution, set the __tmp_hash label during target discovery using relabeling configuration. The operator uses this label\u0026rsquo;s value instead of the default labels when computing the shard assignment.\nFor example, to shard targets by pod n
583amespace and name rather than by address:\napiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app labels: team: frontend spec: selector: matchLabels: app: example-app endpoints: - port: web relabelings: - sourceLabels: [__meta_kubernetes_pod_namespace, __meta_kubernetes_pod_name] separator: / targetLabel: __tmp_hash The relabeling can also be applied at the scrape class level to affect multiple monitoring resources at once.\nScraping a target from all the shards # By default, each target is assigned to exactly one shard. To have all shards scrape the same target â useful for singleton services such as kube-state-metrics where every shard needs the full set of metrics â set the __tmp_disable_sharding label to a non-empty value using relabeling configuration.\napiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: kube-state-metrics spec: selector: matchLabels: app.kubernetes.io/name: kube-state-metrics endpoints: - port: http relabelings: - targetLabel: __tmp_disable_sharding replacement: \u0026#34;true\u0026#34; Topology-aware sharding # Beta: Topology-aware sharding requires the PrometheusTopologySharding feature gate to be enabled on the operator.\nIn multi-zone clusters, the default address-based sharding distributes targets without regard for their zone, which can generate costly cross-zone traffic. Topology-aware sharding pins each Prometheus shard to a specific zone so that it only scrapes targets local to that zone.\nWhen mode: Topology is set, the operator:\nGenerates relabeling rules so each shard keeps only targets whose zone label matches its assigned zone. Automatically adds a nodeSelector to schedule each shard\u0026rsquo;s pods in the correct zone. Adds a zone external label to each shard\u0026rsquo;s Prometheus configuration (configurable via externalLabelName). The number of shards must be greater than or equal to the number of topology values. When spec.shards is a multiple of the number of zones, the shards are evenly distributed across zones. Otherwise, some zones receive more shards than others.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: shards: 4 replicas: 2 shardingStrategy: mode: Topology topology: values: - europe-west4-a - europe-west4-b With this configuration and 4 shards across 2 zones, shards 0 and 2 are scheduled in europe-west4-a and shards 1 and 3 in europe-west4-b. Each shard only scrapes targets in its zone.\nRetaining shards # Beta: Shard retention requires the PrometheusShardRetentionPolicy feature gate to be enabled on the operator.\nWhen scaling down the number of shards, the pods from the removed shards are deleted by default along with access to their historical data. To preserve scaled-down shards so their data remains queryable until the retention duration expires, set .spec.shardRetentionPolicy.whenScaled to Retain:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: shards: 2 shardRetentionPolicy: whenScaled: Retain Retained shards continue running and can be queried via the Thanos sidecar and querier alongside the active shards. By default, the operator deletes them once the Prometheus retention time has been reached. This can be overridden with the retain.retentionPeriod field:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: shards: 2 retentionSize: 100Gi shardRetentionPolicy: whenScaled: Retain retain: retentionPeriod: 7d Note: If the Prometheus resource uses size-based retention only (no retention time configured), retained shards are kept forever by default.\nExample # The following manifest creates a Prometheus server with two replicas:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: labels: prometheus: prometheus name: prometheus namespace: default spec: serviceAccountName: prometheus replicas: 2 serviceMonitorSelector: matchLabels: team: frontend This can be verified with the following command:\nkubectl get pods -n default The output is similar to this:\nprometheus-prometheus-0 2/2 Running 1 10s prometheus-prometheus-1 2/2 Running 1 10s Deploy the example application and monitor it:\napiVersion: apps/v1 kind: Deployment metadata: name: example-app namespace: default spec: replicas: 3 selector: matchLabels: app: example-app template: metadata: labels: app: example-app spec: containers: - name: example-app image: quay.io/brancz/prometheus-example-app:v0.5.0 ports: - name: web containerPort: 8080 kind: Service apiVersion: v1 metadata: name: example-app namespace: default labels: app: example-app spec: selector: app: example-app ports: - name: web port: 8080 apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app namespace: default labels: team: frontend spec: selector: matchLabels: app: example-app endpoints: - port: web Explore one of the monitoring Prometheus instances:\nkubectl port-forward pod/prometheus-prometheus-0 9090:9090 We find the prometheus server scrapes three targets.\nNow let\u0026rsquo;s expand the Prometheus resource to two shards as shown below:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: labels: prometheus: shards name: prometheus namespace: default spec: serviceAccountName: prometheus replicas: 2 shards: 2 serviceMonitorSelector: matchLabels: team: frontend This can be verified with the following command:\nkubectl get pods -n \u0026lt;namespace\u0026gt; The output is similar to this:\nprometheus-prometheus-0 2/2 Running 1 11m prometheus-prometheus-1 2/2 Running 1 11m prometheus-prometheus-shard-1-0 2/2 Running 1 12s prometheus-prometheus-shard-1-1 2/2 Running 1 12s Explore one of the monitoring Prometheus instances added for sharding:\nkubectl port-forward prometheus-prometheus-shard-1-0 9091:9090 We should find that one or tw
583o targets are being scraped by this instance while the original Prometheus shard scrapes the remaining target(s).\n" 584 } 585 ); 586 index.add( 587 { 588 id: 17, 589 href: "/docs/platform/storage/", 590 title: "Storage", 591 description: "Storage considerations", 592 content: "By default, the operator configures Pods to store data on emptyDir volumes which aren\u0026rsquo;t persisted when the Pods are redeployed. To maintain data across deployments and version upgrades, you can configure persistent storage for Prometheus, Alertmanager and ThanosRuler resources.\nKubernetes supports several kinds of storage volumes. The Prometheus Operator works with PersistentVolumeClaims, which support the underlying PersistentVolume to be provisioned when requested.\nThis document assumes a basic understanding of PersistentVolumes, PersistentVolumeClaims, and their provisioning.\nStorage Provisioning on AWS # Automatic provisioning of storage requires a StorageClass.\napiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ssd provisioner: kubernetes.io/aws-ebs parameters: type: gp2 Note: Make sure that AWS as a cloud provider is properly configured with your cluster, or storage provisioning will not work.\nFor best results, use volumes that have high I/O throughput. These examples use SSD EBS volumes. Read the Kubernetes Persistent Volumes documentation to adapt this StorageClass to your needs.\nThe StorageClass that was created can be specified in the storage section in the Prometheus resource (note that if you\u0026rsquo;re using kube-prometheus, then instead of making the following change to your Prometheus resource, see the prometheus-pvc.jsonnet example).\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: persisted spec: storage: volumeClaimTemplate: spec: storageClassName: ssd resources: requests: storage: 40Gi The full documentation of the storage field can be found in the API reference.\nWhen creating the Prometheus object, a PersistentVolumeClaim is used for each Pod in the StatefulSet, and the storage should automatically be provisioned, mounted and used.\nThe same approach should work with other cloud providers (GCP, Azure, \u0026hellip;) and any Kubernetes storage provider supporting dynamic provisioning.\nManual storage provisioning # The Prometheus CRD specification allows you to support arbitrary storage through a PersistentVolumeClaim.\nThe easiest way to use a volume that cannot be automatically provisioned (for whatever reason) is to use a label selector alongside a manually created PersistentVolume.\nFor example, using an NFS volume might be accomplished with the following manifests:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: my-example-prometheus-name labels: prometheus: example spec: replicas: 1 storage: volumeClaimTemplate: spec: selector: matchLabels: app.kubernetes.io/name: my-example-prometheus resources: requests: storage: 50Gi --- apiVersion: v1 kind: PersistentVolume metadata: name: my-pv-name labels: app.kubernetes.io/name: my-example-prometheus spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce # required nfs: server: myServer path: \u0026#34;/path/to/prom/db\u0026#34; Using hostPath volumes # Using a hostPath volume requires ensuring that the container has the appropriate permissions to access and modify files at the specified path on the host machine, example:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: example spec: replicas: 1 storage: volumeClaimTemplate: spec: selector: matchLabels: app.kubernetes.io/name: example resources: requests: storage: 50Gi securityContext: fsGroup: 65534 runAsNonRoot: true runAsUser: 65534 --- apiVersion: v1 kind: PersistentVolume metadata: name: my-pv-name labels: app.kubernetes.io/name: example spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: /mnt/data Disabling Default StorageClasses # To manually provision volumes (as of Kubernetes 1.6.0), you may need to disable the default StorageClass that is automatically created for certain Cloud Providers. Default StorageClasses are pre-installed on Azure, AWS, GCE, OpenStack, and vSphere.\nThe default StorageClass behavior will override manual storage provisioning, preventing PersistentVolumeClaims from automatically binding to manually created PersistentVolumes.\nTo override this behavior, you must explicitly create the same resource, but set it to not be default (see the changelog for more information.)\nFor example, to disable default StorageClasses on a Google Container Engine cluster, create the following StorageClass:\nkind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: standard annotations: # disable this default storage class by setting this annotation to fal
592se. storageclass.kubernetes.io/is-default-class: \u0026#34;false\u0026#34; provisioner: kubernetes.io/gce-pd parameters: type: pd-ssd zone: us-east1-d Resizing volumes # Even if the StorageClass supports resizing, Kubernetes doesn\u0026rsquo;t support (yet) volume expansion through StatefulSets. This means that when you update the storage requests in the spec.storage field of a custom resource such as Prometheus, the operator has to delete/recreate the underlying StatefulSet and the associated PVCs aren\u0026rsquo;t expanded (more details in the KEP issue).\nIt is still possible to fix the situation manually.\nFirst check that the storage class allows volume expansion:\n$ kubectl get storageclass -o custom-columns=NAME:.metadata.name,ALLOWVOLUMEEXPANSION:.allowVolumeExpansion NAME ALLOWVOLUMEEXPANSION gp2-csi true gp3-csi true Next, update the spec.paused field to true (to prevent the operator from recreating the StatefulSet) and update the storage request in the spec.storage field of the custom resource. Assuming a Prometheus resource named example for which you want to increase the storage size to 10Gi:\nkubectl patch prometheus/example --patch \u0026#39;{\u0026#34;spec\u0026#34;: {\u0026#34;paused\u0026#34;: true, \u0026#34;storage\u0026#34;: {\u0026#34;volumeClaimTemplate\u0026#34;: {\u0026#34;spec\u0026#34;: {\u0026#34;resources\u0026#34;: {\u0026#34;requests\u0026#34;: {\u0026#34;storage\u0026#34;:\u0026#34;10Gi\u0026#34;}}}}}}}\u0026#39; --type merge Next, patch every PVC with the updated storage request (10Gi in this example):\nfor p in $(kubectl get pvc -l operator.prometheus.io/name=example -o jsonpath=\u0026#39;{range .items[*]}{.metadata.name} {end}\u0026#39;); do \\ kubectl patch pvc/${p} --patch \u0026#39;{\u0026#34;spec\u0026#34;: {\u0026#34;resources\u0026#34;: {\u0026#34;requests\u0026#34;: {\u0026#34;storage\u0026#34;:\u0026#34;10Gi\u0026#34;}}}}\u0026#39;; \\ done Next, delete the underlying StatefulSet using the orphan deletion strategy:\nkubectl delete statefulset -l operator.prometheus.io/name=example --cascade=orphan Last, change spec.paused field of the custom resource back to fal
592se.\nkubectl patch prometheus/example --patch \u0026#39;{\u0026#34;spec\u0026#34;: {\u0026#34;paused\u0026#34;: false}}\u0026#39; --type merge The operator should recreate the StatefulSet immediately, there will be no service disruption thanks to the orphan strategy and the volumes mounted in the Pods should have the updated size.\n" 593 } 594 ); 595 index.add( 596 { 597 id: 18, 598 href: "/docs/platform/strategic-merge-patch/", 599 title: "Strategic Merge Patch", 600 description: "Using strategic merge patch to overwrite container definition.", 601 content: "This document describes how to overwrite the configuration generated by the operator using strategic merge patches.\nWhen users need to apply a specific configuration to the containers that is either not exposed in the custom resource definitions or already defined by the operator, strategic merge patch can be used.\nHow does it work? # The Prometheus, Alertmanager, and ThanosRuler CRDs expose a spec.containers field which allows to:\nOverride fields for the containers generated by the operator. Inject fields for existing containers. How to patch a container probe # Merging patch for Prometheus # The following manifest overwrites the failureThreshold value of startup probe of the Prometheus container:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: overwrite-failureThreshold spec: containers: - name: prometheus startupProbe: failureThreshold: 500 Merging patch for Alertmanager # The following manifest overwrites the failureThreshold values of the readiness and liveness probes for the Alertmanager container.\napiVersion: monitoring.coreos.com/v1 kind: Alertmanager metadata: name: overwrite-probes spec: containers: - name: alertmanager livenessProbe: failureThreshold: 5 readinessProbe: failureThreshold: 5 How to inject an environment variable in an existing container # The following manifest injects the environment variable GOMEMLIMIT to the Prometheus container:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: inject-env-var spec: containers: - name: \u0026#34;prometheus\u0026#34; env: - name: GOMEMLIMIT value: 6Gi How to inject a sidecar container # The following manifest injects an additional container to the generated StatefulSet:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: inject-sidecar spec: containers: - name: \u0026#34;sleep\u0026#34; image: \u0026#34;busybox\u0026#34; args: - sleep - \u0026#34;3600\u0026#34; How to inject additional CLI arguments into the prometheus container # The following manifest injects an additional CLI argument in the default Prometheus argument list. Note the use of .spec.additionalArgs in this example. Using .spec.containers[*].args directly would instead overwrite the container\u0026rsquo;s args list completely, including the default arguments.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: additional-arguments spec: additionalArgs: - name: \u0026#34;scrape.timestamp-tolerance\u0026#34; value: \u0026#34;15ms\u0026#34; How to support Restricted and Baseline policies # Pod Security Standards define policies such as Baseline and Restricted which require to patch the container definitions generated by the Prometheus operator.\nHow to patch Prometheus for the Restricted policy # The following manifest changes the securityContext of containers in Prometheus Pod. If the Thanos sidecar is enabled, similar changes should be applied for the thanos-sidecar container.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus-restricted-baseline-ns namespace: restricted-baseline-ns spec: serviceAccountName: prometheus containers: - name: prometheus securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault - name: config-reloader securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault initContainers: - name: init-config-reloader securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault How to patch Alertmanager for the Restricted policy # The following manifest changes the securityContext of containers in Alertmanager Pod.\
601napiVersion: monitoring.coreos.com/v1 kind: Alertmanager metadata: name: alertmanager-restricted-baseline-ns namespace: restricted-baseline-ns spec: containers: - name: alertmanager securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault - name: config-reloader securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault initContainers: - name: init-config-reloader securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault How to patch ThanosRuler for the Restricted policy # The following manifest changes the securityContext of containers in ThanosRuler Pod.\napiVersion: monitoring.coreos.com/v1 kind: ThanosRuler metadata: name: thanos-ruler-restricted-baseline-ns namespace: restricted-baseline-ns labels: example: thanos-ruler spec: image: quay.io/thanos/thanos:v0.28.1 ruleSelector: matchLabels: role: my-thanos-rules queryEndpoints: - dnssrv+_http._tcp.my-thanos-querier.monitoring.svc.cluster.local alertmanagersConfig: key: alertmanager-configs.yaml name: thanosruler-alertmanager-config containers: - name: thanos-ruler securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault - name: config-reloader securityContext: runAsNonRoot: true runAsUser: 65534 seccompProfile: type: RuntimeDefault How to override probe handlers when TLS and web.config are enabled # When Prometheus is configured with spec.web.tlsConfig, the operator automatically generates and enforces HTTPS httpGet probes. If web.config also requires authentication (e.g. Basic Auth), these default probes will fail because Kubernetes native httpGet probes do not support custom authentication headers.\nThe workaround is to override the probe handler to tcpSocket, exec, or grpc via a strategic merge patch in the Prometheus CR. Previously, the StrategicMergePatch logic would incorrectly preserve both the operator\u0026rsquo;s default httpGet handler and the user-supplied handler simultaneously, resulting in a Kubernetes validation error:\ncreating statefulset failed: StatefulSet.apps \u0026#34;prometheus-prometheus\u0026#34; is invalid: [spec.template.spec.containers[0].livenessProbe.tcpSocket: Forbidden: may not specify more than 1 handler type, ...] The following example replaces the readiness and liveness probes of the prometheus container with TCP socket probes:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus-tls-tcp-probes spec: containers: - name: prometheus readinessProbe: tcpSocket: port: 9090 livenessProbe: tcpSocket: port: 9090 Note: Using a tcpSocket or exec probe means the probe no longer calls the Prometheus /-/ready endpoint. The Pod may be marked Ready before Prometheus finishes WAL replay or TSDB initialization. This is a known trade-off when prioritizing credential security over granular readiness checks.\n" 602 } 603 ); 604 index.add( 605 { 606 id: 19, 607 href: "/docs/platform/operator/", 608 title: "CLI reference", 609 description: "Command line arguments for the operator binary", 610 content: " Note this document is automatically generated from the cmd/operator/main.go file and shouldn\u0026rsquo;t be edited directly.\nUsage of ./operator: ./operator [arguments] [\u0026lt;command\u0026gt;] Commands: start Run the operator (default) crds Print the CRDs in YAML format to standard output full-crds Print the full CRDs (with all fields) in YAML format to standard output Arguments: -alertmanager-config-namespaces value Namespaces where AlertmanagerConfig custom resources and corresponding Secrets are watched/created. If set this takes precedence over --namespaces or --deny-namespaces for AlertmanagerConfig custom resources. -alertmanager-default-base-image string Alertmanager default base image (path without tag/version) (default \u0026#34;quay.io/prometheus/alertmanager\u0026#34;) -alertmanager-instance-namespaces value Namespaces where Alertmanager custom resources and corresponding StatefulSets are watched/created. If set this takes precedence over --namespaces or --deny-namespaces for Alertmanager custom resources. -alertmanager-instance-selector value Label selector to filter Alertmanager Custom Resources to wat
610ch. -annotations value Annotations to be add to all resources created by the operator -apiserver string API Server addr, e.g. \u0026#39; - NOT RECOMMENDED FOR PRODUCTION - http://127.0.0.1:8080\u0026#39;. Omit parameter to run in on-cluster mode and utilize the service account token. -as string Username to impersonate. User could be a regular user or a service account in a namespace. -auto-gomemlimit-ratio float The ratio of reserved GOMEMLIMIT memory to the detected maximum container or system memory. The value should be greater than 0.0 and less than 1.0. Default: 0.0 (disabled). -ca-file string - NOT RECOMMENDED FOR PRODUCTION - Path to TLS CA file. -cert-file string - NOT RECOMMENDED FOR PRODUCTION - Path to public TLS certificate file. -cluster-domain string The domain of the cluster. This is used to generate service FQDNs. If this is not specified, DNS search domain expansion is used instead. -config-reloader-cpu-limit value Config Reloader CPU limits. Value \u0026#34;0\u0026#34; disables it and causes no limit to be configured. (default 10m) -config-reloader-cpu-request value Config Reloader CPU requests. Value \u0026#34;0\u0026#34; disables it and causes no request to be configured. (default 10m) -config-reloader-memory-limit value Config Reloader memory limits. Value \u0026#34;0\u0026#34; disables it and causes no limit to be configured. (default 50Mi) -config-reloader-memory-request value Config Reloader memory requests. Value \u0026#34;0\u0026#34; disables it and causes no request to be configured. (default 50Mi) -configmap-field-selector value Field selector to filter ConfigMaps to watch -configmap-label-selector value Label selector to filter ConfigMaps to watch -controller-id operator.prometheus.io/controller-id Value used by the operator to filter Alertmanager, Prometheus, PrometheusAgent and ThanosRuler objects that it should reconcile. If the value isn\u0026#39;t empty, the operator only reconciles objects with an operator.prometheus.io/controller-id annotation of the same value. Otherwise the operator reconciles all objects without the annotation or with an empty annotation value. -deny-namespaces value Namespaces not to scope the interaction of the Prometheus Operator (deny list). This is mutually exclusive with --namespaces. -disable-unmanaged-prometheus-configuration Disable support for unmanaged Prometheus configuration when all resource selectors are nil. As stated in the API documentation, unmanaged Prometheus configuration is a deprecated feature which can be avoided with \u0026#39;.spec.additionalScrapeConfigs\u0026#39; or the ScrapeConfig CRD. Default: false. -enable-config-reloader-probes Enable liveness, readiness, and startup probes for the config-reloader container. Default: false -feature-gates value Feature gates are a set of key=value pairs that describe Prometheus-Operator features. Available feature gates: PrometheusAgentDaemonSet: Enables the DaemonSet mode for PrometheusAgent (enabled: false) PrometheusShardRetentionPolicy: Enables shard retention policy for Prometheus (enabled: true) PrometheusTopologySharding: Enables the zone aware sharding for Prometheus (enabled: true) RemoteWriteCustomResourceDefinition: Enables the RemoteWrite CRD support (enabled: false) StatusForConfigurationResources: Updates the status subresource for configuration resources (enabled: false) -key-file string - NOT RECOMMENDED FOR PRODUCTION - Path to private TLS certificate file. -kubelet-endpoints Create Endpoints objects for kubelet targets. (default true) -kubelet-endpointslice Create EndpointSlice objects for kubelet targets. -kubelet-http-metrics Include HTTP metrics port (10255) in kubelet service. Set to false if your cluster has disabled the insecure kubelet read-only port (e.g., GKE 1.32+). (default true) -kubelet-node-address-priority value Node address priority used by kubelet. Either \u0026#39;internal\u0026#39; or \u0026#39;external\u0026#39;. Default: \u0026#39;internal\u0026#39;. -kubelet-selector value Label selector to filter nodes. -kubelet-service string Service/Endpoints object to write kubelets into in format \u0026#34;namespace/name\u0026#34; -kubelet-sync-period duration How often the operator reconciles the kubelet Endpoints and EndpointSlice objects (e.g., 10s, 2m, 1h30m). (default 3m0s) -labels value Labels to be add to all resources created by the operator -localhost str
610ing EXPERIMENTAL (could be removed in future releases) - Host used to communicate between local services on a pod. Fixes issues where localhost resolves incorrectly. (default \u0026#34;localhost\u0026#34;) -log-format string Log format to use. Possible values: logfmt, json (default \u0026#34;logfmt\u0026#34;) -log-level string Log level to use. Possible values: all, debug, info, warn, error, none (default \u0026#34;info\u0026#34;) -namespaces value Namespaces to scope the interaction of the Prometheus Operator and the apiserver (allow list). This is mutually exclusive with --deny-namespaces. -prometheus-config-reloader string Prometheus config reloader image (default \u0026#34;quay.io/prometheus-operator/prometheus-config-reloader:v0.94.1\u0026#34;) -prometheus-default-base-image string Prometheus default base image (path without tag/version) (default \u0026#34;quay.io/prometheus/prometheus\u0026#34;) -prometheus-instance-namespaces value Namespaces where Prometheus and PrometheusAgent custom resources and corresponding Secrets, Configmaps and StatefulSets are watched/created. If set this takes precedence over --namespaces or --deny-namespaces for Prometheus custom resources. -prometheus-instance-selector value Label selector to filter Prometheus and PrometheusAgent Custom Resources to watch. -repair-policy-for-statefulsets value Policy to use when a StatefulSet rollout is stuck. Possible values: \u0026#39;none\u0026#39; (default), \u0026#39;evict\u0026#39; or \u0026#39;delete\u0026#39;. (default none) -secret-field-selector value Field selector to filter Secrets to watch -secret-label-selector value Label selector to filter Secrets to watch -short-version Print just the version number. -thanos-default-base-image string Thanos default base image (path without tag/version) (default \u0026#34;quay.io/thanos/thanos\u0026#34;) -thanos-ruler-instance-namespaces value Namespaces where ThanosRuler custom resources and corresponding StatefulSets are watched/created. If set this takes precedence over --namespaces or --deny-namespaces for ThanosRuler custom resources. -thanos-ruler-instance-selector value Label selector to filter ThanosRuler Custom Resources to watch. -tls-insecure - NOT RECOMMENDED FOR PRODUCTION - Don\u0026#39;t verify API server\u0026#39;s CA certificate. -version Prints current version. -watch-referenced-objects-in-all-namespaces When true the operator watches for configmaps and secrets in both workload and configuration resource namespaces. When false (default), the operator will only watch for secrets and configmaps in: * Workload namespaces for Prometheus and PrometheusAgent resources. * Configuration namespaces for Alertmanager resources. -web.cert-file string Certificate file to be used for the web server. (default \u0026#34;/etc/tls/private/tls.crt\u0026#34;) -web.client-ca-file string Client CA certificate file to be used for the web server. (default \u0026#34;/etc/tls/private/tls-ca.crt\u0026#34;) -web.enable-http2 Enable HTTP2 connections. -web.enable-tls Enable TLS for the web server. -web.key-file string Private key matching the cert file to be used for the web server. (default \u0026#34;/etc/tls/private/tls.key\u0026#34;) -web.listen-address string Address on which to expose metrics and web interface. (default \u0026#34;:8080\u0026#34;) -web.tls-cipher-suites value Comma-separated list of cipher suites for the server. Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants).If omitted, the default Go cipher suites will be used. Note that TLS 1.3 ciphersuites are not configurable. -web.tls-curves value Comma-separated list of TLS curves for the server. Supported values: CurveP256, CurveP384, CurveP521, X25519, X25519MLKEM768. -web.tls-min-version string Minimum TLS version supported. Value must match version names from https://golang.org/pkg/crypto/tls/#pkg-constants. (default \u0026#34;VersionTLS13\u0026#34;) -web.tls-reload-interval duration The interval at which to watch for TLS certificate changes, by default set to 1 minute. (default 1m0s). (default 1m0s) " 611 } 612 ); 613 index.add( 614 { 615 id: 20, 616 href: "/docs/platform/troubleshooting/", 617 title: "Troubleshooting", 618 description: "Guide on troubleshooting the Prometheus Operator.", 619 content: "CustomResourceDefinition \u0026quot;...\u0026quot;
619 is invalid: metadata.annotations: Too long issue # When applying updated CRDs on a cluster, you may face the following error message:\n$ kubectl apply -f $MANIFESTS The CustomResourceDefinition \u0026#34;prometheuses.monitoring.coreos.com\u0026#34; is invalid: metadata.annotations: Too long: must have at most 262144 bytes The reason is that apply runs in the client by default and saves information into the object annotations but there\u0026rsquo;s a hard limit on the size of annotations.\nThe workaround is to use server-side apply which requires Kubernetes v1.22 at least.\nkubectl apply --server-side --force-conflicts -f $MANIFESTS If using ArgoCD, please refer to their documentation.\nv1 Endpoints is deprecated in v1.33+, ... warning in the operator\u0026rsquo;s logs # Since Kubernetes v1.33 the Endpoints API is deprecated in favor of the EndpointSlice API.\nIf the operator\u0026rsquo;s logs show messages like v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice, it means that the operator still reconciles the kubelet Endpoints resource. To migrate from Endpoints to EndpointSlice, the following operations should be done:\nGrant RBAC permissions to the operator\u0026rsquo;s Service Account to manage the EndpointSlice resource (see below). Grant RBAC permissions to the Prometheus\u0026rsquo;s Service Account to read/list/watch the EndpointSlice resource (see below). Start the operator with --kubelet-endpoints=true and --kubelet-endpointslice=true. Verify that the kubelet\u0026rsquo;s Endpoint resource has the endpointslice.kubernetes.io/skip-mirror=true annotation. Verify that the kubelet\u0026rsquo;s EndpointSlice resource(s) are up-to-date. Set .spec.serviceDiscoveryRole: EndpointSlice for all ServiceMonitor resources which point to the kubelet\u0026rsquo;s Service. Verify that Prometheus discovers the expected targets. Start the operator with --kubelet-endpoints=false and --kubelet-endpointslice=true. Remove the kubelet\u0026rsquo;s Endpoint resource. And voila! To migrate other ServiceMonitor resources (not just the one(s) depending on the kubelet Service), you need to grant read/list/watch permissions on the EndpointSlice resources in all watched namespaces to the Prometheus Service Account and set .spec.serviceDiscoveryRole: EndpointSlice either for all reconciled ServiceMonitor resources or globally in the Prometheus resource.\nExample of Role definition required by the Prometheus operator\u0026rsquo;s Service Account to manage kubelet EndpointSlice resources (the permissions can also be added to the existing Prometheus operator\u0026rsquo;s Role):\napiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: prometheus-operator-kubelet rules: - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - get - create - list - update - delete Example of Role definition required by the Prometheus\u0026rsquo;s Service Account to discover targets from the kubelet EndpointSlice resources (the permissions can also be added to the existing Prometheus\u0026rsquo;s Role):\napiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: prometheus-kubelet rules: - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - get - list - watch For kube-prometheus users, release-0.16 has switched to dual mode (Endpoints and EndpointSlice supported in parallel). A future release will complete the migration and remove usage of the Endpoints resources altogether.\nRBAC on Google Container Engine (GKE) # When you try to create ClusterRole (kube-state-metrics, prometheus prometheus-operator, etc.) on GKE Kubernetes cluster running 1.6 version, you will probably run into permission errors:\n\u0026lt;....\u0026gt; Error from server (Forbidden): error when creating \u0026#34;manifests/prometheus-operator/prometheus-operator-cluster-role.yaml\u0026#34;: clusterroles.rbac.authorization.k8s.io \u0026#34;prometheus-operator\u0026#34; is forbidden: attempt to grant extra privileges: \u0026lt;....\u0026gt; This is due to the way Container Engine checks permissions. From Google Kubernetes Engine docs:\nBecause of the way Container Engine checks permissions when you create a Role or ClusterRole, you must first create a RoleBinding that grants
619you all of the permissions included in the role you want to create. An example workaround is to create a RoleBinding that gives your Google identity a cluster-admin role before attempting to create additional Role or ClusterRole permissions. This is a known issue in the Beta release of Role-Based Access Control in Kubernetes and Container Engine version 1.6.\nTo overcome this, you must grant your current Google identity cluster-admin Role:\n# get current google identity $ gcloud info | grep Account Account: [[email protected]] # grant cluster-admin to your current identity $ kubectl create clusterrolebinding myname-cluster-admin-binding --clusterrole=cluster-admin [email protected] Clusterrolebinding \u0026#34;myname-cluster-admin-binding\u0026#34; created Troubleshooting ServiceMonitor changes # When creating/deleting/modifying ServiceMonitor objects it is sometimes not as obvious what piece is not working properly. This section gives a step by step guide how to troubleshoot such actions on a ServiceMonitor object.\nOverview of ServiceMonitor tagging and related elements # A common problem related to ServiceMonitor identification by Prometheus is related to the object\u0026rsquo;s labels not matching the Prometheus custom resource definition scope, or lack of permission for the Prometheus ServiceAccount to get, list, watch Services and Endpoints from the target application being monitored. As a general guideline consider the diagram below, giving an example of a Deployment and Service called my-app, being monitored by Prometheus based on a ServiceMonitor named my-service-monitor:\nNote: The ServiceMonitor references a Service (not a Deployment, or a Pod), by labels and by the port name in the Service. This port name is optional in Kubernetes, but must be specified for the ServiceMonitor to work. It is not the same as the port name on the Pod or container, although it can be.\nHas my ServiceMonitor been picked up by Prometheus? # ServiceMonitor objects and the namespace where they belong are selected by the serviceMonitorSelector and serviceMonitorNamespaceSelectorof a Prometheus object. The name of a ServiceMonitor is encoded in the Prometheus configuration, so you can simply grep whether it is present there. The configuration generated by the Prometheus Operator is stored in a Kubernetes Secret, named after the Prometheus object name prefixed with prometheus- and is located in the same namespace as the Prometheus object. For example for a Prometheus object called k8s one can find out if the ServiceMonitor named my-service-monitor has been picked up with:\nkubectl -n monitoring get secret prometheus-k8s -ojson | jq -r \u0026#39;.data[\u0026#34;prometheus.yaml.gz\u0026#34;]\u0026#39; | base64 -d | gunzip | grep \u0026#34;my-service-monitor\u0026#34; You can also use port forwarding to access the Prometheus web.\nkubectl -n monitoring port-forward svc/prometheus-operated 9090:9090 If the command runs successfully, you should be able to access the Prometheus server UI via localhost. From there you can check the live configuration and the discovered targets.\nDebugging why monitoring resource spec changes are not reconciled # The Prometheus Operator will reject invalid resources and not reconcile them in the Prometheus configuration. When it happens the Operator emits a Kubernetes Event detailing the issue.\nEvents are supported for the following resources:\nAlertmanagerConfig PrometheusRule ServiceMonitor PodMonitor Probe ScrapeConfig To check for events related to rejected resources, you can use the following command:\nkubectl get events --field-selector=involvedObject.name=\u0026#34;\u0026lt;name of PodMonitor resource\u0026gt;\u0026#34; -n \u0026#34;\u0026lt;namespace where resource is deployed\u0026gt;\u0026#34; If you\u0026rsquo;ve deployed the Prometheus Operator using kube-prometheus manifests, the PrometheusOperatorRejectedResources alert should fire when invalid objects are detected. The alert can be found in the kube-prometheus-stack repository\nIt is in the configuration but not on the Service Discovery page # ServiceMonitors pointing to Services that do not exist (e.g. nothing matching .spec.selector) will lead to this ServiceMonitor not being added to the Service Discovery page. Check if you can find any Service with the selector you configured.\nIf you use .spec.selector.matchLabels (instead of e.g. .spec.selector.matchExpressions), you can use this command to check for services matching the given label:\nkubectl get services -l \u0026#34;$(kubectl get servicemonitors -n \u0026#34;
619\u0026lt;namespace of your ServiceMonitor\u0026gt;\u0026#34; \u0026#34;\u0026lt;name of your ServiceMonitor\u0026gt;\u0026#34; -o template=\u0026#39;{{ $first := 1 }}{{ range $key, $value := .spec.selector.matchLabels }}{{ if eq $first 0 }},{{end}}{{ $key }}={{ $value }}{{ $first = 0 }}{{end}}\u0026#39;)\u0026#34; Note: this command does not take namespaces into account. If your ServiceMonitor selects a single namespace or all namespaces, you can just add that to the kubectl get services command (using -n $namespace or -A for all namespaces).\nPrometheus kubelet metrics server returned HTTP status 403 Forbidden # Prometheus is installed, all looks good, however the Targets are all showing as down. All permissions seem to be good, yet no joy. Prometheus pulling metrics from all namespaces expect kube-system, and Prometheus has access to all namespaces including kube-system.\nDid you check the webhooks? # Issue has been resolved by amending the webhooks to use 0.0.0.0 instead of 127.0.0.1. Follow the below commands and it will update the webhooks which allows connections to all clusterIP's in all namespaces and not just 127.0.0.1.\nUpdate the kubelet service to include webhook and restart:\nKUBEADM_SYSTEMD_CONF=/etc/systemd/system/kubelet.service.d/10-kubeadm.conf sed -e \u0026#34;/cadvisor-port=0/d\u0026#34; -i \u0026#34;$KUBEADM_SYSTEMD_CONF\u0026#34; if ! grep -q \u0026#34;authentication-token-webhook=true\u0026#34; \u0026#34;$KUBEADM_SYSTEMD_CONF\u0026#34;; then sed -e \u0026#34;s/--authorization-mode=Webhook/--authentication-token-webhook=true --authorization-mode=Webhook/\u0026#34; -i \u0026#34;$KUBEADM_SYSTEMD_CONF\u0026#34; fi systemctl daemon-reload systemctl restart kubelet Modify the kube controller and kube scheduler to allow for reading data:\nsed -e \u0026#34;s/- --address=127.0.0.1/- --address=0.0.0.0/\u0026#34; -i /etc/kubernetes/manifests/kube-controller-manager.yaml sed -e \u0026#34;s/- --address=127.0.0.1/- --address=0.0.0.0/\u0026#34; -i /etc/kubernetes/manifests/kube-scheduler.yaml Using textual port number instead of port name # The ServiceMonitor expects to use the port name as defined on the Service. So, using the Service example from the diagram above, we have this Service definition:\nkind: Service apiVersion: v1 metadata: name: example-app labels: app: example-app spec: selector: app: example-app ports: - name: web port: 8080 We would then define the service monitor using web as the port, not \u0026quot;8080\u0026quot;. E.g.\nCORRECT\napiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app labels: team: frontend spec: selector: matchLabels: app: example-app endpoints: - port: web INCORRECT\napiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app labels: team: frontend spec: selector: matchLabels: app: example-app endpoints: - port: \u0026#34;8080\u0026#34; The incorrect example will give an error along these lines spec.endpoints.port in body must be of type string: \u0026quot;integer\u0026quot;\nPrometheus/Alertmanager pods stuck in terminating loop with healthy start up logs # It is usually a sign that more than one operator wants to manage the resource.\nCheck if several operators are running on the cluster:\nkubectl get pods --all-namespaces | grep \u0026#39;prom.*operator\u0026#39; Check the logs of the matching pods to see if they manage the same resource.\nIf running multiple operators is desired, make sure to set the --controller-id flag for each operator instance to a different value. When --controller-id is set, the operator instance will only reconcile resources that have a operator.prometheus.io/controller-id annotation matching the value of --controller-id (eg: an operator with the flag --controller-id=my-objects will only reconcile objects that have operator.prometheus.io/controller-id: my-objects annotation on them). This allows multiple operator instances to run in the same cluster without conflicting over the same resources.\nNote: it is the responsibility of the resource owner (the user applying the resource) to set the operator.prometheus.io/controller-id annotation on the resources. The operator will not set this annotation automatically.\nIf the --controller-id flag is not set, the operator will try to reconcile all resources, except the ones that have the operator.prometheus.io/controller-id annotation set. This can lead to conflicts (such as pods stuck in terminating loop) and should be avoided.\nThe following table illustrates the behavior based on whether the --controller-id flag is set and whether the operator.prometheus.io/controller-id annotation is present on the resources:\nOperator started with the --controller-id flag Resource with the operator.prometheus.io/controller-id annotation Behavior Yes Yes The operator reconciles the resource only if the annotation value matches the flag. Yes No The operator does not reconcile the resource No Yes The operator does not reconcile the resource. No No The operator reconciles the resource. Configuring Prometheus/PrometheusAgent for Mimir and Grafana Cloud # Mimir and Grafana Cloud can receive samples via Prometheus remote-write and are able to deduplicate samples received from HA pairs of Prometheus/PrometheusAgent instances, provided that you configure proper labels.\nBy default, the deduplication labels are:\ncluster, it identifies the HA pair and should have the same value for both instances. __replica__, it should have a different value for each instance. The Prometheus operator already configures the prometheus_replica external label with the same semantic as __replica__ in Grafana Mimir. The label name can be changed to __replica__ by setting the .spec.replicaExternalLabelName field. When running a self-managed Mimir, it\u
6190026rsquo;s also possible to configure different deduplication labels on the Mimir side (check the Mimir documentation).\nWhen it\u0026rsquo;s not possible to change the Prometheus replica external label, a simple solution is to leverage writeRelabelConfigs. Here is a full example:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: example spec: podMonitorSelector: {} ruleSelector: {} serviceMonitorSelector: {} externalLabels: # Configure a `cluster` label identifying the HA pair. cluster: my-awesome-cluster remoteWrite: - url: \u0026lt;remote write URL\u0026gt; writeRelabelConfigs: # Rename the default `prometheus_replica` label to `__replica__` as expected by Grafana cloud. # It happens in 2 steps: # 1. Copy the `prometheus_replica` label value to the `__replica__` label. - sourceLabels: [prometheus_replica] targetLabel: __replica__ # 2. Drop the `prometheus_replica` label. - regex: prometheus_replica action: LabelDrop # Add more relabel configs here. For Prometheus/Prometheus resources with multiple shards, there\u0026rsquo;s another modification to be done since the cluster label needs to include the shard ID for proper deduplication.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: example spec: podMonitorSelector: {} ruleSelector: {} serviceMonitorSelector: {} externalLabels: # The config-reloader container will expand the `$(SHARD) string with the actual shard ID. cluster: my-awesome-cluster-$(SHARD) remoteWrite: - url: \u0026lt;remote write URL\u0026gt; writeRelabelConfigs: - sourceLabels: [prometheus_replica] targetLabel: __replica__ - regex: prometheus_replica action: LabelDrop StatefulSet rollout stuck after a bad update # When a StatefulSet update results in a broken pod (e.g. due to a misconfigured image or invalid configuration), the rollout can get stuck. As described in the Kubernetes documentation, the StatefulSet controller won\u0026rsquo;t roll back to the previous revision automatically when using the RollingUpdate strategy. The broken pod stays in a non-ready state with a revision that doesn\u0026rsquo;t match either the current or the desired update revision, and the rollout stalls.\nIn this situation, the Prometheus Operator can be configured to automatically repair the stuck StatefulSet by evicting or deleting the broken pod. This is controlled via the --repair-policy-for-statefulsets CLI argument:\nnone (default): the operator does not attempt any automatic repair. You must manually intervene to delete or evict the stuck pod. evict: the operator evicts the stuck pod using the Eviction API. This respects PodDisruptionBudgets and is the safer option. delete: the operator deletes the stuck pod directly, bypassing PodDisruptionBudgets. Use this when eviction is blocked (e.g. by a PodDisruptionBudget that cannot be satisfied). The operator repairs at most one pod per reconciliation loop, iterating pods in reverse ordinal order. Only pods whose revision matches neither the current nor the desired update revision are considered for repair. Pods already being deleted are skipped.\nTo enable automatic repair, start the operator with the desired policy, for example:\n--repair-policy-for-statefulsets=evict If you prefer to handle the repair manually, identify the stuck pod and delete it:\nkubectl delete pod -n \u0026lt;namespace\u0026gt; \u0026lt;pod-name\u0026gt; After deleting the pod, the StatefulSet controller will recreate it with the current revision. If the underlying issue (e.g. bad image or broken config) has been fixed, the rollout will proceed normally.\nHigh CPU usage by the Prometheus Operator # Some scenarios can cause high CPU usage by the Prometheus Operator. For instance, with the metrics below, we can get the rate of reconciliations:\n(sum by(controller,triggered_by) (rate(prometheus_operator_triggered_total[5m])) sum by(controller) (rate(prometheus_operator_reconcile_operations_total[5m]))) If this shows as being triggered_by=\u0026quot;Secret\u0026quot;, a solution is to limit the operator to watch only secrets with matching labels using the --secret-field-selector argument. Also, you can use the namespace selectors to limit the number of namespaces watched by the operator.\nAn
619other reported issue has to do with a high amount of Service/Endpoint/ServiceMonitor, where issues with high CPU and memory were also encountered. A solution was to reduce the number of ServiceMonitors, to target multiple Services/Endpoints.\n" 620 } 621 ); 622 index.add( 623 { 624 id: 21, 625 href: "/docs/developer/", 626 title: "Developer Guide", 627 description: "Prometheus operator and kube-prometheus user guides", 628 content: "" 629 } 630 ); 631 index.add( 632 { 633 id: 22, 634 href: "/docs/developer/getting-started/", 635 title: "Getting Started", 636 description: "Getting started guide", 637 content: "This guide explains how to use PodMonitor and ServiceMonitor objects to monitor targets for a sample application.\nThe Prometheus resource declaratively describes the desired state of a Prometheus deployment, while ServiceMonitor and PodMonitor resources describe the targets to be monitored by Prometheus.\nPre-requisites # Before you begin, ensure that you have:\nA Kubernetes cluster with admin permissions A running Prometheus Operator (refer to the Installation page) A running Prometheus instance (refer to the Platform Guide) Deploying a sample application # First, let\u0026rsquo;s deploy a simple example application with 3 replicas which listens and exposes metrics on port 8080.\napiVersion: apps/v1 kind: Deployment metadata: name: example-app spec: replicas: 3 selector: matchLabels: app: example-app template: metadata: labels: app: example-app spec: containers: - name: example-app image: quay.io/brancz/prometheus-example-app:v0.5.0 ports: - name: web containerPort: 8080 Using ServiceMonitors # To monitor the application using a ServiceMonitor, we will begin by exposing the application with a Service object that selects all the Pods with the label app set to example-app and specify the port where the metrics are exposed.\nkind: Service apiVersion: v1 metadata: name: example-app labels: app: example-app spec: selector: app: example-app ports: - name: web port: 8080 Finally, we create a ServiceMonitor object that selects all Service objects with the app: example-app label. The ServiceMonitor object also has a team label (in this case team: frontend) to identify which team is responsible for monitoring the application/service.\napiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app labels: team: frontend spec: selector: matchLabels: app: example-app endpoints: - port: web Similarly, the Prometheus object defines which ServiceMonitors get selected with the spec.serviceMonitorSelector field.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: serviceAccountName: prometheus serviceMonitorSelector: matchLabels: team: frontend Using PodMonitors # While ServiceMonitor requires a Service object, PodMonitor can bypass the service and find targets based on Pod labels. The spec.selector field in the PodMonitor resource specifies which Pods Prometheus should scrape.\napiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: example-app labels: team: frontend spec: selector: matchLabels: app: example-app podMetricsEndpoints: - port: web Similarly, the Prometheus object defines which PodMonitors get selected with the spec.podMonitorSelector field.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: serviceAccountName: prometheus podMonitorSelector: matchLabels: team: frontend What\u0026rsquo;s Next # ServiceMonitor Check out the specifications to learn more about ServiceMonitor\nPodMonitor Check out the specifications to learn more about PodMonitor\n" 638 } 639 ); 640 index.add( 641 { 642 id: 23, 643 href: "/docs/developer/alerting/", 644 title: "Alerting Routes", 645 description: "Alerting guide", 646 content: "This guide assumes you already have a basic understanding of the Prometheus Operator and have gone through the Getting Started guide. Weâre also expecting you to know how to run an Alertmanager instance.\nIn this guide, we\u0026rsquo;ll explore the various methods for managing Alertmanager configurations within your Kubernetes cluster.\nPrometheus\u0026rsquo; configuration also includes \u0026ldquo;rule files\u0026rdquo;
646, which contain the alerting rules. When an alerting rule is triggered, it fires that alert to all Alertmanager instances, on every rule evaluation interval. The Alertmanager instances communicate to each other which notifications have already been sent out. For more information on this system design, see the High Availability page.\nBy default, the Alertmanager instances will start with a minimal configuration which isn\u0026rsquo;t really useful since it doesn\u0026rsquo;t send any notification when receiving alerts.\nYou have several options to provide the Alertmanager configuration:\nUsing a native Alertmanager configuration file stored in a Kubernetes secret. using spec.alertmanagerConfiguration to reference an AlertmanagerConfig object in the same namespace which defines the main Alertmanager configuration. Using spec.alertmanagerConfigSelector and spec.alertmanagerConfigNamespaceSelector to tell the operator which AlertmanagerConfig objects should be selected and merged with the main Alertmanager configuration. Using a Kubernetes Secret # The following native Alertmanager configuration sends notifications to a fictitious webhook service:\nroute: group_by: [\u0026#39;job\u0026#39;] group_wait: 30s group_interval: 5m repeat_interval: 12h receiver: \u0026#39;webhook\u0026#39; receivers: - name: \u0026#39;webhook\u0026#39; webhook_configs: - url: \u0026#39;http://example.com/\u0026#39; Save the above configuration in a file called alertmanager.yaml in the local directory and create a Secret from it:\nkubectl create secret generic alertmanager-example --from-file=alertmanager.yaml The Prometheus operator requires the Secret to be named like alertmanager-{ALERTMANAGER_NAME}. In the previous example, the name of the Alertmanager is example, so the secret name must be alertmanager-example. The name of the key holding the configuration data in the Secret has to be alertmanager.yaml.\nNote: if you want to use a different secret name, you can specify it with the spec.configSecret field in the Alertmanager resource.\nThe Alertmanager configuration may reference custom templates or password files on disk. These can be added to the Secret along with the alertmanager.yaml configuration file. For example, provided that we have the following Secret:\napiVersion: v1 kind: Secret metadata: name: alertmanager-example data: alertmanager.yaml: {BASE64_CONFIG} template_1.tmpl: {BASE64_TEMPLATE_1} template_2.tmpl: {BASE64_TEMPLATE_2} Templates will be accessible to the Alertmanager container under the /etc/alertmanager/config directory. The Alertmanager configuration can reference them like this:\ntemplates: - \u0026#39;/etc/alertmanager/config/*.tmpl\u0026#39; Using AlertmanagerConfig Resources # The following example configuration creates an AlertmanagerConfig resource that sends notifications to a fictitious webhook service.\napiVersion: monitoring.coreos.com/v1alpha1 kind: AlertmanagerConfig metadata: name: config-example labels: alertmanagerConfig: example spec: route: groupBy: [\u0026#39;job\u0026#39;] groupWait: 30s groupInterval: 5m repeatInterval: 12h receiver: \u0026#39;webhook\u0026#39; receivers: - name: \u0026#39;webhook\u0026#39; webhookConfigs: - url: \u0026#39;http://example.com/\u0026#39; Create the AlertmanagerConfig resource in your cluster:\ncurl -sL https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/user-guides/alerting/alertmanager-config-example.yaml | kubectl create -f - The spec.alertmanagerConfigSelector field in the Alertmanager resource needs to be updated so the operator selects AlertmanagerConfig resources. In the previous example, the label alertmanagerConfig: example is added, so the Alertmanager object should be updated like this:\napiVersion: monitoring.coreos.com/v1 kind: Alertmanager metadata: name: example spec: replicas: 3 alertmanagerConfigSelector: matchLabels: alertmanagerConfig: example Using AlertmanagerConfig for global configuration # The following example configuration creates an Alertmanager resource that uses an AlertmanagerConfig resource to be used for the Alertmanager configuration instead of the alertmanager-example secret.\napiVersion: monitoring.coreos.com/v1 kind: Alertmanager metadata: name: example namespace: default spec: replicas: 3 alertmanagerConfiguration: name: config-example The AlertmanagerConfig resource named example-config in namespace default will be a global AlertmanagerConfig. When the operator generates the Alertmanager configuration from it, the namespace label will not be enforced for routes and inhibition rules.\nDeploying Prometheus Rules # The PrometheusRule CRD allows defining alerting and recording rules. The operator knows which PrometheusRule objects to select for a given Prometheus based on the spec.ruleSelector field.\nNote: by default, spec.ruleSelector is nil meaning that the operator picks up no rule.\nBy default, the Prometheus resources discovers only PrometheusRule resources in the same namespace. This can be refined with the ruleNamespaceSelector field:\nTo discover rules from all namespaces, pass an empty dict (ruleNamespaceSelector: {}). To discover rules from all namespaces matching a certain label, use the matchLabels field. Discover PrometheusRule resources with role=alert-rules and prometheus=example labels from all namespaces with team=frontend label:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: example spec: serviceAccountName: prometheus replicas: 2 alert
646ing: alertmanagers: - namespace: default name: alertmanager-example port: web serviceMonitorSelector: matchLabels: team: frontend ruleSelector: matchLabels: role: alert-rules prometheus: example ruleNamespaceSelector: matchLabels: team: frontend In case you want to select individual namespace by their name, you can use the kubernetes.io/metadata.name label, which gets populated automatically with the NamespaceDefaultLabelName feature gate.\nCreate a PrometheusRule object from the following manifest. Note that the object\u0026rsquo;s labels match with the spec.ruleSelector of the Prometheus object.\napiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: creationTimestamp: null labels: prometheus: example role: alert-rules name: prometheus-example-rules spec: groups: - name: ./example.rules rules: - alert: ExampleAlert expr: vector(1) For demonstration purposes, the PrometheusRule object always fires the ExampleAlert alert. To validate that everything is working properly, you can open again the Prometheus web interface and go to the Alerts page.\nNext open the Alertmanager web interface and check that it shows one active alert.\n" 647 } 648 ); 649 index.add( 650 { 651 id: 24, 652 href: "/docs/developer/scrapeconfig/", 653 title: "ScrapeConfig CRD", 654 description: "Guide to use ScrapeConfig to scrape targets external to the Kubernetes cluster", 655 content: "Starting with prometheus-operator v0.65.x, one can use the ScrapeConfig CRD to scrape targets external to the Kubernetes cluster or create scrape configurations that are not possible with the higher level ServiceMonitor/Probe/PodMonitor resources.\nPrerequisites # prometheus-operator \u0026gt;v0.65.1 ScrapeConfig CRD installed in the cluster. Make sure to (re)start the operator after the CRD has been created/updated. Configure Prometheus or PrometheusAgent to select ScrapeConfigs # Both the Prometheus and PrometheusAgent CRD have a scrapeConfigSelector field. This field needs to be set to a list of labels to match ScrapeConfigs:\nspec: scrapeConfigSelector: matchLabels: prometheus: system-monitoring-prometheus With this example, all ScrapeConfig having the prometheus label set to system-monitoring-prometheus will be used to generate scrape configurations.\nNote: Since scrapeConfigNamespaceSelector is not specified, this example only selects ScrapeConfigs from the same namespace as the Prometheus resource.\nNamespace Selection # To select ScrapeConfigs based on the namespace, scrapeConfigNamespaceSelector field can be used.\nSelect ScrapeConfigs from all namespaces # Set it to {} to match ScrapeConfigs from all namespaces:\nspec: scrapeConfigSelector: matchLabels: prometheus: system-monitoring-prometheus scrapeConfigNamespaceSelector: {} Select ScrapeConfigs from namespaces with specific labels # To select ScrapeConfigs only from namespaces with specific labels:\nspec: scrapeConfigSelector: matchLabels: prometheus: system-monitoring-prometheus scrapeConfigNamespaceSelector: matchLabels: environment: production Use ScrapeConfig to scrape an external target # ScrapeConfig supports multiple service discovery mechanisms, categorized into two tiers based on the level of support from the project maintainers:\nTier-1 (fully supported):\nKubernetes Service Discovery File Service Discovery Static Service Discovery DNS Service Discovery HTTP Service Discovery Tier-2 (maintainers review issues/PRs but don\u0026rsquo;t actively maintain): includes cloud provider SDs like Azure, EC2, GCE, DigitalOcean and others. See the ScrapeConfig graduation proposal for the complete list.\nFor the full list of supported fields and service discoveries, check the API documentation.\nIf you have an interest in another service discovery mechanism or you see something missing in the implementation, please open an issue.\nkubernetes_sd # kubernetes_sd discovers scrape targets from the Kubernetes API. The role field selects what kind of object to discover; valid values are Node, Pod, Service, Endpoints, EndpointSlice and Ingress. Note that the value is capitalized.\nWhen Prometheus runs
655inside the cluster, which is the usual case with prometheus-operator, the API server address and credentials are discovered automatically, so a minimal configuration only needs a role. For example, to discover the cluster nodes:\napiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeConfig metadata: name: kubernetes-sd namespace: my-namespace labels: prometheus: system-monitoring-prometheus app.kubernetes.io/name: scrape-config-example spec: kubernetesSDConfigs: - role: Node role is the only required field. Use namespaces.names to restrict discovery to specific namespaces and selectors to filter the discovered objects. As with a Prometheus kubernetes_sd_config, discovered targets normally need relabelings to derive the scrape address and target labels from the discovery metadata. See the API documentation for the full list of fields.\nstatic_config # For example, to scrape the target located at http://prometheus.demo.do.prometheus.io:9090, use the following:\napiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeConfig metadata: name: static-config namespace: my-namespace labels: prometheus: system-monitoring-prometheus spec: staticConfigs: - labels: job: prometheus targets: - prometheus.demo.do.prometheus.io:9090 file_sd # To use file_sd, a file has to be mounted in the Prometheus or PrometheusAgent pods. The following configmap is a service discovery file:\napiVersion: v1 kind: ConfigMap metadata: name: scrape-file-sd-targets namespace: monitoring labels: prometheus: system-monitoring-prometheus data: targets.yaml: | - labels: job: node-demo targets: - node.demo.do.prometheus.io:9100 - labels: job: prometheus targets: - prometheus.demo.do.prometheus.io:9090 This ConfigMap will then need to be mounted in the Prometheus spec:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: your-prometheus namespace: my-namespace labels: prometheus: system-monitoring-prometheus spec: scrapeConfigSelector: matchLabels: prometheus: system-monitoring-prometheus configMaps: - scrape-file-sd-targets You can then use ScrapeConfig to reference that file and scrape the associated targets:\napiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeConfig metadata: name: file-sd namespace: my-namespace labels: prometheus: system-monitoring-prometheus app.kubernetes.io/name: scrape-config-example spec: fileSDConfigs: - files: - /etc/prometheus/configmaps/scrape-file-sd-targets/targets.yaml http_sd # http_sd uses an endpoint for data, unlike file_sd which uses a file, removing the need for a configmap. For instance:\napiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeConfig metadata: name: http-sd namespace: my-namespace labels: prometheus: system-monitoring-prometheus app.kubernetes.io/name: scrape-config-example spec: httpSDConfigs: - url: http://my-external-api/discovery refreshInterval: 15s " 656 } 657 ); 658 index.add( 659 { 660 id: 25, 661 href: "/docs/developer/scrapeclass/", 662 title: "Scrape Classes", 663 description: "Prerequisites # Before you begin, ensure that you have:\nPrometheus-Operator \u0026gt; v0.73.0 A running Prometheus or PrometheusAgent instance. Introduction # ScrapeClass is a feature that allows you to define common configuration settings to be applied across all scrape resources( PodMonitor, ServiceMonitor, ScrapeConfig and Probe ). This feature is similar to StorageClass in Kubernetes and is very useful when it comes to standardising configurations such as common relabelling rules, TLS certificates and authentication.", 664 content: "Prerequisites # Before you begin, ensure that you have:\nPrometheus-Operator \u0026gt; v0.73.0 A running Prometheus or PrometheusAgent instance. Introduction # ScrapeClass is a feature that allows you to define common configuration settings to be applied across all scrape resources( PodMonitor, ServiceMonitor, ScrapeConfig and Probe ). This feature is similar to StorageClass in Kubernetes and is very useful when it comes to standardising configurations such as common relabelling rules, TLS certificates and authentication.\nOne use-case is to configure authentication with TLS certificates when running Prometheus to scrape all the pods in an Istio mesh with strict mTLS. Defining the TLS certificate paths in each PodMonitor and ServiceMonitor that scrapes these pods would be repetitive and error-prone. This problem is now solved by the ScrapeClass feature.\nDefining a ScrapeClass in Prometheus Resource # Below is an example of defining a scrape class in Prometheus/PrometheusAgent resource:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus spec: scrapeClasses: - n
664ame: istio-mtls default: true tlsConfig: caFile: \u0026#34;/etc/istio-certs/root-cert.pem\u0026#34; certFile: \u0026#34;/etc/istio-certs/cert-chain.pem\u0026#34; keyFile: \u0026#34;/etc/istio-certs/key.pem\u0026#34; insecureSkipVerify: true # mount the certs from the istio sidecar (shown here for illustration purposes) volumeMounts: - name: istio-certs mountPath: \u0026#34;/etc/istio-certs/\u0026#34; volumes: - emptyDir: medium: Memory name: istio-certs An administrator can set the default:true so that the scrape applies to all scrape objects that don\u0026rsquo;t configure an explicit scrape class. Only one scrape class can be set as default. If there are multiple default scrape classes, the operator will fail the reconciliation and the failure will be reported in the status conditions of the resource.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus spec: scrapeClasses: - name: first-class default: true - name: second-class default: true status: conditions: - message: \u0026#34;Failed to parse scrape classes: multiple default scrape classes defined\u0026#34; reason: \u0026#34;MultipleDefaultScrapeClasses\u0026#34; status: \u0026#34;False\u0026#34; type: Reconciled Using the ScrapeClass in Monitor Resources # Once the ScrapeClasses is defined in the Prometheus resource, the ScrapeClass field can be used in the scrape resource to reference the particular ScrapeClass.\napiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: servicemonitor-example spec: scrapeClass: istio-mtls endpoints: - port: http path: /metrics If the monitor resource specifies a scrape class name that isn\u0026rsquo;t defined in the Prometheus/PrometheusAgent object, then the operator will emit a Kubernetes event. Consider the following example where a Prometheus instance defines a scrapeClass, but a ServiceMonitor references a different one.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: my-prometheus spec: replicas: 1 scrapeClasses: - name: istio-mtls default: true The ServiceMonitor references a scrapeClass named istio, which is not defined in the Prometheus object.\napiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-service-monitor spec: selector: matchLabels: app: example scrapeClass: istio endpoints: - port: http path: /metrics As ServiceMonitor references a scrapeClass that does not exist in Prometheus, the following event is emitted:\n0s Warning InvalidConfiguration servicemonitor/example-service-monitor ServiceMonitor example-service-monitor was rejected due to invalid configuration: scrapeClass \u0026#34;istio\u0026#34; not found in Prometheus scrapeClasses Similarly, we can select the scrape class for PodMonitor resource.\napiVersion: monitoring.coreos.com/v1 kind: PodMonitor spec: scrapeClass: istio-mtls podMetricsEndpoints: - port: http path: /metrics If a monitor resource includes a tlsConfig field, the Operator applies a field-by-field merge with the tlsConfig from the scrape class. Any fields set in the monitor resource take precedence, while unset fields inherit values from the scrape class.\nNote: The configuration in scrapeClass will only be applied if the scrape resources haven\u0026rsquo;t set fields defined in scrapeClass.\nWhat\u0026rsquo;s Next # Scrape Class Check out the specifications to learn more about scrape classes\n" 665 } 666 ); 667 index.add( 668 { 669 id: 26, 670 href: "/docs/proposals/", 671 title: "Proposals", 672 description: "Proposals for major changes in Prometheus Operator", 673 content: "" 674 } 675 ); 676 index.add( 677 { 678 id: 27, 679 href: "/docs/proposals/implemented/", 680 title: "Implemented Proposals", 681 description: "Proposals that have been implemented", 682 content: "" 683 } 684 ); 685 index.add( 686 { 687 id: 28, 688 href: "/docs/proposals/implemented/prometheus-agent/", 689 title: "Prometheus Agent support", 690 description: "Status # Implemented\nSummary # The Prometheus 2.32.0 release introduces the Prometheus Agent, a mode optimized for remote-write dominant scenarios. This document proposes extending the Prometheus Operator to allow running a Prometheus Agent with different deployment strategies.\nBackgroun
690d # The Prometheus Operator in its current state does not allow a simple way of deploying the Prometheus agent. A potential workaround has been described in a Github comment, where the agent can be deployed through the existing Prometheus CRD by explicitly setting command-line arguments specific to the agent mode.", 691 content: "Status # Implemented\nSummary # The Prometheus 2.32.0 release introduces the Prometheus Agent, a mode optimized for remote-write dominant scenarios. This document proposes extending the Prometheus Operator to allow running a Prometheus Agent with different deployment strategies.\nBackground # The Prometheus Operator in its current state does not allow a simple way of deploying the Prometheus agent. A potential workaround has been described in a Github comment, where the agent can be deployed through the existing Prometheus CRD by explicitly setting command-line arguments specific to the agent mode.\nAs described in the comment, one significant problem with this approach is that the Prometheus Operator always generates alerts and rules sections in the Prometheus config file. These sections are not allowed when running the agent so users need to take additional actions to pause reconciliation of the Prometheus CR, tweak the generated secret and then unpause reconciliation in order to resolve the problem. Alternatively, users can apply a strategic merge patch to the prometheus container as described in the kube-prometheus docs: https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizations/prometheus-agent.md\nWhile this workaround can be used as a stop-gap solution to unblock users in the short term, it has the drawback of needing additional steps which require understanding implementation details of the operator itself. In addition to this, overriding the value of the argument --config.file also requires knowledge of Prometheus Operator internals.\nA lot of the fields supported by the current PrometheusSpec are not applicable to the agent mode. These fields are documented in the PrometheusAgent CRD section.\nFinally, the Prometheus agent is significantly different from the Prometheus server in the way that it fits in a monitoring stack. Therefore, running it as a StatefulSet might not be the only possible deployment strategy, users might want to run it as a DaemonSet or a Deployment instead.\nProposal # This document proposes introducing a PrometheusAgent CRD to allow users to run Prometheus in agent mode. Having a separate CRD allows the Prometheus and PrometheusAgent CRDs to evolve independently and expose parameters specific to each Prometheus mode.\nFor example, the PrometheusAgent CRD could have a strategy field indicating the deployment strategy for the agent, but no alerting field since alerts are not supported in agent mode. Even though there will be an upfront cost for introducing a new CRD, having separate APIs would simplify long-term maintenance by allowing the use of CRD validation mechanisms provided by Kubernetes.\nIn addition, dedicated APIs with mode-specific fields are self documenting since they remove the need to explicitly document which fields and field values are allowed or required for each individual mode. Users will also be able to get an easier overview of the different parameters they could set for each mode, which leads to a better user experience when using the operator.\nFinally, the advantage of using a separate CRD is the possibility of using an alpha API version, which would clearly indicate that the CRD is still under development. The Prometheus CRD, on the other hand, has already been declared as v1 and adding experimental fields to it will be challenging from both documentation and implementation aspects.\nPrometheus Agent CRD # The PrometheusAgent CRD would be similar to the Prometheus CRD, with the exception of removing fields which are not applicable to the prometheus agent mode.\nHere is the list of fields we want to exclude:\nretention retentionSize disableCompaction evaluationInterval rules query ruleSelector ruleNamespaceSelector alerting remoteRead additionalAlertRelabelConfigs additionalAlertManagerConfigs thanos prometheusRulesExcludedFromEnforce queryLogFile allowOverlappingBlocks The enabledFeatures field can be validated for agent-specific features only, which include: expand-external-labels, extra-scrape
691-metrics and new-service-discovery-manager.\nFinally, the remoteWrite field should be made required only for the agent since it is a mandatory configuration section in agent mode.\nDeployment Strategies # When using Prometheus in server mode, scraped samples are stored in memory and on disk. These samples need to be preserved during disruptions, such as pod replacements or cluster maintenance operations which cause evictions. Because of this, the Prometheus Operator currently deploys Prometheus instances as Kubernetes StatefulSets.\nOn the other hand, when running Prometheus in agent mode, samples are sent to a remote write target immediately, and are not kept locally for a long time. The only use-case for storing samples locally is to allow retries when remote write targets are not available. This is achieved by keeping scraped samples in a WAL for 2h at most. Samples which have been successfully sent to remote write targets are immediately removed from local storage.\nSince the Prometheus agent has slightly different storage requirements, this proposal suggests allowing users to choose different deployment strategies.\nRunning the agent with cluster-wide scope # Even though the Prometheus agent has very little need for storage, there are still scenarios where sample data can be lost if persistent storage is not used. If a remote write target is unavailable and an agent pod is evicted at the same time, the samples collected during the unavailability window of the remote write target will be completely lost.\nFor this reason, the cluster-wide strategy would be implemented by deploying a StatefulSet, similarly to how Prometheus CRs are currently reconciled. This also allows for reusing existing code from the operator and delivering a working solution faster and with fewer changes. Familiarity with how StatefulSets work, together with the possibility to reuse existing code, were the primary reasons for choosing StatefulSets for this strategy over Deployments.\nThe following table documents the problems that could occur with a Deployment and StatefulSet strategy in different situations.\nPod update Network outage during pod update Network outage during node drain Cloud k8s node rotation Non-graceful pod deletion Deployment with emptyDir volume No delay in scrapes if the new pod is created before the old one is terminated Unsent samples will be lost. EmptyDir is tied to a pod and node, and data from the old pod will not be preserved. Unsent samples will be lost. EmptyDir is tied to a pod and node, and data from the old pod will not be preserved. Unsent samples will be lost Unsent samples will be lost. EmptyDir is tied to a pod and node, and data from the old pod will not be preserved. Statefulset with a PVC Potential delay in a subsequent scrape due to recreation of the pod No data loss, the volume will contain all unsent data No data loss, the volume will contain all unsent data No data loss if a new pod scheduled to the same AZ node. May be stuck in pending state otherwise No data loss, the volume will contain all unsent data Deployment or STS with replicas No delay, mitigated by replicas Unsent data will be lost if last replica terminated before network outage resolves No data loss, as other replicas are running on other nodes No data loss, as other replicas running on other nodes No data loss as other replicas untouched Running the agent with node-specific scope # This strategy has a built-in auto-scaling mechanism since each agent will scrape only a subset of the targets. As the cluster grows and more nodes are added to it, new agent instances will automatically be scheduled to scrape pods on those nodes. Even though the load distribution will not be perfect (targets on certain nodes might produce far more metrics than targets on other nodes), it is a simple way of adding some sort of load management.\nAnother advantage is that persistent storage can now be handled by mounting a host volume, a strategy commonly used by log collectors. The need for persistent storage is described in the StatefulSet strategy section.\nThe Grafana Agent config exposes a host_filter boolean flag which, when enabled, instructs the agent to only filter targets from the same node, in addition to the scrape config already provided. With this option, the same config can be used for agents running on multiple nodes, and the agents will automatically scrape targets from their own nodes. Such a config option is not yet available in Prometheus. An issue has already been raised [3] and there is an open PR for addressing it [4].\nUntil the upstream work has been completed, it could be possible to implement this strategy with a few tweaks:\nthe operator could use the downward API to inject the node name in the pods. the operator\u0026rsquo;s config reloader already supports expansion of environment variables. With this setup, the unexpanded Prometheus configuration would look as follows\nrelabel_configs: - source_labels: [__meta_kubernetes_pod_node_name] action: keep regex: $NODE_NAME in the pod definition: spec: - container: config-reloader env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName Additional implementation details # There has been a suggestion in a Github comment to introduce a ScrapeConfig CRD in parallel to adding the PrometheusAgent CRD, and âtranslateâ PrometheusAgent CRs to ScrapeConfig CRs. The main challenge with this approach is that it significantly increases the scope of the work that needs to be done to supp
691ort deploying Prometheus agents.\nA leaner alternative would be to focus on implementing the PrometheusAgent CRD by reusing code from the existing Prometheus controller. The ScrapeConfig can then be introduced separately, and the PrometheusAgent can be the first CRD which gets migrated to it.\nImplementation steps # The first step in the implementation process would include creating the PrometheusAgent CRD and deploying the agent as a StatefulSet, similar to how the Prometheus CRD is currently reconciled. This will allow for reusing a lot of the existing codebase from the Prometheus controller and the new CRD can be released in a timely manner.\nSubsequent steps would include iterating on users\u0026rsquo; feedback and either implementing different deployment strategies, or refining the existing one.\nReferences # [1] https://github.com/grafana/agent/blob/5bf8cf452fa76c75387e30b6373630923679221c/production/kubernetes/agent-bare.yaml#L43 [2] https://github.com/open-telemetry/opentelemetry-operator#deployment-modes [3] https://github.com/prometheus/prometheus/issues/9637 [4] https://github.com/prometheus/prometheus/pull/10004 " 692 } 693 ); 694 index.add( 695 { 696 id: 29, 697 href: "/docs/proposals/implemented/scrape-config/", 698 title: "ScrapeConfig CRD", 699 description: "Owners: xiu Status: Implemented Related Tickets: #2787 #3447 Other docs: n/a This document aims at creating a lower level ScrapeConfig Custom Resource Definition that defines additional scrape configurations the Kubernetes way.\nWhy # prometheus-operator misses a way to scrape external targets using CRD. Users have either been abusing the Probe CRD (#3447) or additionalScrapeConfig to do so. Multiple use cases have been reported:\nA user reported in the contributor office hours that their team serves Prometheus as a service to several teams across multiple regions.", 700 content: " Owners: xiu Status: Implemented Related Tickets: #2787 #3447 Other docs: n/a This document aims at creating a lower level ScrapeConfig Custom Resource Definition that defines additional scrape configurations the Kubernetes way.\nWhy # prometheus-operator misses a way to scrape external targets using CRD. Users have either been abusing the Probe CRD (#3447) or additionalScrapeConfig to do so. Multiple use cases have been reported:\nA user reported in the contributor office hours that their team serves Prometheus as a service to several teams across multiple regions. These teams have tens of thousands of exporters running outside Kubernetes. To scrape them, each team has to involve this user\u0026rsquo;s team which makes it a bottleneck. While there is CI in place, errors happen and can render Prometheus\u0026rsquo; configuration to be invalid. They would like to use a CRD to help the team serve themselves in adding scrape configurations. @auligh in #2787 reported needing a specific scrape configuration to scrape services running on the kubernetes nodes but don\u0026rsquo;t have a Service attached to them. This user wants to deploy these scrape configurations alongside the applications rather than in a centralized way with additionalScrapeConfigs. @bgagnon in #2787 mentions that additionalScrapeConfigs\u0026rsquo;s usage is error-prone as with usage, multiple unrelated scrape configurations are bundled together. Furthermore, currently, there is a lot of code duplication due to the operator supporting several CRDs that generate scrape configurations. With the new ScrapeConfig CRD, it would be possible to consolidate some of that logic, where the other *Monitor CRDs could be migrated so that they create a ScrapeConfig resource that would ultimately be used by the operator to generate scrape configuration.\nPitfalls of the current solution # Using additionalScrapeConfig comes with drawbacks:\nTeams have to build an infrastructure to add scrape rules in a centralized manner, which creates a bottleneck since a single team becomes responsible for the configuration There is no input validation, which can lead to an invalid prometheus configuration Goals # Provide a way for users to self-service adding scrape targets Consolidate the scrape configuration generation logic in a central point for other resources to use Audience # Users who serve Prometheus as a service and want to have their customers autonomous in defining scrape configs Users who want to manage scrape configs the same way as for services running within the Kubernetes cluster Users who want a supported Kubernetes w
700ay of scraping targets outside the Kubernetes cluster Non-Goals # This proposal doesn\u0026rsquo;t aim at covering all the fields in \u0026lt;scrape_config\u0026gt;. Specifically, it focuses first on static_configs, file_sd_configs and http_sd_configs. Refactoring of the other CRDs is not in scope for the first version How # As described by @aulig in #2787, we will create a new ScrapeConfig CRD, this new CRD will act the same as the other CRDs and append scrape configurations to the configuration. Usage of ScrapeConfig doesn\u0026rsquo;t exclude the use of the other CRDs, they are not mutually exclusive. ScrapeConfig will allow for any scraping configuration, while the other CRDs provide sane defaults. This will allow for isolated testing of the new ScrapeConfig CRD.\ngraph TD; ServiceMonitor --\u0026gt; prometheusConfig PodMonitor --\u0026gt; prometheusConfig ScrapeConfig --\u0026gt; prometheusConfig prometheusConfig Using a pseudo custom resource definition, we should have the following:\napiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeConfig metadata: name: my-scrape-config namespace: system-monitoring labels: test: value spec: staticConfigs: - \u0026lt;staticConfig\u0026gt;[] # new resource fileSDConfigs: - \u0026lt;fileSDConfig\u0026gt;[] # new resource httpSDConfigs: - \u0026lt;httpSDConfig\u0026gt;[] # new resource relabelings: # relabel_configs - \u0026lt;RelabelConfig\u0026gt;[] # https://github.com/prometheus-operator/prometheus-operator/blob/e4e27052f57040f073c6c1e4aedaecaaec77d170/pkg/apis/monitoring/v1/types.go#L1150 metricsPath: /metrics with the following new resources:\nstaticConfig targets: - target:9100 labels: labelA: placeholder fileSDConfig: files: # Files here are string referencing a file existing in the Prometheus Pod. prometheus-operator is not responsible for # these SD files. The operator should use Prometheus.ConfigMaps to mount these files in the pods and have them usable # by ScrapeConfig. No validation on the content of the SD files is expected from prometheus-operator. - /etc/prometheus/configmaps/inventory/file.json refreshInterval: 5m httpSDConfig: url: http://localhost:1234 refreshInterval: 60s This example doesn\u0026rsquo;t list all the fields that are offered by prometheus. The implementation of all the fields will be done in an iterative process and as such, the expectation is not for all of them to be implemented in the first version.\nAlso, to help selecting ScrapeConfig, a new field will be added to the Prometheus CRD, same as for ServiceMonitor, PodMonitor and Probe objects:\n[...] spec: scrapeConfigSelector: ... scrapeConfigNamespaceSelector: ... Once the CRD is released, we will start refactoring the other CRDs. Since ScrapeConfig will allow for any configuration, it can also generate scrape configuration for the other CRDs.\ngraph TD; ServiceMonitor --\u0026gt; ScrapeConfig PodMonitor --\u0026gt; ScrapeConfig ScrapeConfig --\u0026gt; prometheusConfig prometheusConfig Alternatives # Use additionalScrapeConfig secrets, with the pitfalls described earlier Action Plan # Create the ScrapeConfig CRD, covering file_sd_configs, static_configs and http_sd_configs. The implementation of every field in each service discovery mechanism is left to the implementation. The expectation is not for all of them to be implemented. Once released, refactor the configuration generation logic to reuse ScrapeConfig. In parallel, add other service discovery mechanisms to the CRD and complete the implementation of file_sd_configs, static_configs and http_sd_configs. " 701 } 702 ); 703 index.add( 704 { 705 id: 30, 706 href: "/docs/proposals/implemented/scrapeclasses/", 707 title: "Scrape Classes", 708 description: "Owners: nicolastakashi eronwright Status: Implemented Related Tickets: https://github.com/prometheus-operator/prometheus-operator/issues/4121 https://github.com/prometheus-operator/prometheus-operator/issues/3922 https://github.com/prometheus-operator/prometheus-operator/issues/5947 https://github.com/prometheus-operator/prometheus-operator/issues/5948 This proposal introduces the concept of scrape classes, enabling users to utilize scrape configuration data provided by the administrator, through scrape objects such as PodMonitor, Probe, ServiceMonitor and ScrapeConfig.\nWhy # Sometimes Prometheus administrators needs to provide default configurations for scrape objects, such as the definition of TLS certificates, when running Prometheus to scrape pods in an Istio mesh with strict mTLS as described
708in Istio documentation.", 709 content: " Owners: nicolastakashi eronwright Status: Implemented Related Tickets: https://github.com/prometheus-operator/prometheus-operator/issues/4121 https://github.com/prometheus-operator/prometheus-operator/issues/3922 https://github.com/prometheus-operator/prometheus-operator/issues/5947 https://github.com/prometheus-operator/prometheus-operator/issues/5948 This proposal introduces the concept of scrape classes, enabling users to utilize scrape configuration data provided by the administrator, through scrape objects such as PodMonitor, Probe, ServiceMonitor and ScrapeConfig.\nWhy # Sometimes Prometheus administrators needs to provide default configurations for scrape objects, such as the definition of TLS certificates, when running Prometheus to scrape pods in an Istio mesh with strict mTLS as described in Istio documentation.\nAnother motivation is to improve feature parity amongst the monitor resources. The PodMonitor and Probe resources aren\u0026rsquo;t at parity with ServiceMonitor because the latter allows for unsafe TLS settings.\nPitfalls of the current solution # The only known solution for use cases where you\u0026rsquo;d need to use unsafe TLS settings is to use additionalScrapeConfig.\nThe downside is the loss of integration provided by Prometheus Operator through monitor resources to compose the scrape configurations in a Kubernetes way.\nGoals # Allow for the administrator to define a named, reusable scrape configuration snippet, including unsafe elements such as file references. Allow for a user to select a configuration snippet by name in their probe/podmonitor/servicemonitor endpoint configuration. Avoid giving the user the ability to exflitrate arbitrary files within the Prometheus pod. Non-Goals # Provide a way for Prometheus administrators to enforce/override settings on scrape configurations. Deprecation of the unsafe TLS settings in ServiceMonitor. Audience # Users who serve Prometheus as a service and want to give their customers autonomy in defining monitors, but want to provide a default configuration for scraping. How # The proposed solution is to introduce a notion of a scrape class, akin to a Kubernetes storage class. A scrape class defines TLS settings (and possibly other settings in future, e.g. sensitive authorization settings) to be applied to all scrape resources (ServiceMonitor, PodMonitor, Probe and ScrapeConfig) of that class.\nOne scrape class may be designated as the default class, in which case that class is applied to any scrape resource that doesn\u0026rsquo;t specify a value for scrapeClassName.\nWhen defining a podmonitor/servicemonitor/probe/scrapeconfig, a user may assign a scrape class via the `scrapeClassName field. When there\u0026rsquo;s a match, a scrape class is assigned to all the endpoints.\nClass names are assumed to be installation-specific. In practice, some common class names like istio-mtls are likely to emerge.\nPrometheus Resource # It is proposed that the Prometheus and PrometheusAgent resources contain a new field for defining scrape classes.\nThe rationale for defining scrape classes inline is that, in practice, the TLS file paths are closely related to the volumeMounts of the Prometheus spec. An alternative is outlined later, of factoring the class definitions into a separate resource.\nOne (and only one) scrape class may be designated as the default class.\nWhen a resource defines several default scrape classes, it should fail the reconciliation.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus spec: scrapeClasses: - name: istio-mtls default: true tlsConfig: caFile: \u0026#34;/etc/istio-certs/root-cert.pem\u0026#34; certFile: \u0026#34;/etc/istio-certs/cert-chain.pem\u0026#34; keyFile: \u0026#34;/etc/istio-certs/key.pem\u0026#34; insecureSkipVerify: true # mount the certs from the istio sidecar (shown here for illustration purposes) volumeMounts: - name: istio-certs mountPath: \u0026#34;/etc/istio-certs/\u0026#34; volumes: - emptyDir: medium: Memory name: istio-certs Any object references in the scrape class definition are assumed to refer to objects in the namespace of the Prometheus object.\nMonitoring Resource # If the monitor resource specifies a scrape class name that isn\u0026rsquo;t defined in the Prometheus/PrometheusAgent object, then the scrape resource is rejected by the operator.\nThis behavior is consistent with the behavior of monitor resources referencing a non-existing secret for bearer token authentication.\nTo ensure users will have proper information about the error, the operator may (in the future) emit an event with the error message on the monitor resource and also update the status of the monitor resource with the error message.\nPodMonitor Resource # Allow the user to select a scrape class which applies to all endpoints.\napiVersion: monitoring.coreos.com/v1 kind: PodMonitor spec: scrapeClassName: istio-mtls podMetricsEndpoints: - port: http path: /metrics If the Monitor resource has a tlsConfig field defined, the Operator will use a merge strategy to combine the tlsConfig fields from the PodMonitor object with the tlsConfig fields of the scrape class, the tlsConfig fields in the PodMonitor resource take precedence.\nProbe Resource # Allow the user to select a scrape class for the prober service.\napiVersion: monitoring.coreos.com/v1 kind: Probe spec: scrapeClassName: istio-mtls ServiceMonitor Resource # Allow the user to select a scrape class for all endpoints.\napiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor spec: scrapeClassName: istio-mtls endpoints: - port: http path: /metrics ScrapeConfig # Allow the user to select a scrape class for the whole scrape configuration.\napiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeConfig metadata: name: scrape-config spec: scrapeClassName: istio-mtls staticConfigs: [...] httpSDConfig: [...] fileSDConfig: [...] Test Plan # Regression test; ensure no change to generated configs unless a scrape class is applied. Optionality of the default scrape class; ensure that it is an optional configuration element. Acceptance testing in Istio environment; ensure that the solution is effective for a key use case. Alternatives # Global scrape TLS configuration # An alternative solution would be to apply a default TLS configuration to all monitors.\nFor example, via a hypothetical field spec.scrapeTlsConfig:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus spec: scrapeTlsConfig: caFile: \u0026#34;/etc/istio-certs/root-cert.pem\u0026#34; certFile: \u0026#34;/etc/istio-certs/cert-chain.pem\u0026#34; keyFile: \u0026#34;/etc/istio-certs/key.pem\u0026#34; insecureSkipVerify: true Objections:\nA singular default configuration may be too inflexible to effectively scrape a diverse set of pods. For example, in Istio, some pods may be in STRICT mode. Istio Permissive Mode # An alternative for the Istio use case is to use PERMISSIVE mode (see documentation), or to use exclude annotations on the pod such that the metrics endpoint bypasses mTLS.\nObjections:\nThis solution is less secure at a transport level unless TLS is implemented at the application layer. Strict mTLS is the basis for Istio authorization policy, e.g. to explicitly allow access from prom to the metrics endpoint. ScrapeClass Resource # A variant of the proposed solution is to introduce a new custom resource for defining scrape classes.\napiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeClass metadata: name: istio-mtls spec: tlsConfig: caFile: \u0026#34;/etc/istio-certs/root-cert.pem\u0026#34; certFile: \u0026#34;/etc/istio-certs/cert-chain.pem\u0026#34; keyFile: \u0026#34;/etc/istio-certs/key.pem\u0026#34; insecureSkipVerify: true An open question is whether the resource would be cluster-scoped or namespace-scoped.\nObjections:\nSince the file paths are dependent on the volume mounts in the server, this approach may not achieve a meaningful decoupling. Extra complexity in defining a new CRD. Non-Safe Monitors # Another alternative would be to allow PodMonitor and Probe to use unsafe TLS settings.\nObjections:\nSee explanation for why unsafe settings were disallowed in the first place. Action Plan # Change the Operator API to define scrape classes and for scrape resources to select a scrape class Update the scrape configuration generator to use the scrape class Update documentation Resolve issues #4121, #3922 " 710 } 711 ); 712 index.add( 713 { 714 id: 31, 715 href: "/docs/proposals/implemented/controller-id/", 716 title: "Controller-ID Proposal", 717 description: "Owners: danielmellado Status: Implemented Related Tickets: #4281 #4498 Other Docs: n/a Introduction # This proposal aims to implement a solution to support multiple cluster-level Prometheus instances running concurrently without conflicting over the same custom resources. This solution isn\u0026rsquo;t limited to the Prometheus resources as it\u0026rsquo;ll also be available for AlertManagerand ThanosRuler ones, as well as for any pod-based resource that c
717ould be added in the future.\nThis issue can significantly impact use cases where multiple Prometheus operator instances run at the same time in the Kubernetes cluster.", 718 content: " Owners: danielmellado Status: Implemented Related Tickets: #4281 #4498 Other Docs: n/a Introduction # This proposal aims to implement a solution to support multiple cluster-level Prometheus instances running concurrently without conflicting over the same custom resources. This solution isn\u0026rsquo;t limited to the Prometheus resources as it\u0026rsquo;ll also be available for AlertManagerand ThanosRuler ones, as well as for any pod-based resource that could be added in the future.\nThis issue can significantly impact use cases where multiple Prometheus operator instances run at the same time in the Kubernetes cluster.\nWhy # Currently, we encounter issues when different users deploy different instances of the Prometheus operator, that will try to reconcile the same resources.\nIn the worst-case scenario, these operators may not only compete for ownership of the CRD resources but also attempt to rewrite or redeploy different versions of the CRD, causing disruptions to all pods.\nThe remediation for this scenario, where users deploy their Prometheus operator instances in parallel, involves using one of the many CLI arguments such as --deny-namespaces, --namespaces, --prometheus-instance-selector or prometheus-instance-namespaces. But this requires cooperation between the different parties and there\u0026rsquo;s no way to ensure that a specific monitoring resource is managed only by a specific operator instance.\nHow # After some research from @machine424, we have identified a potential solution already implemented by the zalando/postgres-operator. When an operator is configured with a specific \u0026ldquo;controller ID\u0026rdquo; value, it will only reconcile resources that have a matching \u0026ldquo;controller ID\u0026rdquo; annotation.\nConversely, if the operator is not configured with a \u0026ldquo;controller ID,\u0026rdquo; it will skip all resources that have a \u0026ldquo;controller ID\u0026rdquo; annotation. More details can be found in the zalando/postgres-operator documentation.\nGoals # Guarantee that a custom resource will be managed by a specific Prometheus operator instance. Audience # This proposal is relevant to the following audience:\nUsers who provide Prometheus as a service and want to run multiple Prometheus operator instances in different namespaces. Users seeking to mitigate the impact of rogue Prometheus instances. Non-Goals # Provide a solution that works with user intervention. It\u0026rsquo;ll require work from the user deploying the operator and resources. (e.g. if the operator is started without any specific argument, it\u0026rsquo;ll attempt to reconcile all resources in all namespaces). Alternatives # Although the initial discussion for this proposal considered adding an owner reference within the scope, the ControllerRef model does not directly address this problem because the ControllerRefmodel solves the problem of controllers that fight over controlled objects due to overlapping selectors (e.g. a ReplicaSet fighting with a ReplicationController over Pods because both controllers have label selectors that match those Pods)\n" 719 } 720 ); 721 index.add( 722 { 723 id: 32, 724 href: "/docs/proposals/accepted/shard-autoscaling/", 725 title: "Shard Autoscaling", 726 description: "Owners: Arthur Sens Nicolas Takashi Status: Accepted Related Tickets: #4927 #4946 #4967 Other docs: n/a This document aims to address existing issues preventing users from leveraging the Horizontal Pod Autoscaler (HPA) in conjunction with Prometheus sharding.\nWhy Pitfalls of the current solution Goals Non-Goals Audience How Scale subresource Graceful scale-down of Prometheus Servers Scaling up after scaling down Graceful scale-down of Prometheus Agents Scale-down alternatives Action Plan Why # Managing Prometheus instances with highly variable workloads can be quite challenging.", 727 content: " Owners: Arthur Sens Nicolas Takashi Status: Accepted Related Tickets: #4927 #4946 #4967 Other docs: n/a This document aims to address existing issues preventing users from leveraging the Horizontal Pod Autoscaler (HPA)
727in conjunction with Prometheus sharding.\nWhy Pitfalls of the current solution Goals Non-Goals Audience How Scale subresource Graceful scale-down of Prometheus Servers Scaling up after scaling down Graceful scale-down of Prometheus Agents Scale-down alternatives Action Plan Why # Managing Prometheus instances with highly variable workloads can be quite challenging. When the number of scraped targets can scale up and down between a few items to thousands over a short period of time (e.g. within a day), operators are forced to opt for the safest scenario, ending up with over-provisioned instances. Additionally, the WAL replay often becomes a problem after a restart as it takes a long time to be replayed into memory. Without available replicas, this leads to unnecessary downtime.\nTo address these issues, this document outlines a solution to enhance the Prometheus Operator by enabling the usage of Horizontal Pod Autoscalers (HPAs) to scale shards up and down. This improvement aims to simplify the process of scaling Prometheus instances, making it more accessible and efficient for operators.\nPitfalls of the current solution # Prometheus can scale vertically pretty well, but instances that grow up to hundreds of GiB/TiB in WAL size start face several challenges:\nEventual cardinality explosions have a big blast radius if a single Prometheus instance is responsible for scraping the majority of monitored applications. Recovering from a crash takes several minutes due to the WAL replay. While the Prometheus and PrometheusAgent CRDs implement sharding for scrape configurations, there are still pending issues and missing features that prevent adoption.\nEnvironments where the load is undistributed throughout the day/week, operators need to constantly adjust number of shards or shard size. Scaling down Prometheus Servers causes data loss, as there\u0026rsquo;s no guarantee that stored data is persisted in centralized storage before the container is deleted. Goals # Enable scaling of the Prometheus shards up and down via Horizontal Pod Autoscaler objects. Non-Goals # Implement the autoscaling logic into the Prometheus operator. Automatic balancing of targets to ensure homogeneous load across all Prometheus pods. Audience # Users looking for a shard autoscaling mechanism with a good cost-reliability ratio. How # Today, there are a few strategies to measure the load of Prometheus instances.\nPerhaps you can use Kubernetes Metrics API to measure load in terms of CPU and/or Memory usage.\nAnother strategy might be to measure the amount of samples ingested per second\nPrometheus Agents: rate(prometheus_agent_samples_appended_total[5m]) Prometheus Servers: rate(prometheus_tsdb_head_samples_appended_total[5m]) Or even measuring samples queried per second for Prometheus instances under heavy query load. Prometheus Servers: rate(prometheus_engine_query_samples_total[5m]) These are all data that could be configured as input for different Horizontal Pod Autoscalers, but how do HPAs know if the amount of shard is bigger/lower than desired?\nScale subresource # When working with any resource, including CRDs, HPAs depend on a subresource called Scale. This proposal suggests to implement the scale subresource for the Prometheus and PrometheusAgent CRDs. Instead of working on the \u0026ldquo;replicas\u0026rdquo; count, it will operate on the \u0026ldquo;shards\u0026rdquo; count because the purpose of scaling up (resp. down) is to distribute the same number of targets across more (resp. less) Prometheus instances.\nWith only this change, Prometheus Agents can already be horizontally scaled without problems, but for Prometheus Servers it gets a little more complicated.\nGraceful scale-down of Prometheus Servers # Prometheus Servers don\u0026rsquo;t behave like the usual stateless applications. A few cases require Prometheus pods to still be available even after a scale-down event is triggered:\nThanos proxying queries back to the sidecars to retrieve data that hasn\u0026rsquo;t been uploaded to object storage yet. Prometheus servers with long retention periods still hold data that users might want to query. If the operator deletes Prometheus pods in excess during a scale-down operation, data loss will be a common problem, so a more complex strategy needs to be used here.\nWe propose that Prometheus-Operator introduces a new shardRetentionPolicy field to the Prometheus CRD:\napiVersion: monitoring.coreos.com kind: Prometheus metadata: name: example spec: shardRetentionPolicy: # Default: Delete whenScaled: Retain|Delete # if not specified, the operator picks up the retention period if it\u0026#39;s defined, # otherwise (e.g. size-based retention) the statefulset lives forever. retain: retentionPeriod: 3d Inspired by the StatefulSet API, when setting .shardRetentionPolicy.whenScaled is set to Delete the operator would simply delete the underlying StatefulSet on the spot, not caring about the data stored in that particular shard. Although not the safest approach, it is exactly the current behavior, and changing it might surprise a lot of users.\nIf .shardRetentionPolicy.whenScaled is set to Retain Prometheus-Operator will keep the shard running for a customizable period of time. By default, the Operator will keep the Shard for the whole retention period, or forever if only size-based retention is defined. Alternatively, the user can define a custom retention period.\nIf a retention time is defined, the deletion logic is controlled by an annotation present on the StatefulSet:\noperator.prometheus.io/deletion-timestamp: X On scale downs, the configuration of all shards will be re-arranged to make sure that the \u0026ldquo;scaled-down\u0026rdquo; Prometheus pods don\u0026rsquo;t scrape targets anymore but they will still be available for queries.\nWhen the deletion timestamp set in the annotation is reached, the Operator will trigger the deletion of the statefulset associated with the shard.\nScaling up after scaling down # If a scale-up event happens while the Prometheus pods marked for deleti
727on are still running, the annotation will be removed and the scrape targets will be redistributed to all active shards.\nWe intentionally don\u0026rsquo;t want to spin up new instances while others that are marked for deletion are still running as shard names and containers\u0026rsquo; environment variables that configure each shard\u0026rsquo;s target group will be too complex to coordinate.\nGraceful scale-down of Prometheus Agents # Prometheus Agents are different than servers since queries are not available in this mode. Their only responsibility is scraping metrics and pushing them via remote-write to a long-term storage backend, making the scale-down experience much easier to handle.\nWhen receiving the SIGTERM signal, the Prometheus Agent should gracefully handle the signal by finishing all remote-write queues before ending the process. Prometheus-Operator, by default, adjusts the Graceful Termination Period of Prometheus/PrometheusAgent pods to 600s. Ten minutes should be enough for them to flush the remote-write queue, but, if needed, users can redefine Graceful Termination Period using Strategic Merge Patch.\nSince there\u0026rsquo;s no use case for retaining Prometheus Agents, its CRD will not be extended with the RetentionPolicy mentioned in Graceful scale-down of Prometheus Servers\nScale down Alternatives # Dump \u0026amp; Backfill # During scale-down, the Prometheus-Operator could read TSDB Blocks from the Prometheus instance being deleted and backfill it into another instance.\nAdvantages:\nPrometheus can be shut down immediately without data loss. Disadvantages:\nLoading TSDB Blocks into memory is expensive, requiring Prometheus-Operator to run with big Memory/CPU requests. Complex and hard to coordinate workflow. (Require restarts to reload TSDB blocks, hard to identify possible corruptions) Snapshot \u0026amp; Upload on shutdown # During scale-down, Prometheus-Operator could send an HTTP request to Prometheus\u0026rsquo; Snapshot endpoint. Thanos sidecar could be extended to watch the snapshot directory and automatically upload snapshots to Object storage.\nThere is a related issue open already: https://github.com/thanos-io/thanos/issues/6263\nAdvantages:\nPrometheus can be shut down immediately without data loss. Disadvantages:\nPrometheus running without Thanos sidecars won\u0026rsquo;t benefit from this strategy. Action Plan # Re-implement Pull Request #4735, but this time focusing on Shards and making sure we add the selectorpath to the scale subresource. Enabling horizontal autoscaling for Prometheus Agents.\nImplement the graceful shutdown strategy of Prometheus servers.\n" 728 } 729 ); 730 index.add( 731 { 732 id: 33, 733 href: "/docs/proposals/implemented/docs-restructuring/", 734 title: "Revamping Documentation Structure", 735 description: "Owners: AshwinSriram11 Status: Implemented Related Tickets: #3553 #6046 Other docs: N/A This document proposes restructuring the documentation of the Prometheus-Operator website, aiming for better content organization and better experience for new users and old veterans.\nWhy # Restructuring the documentation will help in improving user experience and may save time for a user to search for relevant information effectively. This will encourage a newcomer to get familiar with the project in an efficient manner.", 736 content: " Owners: AshwinSriram11 Status: Implemented Related Tickets: #3553 #6046 Other docs: N/A This document proposes restructuring the documentation of the Prometheus-Operator website, aiming for better content organization and better experience for new users and old veterans.\nWhy # Restructuring the documentation will help in improving user experience and may save time for a user to search for relevant information effectively. This will encourage a newcomer to get familiar with the project in an efficient manner. The end goal of a good documentation is to follow the industrial best practices and provide accurate information to a user.\nI believe that by restructuring, we can group the related topics together in an organized way and use cross-references to link topics that are difficult to group but are relevant for understanding. This makes the documentation more user-friendly and also ensures uniform flow of content.\nAfter we have a proper structure, it will become relatively easy to add information about new features. Maintainers will be able to save time on deciding the best place for adding new content. Also, improving documentation will help in improving Search Engine Optimization(SEO) and increase the engagement of the project.\nPitfalls of the current solution # A good documentation is one that is easy to understand for a newcomer and provides the exact amount of information that is needed according to the need. But looking at the current documentation structure, a lot of topics seem misplaced. For example, there is no need for a \u0026ldquo;Contributing\u0026rdquo; page in the prologue section. Prologue section should only give the introduction and the prerequisites for the project. Due to this, a user might need to put more effort to search for relevant information and this might decrease the user\u0026rsquo;s productivity.\nCurrently, there is some unnecessary information from the documentation creating misconceptions in the user\u0026rsquo;s mind. For example, let us look at #6046 which tells us that there is no Ingress Guide present in the current documentation. But, if we look at the website, there are links to the âIngress Guideâ on the Getting-Started and Alerting page in User-Guide. Due to this, many users will report the same issue and it will take time for maintainers to resolve them.\nIncorporation of new topics is also difficult if the structure is not up to mark because more time and effort is needed to decide the best place to add a topic which can often lead to decrease in productivity of a maintainer. For example, in issue #3553, it has been mentioned that basic architecture needs to be worked upon before adding the diagram as there is no section talking about ânamespace selectionâ in the current documentation.\nGoals # To improve readability and make the documentation easier to understand. To ensure a uniform flow of content. To remove irrelevant information from the documentation. To ensure that all new features get documented properly in the future. Audience # Developers who want to configure monitoring for their applications. Developers who want to set up alerts for their application. Platform engineers who want to monitor Prometheus and Alertmanager instances and manage the infrastru
736cture. Maintainers who are responsible for optimizing Prometheus Operator. Contributors who want to engage and want to contribute effectively to the project. Non-Goals # Adding extra documentation about new features, enhancements, troubleshooting, or other information that might be missing today. How # I believe a basic structure for the website should be as given below:\n1. Getting Started # Introduction - This section will introduce us to Prometheus-Operator and will talk about goals and the problems that are being solved by this project. Installation Guide - This section will contain all the methods of installation of Prometheus-Operator in the production environment. Compatibility - This section will provide information about compatibility of Prometheus-Operator with Kubernetes, Prometheus, Alertmanager and Thanos. Design - This section will describe the design of Prometheus-Operator focusing on the various custom resource definitions(CRDs) it manages. 2. API Reference # This section will provide detailed information about different fields of the Custom Resources in Prometheus-Operator(config, spec, status and other information).\n3. Developer Guide # This section will provide detailed information for developers on how to configure monitoring for their applications. This section will teach on how to define and manage ServiceMonitor, PodMonitor and PrometheusRule objects.\nFrom the current documentation,following topics will come under this section:\nGetting Started ScrapeConfig CRD Alerting 4. Platform Guide # This section will explain how to set up, configure and manage Prometheus Operator infrastru
736cture. It will explain about managing Prometheus, Alertmanager instances, setting up persistent storage for different resources, instructions on implementing Role-Based Access Control (RBAC) and much more.\nFrom the current documentation, following topics will come under this section:\nAdmission Webhook Prometheus Agent Thanos RBAC RBAC for CRDs High Availability Storage Strategic Merge Patch CLI Reference 5. Community # Contributing Testing DCO Code of Conduct Release The reasoning behind the new structure is given below -\nThe âGetting-Startedâ section should only serve information on how to begin your journey with the project. So, the first thing that comes to mind should be a basic overview followed by the installation. It wonât make sense to have the installation section appear in the User-Guide(in the current model) because installation is the foremost important thing to begin working on a project. With installation, users would also like to know the different releases and their compatibility, thus it makes more sense to add this topic just below the installation section. At last, Design doc should be present to give an overview of how different components interact and what their purpose is in a concise manner.\nAPI Reference is of extreme importance and is something needed by developers to implement the functionalities they need. It is something needed by both a Developer and a Platform Engineer. As it is common for both personas, I think rather than duplicating this page in both sections, we should have a separate section for it due to its relevance. Further, looking at the current API reference page, it contains too much information for a single page. This makes the page look overly crowded and searching for any particular field becomes a tedious task. We can convert this page into multiple pages by grouping sections and cross-reference properly which will provide a better experience for a user.\nI felt that Developer-Guide is placed before Platform-Guide keeping in mind the difficulties a newcomer faces when he/she starts working on a project. Developer-Guide contains relatively easier examples and provides a beginner level experience. But when we move on to the Platform-Guide, we will find more advanced situations like security, storage which would be more complex compared to topics mentioned in Developer Guide. Thus, this structure provides a uniform flow with context to difficulty level for a newcomer as well as segregates relevant information according to the persona.\nAs mentioned in the audience, we also have people who want to contribute to the project. So, making a âCommunityâ section serves the purpose of providing users to find how to contribute to the project. Also, it provides other community related information like release, code od conduct, and other topics which are not provided in the current model.\nWe will move the Kube-Prometheus section as separate docs but on the same website. We will provide a link for Kube-Prometheus (beside Docs and Adopters) in the top-navigation bar which will direct us to dedicated docs for Kube-Prometheus. This is being done to avoid overlapping the concepts of Prometheus Operator with those of Kube-Prometheus. However, we can mention the method of deploying Prometheus-Operator with Kube-Prometheus in the installation section due to its ease and popularity among users.\nTo make the documentation organization better according to the new structure and keep things in sync with the prometheus-operator/website repository, we should reorganize the folders as they are in the website repository. This will make it easier to work with both the repositories for a contributor and will help in better organization. This will also make it easier to locate the file in which changes need to be made.\nAction Plan # Making sections and organizing files as described above. If needed, splitting the content of one file into multiple files to improve readability or changing the location of content wherever required. Removing content that is unnecessary for the project. Follow-Ups # After we successfully complete the Goals of this proposal, we can move on with the Non-Goals section. As mentioned, the next step would be to add the documentation for the topics that are currently missing.\nAnother follow-up to this proposal would be to integrate version-specific documentation.\n" 737 } 738 ); 739 index.add( 740 { 741 id: 34, 742 href: "/docs/proposals/implemented/status-subresource/", 743 title: "Status subresource for Prometheus operator Workload CRDs", 744 description: "Owners: simonpasquier Status: Implemented Related Tickets: #3335 Other docs: N/A This proposal describes how we will extend the Prometheus operator workload Custom Resource Definitions (CRDs) with a Status subresource field.\nWhy # Core Kubernetes resources differentiate between the desired state of an object (the spec field) and the current status of the object (the status field) details. Before this proposal, the current status of the objects was never reflected by the Prometheus operator which makes it harder for external actors to know if the underlying resource is available or not.", 745 content: " Owners: simonpasquier Status: Implemented Related Tickets: #3335 Other docs: N/A This proposal describes how we will extend the Prometheus operator workload Custom Resource Definitions (CRDs) with a Status subresource field.\nWhy # Core Kubernetes resources differentiate between the desired state of an object (the spec field) and the current status of the object (the status field) details. Before this proposal, the current status of the objects was never reflected by the Prometheus operator which makes it harder for external actors to know if the underlying resource is available or not.\nPitfalls of the current solution # Though some of the custom resource definitions expose already a Status subresource, the Prometheus operator never updates the status subresource and it is only possible to retrieve the information via the custom API exposed by the operatorâs web service. This makes it harder than necessary for users to know if the declared resources are ready and to understand why if they arenât.\nGoals # Define the structure of the status subresource for the custom resource definitions that materialize as Pod objects. Alertmanager Prometheus PrometheusAgent ThanosRuler Define how the operator would reconcile the status subresource. Non-goals # Implement the status subresource for configuration objects like ServiceMonitor, PodMonitor, PrometheusRule, Probe and ScrapeConfig. The main difficulty is that a ServiceMonitor object for instance can be reconciled by different objects. It brings more complexity in terms of API definition as well as implementation. This will be addressed in a separate proposal. Extend the status subresource beyond what the operator can infer from the core Kubernetes API. Emit events on resource updates. O
745nce the operator implements status subresources, it seems a natural evolution to generate events on status changes but this isn\u0026rsquo;t in the scope of this proposal. Background # The status subresource is a well-defined concept in Kubernetes:\nKubernetes documentation about custom resource definitions. Kubernetes API conventions. kubebuilder documentation. OperatorSDK documentation. As much as possible, the proposal follows the recommendations established by the Kubernetes community.\nAPI # Prometheus # The Prometheus CRD has a Status subresource that exposes the following fields:\nPaused Replicas UpdatedReplicas AvailableReplicas UnavailableReplicas We propose to add the following new fields:\nConditions as recommended by the document describing the Kubernetes API conventions. ShardStatuses which is a drilled-down status for each Prometheus shard. type PrometheusStatus struct { // Represents whether any actions on the underlying managed objects are // being performed. Only delete actions will be performed. Paused bool `json:\u0026#34;paused\u0026#34;` // Total number of non-terminated pods targeted by this Prometheus deployment // (their labels match the selector). Replicas int32 `json:\u0026#34;replicas\u0026#34;` // Total number of non-terminated pods targeted by this Prometheus deployment // that have the desired version spec. UpdatedReplicas int32 `json:\u0026#34;updatedReplicas\u0026#34;` // Total number of available pods (ready for at least minReadySeconds) // targeted by this Prometheus deployment. AvailableReplicas int32 `json:\u0026#34;availableReplicas\u0026#34;` // Total number of unavailable pods targeted by this Prometheus deployment. UnavailableReplicas int32 `json:\u0026#34;unavailableReplicas\u0026#34;` // The current state of the Prometheus deployment. // +listType=map // +listMapKey=type // +optional Conditions []Condition `json:\u0026#34;conditions,omitempty\u0026#34;` // The list has one entry per shard. Each entry provides a summary of the shard status. // +listType=map // +listMapKey=shardID // +optional ShardStatuses []ShardStatus `json:\u0026#34;shardStatuses,omitempty\u0026#34;` // Shards is the most recently observed number of shards. Shards int32 `json:\u0026#34;shards,omitempty\u0026#34;` // The selector used to match the pods targeted by this Prometheus resource. Selector string `json:\u0026#34;selector,omitempty\u0026#34;` } // Condition represents the state of the resources associated with the // Prometheus, Alertmanager or ThanosRuler resource. // +k8s:deepcopy-gen=true type Condition struct { // Type of the condition being reported. // +required Type ConditionType `json:\u0026#34;type\u0026#34;` // Status of the condition. // +required Status ConditionStatus `json:\u0026#34;status\u0026#34;` // lastTransitionTime is the time of the last update to the current status property. // +required LastTransitionTime metav1.Time `json:\u0026#34;lastTransitionTime\u0026#34;` // Reason for the condition\u0026#39;s last transition. // +optional Reason string `json:\u0026#34;reason,omitempty\u0026#34;` // Human-readable message indicating details for the condition\u0026#39;s last transition. // +optional Message string `json:\u0026#34;message,omitempty\u0026#34;` // ObservedGeneration represents the .metadata.generation that the // condition was set based upon. For instance, if `.metadata.generation` is // currently 12, but the `.status.conditions[].observedGeneration` is 9, the // condition is out of date with respect to the current state of the // instance. ObservedGeneration int64 `json:\u0026#34;observedGeneration,omitempty\u0026#34;` } type ConditionType string const ( // Available indicates whether enough pods are ready to provide the // service. // The possible status values for this condition type are: // - True: all pods are running and ready, the service is fully available. // - Degraded: some pods aren\u0026#39;t ready, the service is partially available. // - False: no pods are running, the service is totally unavailable. // - Unknown: the operator couldn\u0026#39;t determine the condition status. Available ConditionType = \u0026#34;Available\u0026#34; // Reconciled indicates whether the operator has reconciled the state of // the underlying resources with the object\u0026#39;s spec. // The possible status values for this condition type are: // - True: the reconciliation was successful. // - False: the reconciliation failed. // - Unknown: the operator couldn\u0026#39;t determine the condition status. Reconciled ConditionType = \u0026#34;Reconciled\u0026#34; ) type ConditionStatus string const ( ConditionTrue ConditionStatus = \u0026#34;True\u0026#34; ConditionDegraded ConditionStatus = \u0026#34;Degraded\u0026#34; ConditionFalse ConditionStatus = \u0026#34;False\u0026#34; ConditionUnknown ConditionStatus = \u0026#34;Unknown\u0026#34; ) Example of a Prometheus resource\u0026rsquo;s status for which all pods are up and running:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus namespace: default spec: replicas: 2 shards: 2 status: status: availableReplicas: 4 conditions: - lastTransitionTime: \u0026#34;2024-09-10T14:24:26Z\u0026#34; message: \u0026#34;
745\u0026#34; observedGeneration: 4 reason: \u0026#34;\u0026#34; status: \u0026#34;True\u0026#34; type: Available - lastTransitionTime: \u0026#34;2024-09-10T14:24:26Z\u0026#34; message: \u0026#34;\u0026#34; observedGeneration: 4 reason: \u0026#34;\u0026#34; status: \u0026#34;True\u0026#34; type: Reconciled paused: false replicas: 4 selector: app.kubernetes.io/instance=prometheus,app.kubernetes.io/managed-by=prometheus-operator,app.kubernetes.io/name=prometheus,operator.prometheus.io/name=prometheus,prometheus=prometheus shardStatuses: - availableReplicas: 2 replicas: 2 shardID: \u0026#34;0\u0026#34; unavailableReplicas: 0 updatedReplicas: 2 - availableReplicas: 2 replicas: 2 shardID: \u0026#34;1\u0026#34; unavailableReplicas: 0 updatedReplicas: 2 shards: 2 unavailableReplicas: 0 updatedReplicas: 4 Example of a Prometheus resource\u0026rsquo;s status for which some pods are missing due to scheduling issues:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: monitoring spec: replicas: 2 shards: 2 status: availableReplicas: 2 conditions: - lastTransitionTime: \u0026#34;2024-09-10T14:31:29Z\u0026#34; message: |- shard 0: pod prometheus-prometheus-1: 0/1 nodes are available: 1 node(s) didn\u0026#39;t match pod anti-affinity rules. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod. shard 1: pod prometheus-prometheus-shard-1-1: 0/1 nodes are available: 1 node(s) didn\u0026#39;t match pod anti-affinity rules. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod. observedGeneration: 5 reason: SomePodsNotReady status: Degraded type: Available - lastTransitionTime: \u0026#34;2024-09-10T14:31:29Z\u0026#34; message: \u0026#34;\u0026#34; observedGeneration: 5 reason: \u0026#34;\u0026#34; status: \u0026#34;True\u0026#34; type: Reconciled paused: false replicas: 4 selector: app.kubernetes.io/instance=prometheus,app.kubernetes.io/managed-by=prometheus-operator,app.kubernetes.io/name=prometheus,operator.prometheus.io/name=prometheus,prometheus=prometheus shardStatuses: - availableReplicas: 1 replicas: 2 shardID: \u0026#34;0\u0026#34; unavailableReplicas: 1 updatedReplicas: 1 - availableReplicas: 1 replicas: 2 shardID: \u0026#34;1\u0026#34; unavailableReplicas: 1 updatedReplicas: 1 shards: 2 unavailableReplicas: 2 updatedReplicas: 2 Alertmanager # The subresource status for the Alertmanager custom resource definition should be very similar to the API defined for the Prometheus CRD. The main difference is that we don\u0026rsquo;t need the shardStatuses field.\ntype AlertmanagerStatus struct { // Represents whether any actions on the underlying managed objects are // being performed. Only delete actions will be performed. Paused bool `json:\u0026#34;paused\u0026#34;` // Total number of non-terminated pods targeted by this Alertmanager // object (their labels match the selector). Replicas int32 `json:\u0026#34;replicas\u0026#34;` // Total number of non-terminated pods targeted by this Alertmanager // object that have the desired version spec. UpdatedReplicas int32 `json:\u0026#34;updatedReplicas\u0026#34;` // Total number of available pods (ready for at least minReadySeconds) // targeted by this Alertmanager cluster. AvailableReplicas int32 `json:\u0026#34;availableReplicas\u0026#34;` // Total number of unavailable pods targeted by this Alertmanager object. UnavailableReplicas int32 `json:\u0026#34;unavailableReplicas\u0026#34;` // The selector used to match the pods targeted by this Alertmanager object. Selector string `json:\u0026#34;selector,omitempty\u0026#34;` // The current state of the Alertmanager object. // +listType=map // +listMapKey=type // +optional Conditions []Condition `json:\u0026#34;conditions,omitempty\u0026#34;` } Thanos Ruler # The subresource status for the Thanos Ruler custom resource definition is identical to the Alertmanager CRD.\ntype ThanosRulerStatus struct { // Represents whether any actions on the underlying managed objects are // being performed. Only delete actions will be performed. Paused bool `json:\u0026#34;paused\u0026#34;` // Total number of non-terminated pods targeted by this ThanosRuler deployment // (their labels match the selector). Replicas int32 `json:\u0026#34;replicas\u0026#34;` // Total number of non-terminated pods targeted by this ThanosRuler deployment // that have the desired version spec. UpdatedReplicas int32 `json:\u0026#34;updatedReplicas\u0026#34;` // Total number of available pods (ready for at least minReadySeconds) // targeted by this ThanosRuler deployment. AvailableReplicas int32 `json:\u0026#34;availableReplicas\u0026#34;` // Total number of unavailable pods targeted by this ThanosRuler deployment. UnavailableReplicas int32 `json:\u0026#34;unavailableReplicas\u0026#34;` // The current state of the ThanosRuler object. // +listType=map // +listMapKey=type // +optional Conditions []Condition `json:\u0026#34;conditions,omitempty\u0026#34;` } Alternatives # N/A\nAction Plan # N/A\n" 746 } 747 ); 748 index.add( 749 { 750 id: 35, 751 href: "/docs/proposals/accepted/", 752 title: "Accepted Proposals", 753 description: "Proposals accepted for implementation", 754 content: "" 755 } 756 ); 757 index.add( 758 { 759 id: 36, 760 href: "/docs/proposals/accepted/agent-daemonset/", 761 title: "DaemonSet deployment for Prometheus Agent", 762 description: "Owners: haanhvu slashexx Status: Accepted Related Tickets: #5495 Other docs: n/a This proposal is about designing and implementing the deployment of Prometheus Agent as DaemonSet. Currently, Prometheus Agent can only be deployed as StatefulSet, which could be considered as âcluster-wideâ strategy, meaning one or several high-availability Prometheus Agents are responsible for scraping metrics of the whole cluster. Though this works well for many use cases, some use cases may indeed prefer a ânode-specificâ strategy (DaemonSet), where Prometheus Agent pods scale with the nodes and only scrape the metrics from the targets located on the same node.", 763 content: " Owners: haanhvu slashexx Status: Accepted Related Tickets: #5495 Other docs: n/a This proposal is about designing and implementing the deployment of Prometheus Agent as DaemonSet. Currently, Prometheus Agent can only be deployed as StatefulSet, which could be considered as âcluster-wideâ strategy, meaning one or several high-availability Prometheus Agents are responsible for scraping metrics of the whole cluster. Though this works well for many use cases, some use cases may indeed prefer a ânode-specificâ strategy (DaemonSet), where Prometheus Agent pods scale with the nodes and only scrape the metrics from the targets located on the same node.\n1. Why # When deploying Prometheus Agent in Kubernetes, two of the biggest usersâ concerns are load distribution and scalability.\nDaemonSet deployment is a good solution for these:\nLoad distribution: Each Prometheus Agent pod will only scrape the targets located on the same node. Even though the targets on
763some nodes may produce more metrics than other nodes, the load distribution is reliable enough. This has been proven in Google Cloud Managed Service for Prometheus (GMP)\u0026rsquo;s operator which follows a similar approach. Automatic scalability: When new nodes are added to the cluster, new Prometheus Agent pods will be automatically deployed to those nodes. Similarly, at some durations when some nodes are not needed and removed from the cluster, Prometheus Agent pods on those nodes will also be removed. Users can also select which set of nodes they want to deploy Prometheus Agent and the priority of Prometheus Agent pods compared to other pods on the same node. DaemonSet deployment is especially more suitable for Prometheus Agent than Prometheus because the Agent mode is customized for collect-and-forward approach, so it\u0026rsquo;s more lightweight. In specific, it requires (currently around 20 to 30%) less memory, does not produce TSDB blocks on disks, and naturally blocks querying APIs and rule distribution.\nThis deployment mode has been implemented and proven in the Google Cloud Kubernetes Engine (GKE) with Google Cloud Managed Service for Prometheus (GMP)\u0026rsquo;s operator, so we can learn from their cases and collaborate for shared improvements.\n2. Pitfalls of the current solution # The key pitfalls of managing load distribution and scalability with the current StatefulSet deployment are:\nThey are done on the cluster scope. In other words, since one or several high-availability Prometheus Agents are responsible for scraping metrics of the whole cluster, users need to calculate/estimate the load and scalability of the whole cluster to decide on replicas and sharding strategies. Estimating cluster-wide load and scalability is a much harder task than estimating node-wide load and scalability. StatefulSet inherently doesn\u0026rsquo;t scale alongside the scale of nodes. So there may be situations where more or less existing Prometheus Agent pods are needed for the scraped load. Even though users can use helping tools like Horizontal Pod Autoscaler (HPA), that\u0026rsquo;s still additional complexity. This is not to say that DaemonSet is superior to StatefulSet. StatefulSet also has its own advantages, such as easier storage handling. This is to say that DaemonSet can solve some of the existing problems in StatefulSet, and vice versa. So DaemonSet is a good deployment option to implement besides StatefulSet. Users can choose to use one or both of them, depending on their cases.\n3. Audience # Users with use cases where scraped load is very large or hard to estimate and/or scalability is hard to predict, so they need a simple way to manage load distribution and scalability. They may apply DaemonSet deployment on the whole cluster or only some nodes according to their needs.\nAn example of audience is expressed here.\n4. Goals # Provide an MVP version of the DaemonSet deployment of Prometheus Agent to the Audience. In specific, the MVP will need to:\nAllow users to deploy one Prometheus Agent pod per node. Allow users to restrict which set of nodes they want to deploy Prometheus Agent, if desired. Allow users to set the priority of Prometheus Agent pod compared to other pods on the same node, if desired. Allow each Prometheus Agent pod to only scrape from the pods from PodMonitor that run on the same node. 5. Non-Goals # This proposal only aims at Prometheus Agent, not Prometheus.\nOther non-goals are the features that are not easy to implement and require more investigation. We will need to investigate whether there are actual user needs for them, if yes, then how to best implement them. We can also learn from similar projects such as OpenTelemetry Operator (they have DaemonSet mode) and Grafana Agent on how they approach these problems and what we can apply for our cases. Weâll handle these after the MVP. Those (currently) non-goals features are:\nServiceMonitor support: There\u0026rsquo;s a performance issue regarding this feature. Since each Prometheus Agent running on a node requires one watch, making all Prometheus Agent pods watch all endpoints will put a huge stress on Kubernetes API server. This is the main reason why GMP hasnât supported this, even though there are user needs stated in some issues (#362, #192). However, as discu
763ssed with Danny from GMP here, ServiceMonitor support based on EndpointSlice seems like a viable approach. Weâll investigate this further after the MVP. Storage: We will need to spend time studying more about the WAL, different storage solutions provided by Kubernetes, and how to gracefully handle storage in different cases of crashes. For example, thereâs an issue in Prometheus showing that samples may be lost if remote write didnât flush cleanly. Weâll investigate these further after the MVP. In the MVP version, we will not allow users to directly switch from a live StatefulSet to DaemonSet deployment. Reasons are explained in the CRD subsection in the How section.\n6. How # The MVP version of DaemonSet deployment will be put behind a feature flag.\n6.1. CRD: # Currently, we already have a PrometheusAgent CRD that supports StatefulSet deployment. Weâll add new field(s) in this CRD to enable DaemonSet deployment.\nThe reason for enhancing existing CRD (instead of introducing a new CRD) is it would take less time to finish the MVP. Weâll let users experiment with the MVP, and in case users report a separate CRD is needed, weâll separate the logic of DaemonSet deployment into a new CRD later.\nThe current PrometheusAgent CRD already has sufficient fields for the DaemonSet deployment. The DaemonSet deployment can use all the existing fields in the CRD except the ones related to:\nSelectors for service, probe, ScrapeConfig Replica Shard Storage We will add a new mode field that accepts either StatefulSet or DaemonSet, with StatefulSet being the default. If the DaemonSet mode is activated (mode: DaemonSet), all the unrelated fields listed above will not be accepted. In the MVP, we will simply fail the reconciliation if any of those fields are set. We will prevent users to directly switch from a live StatefulSet setup to DaemonSet, because that might break their workload if they forget to unset the unsupported fields. Following up, we will leverage validation rules with Kubernetes\u0026rsquo; Common Expression Language (CEL). Only then, we will allow switching from a live StatefulSet setup to DaemonSet. We already have an issue for CEL here.\n6.1.1 CEL Validation rules # When mode:DaemonSet, the following CEL rules will be applied to prevent access to these fields:\nreplicas storage shards persistentVolumeClaimRetentionPolicy scrapeConfigSelector scrapeConfigNamespaceSelector probeSelector probeNamespaceSelector serviceMonitorSelector serviceMonitorNamespaceSelector additionalScrapeConfigs This is implemented by adding x-kubernetes-validations like:\nx-kubernetes-validations: - rule: \u0026#34;self.mode == \u0026#39;DaemonSet\u0026#39; ? !has(self.replicas) : true\u0026#34; message: \u0026#34;replicas field is not allowed when mode is \u0026#39;DaemonSet\u0026#39;\u0026#34; - rule: \u0026#34;self.mode == \u0026#39;DaemonSet\u0026#39; ? !has(self.storage) : true\u0026#34; message: \u0026#34;storage field is not allowed when mode is \u0026#39;DaemonSet\u0026#39;\u0026#34; - rule: \u0026#34;self.mode == \u0026#39;DaemonSet\u0026#39; ? !has(self.shards) : true\u0026#34; message: \u0026#34;shards field is not allowed when mode is \u0026#39;DaemonSet\u0026#39;\u0026#34; - rule: \u0026#34;self.mode == \u0026#39;DaemonSet\u0026#39; ? !has(self.persistentVolumeClaimRetentionPolicy) : true\u0026#34; message: \u0026#34;persistentVolumeClaimRetentionPolicy field is not allowed when mode is \u0026#39;DaemonSet\u0026#39;\u0026#34; - rule: \u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.scrapeConfigSelector))\u0026#34; message: \u0026#34;scrapeConfigSelector cannot be set when mode is DaemonSet\u0026#34; - rule: \u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.probeSelector))\u0026#34; message: \u0026#34;probeSelector cannot be set when mode is DaemonSet\u0026#34; - rule: \u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.probeNamespaceSelector))\u0026#34; message: \u0026#34;probeNamespaceSelector cannot be set when mode is DaemonSet\u0026#34; - rule: \u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.scrapeConfigNamespaceSelector))\u0026#34; message: \u0026#34;scrapeConfigNamespaceSelector cannot be set when mode is DaemonSet\u0026#34; - rule: \u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.serviceMonitorSelector))\u0026#34; message: \u0026#34;serviceMonitorSelector cannot be set when mode is DaemonSet\u0026#34; - rule: \u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.serviceMonitorNamespaceSelector))\u0026#34; message: \u0026#34;serviceMonitorNamespaceSelector cannot be set when mode is DaemonSet\u0026#34; - rule: \u0026#34;!(has(self.mode) \u0026amp;\u0026amp; self.mode == \u0026#39;DaemonSet\u0026#39; \u0026amp;\u0026amp; has(self.additionalScrapeConfigs))\u0026#34; message: \u0026#34;additionalScrapeConfigs cannot be set when mode is DaemonSet\u0026#34; 6.1.2 Runtime Validation Logic as Fallback # CEL validation will provide immediate feedback during kubectl apply but we will need runtime val
763idation logic in the controller as a fallback mechanism. This fallback will be integrated directly in the PrometheusAgent reconciler loop.\nThis is mainly because :\nCEL validation will require Kubernetes version 1.25+ and hence not all users might have CEL supported clusters. This will provide an in-depth defense mechanism against misconfigurations. More detailed error response in case the first layer of defense fails. if spec.Mode == \u0026#34;DaemonSet\u0026#34; { if spec.Replicas != nil { return fmt.Errorf(\u0026#34;cannot configure replicas when using DaemonSet mode\u0026#34;) } if spec.Storage != nil { return fmt.Errorf(\u0026#34;cannot configure storage when using DaemonSet mode\u0026#34;) } if spec.Shards \u0026gt; 1 { return fmt.Errorf(\u0026#34;shards cannot be greater than 1 when mode is DaemonSet\u0026#34;) } if spec.PersistentVolumeClaimRetentionPolicy != nil { return fmt.Errorf(\u0026#34;cannot configure persistentVolumeClaimRetentionPolicy when using DaemonSet mode\u0026#34;) } if spec.ScrapeConfigSelector != nil { return fmt.Errorf(\u0026#34;cannot configure scrapeConfigSelector when using DaemonSet mode\u0026#34;) } if spec.ProbeSelector != nil { return fmt.Errorf(\u0026#34;cannot configure probeSelector when using DaemonSet mode\u0026#34;) } if spec.ProbeNamespaceSelector != nil { return fmt.Errorf(\u0026#34;cannot configure probeNamespaceSelector when using DaemonSet mode\u0026#34;) } if spec.ScrapeConfigNamespaceSelector != nil { return fmt.Errorf(\u0026#34;cannot configure scrapeConfigNamespaceSelector when using DaemonSet mode\u0026#34;) } if spec.ServiceMonitorSelector != nil { return fmt.Errorf(\u0026#34;cannot configure serviceMonitorSelector when using DaemonSet mode\u0026#34;) } if spec.ServiceMonitorNamespaceSelector != nil { return fmt.Errorf(\u0026#34;cannot configure serviceMonitorNamespaceSelector when using DaemonSet mode\u0026#34;) } if spec.AdditionalScrapeConfigs != nil { return fmt.Errorf(\u0026#34;cannot configure additionalScrapeConfigs when using DaemonSet mode\u0026#34;) } } 6.2. Node detecting: # As pointed out in Danny from GMPâs talk, to make Prometheus Agent DaemonSet know which node itâs on, we can use Kubernetesâ downward API. In config-reloader container, we can mount the node name as an environment variable like this:\ncontainers: - name: config-reloader env: - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName 6.3. Targets filtering for pods (PodMonitor support): # To filter pod targets, Dannyâs talk has pointed out the best option is to use field selector:\nkubernetes_sd_configs: - role: pod selectors: - role: pod field: spec.nodeName=$NODE_NAME We\u0026rsquo;ll go with this option, because it filters targets right at discovery time, and also because Kubernetes API server watch cache indexes pods by node name (as we can see in Kubernetes codebase).\nWe\u0026rsquo;ve also considered using relabel config that filters pods by __meta_kubernetes_pod_node_name label. However, we didn\u0026rsquo;t choose to go with this option because it filters pods only after discovering all the pods from PodMonitor, which increases load on Kubernetes API server.\nSecondary/Extended goal (new feature gate) # Note: We are exploring the integration of ServiceMonitor support for DaemonSet mode using EndpointSlice as an experimental feature. This exploration will determine feasibility and performance, and if viable, it may be introduced behind a separate feature gate. This approach allows the main DaemonSet mode to reach GA independently of this feature.\nServiceMonitor Support with EndpointSlice # To enable ServiceMonitor support for DaemonSet mode while addressing the performance concerns mentioned in section 5, we implement EndpointSlice-based service discovery:\nEndpointSlice Discovery Implementation # The PrometheusAgent CRD already supports a serviceDiscoveryRole field that can be set to EndpointSlice:\napiVersion: monitoring.coreos.com/v1alpha1 kind: PrometheusAgent spec: mode: DaemonSet serviceDiscoveryRole: EndpointSlice # Use EndpointSlice instead of Endpoints serviceMonitorSelector: matchLabels: team: platform When serviceDiscoveryRole: EndpointSlice is specified, the generated Prometheus configuration will use:\nscrape_configs: - job_name: serviceMonitor/default/my-service/0 kubernetes_sd_configs: - role: endpointslice # Instead of \u0026#34;endpoints\u0026#34; namespaces: names: [default] Performance Benefits # EndpointSlice provides significant performance improvements over classic Endpoints:\nScalability: EndpointSlice objects are limited to 1000 endpoints each, preventing massive objects Efficiency: Multiple smaller objects reduce memory usage and network traffic Parallel Processing: Multiple EndpointSlice objects can be processed in parallel Reduced API Server Load: Less stress on Kubernetes API server with distributed endpoint information Implementation Details # The implementation properly handles EndpointSlice support by checking both the user\u0026rsquo;s serviceDiscoveryRole setting and cluster compatibility. The logic involves:\n// Check if THIS PrometheusAgent wants EndpointSlice discovery cpf := p.GetCommonPrometheusFields() if ptr.Deref(cpf.ServiceDiscoveryRole, monitoringv1.EndpointsRole) == monitoringv1.EndpointSliceRole { if c.endpointSliceSupported { opts = append(opts, prompkg.WithEndpointSliceSupport()) } else { // Warn user that they want EndpointSlice but cluster doesn\u0026#39;t support it c.logger.Warn(\u0026#34;EndpointSlice requested but not supported by Kubernetes cluster\u0026#34;) // Fall back to classic endpoints } } 7. Action Plan # For the implementation, weâll do what we detailed in the How section. The common logics between StatefulSet and DaemonSet modes will be extracted into one place. We will have a separate daemonset.go for the separate logic of the DaemonSet mode.\nFor the test, we will have unit tests covering new logic, and integration tests covering the basic user cases, which are:\nUsers cannot switch directly from StatefulSet to DaemonSet. Prometheus Agent DaemonSet is created/deleted successfully. Prometheus Agent DaemonSet is installed on the right nodes. Prometheus Agent DaemonSet selects correctly the pods from PodMonitor on the same node. Currently we only set up a Kind cluster of one node for integration tests. Since the test cases for DaemonSet deployment requires at least two nodes, we will need to modify the Kind cluster config for that. Weâll also need a new user guide explaining how to use this new mode.\n8. Follow-ups # After the Goals of this proposal have been met, weâll reevaluate the features in the Non-goals section and see if any of them should/can be addressed.\nWe will also work on enhancements, such as leveraging validation rules with Kubernetes\u0026rsquo; Common Expression Language (CEL) for the fields in Prometheus Agent CRD for DaemonSet mode.\n" 764 } 765 ); 766 index.add( 767 { 768 id: 37, 769 href: "/docs/proposals/accepted/scrapeconfig-graduation/", 770 title: "Graduate ScrapeConfig CRD To Beta", 771 description: "Owners: mviswanathsai Status: Accepted Related Tickets: Graduate The ScrapeConfig CRD To v1beta1 Other docs: ScrapeConfig Design Proposal Kubernetes API versioning Why # The goal of this proposal is to pave the way to graduate the ScrapeConfig CRD in the Prometheus Operator to beta. We aim to do this by building a 1:1 relationship with the Prometheus scrape_config. By enhancing the Service Discovery support, aligning the CRD fields, and standardizing configurations.", 772 content: " Owners: mviswanathsai Status: Accepted Related Tickets: Graduate The ScrapeConfig CRD To v1beta1 Other docs: ScrapeConfig Design Proposal Kubernetes API versioning Why # The goal of this proposal is to pave the way to graduate the ScrapeConfig CRD in the Prometheus Operator to beta. We aim to do this by building a 1:1 relationship with the Prometheus scrape_config. By enhancing the Service Discovery support, aligning the CRD fields, and standardizing configurations.\nPitfalls of the Current Solution # The CRD is currently in v1alpha1 version, this hinders its adoption among the users of Prometheus-Operator. Goals # Pave the way for graduating the ScrapeConfig CRD to v1beta1 by aligning on the graduation criteria. Enhance the Service Discovery support by adding more Service Discovery configurations. Ensure all fields in Prometheus scrape_config are supported in the ScrapeConfig CRD. Maintain naming conventions and field consistency across existing and new Service Discoveries. Identify inconsistencies in validations. Outline the migration strategy from v1alpha1 to v1beta1. Audience # Prometheus Operator maintainers and contributors. Users and developers relying on the Prometheus Operator for creating monitoring configurations. Stakeholders interested in the evolution and improvement of the Prometheus Operator. Non-Goals # Implementing the 28 Service Discovery configurations currently supported by Prometheus. To plan out a detailed graduation strategy. Convert existing monitor objects to low-level ScrapeConfig objects. How # In order to provide a more comprehensive and versatile monitoring solution, enhancing the Service Discovery support in the Prometheus Operator is crucial. This will address current limitations and better serve diverse user needs. The following steps outline our approach to achieving this goal:\nSupport Statement For Service Discovery Mechanisms # By adding more Service Discovery configurations, we increase the flexibility and utility of the CRD for various user scenarios. Kubernetes being the sole target for Prometheus-Operator, we think it is fitting to provide complete support for Kubernetes service discovery, this includes supporting all fields present in the Prometheus configuration, example use cases and keeping the Service Discovery robustly maintained in general. We believe that the Kubernetes service discovery along with the other existing service discoveries that we offer should be sufficient for most user\u0026rsquo;s needs and so implementing all the Service discoveries is not a priority. However, this does not imply service discovery support is limited to what exists today. It would be a better use of time to add the service discoveries that the users need as we get feature requests for them.\nThe following is the list of Service Discoveries which we want to supp
772ort before graduation:\nazure_sd_config consul_sd_config digitalocean_sd_config docker_sd_config dockerswarm_sd_config dns_sd_config ec2_sd_config openstack_sd_config puppetdb_sd_config file_sd_config gce_sd_config hetzner_sd_config http_sd_config kubernetes_sd_config kuma_sd_config lightsail_sd_config linode_sd_config nomad_sd_config eureka_sd_config ovhcloud_sd_config scaleway_sd_config ionos_sd_config If we were to categorize the Service Discoveries based on the amount of effort we are willing to put in maintaining them:\nTier-1: Project maintainers fully support the service discovery in this group. It includes the Kubernetes SD since the Operator requires a Kubernetes control plane to run. It also includes core service discoveries based on well-established protocols.\nKubernetes Service Discovery File Service Discovery Static Config DNS Service Discovery HTTP Service Discovery Tier-2: This group includes service discoveries which are related to Kubernetes, cloud-native environments and widely used solutions. The project maintainers don\u0026rsquo;t actively support them but they are happy to review issues and pull requests.\nDigitalOcean Service Discovery Consul Service Discovery Azure Service Discovery EC2 Service Discovery Lightsail Service Discovery Kuma Service Discovery OVHCloud Service Discovery Scaleway Service Discovery Ionos Service Discovery OpenStack Service Discovery GCE Service Discovery The project maintainers do not commit to actively maintaining any service discoveries that are not listed above. We don\u0026rsquo;t mean that other service discoveries are ignored, but they are not a priority. They will be supported on a best-effort basis, meaning they will be maintained as time and resources allow, without a firm commitment from the maintainers.\nAt the time of writing this document, the following Service Discoveries are not supported but may be added in the future on user requests and contributions:\nuyuni_sd_config vultr_sd_config We don\u0026rsquo;t plan to support the following Service Discoveries, due to them being deprecated or inactive:\nmarathon_sd_config nerve_sd_config serverset_sd_config triton_sd_config Fill Existing Gaps From The Prometheus Configuration # We intend to support all fields that the Prometheus scrape_config contains, in the ScrapeConfig CRD. However, there might be exceptions like job_name for example which need to be implemented in a slightly different manner to prevent issues related to non-unique job names.\nImprove API Consistency # The idea is to make the API as restrictive as possible against the user making wrong/redundant configurations. To that extent, the CRD contains a number of inconsistencies both in naming conventions and field validations that need to be rectified. Some of the noted inconsistencies are:\nMissing validations on URL and Host fields. Missing validations on maximum and minimum value acceptable for Port field. Missing Prometheus version check for various Service Discoveries. Missing length validation on multiple string fields. We propose that once the above mentioned Service discoveries which are planned to be implemented before graduation are added, we restructur the ScrapeConfig API one Service discovery at a time to achieve a tightly knit API surface. To that extent, the general rule of thumb will be: \u0026ldquo;Make the API as strict as possible.\u0026rdquo; This allows us to lower the level of restrictions in the future if need be, whereas the converse might not always be feasible.\nThrough these efforts, we aim to achieve a 1:1 relationship with the Prometheus scrape_config (minus the Service Discoveries), enhancing the usability and completeness of the ScrapeConfig CRD. This alignment ensures that users have access to the full range of configurations offered by Prometheus, making the Prometheus Operator a more powerful and flexible tool for monitoring and observability beyond Kubernetes.\nGraduation Strategy # Requirements for Graduation # We propose to graduate the CRD to beta when the following milestones are all achieved:\nThe Service Discoveries which we have listed are all supported. There is consensus among the maintainers about the API consistency. We are confident about the completeness of the test cases coverage for the API. Path for Graduation # From past experience with the graduation of the AlertmanagerConfig CRD, we believe that the cost of implementing and maintaining a conversion webhook is too much to bear and we would like to avoid it when possible. Keeping this in mind, we recommend that we make all the breaking changes in v1alpha and once there is a consensus in the community about the \u0026ldquo;readiness\u0026rdquo;/\u0026ldquo;completeness\u0026rdquo; of thev1alpha1, we graduate the ScrapeConfig CRD to v1beta1. Note: In this strategy, both the v1alpha1 and v1beta1 APIs are expected to be identical to each other, thus barring the need for a conversion webhook.\nFrom the Kuberenetes CRD docs, the CustomResourceDefinition would contain the following lines:\nconversion: # None conversion assumes the same schema for all versions and only sets the apiVersion # field of custom resources to the proper value strategy: None Testing and Verification # Covering All Test Cases For Kubernetes Service Discovery: Since Kubernetes is our main player, make sure all testcases for unit tests and e2e tests have been covered for the Kubernetes Service Discovery.\nImplement Comprehensive Unit Tests: Ensure that unit tests are added for all new and existing Service Discovery configurations to ensure that the expected configuration is generated and validations are in place.\nAlternatives # Introduce v1alpha2 Before Beta\nStrategy: Create a v1alpha2 version incorporating all necessary breaking changes and refinements. Transition from v1alpha2 to v1beta1 when ready. Con: additional complexity for users without real benefit. Implement v1alpha1 to v1beta1 Conversion Webhook\nStrategy: Graduate to v1beta1 from v1alpha1 with all the necessary changes/improvements and handle any breaking changes in the API between the two versions with a conversion webhook. This ensures that users can automatically transition their configurations without manual intervention. Con: Greatly increases complexity for the maintainers as well as the users. " 773 } 774 ); 775 index.add( 776 { 777 id: 38, 778 href: "/docs/proposals/accepted/remote-write/", 779 title: "RemoteWrite CRD", 780 description: "Owners: @superbrothers Status: Accepted Related Tickets: #6508 Other docs: n/a TL;DR # This design doc proposes RemoteWrite CRD, which enables cluster admins to delegate the ability to configure Prometheus remote_rewrite configuration to application developers/operators.\nWhy # The Prometheus remote_write configuration is defined in the Prometheus CRD. Currently, the configuration data generation is the responsibility of cluster admins.\nGoals # The main goal is to enable application developers/operators to self-service the remote write, and configure how the client sends metrics to the remote endpoint.", 781 content: " Owners: @superbrothers Status: Accepted Related Tickets: #6508 Other docs: n/a TL;DR # This design doc proposes RemoteWrite CRD, which enables cluster admins to delegate the ability to configure Prometheus remote_rewrite configuration to application developers/operators.\nWhy # The Prometheus remote_write configuration is defined in the Prometheus CRD. Currently, the configuration data generation is the responsibility of cluster admins.\nGoals # The main goal is to enable application developers/operators to self-service the remote write, and configure how the client sends metrics to the remote endpoint.\nThis means exposing a new CRD to configure Prometheus remote_write configuration.\nNon-goals # Prometheus has two APIs for integrating with remote storage: \u0026lsquo;remote write\u0026rsquo; and \u0026lsquo;remote read\u0026rsquo;. Since no confirmed demand exists to treat remote read as a CRD, we do not cover \u
7810026ldquo;RemoteRead\u0026rdquo; CRD here. We can still implement it later if needed.\nHow # RemoteWrite CRD # The RemoteWrite CRD represents one of the Prometheus remote_write configuration scoped to the resourceâs namespace.\napiVersion: monitoring.coreos.com/v1alpha1 kind: RemoteWrite metadata: name: example namespace: default spec: url: \u0026#34;https://aps-workspaces.us-west-2.amazonaws.com/workspaces/\u0026lt;workspace id\u0026gt;/api/v1/remote_write\u0026#34; sigv4: region: us-west-2 accessKey: # Secret object references will be resolved in the namespace of this remoteWrite object. # In this manifest it is the \u0026#34;default\u0026#34; namespace. name: aws_access key: access_key secretKey: name: aws_access key: secret_key package v1alpha1 import ( monitoringv1 \u0026#34;github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1\u0026#34; metav1 \u0026#34;k8s.io/apimachinery/pkg/apis/meta/v1\u0026#34; ) type RemoteWrite struct { metav1.TypeMeta `json:\u0026#34;,inline\u0026#34;` metav1.ObjectMeta `json:\u0026#34;metadata,omitempty\u0026#34;` Spec monitoringv1.RemoteWriteSpec `json:\u0026#34;spec\u0026#34;` } Prometheus CRD # The Prometheus CRD is extended with 2 new fields (remoteWriteSelector and remoteWriteNamespaceSelector) that define which RemoteWrite resources are associated with this Prometheus instance.\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: example namespace: default spec: # RemoteWrite objects to be selected. An empty label selector matches all # objects. A null label selector matches no objects. remoteWriteSelector: {} # Namespaces to match for RemoteWrite discovery. An empty label selector # matches all namespaces. A null label selector matches the current namespace # only. remoteWriteNamespaceSelector: {} ... Respect enforceNamespaceLabel and excludedFromEnforcement # The RemoteWrite CRD should respect the Prometheus .spec.enforcedNamespaceLabel field.\nThe objectâs namespace is added as the first item in the write_relabel_config of the remote_write configuration.\nwrite_relabel_configs: - sourceLabels: - namespace regex: \u0026lt;namespace\u0026gt; action: keep ... The item is inserted in the first position by the operator before any other user relabelings, so there\u0026rsquo;s no way that users can have access to metrics labeled with namespaces other than the one in which the RemoteWrite object is created.\nThe RemoteWrite CRD should also respect the Prometheus .spec.excludedFromEnforcement field. It is a list of references to objects to be excluded from enforcedNamespaceLabel.\nConfiguration generation # The Prometheus operator will generate the Prometheus configuration including remote_write configuration from the Prometheus CRD and the RemoteWrite resources matching remoteWriteSelector from the namespace(s) selected by remoteWriteNamespaceSelector for additional remote_rewrite configuration.\nThe operator will respect the \u0026ndash;namespaces and \u0026ndash;deny-namespaces flags when looking for RemoteWrite objects.\nAdministrative limits # Similar to what exists for scrape resources (e.g. enforcedSampleLimit for ServiceMonitor), we will allow the Prometheus resource\u0026rsquo;s owners to setup upper-bound limits on the remote write options. For example, it will be possible to disable metadata sending or limit the queue capacity:\napiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: example namespace: default spec: remoteWriteLimits: metadataConfig: send: false queueConfig: capacity: 1024 maxShards: 16 PrometheusAgent CRD # The PrometheusAgent CRD also supports the RemoteWrite CRD. Everything explained about the Prometheus CRD works in the same way for the PrometheusAgent.\nAlternatives # Prometheus per namespace or team # An application developer/operator can deploy Prometheus instances directly. However, Prometheus instances may be provided as managed by cluster admins.\nThe team responsible for the Prometheus object configuring individual remote write destinations on behalf of each \u0026ldquo;tenant\u0026rdquo; # An application developer/operator will somehow share the remote_write configuration with the team responsible for Prometheus objects. This includes credential information for remote_write.\n" 782 } 783 ); 784 index.add( 785 { 786 id: 39, 787 href: "/docs/proposals/implemented/zone-aware-sharding/", 788 title: "Zone aware sharding for Prometheus", 789 description: "Owners: arnecls Status: Accepted Related Tickets: #6437 Other docs: Well known kubernetes labels AWS zone names GCP zone names Shard Autoscaling design proposal. This proposal describes how we
789can implement zone-aware sharding by adding support for custom labels and zone configuration options to the existing Prometheus configuration resources.\nWhy # When running large, multi-zone clusters, Prometheus scraping can lead to an increase in inter-zone traffic costs. A solution would be to deploy 1 Prometheus shard per zone and configure each shard to scrape only the targets local to its zone.", 790 content: " Owners: arnecls Status: Accepted Related Tickets: #6437 Other docs: Well known kubernetes labels AWS zone names GCP zone names Shard Autoscaling design proposal. This proposal describes how we can implement zone-aware sharding by adding support for custom labels and zone configuration options to the existing Prometheus configuration resources.\nWhy # When running large, multi-zone clusters, Prometheus scraping can lead to an increase in inter-zone traffic costs. A solution would be to deploy 1 Prometheus shard per zone and configure each shard to scrape only the targets local to its zone. The current sharding implementation can\u0026rsquo;t solve the issue though. While it\u0026rsquo;s possible to customize the label (__address__ by default) used for distributing the targets to the Prometheus instances, there\u0026rsquo;s no way to configure a single Prometheus resource so that each shard is bound to a specific zone.\nGoals # Define a set of configuration options required to allow zone aware sharding Define the relabel configuration to be generated for zone aware sharding Schedule Prometheus pods to their respective zones. Stay backwards compatible to the current mechanism by default Non-goals # Implement mechanisms to automatically fix configuration errors by the user Support mixed environments (kubernetes and non-kubernetes targets are scraped) Support Kubernetes clusters before 1.26 (topology label support) Implement zone aware scraping for targets defined via .spec.additionalScrapeConfigs and ScrapeConfig custom resources. How # [!NOTE] Due to the size of this feature, it will be placed behind a feature gate to allow incremental testing.\nAlgorithm # In order to do calculate a stable assignment, following parameters are required:\nnum_shards: The number of Prometheus shards shard_index: A number of the range [0..num_shards-1] identifying a single Prometheus instance inside a given shard zones: A list of the zones to be scraped zone_label: A label denoting the zone of a target address: The content of the __address__ label It has to be noted that zone_label is supposed to contain a value from the zones list. The num_shards value is referring to the currently available .spec.shards from the Prometheus custom resource definition.\nGiven these values, a target is to be scraped by a given Prometheus instance by using the following algorithm:\nassert(num_shards \u0026gt;= len(zones)) # Error: zone(s) will not get scraped assert(num_shards % len(zones) == 0) # Warning: multi-scraping of instances shards_per_zone := max(1, floor(num_shards / len(zones))) prom_zone_idx := shard_index % shards_per_zone if zone_label == zones[prom_zone_idx] { assignment_idx := floor(shard_index / shards_per_zone) if hash(address) % shards_per_zone == assignment_idx { do_scrape() } } By using modulo to calculate the prom_zone_idx, instances will be distributed to zones in the sense of A,B,C,A,B,C and so on. This allows a modification of the num_shards value without redistribution of shards or data. This was preferred over allowing the number of zones to change, as this is less likely to happen.\nEdge cases # We have introduced asserts in the above section to warn about edge cases that might lead to duplicate data or data loss.\nBy the above algorithm. Prometheus instances will be distributed in an alternating fashion by using the already existing shard index. This leads to the following edge cases:\nWhen num_shards is 10 and len(zones) is 3 as in [A..C]. shards_per_zone is 3. This yields the following distribution\n0 1 2 | 3 4 5 | 6 7 8 | 9 | shard index A B C | A B C | A B C | A | zone 0 0 0 | 1 1 1 | 2 2 2 | 0 | assignment index In this case the 2nd assert will warn about double scraping of instances in zone A, as the same targets are being assigned to instance 0 and 9.\nWhen num_shards is 2 and len(zones) is 3 as in [A..C]. shards_per_zone is 1. This yields the following distribution\n0 1 | shard index A B C | zone 0 0 0 | assignment index In this case targets in zone C are not being scraped.\nBoth cases should lead to an error during reconciliation, causing the change to not be rolled out. The first case (double scraping) is not as severe as a zone not being scraped but it is otherwise hard to spot. It\u0026rsquo;s also to be mentioned that replicas are to be used to achieve redundant scraping.\nTopology field discovery # The kubernetes service discovery currently does not expose any topology field. Such a field would have to be added, otherwise users would have to inject such a label themselves.\nA good candidate for such fields are the topology.kubernetes.io/* labels which should be present on all nodes.\nThere are two ways to handle this:\nA change to the Prometheus kubernetes discovery service to add the required label to all targets. The operator could do this discovery and add a relabel rule based on the node name. The second solution would require the operator to constantly update the relabel configuration. This could lead to increased load on clusters with aggressive autoscaling as well as race conditions for pods on newly created nodes, as the config change is not atomic/instant.\nAs of that, a change to the kubernetes service discovery is considered the more stable, and thus preferable solution. It will require additional permissions for Prometheus in case it is not already allowed to read node objects.\nAPI changes # [!NOTE] This proposal is mutually exclusive to DaemonSet mode, as Prometheus always scrapes a single node in that case. Defining a shardingStrategy when DaemonSet mode is active, should lead to a reconciliation error.\nFollowing the algorithm presented above, we suggest the following configuration options to be added to the Prometheus and PrometheusAgent custom resource definitions.\nAll values used in this snippet should also be the defaults for their corresponding keys.\nspec: shardingStrategy: # Select a sharding mode. Can be \u0026#39;Classic\u0026#39; or \u0026#39;Topology\u0026#39;. # Defaults to `Classic`. mode: \u0026#39;Classic\u0026#39; # The following section is only valid if \u0026#34;mode\u0026#34; is set to \u0026#34;Topology\u0026#34; topology: # Prometheus external label used to communicate the topology zone. # If not defined, it defaults to \u0026#34;zone\u0026#34;. # If defined to an empty string, no external label is added to the Prometheus configuration. externalLabelName: \u0026#34;zone\u0026#34; # All topology values to be used by the cluster, i.e. a list of all # zones in use. values: [] The topology section does not use the term zone. This will prevent API changes in case other topologies, like regions, need to be supported in future releases.\nBoth modes do not contain an explicit overwrite of the label used for sharding. This feature is already possible by generating a __tmp_hash label through scrape classes.\nIn case of the Topology mode, two labels are used for sharding. One is used to determine the correct topology of a target, the other one is used to allow sharding inside a specific topology (e.g. zone). The second label implements the exact same mechanics as the Classic mode and thus uses the same __tmp_hash overwrite mechanics. To allow overwrites for the topology determination label, a custom label named __tmp_topology can be generated, following the same idea.\nThe externalLabelName should be added by default to allow debugging. It also gives some general, valuable insights for multi-zone setups.\nIt is possible to change the mode field from Classic to Topology (and vice-versa) without service interruption.\nGenerated configuration # The following examples are based on the algorithm above. Please note that shard_index has to be provided by the operator during config generation.\nWe use a replica count of 2 in all examples to illustrate that this value does not have any effect, as both replicas will have the same shared_
790index assigned.\nClassic mode # Given the following configuration\nspec: shards: 4 replicas: 2 shardingStrategy: mode: \u0026#39;Classic\u0026#39; we would get the following output for shard_index == 2\n- source_labels: [\u0026#39;__address__\u0026#39;, \u0026#39;__tmp_hash\u0026#39;] target_label: \u0026#39;__tmp_hash\u0026#39; regex: \u0026#39;(.+);\u0026#39; replacement: \u0026#39;$1\u0026#39; action: \u0026#39;replace\u0026#39; - source_labels: [\u0026#39;__tmp_hash\u0026#39;] target_label: \u0026#39;__tmp_hash\u0026#39; modulus: 4 action: \u0026#39;hashmod\u0026#39; - source_labels: [\u0026#39;__tmp_hash\u0026#39;] regex: \u0026#39;2\u0026#39; # shard_index action: \u0026#39;keep\u0026#39; Topology mode # Given the following configuration\nspec: shards: 4 replicas: 2 shardingStrategy: mode: \u0026#39;Topology\u0026#39; topology: values: - \u0026#39;europe-west4-a\u0026#39; - \u0026#39;europe-west4-b\u0026#39; we would get the following output for shard_index == 2:\n# zones := shardingStrategy.topology.values # shards_per_zone := max(1, floor(shards / len(zones))) # topology determination - source_labels: [\u0026#39;__meta_kubernetes_endpointslice_endpoint_zone\u0026#39;, __tmp_topology] target_label: \u0026#39;__tmp_topology\u0026#39; regex: \u0026#39;(.+);\u0026#39; - source_labels: [\u0026#39;__meta_kubernetes_node_label_topology_kubernetes_io_zone\u0026#39;, \u0026#39;__meta_kubernetes_node_labelpresent_topology_kubernetes_io_zone\u0026#39;, \u0026#39;__tmp_topology\u0026#39;] regex: \u0026#39;(.+);true;\u0026#39; target_label: \u0026#39;__tmp_topology\u0026#39; - source_labels: [\u0026#39;__tmp_topology\u0026#39;] regex: \u0026#39;europe-west4-a\u0026#39; # zones[shard_index % shards_per_zone] action: \u0026#39;keep\u0026#39; # In-topology sharding - source_labels: [\u0026#39;__address__\u0026#39;, \u0026#39;__tmp_hash\u0026#39;] target_label: \u0026#39;__tmp_hash\u0026#39; regex: \u0026#34;(.+);\u0026#34; action: \u0026#39;replace\u0026#39; - source_labels: [\u0026#39;__tmp_hash\u0026#39;] target_label: \u0026#39;__tmp_hash\u0026#39; modulus: 4 action: \u0026#39;hashmod\u0026#39; - source_labels: [ \u0026#39;__tmp_hash\u0026#39; ] regex: \u0026#39;1\u0026#39; # floor(shard_index / shards_per_zone) action: \u0026#39;keep\u0026#39; [!NOTE] Node metadata will need to be added when using certain monitors. This requires an additional flag in the kubernetes_sd_configs section like this:\nkubernetes_sd_configs: - attach_metadata: node: true An alternative with Kubernetes \u0026gt;= 1.35 is to leverage the Node Topology Labels via Downward API feature which allows to inject pass node topology information to the pods.\nPrometheus instance zone assignment # To make sure that Prometheus instances are deployed to the correct zone (of their assigned target), we need to generate a node affinity or a node selector.\nAs node selectors are simpler to manage, and node affinities might run into ordering issues when a user defines their own affinities, node selectors should be used. If a nodeSelector has already been defined, it will be merged with the node selector generated here. If the same key was used, the value will be replaced with the generated value.\nGiven this input:\nspec: nodeSelector: \u0026#39;foo\u0026#39;: \u0026#39;bar\u0026#39; \u0026#39;topology.kubernetes.io/zone\u0026#39;: \u0026#39;will be replaced\u0026#39; shards: 4 replicas: 2 scrapeClasses: - name: \u0026#39;topology\u0026#39; default: true attachMetadata: node: true shardingStrategy: mode: \u0026#39;Topology\u0026#39; topology: values: - \u0026#39;europe-west4-a\u0026#39; - \u0026#39;europe-west4-b\u0026#39; The following snippet would be generated for shared_index == 2:\n# zones := shardingStrategy.topology.values # shards_per_zone := max(1, floor(shards / len(zones))) spec: nodeSelector: # Existing nodeSelectors using \u0026#39;topology.kubernetes.io/zone\u0026#39; will be # replaced with the generated value: # zones[shard_index % shards_per_zone] \u0026#39;topology.kubernetes.io/zone\u0026#39;: \u0026#39;europe-west4-a\u0026#39; # Existing nodeSelectors will be kept \u0026#39;foo\u0026#39;: \u0026#39;bar\u0026#39; Alternatives # We could allow users to define the complete relabel and node selector logic themselves. This would be more flexible, but also way harder to configure.\nBy abstracting into shardingStrategy, we can cover the most common cases without requiring users to have deep knowledge about Prometheus relabel configuration.\nA field additionalRelabelConfig was discussed to allow arbitrary logic to be added before the sharding configuration. It was decided that this would duplicate the functionality of scrape classes found in, e.g., the Prometheus custom resource definition.\nThe use of sourceLabel fields instead of the __tmp-* label mechanic was discussed. It was agreed to not introduce new fields as an existing feature would have to be changed, and to not further increase the number of API fields.\nAn overwrite for the topology node label was discussed. This field was not added as there was no clear use-case yet. The general structure was kept so that it will still be possible to add such a field in a future release.\nAction Plan # A rough plan of the steps required to implement the feature:\nAdd the PrometheusTopologySharding feature gate. Implement the API changes with pre-flight validations. Implement the node selector update when mode: Topology. Implement the external label name when mode: Topology. Implement the target sharding when mode: Topology. " 791 } 792 ); 793 index.add( 794 { 795 id: 40, 796 href: "/docs/community/", 797 title: "Community", 798 description: "", 799 content: "" 800 } 801 ); 802 index.add( 803 { 804 id: 41, 805 href: "/docs/community/contributing/", 806 title: "Contributing", 807 description: "How can I contribute to the Prometheus Operator and kube-prometheus?", 808 content: "This project is licensed under the Apache 2.0 license and accept contributions via GitHub pull requests. This document outlines some of the conventions on development workflow, commit message formatting, contact points and other resources to make it easier to get your contribution accepted.\nTo maintain a safe and welcoming community, all participants must adhere to the project\u0026rsquo;s Code of Conduct.\nCertificate of Origin # By contributing to this project you agree to the Developer Certificate of Origin (DCO). This document was created by the Linux Kernel community and is a simple statement that you, as a contributor, have the legal r
808ight to make the contribution. See the DCO file for details.\nEmail and Chat # The project currently uses the Kubernetes Slack:\n#prometheus-operator #prometheus-operator-dev Please avoid emailing maintainers found in the MAINTAINERS file directly. They are very busy and read the mailing lists.\nOffice Hours Meetings # The project also holds bi-weekly public meetings where maintainers, contributors and users of the Prometheus Operator and kube-prometheus can discuss issues, pull requests or any topic related to the projects. The meetings happen at 11:00 UTC on Monday, check the online notes to know the exact dates and the connection details.\nAn invite is also available on the project\u0026rsquo;s public calendar.\nGetting Started # Fork the repository on GitHub Read the README for build and test instructions Play with the project, submit bugs, submit patches! Contribution Flow # This is a rough outline of what a contributor\u0026rsquo;s workflow looks like:\nCreate a topic branch from where you want to base your work (usually main). Make commits of logical units. Make sure your commit messages are in the proper format (see below). Push your changes to a topic branch in your fork of the repository. Make sure the tests pass, and add any new tests as appropriate. (Testing guidelines) Submit a pull request to the original repository. Many files (documentation, manifests, \u0026hellip;) in this repository are auto-generated. For instance, bundle.yaml is generated from the Jsonnet files in /jsonnet/prometheus-operator. Before submitting a pull request, make sure that you\u0026rsquo;ve executed make generate and committed the generated changes.\nWe also use golangci-lint to lint the Go code (including the API definitions). Make sure to execute make check before creating/updating your PR.\nThanks for your contributions!\nChanges to the APIs # When designing Custom Resource Definitions (CRDs), please refer to the existing Kubernetes guidelines:\nAPI conventions. API changes. In particular, this project follows the API stability guidelines:\nFor alpha API versions (e.g. v1alpha1, v1alpha2, \u0026hellip;), we may allow to break forward and backward compatibility (but we\u0026rsquo;ll try hard to avoid it). For beta API versions (e.g. v1beta1, v1beta2, \u0026hellip;), we may allow to break backward compatibility but not forward compatibility. For stable API versions (e.g. v1), we don\u0026rsquo;t allow to break backward and forward compatibility. Format of the Commit Message # We follow a rough convention for commit messages that is designed to answer two questions: what changed and why. The subject line should feature the what and the body of the commit should describe the why.\nscripts: add the test-cluster command This uses tmux to setup a test cluster that you can easily kill and start for debugging. Fixes #38 The format can be described more formally as follows:\n\u0026lt;subsystem\u0026gt;: \u0026lt;what changed\u0026gt; \u0026lt;BLANK LINE\u0026gt; \u0026lt;why this change was made\u0026gt; \u0026lt;BLANK LINE\u0026gt; \u0026lt;footer\u0026gt; The first line is the subject and should be no longer than 70 characters, the second line is always blank, and other lines should be wrapped at 80 characters. This allows the message to be easier to read on GitHub as well as in various Git tools.\nAI use policy # We allow the use of AI tools when contributing to the project (issues and pull requests). At the same time, you need to be mindful of maintainers\u0026rsquo; time and attention which is why we ask you to comply with the following guidelines.\nWhen using AI for learning # Keep in mind that while AI assistants help with navigating and understanding the code base, you need to take their claims with a grain of salt. Using AI tools doesn\u0026rsquo;t prevent you from becoming familiar with the code and the development workflow. When using AI for communication # Follow the proposed template when submitting GitHub issues. Avoid verbose descriptions, provide enough information for the maintainers to understand the request but do not overwhelm them with unrelated details. When using AI for code contribution # Review the change by yourself before submitting the pull request. Ensure that you can explain the why, what and how of the change without help from the AI tool. If necessary call out the parts which are unclear to you. When AI tools have contributed significant parts of the code change, communicate the information in the pull request\u0026rsquo;s description and/or the commit message. Don\u0026rsquo;t submit changes which are unrelated to the purpose of the pull request. Avoid verbose AI-generated descriptions in PRs keep descriptions concise, focused, and relevant to the actual changes being made. Local Development # If you want to run Prometheus Operator on your local environment, you can follow the steps below.\nFirst start a Kubernetes cluster. We recommend KinD because it is lightweight (it c
808an run on small notebooks) and this is what the project\u0026rsquo;s CI uses. MiniKube is also another option.\nRun the utility script scripts/run-external.sh, it will check all the requirements and run your local version of the Prometheus Operator on your Kind cluster.\n./scripts/run-external.sh -c You should now be able to see the logs from the operator in your terminal. The Operator is successfully running in your local system and can be debugged, checked for behaviour etc. Similarly, if you work on a specific branch, you can run the scripts/run-external.sh script in this branch to deploy it.\nProposal Process # The Prometheus Operator project accepts proposals for new features, enhancements and design documents. The document should be created in the Documentation/proposals directory using the template below, prefixed by \u0026lt;YEAR\u0026gt;\u0026lt;MONTH\u0026gt;- and submitted in the form of a GitHub Pull Request.\nThe process is adopted from the Thanos community.\n## Your Proposal Title * **Owners:** * `\u0026lt;@author: single champion for the moment of writing\u0026gt;` * **Status:** * `\u0026lt;Accepted/Rejected/Implemented\u0026gt;` * **Related Tickets:** * `\u0026lt;JIRA, GH Issues\u0026gt;` * **Other docs:** * `\u0026lt;Linksâ¦\u0026gt;` \u0026gt; TL;DR: Give a summary of what this document is proposing and what components it is touching. \u0026gt; \u0026gt; *For example: This design doc is proposing a consistent design template for âexample.comâ organization.* ## Why Provide a motivation behind the change proposed by this design document, give context. *For example: Itâs important to clearly explain the reasons behind certain design decisions in order to have a consensus between team members, as well as external stakeholders. Such a design document can also be used as a reference and for knowledge-sharing purposes. Thatâs why we are proposing a consistent style of the design document that will be used for future designs.* ### Pitfalls of the current solution What specific problems are we hitting with the current solution? Why is it not enough? *For example: We were missing a consistent design doc template, so each team/person was creating their own. Because of inconsistencies, those documents were harder to understand, and it was easy to miss important sections. This was causing certain engineering time to be wasted.* ## Audience Provide the target audience for this change. ## Goals Goals and use cases for the solution as proposed in [How](#how): * Allow easy collaboration and decision making on design ideas. * Have a consistent design style that is readable and understandable. * Have a design style that is concise and covers all the essential information. ## Non-Goals * Move old designs to the new format. * Not doing X,Y,Z. ## How Explain the full overview of the proposed solution. Some guidelines: * Make it concise and **simple**; put diagrams; be concrete, avoid using âreallyâ, âamazingâ and âgreatâ (: * How will you test and verify? * How will you migrate users, without downtime. How do we solve incompatibilities? * What open questions are left? (âKnown unknownsâ) ## Alternatives This section should state potential alternatives. Highlight the objections the reader should have towards your proposal as they read it. Tell them why you still think you should take this path. 1. This is why not solution Z... ## Action Plan The tasks to do in order to migrate to the new idea. * [ ] Task one \u0026lt;gh issue=\u0026#34;\u0026#34;\u0026gt; * [ ] Task two \u0026lt;gh issue=\u0026#34;\u0026#34;\u0026gt; ... " 809 } 810 ); 811 index.add( 812 { 813 id: 42, 814 href: "/docs/community/testing/", 815 title: "Testing", 816 description: "When contributing code to Prometheus-Operator, you\u0026rsquo;ll notice that every Pull Request will run against an extensive test suite. Among an extensive list of benefits that tests brings to the Project\u0026rsquo;s overall health and reliability, it can be the reviewer\u0026rsquo;s and contributors\u0026rsquo;s best friend during development:\nTest cases serve as documentation, providing insights into the expected behavior of the softw
816are. Testing can prevent regressions by verifying that new changes don\u0026rsquo;t break existing functionality.", 817 content: "When contributing code to Prometheus-Operator, you\u0026rsquo;ll notice that every Pull Request will run against an extensive test suite. Among an extensive list of benefits that tests brings to the Project\u0026rsquo;s overall health and reliability, it can be the reviewer\u0026rsquo;s and contributors\u0026rsquo;s best friend during development:\nTest cases serve as documentation, providing insights into the expected behavior of the software. Testing can prevent regressions by verifying that new changes don\u0026rsquo;t break existing functionality. Running tests locally accelerate the feedback loop, removing the dependency that contributors might have on CI when working on a Pull Request. This document will focus on teaching you about the different test suites that we currently have and how to run different scenarios to help your development experience!\nTest categories # Unit tests # Unit tests are used to test particular code snippets in isolation. They are your best ally when looking for quick feedback loops in a particular function.\nImagine you\u0026rsquo;re working on a PR that adds a new field to the ScrapeConfig CRD and you want to test if your change is reflected to the configmap. Instead of creating a full Kubernetes cluster, installing all the CRDs, running the Prometheus-Operator, deploying a Prometheus resource with ScrapeConfigSelectors and finally check if your change made it to the live object, you could simply write or extend a unit test for the configmap generation.\nHere is an example test that checks if the string generated from ScrapeConfigs are equal to an expected file.\nhttps://github.com/prometheus-operator/prometheus-operator/blob/cb534214415beb3c39353988ae85f2bb07f245e7/pkg/prometheus/promcfg_test.go#L4945-L4956\nUnit tests can be run with:\nmake test-unit They can also be run for particular packages:\ngo test ./pkg/prometheus/server Or even particular functions:\ngo test -run ^TestPodLabelsAnnotations$ ./pkg/prometheus/server Testing multi line string comparison - Golden files # Golden files are plain-text documents designed to facilitate the validation of lengthy strings. They come in handy when, for instance, you need to test a Prometheus configuration that\u0026rsquo;s generated using Go structures. You can marshal this configuration into YAML and then compare it against a static reference to ensure a match. Golden files offer an elegant solution to this challenge, sparing you the need to hard-code the static configuration directly into your test code.\nIn the example below, we\u0026rsquo;re generating the Prometheus configuration (which can easily have 100+ lines for each individual test) and comparing it against a golden file:\nhttps://github.com/prometheus-operator/prometheus-operator/blob/aeceb0b4fadc8307a44dc55afdceca0bea50bbb0/pkg/prometheus/promcfg_test.go#L102-L277\nIf not for golden files, the test above, instead of ~150 lines, would easily require around ~1000 lines. The usage of golden files help us maintain test suites with several multi line strings comparison without sacrificing test readability.\nUpdating Golden Files # There are contributions, e.g. adding a new required field to an existing configuration, that require to update several golden files at once. This can easily be done with the command below:\nmake test-unit-update-golden Validating Prometheus Golden Files # All Prometheus golden files in pkg/prometheus/testdata/ are automatically validated using promtool check config --syntax-only to ensure they represent valid Prometheus configurations. This validation:\nRuns automatically as part of make test-unit and make test-long Fails the build if any golden file contains invalid configuration Uses the latest compatible promtool version from the Prometheus compatibility matrix Running validation manually:\nmake test-prometheus-goldenfiles Note: Files in pkg/prometheus/testdata/ subdirectories are excluded from validation as they contain either configuration fragments or legacy configurations.\nEnd-to-end tests # Sometimes, running tests in isolation is not enough and we really want test the behavior of Prometheus-Operator when running in a working Kubernetes cluster. For those occasions, end-to-e
817nd tests are our choice.\nTo run e2e-tests locally, first start a Kubernetes cluster. We recommend KinD because it is lightweight (it can run on small notebooks) and this is what the project\u0026rsquo;s CI uses. MiniKube is also another option.\nFor manual testing, you can use the utility script scripts/run-external.sh, it will check all the requirements and run your local version of the Prometheus Operator on your Kind cluster:\n./scripts/run-external.sh -c Building images and loading them into your cluster # Using docker with Kind # Before running automated end-to-end tests, you need run the following command to make images and load it in your local cluster:\nKIND_CONTEXT=e2e make test-e2e-images Using podman with Kind # When running kind on MacOS using podman, it is recommended to create podman machine with 4 CPUs and 8 GiB memory. Less resources might cause end to end tests to fail because of lack of resources in the cluster.\npodman machine init --cpus=4 --memory=8192 --rootful --now Before running automated end-to-end tests, you need run the following command to make images and load it in your local cluster:\nCONTAINER_CLI=podman KIND_CONTEXT=e2e make test-e2e-images Running the automated E2E Tests # To run the automated end-to-end tests, run the following command:\nmake test-e2e make test-e2e will run the complete end-to-end test suite. Those are the same tests we run in Pull Requests pipelines and it will make sure all features requirements amongst all controllers are working.\nWhen working on a contribution though, it\u0026rsquo;s rare that you\u0026rsquo;ll need to make a change that impacts all controllers at once. Running the complete test suite takes a long time, so you might want to run only the tests that are relevant to your change while developing it.\nSkipping test suites # https://github.com/prometheus-operator/prometheus-operator/blob/272df8a2411bcf877107b3251e79ae8aa8c24761/test/e2e/main_test.go#L46-L50\nAs shown above, particular test suites can be skipped with Environment Variables. You can also look at our CI pipeline as example. Although we always run all tests in CI, skipping irrelevant tests are great during development as they shorten the feedback loop.\
817nThe following Makefile targets can run specific end-to-end tests:\nmake test-e2e-alertmanager - Will run Alertmanager tests. make test-e2e-thanos-ruler - Will run Thanos-Ruler tests. make test-e2e-prometheus - Will run Prometheus tests with limited namespace permissions. make test-e2e-prometheus-all-namespaces - Will run regular Prometheus tests. make test-e2e-operator-upgrade - Will validate that a monitoring stack managed by the previous version of Prometheus-Operator will continue to work after an upgrade to the current version. make test-e2e-prometheus-upgrade - Will validate that a series of Prometheus versions can be sequentially upgraded. make test-e2e-feature-gates - Will validate the features behind a gate. Running only one end-to-end test # The test suites can easily take some dozens of minutes, even when running on your top-notch laptop. If you\u0026rsquo;re debugging a particular test, it might be advantageous to run only this specific test. For example, the following command will only run the TestPrometheusRuleCRDValidation/valid-rule-names sub-test:\nTEST_RUN_ARGS=\u0026#34;-run TestPrometheusRuleCRDValidation/valid-rule-names\u0026#34; make test-e2e-prometheus " 818 } 819 ); 820 index.add( 821 { 822 id: 43, 823 href: "/docs/community/materials/", 824 title: "Materials", 825 description: "This page contains presentations and blog articles that talk about the Prometheus Operator.\nIf you have made a presentation or blog that demonstrated or referenced Prometheus Operator, please open a PR to add it to this page! Please add your entry in chronological order, with the most recent presentation or blog at the top.\nPresentations # What\u0026rsquo;s New in Prometheus-Operator - S Ashwin - KubeCon + CloudNativeCon Japan 2025 (Lightning Talk) - Slides", 826 content: "This page contains presentations and blog articles that talk about the Prometheus Operator.\nIf you have made a presentation or blog that demonstrated or referenced Prometheus Operator, please open a PR to add it to this page! Please add your entry in chronological order, with the most recent presentation or blog at the top.\nPresentations # What\u0026rsquo;s New in Prometheus-Operator - S Ashwin - KubeCon + CloudNativeCon Japan 2025 (Lightning Talk) - Slides\nOptimizing Scrape Configs with Prometheus Operator - Nicolas Takashi - PromCon 2024 (Lightning Talk)\nHarnessing the Potential of Prometheus Agent Mode - M Viswanath Sai and S Ashwin - PromCon 2024 - Slides\nArchitecting Growth: Scaling Tactics for Prometheus Metrics Collection - Arthur Silva Sens \u0026amp; Nicolas Takashi - KubeCon + CloudNativeCon Europe 2024 - Slides\nScrapeConfig CRD: The Rising Star in the Prometheus-Operator Ecosystem - Jayapriya Pai - KCD Kerala 2024 - Slides\nPrometheus-Operator: What\u0026rsquo;s next? - Simon Pasquier - PromCon 2023 (Lightning Talk) - Slides\nAdditional scrape configs, my love - Guillaume Hérail - PromCon 2023 (Lightning Talk)\nDeep Dive into the Prometheus Operator Ecosystem - Jayapriya Pai - KCD Bengaluru 2023 - Slides\nHow to Be 10x SRE? A Deep Dive to Prometheus Operator - Jayapriya Pai \u0026amp; Haoyu Sun - Prometheus Day Europe 2022 - Slides\nPractical Kubernetes Monitoring with Prometheus - Michael Friedrich - PromCon North America 2021\nMonitoring Kubernetes with Prometheus-Operator - Lili Cosic - Cloud Native Computing Berlin Meetup 2021\nDeclarative Multi-Cluster Monitoring with Prometheus - Matthias Loibl \u0026amp; Frederic Branczyk - KubeCon + CloudNativeCon Europe 2018\nEnd to end monitoring with the Prometheus Operator - Frederic Branczyk - CoreOS Fest 2017\nBlogs # Prometheus Shard Autoscaling with Prometheus-Operator - Arthur Silva Sens - 2024\nA Guide to Service Discovery with Prometheus Operator â How to use Pod Monitor, Service Monitor and Scrape Config - Hélia Barroso - 2023\n" 827 } 828 ); 829 index.add( 830 { 831 id: 44, 832 href: "/docs/community/dco/", 833 title: "DCO", 834 description: "Developer Certificate of Origin Version 1.1\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA\nEveryone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\nDeveloper\u0026rsquo;s Certificate of Origin 1.1\nBy making a contribution to this project, I certify that:\n(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or", 835 content: "Developer Certificate of Origin Version 1.1\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA\nEveryone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\nDeveloper\u0026rsquo;s Certificate of Origin 1.1\nBy making a contribution to this project, I certify that:\n(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or\n(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or\n(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.\n(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.\n" 836 } 837 ); 838 index.add( 839 { 840 id: 45, 841 href: "/docs/community/code-of-conduct/", 842 title: "Code of Conduct", 843 description: "Community Code of Conduct # Contributor Co
843de of Conduct # As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.\nWe are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.", 844 content: "Community Code of Conduct # Contributor Code of Conduct # As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.\nWe are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.\nExamples of unacceptable behavior by participants include:\nThe use of sexualized language or imagery Personal attacks Trolling or insulting/derogatory comments Public or private harassment Publishing others\u0026rsquo; private information, such as physical or electronic addresses, without explicit permission Other unethical or unprofessional conduct. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.\nThis code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a project maintainer listed in the MAINTAINERS.md file.\nThis Code of Conduct is adapted from the Contributor Covenant (https://www.contributor-covenant.org), version 1.2.0, available at https://www.contributor-covenant.org/version/1/2/0/\n" 845 } 846 ); 847 index.add( 848 { 849 id: 46, 850 href: "/docs/community/release/", 851 title: "Release", 852 description: "Release schedule # Following Prometheus and Thanos, this project aims for a predictable release schedule.\nThe release cycle for cutting releases is every 6 weeks\nRelease Date of release (year-month-day) Release shepherd v0.97 2027-01-06 searching for volunteer v0.96 2026-11-25 searching for volunteer v0.95 2026-10-14 Simon Pasquier (GitHub: @simonpasquier) v0.94 2026-09-02 Jayapriya Pai (Github: @slashpai) v0.93 2026-07-22 Simon Pasquier (GitHub: @simonpasquier) v0.92 2026-06-10 Jayapriya Pai (Github: @slashpai) v0.91 2026-04-29 Simon Pasquier (GitHub: @simonpasquier) v0.", 853 content: "Release schedule # Following Prometheus and Thanos, this project aims for a predictable release schedule.\nThe release cycle for cutting releases is every 6 weeks\nRelease Date of release (year-month-day) Release shepherd v0.97 2027-01-06 searching for volunteer v0.96 2026-11-25 searching for volunteer v0.95 2026-10-14 Simon Pasquier (GitHub: @simonpasquier) v0.94 2026-09-02 Jayapriya Pai (Github: @slashpai) v0.93 2026-07-22 Simon Pasquier (GitHub: @simonpasquier) v0.92 2026-06-10 Jayapriya Pai (Github: @slashpai) v0.91 2026-04-29 Simon Pasquier (GitHub: @simonpasquier) v0.90 2026-03-18 Jayapriya Pai (Github: @slashpai) v0.89 2026-02-04 Simon Pasquier (GitHub: @simonpasquier) v0.88 2025-12-24 Jayapriya Pai (Github: @slashpai) v0.87 2025-11-12 Simon Pasquier (GitHub: @simonpasquier) v0.86 2025-10-01 Jayapriya Pai (Github: @slashpai) v0.85 2025-08-20 Simon Pasquier (GitHub: @simonpasquier) v0.84 2025-07-09 M Viswanath Sai (Github: @mviswanathsai) v0.83 2025-05-28 M Viswanath Sai (Github: @mviswanathsai) v0.82 2025-04-16 Jayapriya Pai (Github: @slashpai) v0.81 2025-03-05 Simon Pasquier (GitHub: @simonpasquier) v0.80 2025-01-22 Jayapriya Pai (Github: @slashpai) v0.79 2024-12-11 Jayapriya Pai (Github: @slashpai) v0.78 2024-10-30 Simon Pasquier (GitHub: @simonpasquier) v0.77 2024-09-18 Jayapriya Pai (Github: @slashpai) v0.76 2024-08-07 Nicolas Takashi (Github: @nicolastakashi) v0.75 2024-06-26 Jayapriya Pai (Github: @slashpai) v0.74 2024-05-15 Simon Pasquier (GitHub: @simonpasquier) v0.73 2024-04-03 Jayapriya Pai (Github: @slashpai) v0.72 2024-02-21 Arthur Sens (Github: @ArthurSens) v0.71 2024-01-10 Simon Pasquier (GitHub: @simonpasquier) v0.70 2023-11-29 Pawel Krupa (GitHub: @paulfantom) If any of the maintainers is interested in volunteering please create a pull request against the prometheus-operator/prometheus-operator repository and propose yourself for the release series of your choice.\nRelease shepherd responsibilities # The release shepherd is responsible for the entire release series of a major or minor release, including all patch releases. Some preparations should be done a few days in advance.\nWe aim to keep the main branch in a working state at all times. In principle, it should be possible to cut a release from main at any time. In practice, things might not work out as nicely. A few days before the release is scheduled, the shepherd should check the state of main. Following their best judgement, the shepherd should try to expedite features/bug fixes that are still in progress but should make it into the release. On the other hand, the shepherd may hold back merging last-minute invasive and risky changes that are better suited for the next major release. On the date listed in the table above, the release shepherd cuts the release and creates a new branch called release-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt; starting at the commit tagged for the release. If regressions or critical bugs are detected, they need to get fixed before cutting a new release. See the next section for details on cutting an individual release.\nHow to cut a new release # This guide is strongly based on the Prometheus release instructions.\nBranch management and versioning strategy # We use Semantic Versioning.\nWe maintain a separate branch for each minor release, named release-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;, e.g. release-1.1, release-2.0.\nThe usual flow is to merge new features and changes into the main branch and to merge bug fixes into the latest release branch. Bug fixes are then merged into main from the latest release branch. The main branch should always contain all commits from the latest release branch.\nIf a bug fix got accidentally merged into main, cherry-pick commits have to be created in the latest release branch, which then have to be merged back into main. Try to avoid that situation.\nMaintaining the release branches for older minor releases happens on a best effort basis.\nUpdate Go dependencies # A couple of days before the release, consider submitting a PR against the main branch to update the Go dependencies.\nmake update-go-deps make tidy Update operand versions # A couple of days before the release, update the default versions of Prometheus, Alertmanager and Thanos if newer versions are available.\nPrepare your release # For a new major or minor release, work from the main branch. For a patch release, work in the branch of the minor release you want to patch (e.g. release-0.43 if you\u0026rsquo;re releasing v0.43.2).\nBump the version in the VERSION file in the root of the repository.\nA number of files have to be re-generated, this is automated with the following make target:\nmake clean generate Bump the version of the pkg/apis/monitoring and pkg/client packages in go.mod:\ngo mod edit -require \u0026#34;github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring@v$(\u0026lt; VERSION)\u0026#34; pkg/client/go.mod go mod edit -require \u0026#34;github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring@v$(\u0026lt; VERSION)\u0026#34; go mod edit -require \u0026#34;github.com/prometheus-operator/prometheus-operator/pkg/client@v$(\u0026lt; VERSION)\u0026#34; Now that all version information has been updated, an entry for the new version can be added to the CHANGELOG.md file.\nNote that CHANGELOG.md should only document changes relevant to users of prometheus-operator, including external API changes, performance improvements, and new features. Do not document changes of internal interfaces, code refactoring and clean-ups, doc changes and changes to the build process, etc.\nEntries in the CHANGELOG.md are meant to be in this order:\n[CHANGE] [FEATURE] [ENHANCEMENT] [BUGFIX
853] Create a PR for the changes to be reviewed.\nYou can use the GitHub UI to see the difference between the release branch and the latest stable release.\nFor example: https://github.com/prometheus-operator/prometheus-operator/compare/v0.72.0\u0026hellip;release-0.73\nUnless exception, the latest tag shouldn\u0026rsquo;t contain commits that don\u0026rsquo;t exist in the release branch.\nPublish the new release # For new minor and major releases, create the release-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt; branch starting at the PR merge commit. Push the branch to the remote repository with\nNote: The remote name origin is assumed to be pointed to github.com/prometheus-operator/prometheus-operator. If you have a different remote name, use that instead of origin. Verify this using git remote -v.\ngit push origin release-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt; You could also create the release branch directly from Github UI as well if the current main branch HEAD is what release branch should be based on.\nFrom now on, all work happens on the release-\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt; branch.\nTag the new release with a tag named v\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;.\u0026lt;patch\u0026gt;, e.g. v2.1.3. Note the v prefix. Tag also the github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring module with pkg/apis/monitoring/v\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;.\u0026lt;patch\u0026gt; and the github.com/prometheus-operator/prometheus-operator/pkg/client module with pkg/client/v\u0026lt;major\u0026gt;.\u0026lt;minor\u0026gt;.\u0026lt;patch\u0026gt;. You can do the tagging on the commandline:\ntag=\u0026#34;v$(\u0026lt; VERSION)\u0026#34; git tag -s \u0026#34;${tag}\u0026#34; -m \u0026#34;${tag}\u0026#34; git tag -s \u0026#34;pkg/apis/monitoring/${tag}\u0026#34; -m \u0026#34;pkg/apis/monitoring/${tag}\u0026#34; git tag -s \u0026#34;pkg/client/${tag}\u0026#34; -m \u0026#34;pkg/client/${tag}\u0026#34; git push origin \u0026#34;${tag}\u0026#34; \u0026#34;pkg/apis/monitoring/${tag}\u0026#34; \u0026#34;pkg/client/${tag}\u0026#34; Signed tag with a GPG key is appreciated, but in case you can\u0026rsquo;t add a GPG key to your Github account using the following procedure, you can replace the -s flag by -a flag of the git tag command to only annotate the tag without signing.\nOnce a tag is created, the publish Github action will push the container images to quay.io and ghcr.io. Wait until the publish workflow is complete before going to the next step.\nWe have observed in the past that if we create a draft release and publish it later assets are not attached correctly hence its advised to wait till all workflow jobs (at least the publish job) are completed to create the release.\nGo to https://github.com/prometheus-operator/prometheus-operator/releases/new, associate the new release with the before pushed tag, paste in changes made to CHANGELOG.md and click \u0026ldquo;Publish release\u0026rdquo;.\nOnce release is published, release job will be triggered to upload assets to the newly created release.\nFor patch releases, submit a pull request to merge back the release branch into the main branch.\nUpdate website # Bump the operator\u0026rsquo;s version in the website repository.\nTake a breath. You\u0026rsquo;re done releasing.\n" 854 } 855 ); 856 index.add( 857 { 858 id: 47, 859 href: "/docs/", 860 title: "Documentation website", 861 description: "Prometheus Operator Documentation", 862 content: "" 863 } 864 ); 865 index.add( 866 { 867 id: 48, 868 href: "/docs/proposals/accepted/configuration-object-status-subresource/", 869 title: "", 870 description: "Status Subresource For Config-Based Resources # Owners: yp969803 Status: Accepted Related Tickets: #3385 Other docs: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md workload status subresource proposal This proposal outlines the implementation of a Status subresource field extension to the Prometheus operator\u0026rsquo;s configuration-based Custom Resource Definitions (CRDs).\nWhy # The solution will allow users to verify whether their configurations have been successfully applied to the corresponding workload resources.\nM
870apping between configuration resources and their associated workload resources:", 871 content: "Status Subresource For Config-Based Resources # Owners: yp969803 Status: Accepted Related Tickets: #3385 Other docs: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md workload status subresource proposal This proposal outlines the implementation of a Status subresource field extension to the Prometheus operator\u0026rsquo;s configuration-based Custom Resource Definitions (CRDs).\nWhy # The solution will allow users to verify whether their configurations have been successfully applied to the corresponding workload resources.\nMapping between configuration resources and their associated workload resources:\nConfiguration Resource Workload Resource ServiceMonitor Prometheus and PrometheusAgent PodMonitor Prometheus and PrometheusAgent Probes Prometheus and PrometheusAgent ScrapeConfig Prometheus and PrometheusAgent PrometheusRule Prometheus and ThanosRuler AlertmanagerConfig Alertmanager Pitfalls of the current solution # Prometheus operator allows users to define their observability workloads through \u0026ldquo;workload\u0026rdquo; resources like Prometheus, PrometheusAgent, Alertmanager. The configuration of these workloads can be done dynamically by orchestrating \u0026ldquo;configuration\u0026rdquo; resources like ServiceMonitor, PodMonitor, ScrapeConfig, etc.\nCurrently, the status subresource is only implemented for workload resources. The absence of the status subresource for configuration resources makes it difficult to determine the source of the generated configuration of the workload resources. Additionally, there is no straightforward way to observe the reconciliation status of configuration resources. While Kubernetes events are available when a configuration is rejected by a workload, they are not sufficient for ongoing visibility or troubleshooting.\nGoals # Define the structure of the status subresource for the custom resource definitions ServiceMonitor PodMonitor ScrapeConfig Probes PrometheusRule AlertmanagerConfig Report when a configuration resource is considered invali
871d during reconciliation. For example: Feature not being supported by the version of the workload. Invalid configmap/secret key reference. Invalid PromQL expression in PrometheusRule resources. Non-Goals # The solution does not aim to expose the full live configuration or runtime status of Prometheus. Doing so would be expensive for the workload, the operator and the Kubernetes system in general. It will not provide information about the targets being scraped and their status for scrape resources (PodMonitor, ServiceMonitor, Probes and ScrapeConfig). It will not surface fired alerts from PrometheusRule resources, as querying Prometheus for this data can be expensive and places undue load on Prometheus, the operator and the Kubernetes platform in general. Configuration resources won\u0026rsquo;t expose status information that explains why they are not being selected by Prometheus or why their targets are not being scraped. This non-goal can be partially addressed by tools like poctl, which provide insights into configuration resource selection and target matching. Audience # Users of Prometheus-Operator Maintainers and Contributors of Prometheus-Operator How # There are different challenges that influence the API design:\nA single config resource can be selected by multiple workload resources. The configuration resource may not be in the same namespace as the workload resource. Which workload selects which configuration resources can vary over time depending on the workload resource\u0026rsquo;s label selectors and on the configuration resource\u0026rsquo;s labels. API # ServiceMonitor/PodMonitor/Probes/ScrapeConfig # apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-servicemonitor namespace: monitoring generation: 3 labels: team: backend spec: selector: matchLabels: app: my-service namespaceSelector: matchNames: - default endpoints: - port: http path: /metrics interval: 30s scheme: http basicAuth: username: name: my-secret key: basic-auth-username password: name: my-secret key: basic-auth-password status: bindings: - group: monitoring.coreos.com resource: prometheuses name: main namespace: monitoring conditions: - type: Accepted status: \u0026#34;True\u0026#34; observedGeneration: 3 lastTransitionTime: \u0026#34;2025-05-20T12:34:56Z\u0026#34; reason: \u0026#34;\u0026#34; message: \u0026#34;\u0026#34; - group: monitoring.coreos.com resource: prometheuses name: example namespace: default conditions: - type: Accepted status: \u0026#34;False\u0026#34; observedGeneration: 2 lastTransitionTime: \u0026#34;2024-02-08T23:52:22Z\u0026#34; reason: InvalidConfiguration message: \u0026#34;\u0026#39;KeepEqual\u0026#39; relabel action is only supported with Prometheus \u0026gt;= 2.41.0\u0026#34; - group: monitoring.coreos.com resource: prometheusagents name: agent namespace: monitoring conditions: - type: Accepted status: \u0026#34;False\u0026#34; observedGeneration: 3 lastTransitionTime: \u0026#34;2024-02-08T23:52:22Z\u0026#34; reason: InvalidConfiguration message: \u0026#34;Referenced Secret \u0026#39;my-secret\u0026#39; in namespace \u0026#39;monitoring\u0026#39; is missing or does not contain the required key \u0026#39;basic-auth-password\u0026#39;\u0026#34; PrometheusRule # apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: example-prometheus-rules namespace: monitoring generation: 1 labels: prometheus: k8s role: alert-rules spec: groups: - name: example.rules interval: 30s rules: - alert: HighPodCPUUsage expr: sum(rate(container_cpu_usage_seconds_total{container!=\u0026#34;\u0026#34;, pod!=\u0026#34;\u0026#34;}[5m)) by (pod) \u0026gt; 0.5 for: 5m labels: severity: warning annotations: summary: \u0026#34;High CPU usage on pod {{ $labels.pod }}\u0026#34; description: \u0026#34;Pod {{ $labels.pod }} is using more than 0.5 cores for 5 minutes.\u0026#34; status: bindings: - group: monitoring.coreos.com resource: prometheuses name: prometheus-main namespace: monitoring conditions: - type: Accepted status: \u0026#34;False\u0026#34; observedGeneration: 1 lastTransitionTime: \u0026#34;2025-05-20T12:34:56Z\u0026#34; reason: InvalidConfiguration message: \u0026#34;rule 0, alert: \u0026#39;HighPodCPUUsage\u0026#39;, parse error: expected type vector in aggregation expression, got scalar\u0026#34; AlertmanagerConfig # apiVersion: monitoring.coreos.com/v1alpha1 kind: AlertmanagerConfig metadata: name: minimal-alertmanager-config namespace: monitoring generation: 1 spec: route: receiver: \u0026#34;webhook-receiver\u0026#34;
871 receivers: - name: \u0026#34;webhook-receiver\u0026#34; webhookConfigs: - url: \u0026#34;http://my-webhook-service.monitoring.svc:8080/\u0026#34; sendResolved: true status: bindings: - group: monitoring.coreos.com resource: alertmanagers name: alertmanager-main namespace: monitoring conditions: - type: Accepted status: \u0026#34;True\u0026#34; observedGeneration: 1 lastTransitionTime: \u0026#34;2025-05-20T12:34:56Z\u0026#34; reason: \u0026#34;\u0026#34; message: \u0026#34;\u0026#34; Details of the Status API fields # bindings: Lists the workload resources that select the configuration resource. conditions: Describes the latest conditions of the configuration resource in relation to the workload resource. type: The only condition type used is Accepted, indicating whether the workload controller has successfully accepted the configuration resource and updated the configuration of the workload accordingly. status: It can be either True , False or Unknown. True indicates that the configuration resource was successfully accepted by the controller and written to the configuration secret. False means the controller rejected the configuration due to an error. reason: Specifies the reason why the configuration was not accepted. message: Provides the detailed error message returned by the controller during reconciliation. observedGeneration: Represents the generation of the configuration resource that the controller has most recently observed. When the value doesn\u0026rsquo;t match the object metadata\u0026rsquo;s generation value, the condition is stale. Implementation # Feature gate # This feature is controlled by a feature gate: StatusForConfigurationResources. Cluster administrators can toggle this flag to enable or disable the status subresource support for configuration resources as needed.\nThis feature gate is disabled by default. To enable it, pass the following argument to the prometheus-operator container during installation:\n--feature-gates=StatusForConfigurationResources=true Once we\u0026rsquo;ve reached feature completeness and we\u0026rsquo;re confident about the stability, we will toggle the feature gate to be enabled by default.\nKeeping the status up-to-date # Removing a binding when the workload is deleted # When a workload resource is created, we add a finalizer to it to ensure proper cleanup before deletion. If a user later requests deletion of the resource, Kubernetes does not immediately remove it; instead, it sets a deletionTimestamp on the resource. This triggers an update event, which the workload controller receives and processes. When the deletionTimestamp is set, the controller proceeds to clean up the configuration resources (e.g., ServiceMonitors, PrometheusRules) with bindings to the workload. Once the cleanup is complete, the controller removes the finalizer from the workload resource, allowing Kubernetes to complete the deletion process.\nRemoving invalid bindings from configuration resources status # A configuration resource may contain a reference to a workload resource in its bindings which is not relevant anymore. This can occur for instance when:\nA workload resource A selects a configuration resource X in namespace Y. The operator updates the status of resource X to reference workload A. At a later time, changes may happen that break this association: The labels of X and/or its namespace Y are modified. The label selectors and/or namespace selectors of workload A are updated. These changes can result in the workload A no longer selecting the configuration resource X which requires the operator to update the configuration resource\u0026rsquo;s status.\nA separate Go routine can be used to remove invalid bindings, offloading this responsibility from the main workload controller\u0026rsquo;s reconciliation loop. This background routine can periodically:\nQuery all workload resources. List all configuration resources. For each configuration resource, check if its bindings are still valid. Remove any bindings that no longer have an active association with a workload resource. This approach ensures that the cleanup process does not interfere with the primary reconciliation loop and improves controller efficiency.\nAlternatives # Dedicated CRD Approach for Configuration-Workload Mapping # A potential solution to mapping a configuration resource to a workload resource is the introduction of a Custom Resource Definition (CRD). This new CRD w
871ould act as an intermediary, maintaining a clear association between configurations and workloads.\nThe Secrets Store CSI Driver handles the Secrets Provider pod status in a similar way.\nIt comes with the following drawbacks:\nIntroducing a new CRD could lead to additional operational complexity. It requires installation, maintenance and versioning, which could increase the administrative burden. Storing Information in the Workload Resource # Another approach is to store configuration mappings directly within the workload resource.\nIt comes with the following drawbacks:\nOwners of configuration resources not having permissions to view the workload resource wonât have a view of the status which is one of the main goals of this effort. Workload resources could reference a high number of configuration resources (it isn\u0026rsquo;t uncommon for a Prometheus resource to select more than a hundred of service monitors + pod monitors + rules). Storing all these mappings within a single workload resource could lead to excessive API payload sizes. Action Plan # Introduce a new feature gate. Manage finalizers on workload resources. Add or remove a finalizer based on the feature gate status. Create bindings in associated configuration resources. During workload reconciliation, populate status.bindings in matching configuration resources. Handle updates affecting selection logic On changes to: Namespace labels Configuration resource labels Workloadâs label/namespace selectors Recalculate and remove invalid bindings from affected configuration resources. Clean up bindings on workload deletion When a workload is deleted, remove its references from all associated configuration resources Follow-ups # Once the goals of this proposal are achieved, we can extend the implementation to populate scrape targets information in the status subresource of ServiceMonitor, PodMonitor, ScrapeConfig, and Probe resources.\n" 872 } 873 ); 874 search.addEventListener('input', show_results, true); 875 876 function show_results(){ 877 const maxResult = 5; 878 var searchQuery = this.value; 879 var results = index.search(searchQuery, {limit: maxResult, enrich: true}); 880 881 // flatten results since index.search() returns results for each indexed field 882 const flatResults = new Map(); // keyed by href to dedupe results 883 for (const result of results.flatMap(r => r.result)) { 884 if (flatResults.has(result.doc.href)) continue; 885 flatResults.set(result.doc.href, result.doc); 886 } 887 888 suggestions.innerHTML = ""; 889 suggestions.classList.remove('d-none'); 890 891 // inform user that no results were found 892 if (flatResults.size === 0 && searchQuery) { 893 const noResultsMessage = document.createElement('div') 894 noResultsMessage.innerHTML = `No results for "<strong>${searchQuery}</strong>"` 895 noResultsMessage.classList.add("suggestion__no-results"); 896 suggestions.appendChild(noResultsMessage); 897 return; 898 } 899 900 // construct a list of suggestions 901 for(const [href, doc] of flatResults) { 902 const entry = document.createElement('div'); 903 suggestions.appendChild(entry); 904 905 const a = document.createElement('a'); 906 a.href = href; 907 entry.appendChild(a); 908 909 const title = document.createElement('span'); 910 title.textContent = doc.title; 911 title.classList.add("suggestion__title"); 912 a.appendChild(title); 913 914 const description = document.createElement('span'); 915 description.textContent = doc.description; 916 description.classList.add("suggestion__description"); 917 a.appendChild(description); 918 919 suggestions.appendChild(entry); 920 921 if(suggestions.childElementCount == maxResult) break; 922 } 923 } 924}());
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.