From 6c7ed829e31f3a6b8fb5f6237b1792668df36e2d Mon Sep 17 00:00:00 2001 From: Andrii Chubatiuk Date: Mon, 1 Jun 2026 09:47:36 +0300 Subject: [PATCH] support multiple cases for scrape configs and alertmanager config --- Makefile | 10 +- api/go.mod | 2 +- api/operator/v1/common.go | 2 +- api/operator/v1/vlagent_types.go | 7 +- api/operator/v1/vlcluster_types.go | 5 +- api/operator/v1/vlsingle_types.go | 7 +- api/operator/v1/vmanomaly_types.go | 9 +- api/operator/v1/vtagent_types.go | 7 +- api/operator/v1/vtcluster_types.go | 5 +- api/operator/v1/vtsingle_types.go | 7 +- api/operator/v1alpha1/vldistributed_types.go | 7 +- api/operator/v1alpha1/vmdistributed_types.go | 7 +- api/operator/v1beta1/case_ignore_test.go | 174 ++++ api/operator/v1beta1/common_scrapeparams.go | 200 ++-- api/operator/v1beta1/vlogs_types.go | 7 +- api/operator/v1beta1/vmagent_types.go | 13 +- api/operator/v1beta1/vmalert_types.go | 17 +- api/operator/v1beta1/vmalertmanager_types.go | 9 +- .../v1beta1/vmalertmanagerconfig_test.go | 1 - .../v1beta1/vmalertmanagerconfig_types.go | 419 ++++---- .../vmalertmanagerconfig_types_test.go | 268 ++++- api/operator/v1beta1/vmauth_types.go | 11 +- api/operator/v1beta1/vmcluster_types.go | 5 +- api/operator/v1beta1/vmextra_types.go | 39 +- api/operator/v1beta1/vmextra_types_test.go | 16 +- api/operator/v1beta1/vmnodescrape_types.go | 5 +- api/operator/v1beta1/vmpodscrape_types.go | 5 +- api/operator/v1beta1/vmprobe_types.go | 5 +- api/operator/v1beta1/vmrule_types.go | 5 +- api/operator/v1beta1/vmrule_types_test.go | 2 +- api/operator/v1beta1/vmscrapeconfig_types.go | 5 +- api/operator/v1beta1/vmservicescrape_types.go | 5 +- api/operator/v1beta1/vmsingle_types.go | 11 +- api/operator/v1beta1/vmstaticscrape_types.go | 5 +- api/operator/v1beta1/vmuser_types.go | 7 +- api/operator/v1beta1/zz_generated.deepcopy.go | 5 - cmd/config-reloader/k8s_watch.go | 6 +- cmd/config-reloader/main.go | 6 +- config/crd/overlay/crd.descriptionless.yaml | 462 ++++----- config/crd/overlay/crd.yaml | 934 ++++-------------- docs/CHANGELOG.md | 1 + docs/api.md | 914 ++++++++--------- docs/config.yaml | 3 + docs/templates/api/type.tpl | 2 +- .../factory/build/podtemplate_test.go | 18 +- .../operator/factory/build/vmscrape.go | 2 +- .../operator/factory/vmagent/scrapes_test.go | 4 +- .../operator/factory/vmagent/vmagent_test.go | 10 +- .../factory/vmscrapes/vmscrapes_test.go | 34 +- .../operator/factory/vmsingle/scrapes_test.go | 4 +- 50 files changed, 1795 insertions(+), 1919 deletions(-) create mode 100644 api/operator/v1beta1/case_ignore_test.go delete mode 100644 api/operator/v1beta1/vmalertmanagerconfig_test.go diff --git a/Makefile b/Makefile index e9d0e55371..8382d58ecf 100644 --- a/Makefile +++ b/Makefile @@ -165,13 +165,17 @@ test: manifests generate fmt vet envtest ## Run tests. lint: golangci-lint ## Run golangci-lint linter cd api && $(GOLANGCI_LINT) run operator/... & P1=$$!; \ $(GOLANGCI_LINT) run & P2=$$!; \ - wait $$P1; wait $$P2 + wait $$P1; S1=$$?; \ + wait $$P2; S2=$$?; \ + [ $$S1 -eq 0 ] && [ $$S2 -eq 0 ] .PHONY: lint-fix lint-fix: golangci-lint ## Run golangci-lint linter and perform fixes cd api && $(GOLANGCI_LINT) run --fix operator/... & P1=$$!; \ $(GOLANGCI_LINT) run --fix & P2=$$!; \ - wait $$P1; wait $$P2 + wait $$P1; S1=$$?; \ + wait $$P2; S2=$$?; \ + [ $$S1 -eq 0 ] && [ $$S2 -eq 0 ] ##@ Build @@ -357,7 +361,7 @@ COSIGN_BIN ?= $(LOCALBIN)/cosign-$(COSIGN_VERSION) ## Tool Versions KUSTOMIZE_VERSION ?= v5.8.1 CONTROLLER_TOOLS_VERSION ?= v0.22.0 -ENVTEST_VERSION ?= release-0.23 +ENVTEST_VERSION ?= release-0.24 GOLANGCI_LINT_VERSION ?= v2.13.2 CODEGENERATOR_VERSION ?= v0.37.0 OLM_VERSION ?= 0.46.0 diff --git a/api/go.mod b/api/go.mod index 6d9e8ac8be..7bc627df92 100644 --- a/api/go.mod +++ b/api/go.mod @@ -2,7 +2,7 @@ module github.com/VictoriaMetrics/operator/api // NOTE: modify go version only if it's really needed // and api package is no longer compatible with previous go versions. -go 1.26.6 +go 1.27.0 require ( github.com/VictoriaMetrics/VictoriaMetrics v1.151.0 diff --git a/api/operator/v1/common.go b/api/operator/v1/common.go index 5abd8f6a0a..2645ef4ba5 100644 --- a/api/operator/v1/common.go +++ b/api/operator/v1/common.go @@ -1,7 +1,7 @@ package v1 import ( - "encoding/json" + "encoding/json/v2" "fmt" "net/url" "strconv" diff --git a/api/operator/v1/vlagent_types.go b/api/operator/v1/vlagent_types.go index 27e83fd6f3..1e1dd3f829 100644 --- a/api/operator/v1/vlagent_types.go +++ b/api/operator/v1/vlagent_types.go @@ -1,7 +1,8 @@ package v1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -108,7 +109,7 @@ type VLAgentSpec struct { // Configures vertical pod autoscaling. // +optional VPA *vmv1beta1.EmbeddedVPA `json:"vpa,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` } type VLAgentK8sCollector struct { @@ -380,7 +381,7 @@ func (cr *VLAgent) UnmarshalJSON(src []byte) error { type pcr VLAgent type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1/vlcluster_types.go b/api/operator/v1/vlcluster_types.go index c6d3ea4699..b4444f264e 100644 --- a/api/operator/v1/vlcluster_types.go +++ b/api/operator/v1/vlcluster_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -701,7 +702,7 @@ func (cr *VLCluster) UnmarshalJSON(src []byte) error { type pcr VLCluster type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1/vlsingle_types.go b/api/operator/v1/vlsingle_types.go index 12925e14f1..bc6da90357 100644 --- a/api/operator/v1/vlsingle_types.go +++ b/api/operator/v1/vlsingle_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -41,7 +42,7 @@ type VLSingleSpec struct { // created by operator for the given CustomResource ManagedMetadata *vmv1beta1.ManagedObjectsMetadata `json:"managedMetadata,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` // LogLevel for VictoriaLogs to be configured with. // +optional @@ -183,7 +184,7 @@ func (cr *VLSingle) UnmarshalJSON(src []byte) error { type pcr VLSingle type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1/vmanomaly_types.go b/api/operator/v1/vmanomaly_types.go index a7b8a6b807..31a5d13c2d 100644 --- a/api/operator/v1/vmanomaly_types.go +++ b/api/operator/v1/vmanomaly_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "path" "strings" @@ -135,7 +136,7 @@ type VMAnomalySpec struct { // +optional // +notes={available_from: "v0.73.0"} UseLegacyNaming bool `json:"useLegacyNaming,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` } // VMAnomalyWritersSpec defines writer configuration for VMAnomaly @@ -166,7 +167,7 @@ type VMAnomalyWritersSpec struct { // +kubebuilder:validation:Minimum=0 MetricPrefixCacheMaxEntries *int `json:"metricPrefixCacheMaxEntries,omitempty" yaml:"metric_prefix_cache_max_entries,omitempty"` // +optional - VMAnomalyHTTPClientSpec `json:",inline,omitempty" yaml:",inline,omitempty"` + VMAnomalyHTTPClientSpec `json:",inline" yaml:",inline,omitempty"` } // VMAnomalyVMWriterMetricFormatSpec defines the desired state of VMAnomalyVMWriterMetricFormat @@ -381,7 +382,7 @@ func (cr *VMAnomaly) UnmarshalJSON(src []byte) error { type pcr VMAnomaly type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1/vtagent_types.go b/api/operator/v1/vtagent_types.go index 000a8b226b..679845db62 100644 --- a/api/operator/v1/vtagent_types.go +++ b/api/operator/v1/vtagent_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -108,7 +109,7 @@ type VTAgentSpec struct { // Configures vertical pod autoscaling. // +optional VPA *vmv1beta1.EmbeddedVPA `json:"vpa,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` } // Validate performs syntax validation @@ -324,7 +325,7 @@ func (cr *VTAgent) UnmarshalJSON(src []byte) error { type pcr VTAgent type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1/vtcluster_types.go b/api/operator/v1/vtcluster_types.go index 5b07ff25fc..29dd3e26ea 100644 --- a/api/operator/v1/vtcluster_types.go +++ b/api/operator/v1/vtcluster_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -614,7 +615,7 @@ func (cr *VTCluster) UnmarshalJSON(src []byte) error { type pcr VTCluster type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1/vtsingle_types.go b/api/operator/v1/vtsingle_types.go index a7b018db4f..330a074bf6 100644 --- a/api/operator/v1/vtsingle_types.go +++ b/api/operator/v1/vtsingle_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -41,7 +42,7 @@ type VTSingleSpec struct { // created by operator for the given CustomResource ManagedMetadata *vmv1beta1.ManagedObjectsMetadata `json:"managedMetadata,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` // LogLevel for VictoriaTraces to be configured with. // +optional @@ -176,7 +177,7 @@ func (cr *VTSingle) UnmarshalJSON(src []byte) error { type pcr VTSingle type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1alpha1/vldistributed_types.go b/api/operator/v1alpha1/vldistributed_types.go index dfacd325a4..0e6b2bf292 100644 --- a/api/operator/v1alpha1/vldistributed_types.go +++ b/api/operator/v1alpha1/vldistributed_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1alpha1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -263,7 +264,7 @@ type VLDistributedZoneAgentSpec struct { // +optional VPA *vmv1beta1.EmbeddedVPA `json:"vpa,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` } // ToVLAgentSpec converts VLDistributedZoneAgentSpec to vmv1.VLAgentSpec via JSON round-trip. @@ -454,7 +455,7 @@ func (cr *VLDistributed) UnmarshalJSON(src []byte) error { type pcr VLDistributed type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1alpha1/vmdistributed_types.go b/api/operator/v1alpha1/vmdistributed_types.go index 369f077afe..d0b7afe223 100644 --- a/api/operator/v1alpha1/vmdistributed_types.go +++ b/api/operator/v1alpha1/vmdistributed_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1alpha1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -283,7 +284,7 @@ type VMDistributedZoneAgentSpec struct { // +optional HPA *vmv1beta1.EmbeddedHPA `json:"hpa,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` } func (s *VMDistributedZoneAgentSpec) ToVMAgentSpec() (*vmv1beta1.VMAgentSpec, error) { @@ -490,7 +491,7 @@ func (cr *VMDistributed) UnmarshalJSON(src []byte) error { type pcr VMDistributed type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/case_ignore_test.go b/api/operator/v1beta1/case_ignore_test.go new file mode 100644 index 0000000000..d510c1321d --- /dev/null +++ b/api/operator/v1beta1/case_ignore_test.go @@ -0,0 +1,174 @@ +package v1beta1 + +import ( + "encoding/json/v2" + "testing" + + "github.com/stretchr/testify/assert" +) + +// TestScrapeConfigCaseIgnore verifies that both snake_case and camelCase field +// names are accepted for scrape config types, thanks to the json "case:ignore" +// tag option processed via jsonv2.Unmarshal in each CRD's UnmarshalJSON. +func TestScrapeConfigCaseIgnore(t *testing.T) { + t.Run("VMNodeScrape camelCase scrape params", func(t *testing.T) { + src := `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMNodeScrape", + "metadata": {"name": "test"}, + "spec": { + "scrapeInterval": "30s", + "scrapeTimeout": "10s", + "honorLabels": true, + "honorTimestamps": false, + "path": "/metrics" + } + }` + var ns VMNodeScrape + assert.NoError(t, json.Unmarshal([]byte(src), &ns)) + assert.Empty(t, ns.Status.ParsingSpecError) + assert.Equal(t, "30s", ns.Spec.ScrapeInterval) + assert.Equal(t, "10s", ns.Spec.ScrapeTimeout) + assert.Equal(t, true, ns.Spec.HonorLabels) + assert.Equal(t, false, *ns.Spec.HonorTimestamps) + }) + + t.Run("VMNodeScrape snake_case scrape params (canonical, regression)", func(t *testing.T) { + src := `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMNodeScrape", + "metadata": {"name": "test"}, + "spec": { + "scrape_interval": "60s", + "honorLabels": false + } + }` + var ns VMNodeScrape + assert.NoError(t, json.Unmarshal([]byte(src), &ns)) + assert.Empty(t, ns.Status.ParsingSpecError) + assert.Equal(t, "60s", ns.Spec.ScrapeInterval) + assert.Equal(t, false, ns.Spec.HonorLabels) + }) + + t.Run("VMServiceScrape camelCase endpoint auth fields", func(t *testing.T) { + src := `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMServiceScrape", + "metadata": {"name": "test"}, + "spec": { + "endpoints": [ + { + "port": "metrics", + "scrapeInterval": "15s", + "scrapeTimeout": "5s", + "honorLabels": true, + "bearerTokenFile": "/var/run/secrets/token", + "tlsConfig": { + "insecureSkipVerify": true + } + } + ], + "selector": {} + } + }` + var ss VMServiceScrape + assert.NoError(t, json.Unmarshal([]byte(src), &ss)) + assert.Empty(t, ss.Status.ParsingSpecError) + ep := ss.Spec.Endpoints[0] + assert.Equal(t, "15s", ep.ScrapeInterval) + assert.Equal(t, "5s", ep.ScrapeTimeout) + assert.Equal(t, true, ep.HonorLabels) + assert.Equal(t, "/var/run/secrets/token", ep.BearerTokenFile) + assert.Equal(t, true, ep.TLSConfig.InsecureSkipVerify) + }) + + t.Run("mixed snake_case and camelCase in endpoint", func(t *testing.T) { + src := `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMNodeScrape", + "metadata": {"name": "test"}, + "spec": { + "scrape_interval": "30s", + "scrapeTimeout": "10s", + "honorLabels": true + } + }` + var ns VMNodeScrape + assert.NoError(t, json.Unmarshal([]byte(src), &ns)) + assert.Empty(t, ns.Status.ParsingSpecError) + assert.Equal(t, "30s", ns.Spec.ScrapeInterval) + assert.Equal(t, "10s", ns.Spec.ScrapeTimeout) + assert.Equal(t, true, ns.Spec.HonorLabels) + }) +} + +// TestCommonAppsParamsHostAliasesCompat verifies that the snake_case host_aliases +// field is still accepted alongside hostAliases (build.PodTemplateAddCommonParams +// applies the documented priority between the two). +func TestCommonAppsParamsHostAliasesCompat(t *testing.T) { + t.Run("host_aliases decodes into HostAliasesUnderScore", func(t *testing.T) { + src := `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMSingle", + "metadata": {"name": "test"}, + "spec": { + "host_aliases": [ + {"ip": "1.2.3.4", "hostnames": ["my.host"]} + ] + } + }` + var vs VMSingle + assert.NoError(t, json.Unmarshal([]byte(src), &vs)) + assert.Empty(t, vs.Status.ParsingSpecError) + assert.Empty(t, vs.Spec.HostAliases) + assert.Len(t, vs.Spec.HostAliasesUnderScore, 1) + assert.Equal(t, "1.2.3.4", vs.Spec.HostAliasesUnderScore[0].IP) + assert.Equal(t, []string{"my.host"}, vs.Spec.HostAliasesUnderScore[0].Hostnames) + }) + + t.Run("hostAliases (camelCase canonical) still works", func(t *testing.T) { + src := `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMSingle", + "metadata": {"name": "test"}, + "spec": { + "hostAliases": [ + {"ip": "5.6.7.8", "hostnames": ["other.host"]} + ] + } + }` + var vs VMSingle + assert.NoError(t, json.Unmarshal([]byte(src), &vs)) + assert.Empty(t, vs.Status.ParsingSpecError) + assert.Len(t, vs.Spec.HostAliases, 1) + assert.Equal(t, "5.6.7.8", vs.Spec.CommonAppsParams.HostAliases[0].IP) + }) +} + +// TestRelabelConfigSourceTargetLabelCaseIgnore verifies that the original Prometheus +// relabel_config spelling (source_labels, target_label) is accepted alongside +// sourceLabels/targetLabel: case:ignore folds away case, dashes, and underscores, so +// no extra handling is needed in RelabelConfig.UnmarshalJSON for this. +func TestRelabelConfigSourceTargetLabelCaseIgnore(t *testing.T) { + t.Run("source_labels/target_label accepted", func(t *testing.T) { + var rc RelabelConfig + src := `{"source_labels": ["__address__"], "target_label": "address"}` + assert.NoError(t, json.Unmarshal([]byte(src), &rc)) + assert.Equal(t, []string{"__address__"}, rc.SourceLabels) + assert.Equal(t, "address", rc.TargetLabel) + }) + + t.Run("sourceLabels/targetLabel (camelCase canonical) still works", func(t *testing.T) { + var rc RelabelConfig + src := `{"sourceLabels": ["__address__"], "targetLabel": "address"}` + assert.NoError(t, json.Unmarshal([]byte(src), &rc)) + assert.Equal(t, []string{"__address__"}, rc.SourceLabels) + assert.Equal(t, "address", rc.TargetLabel) + }) + + t.Run("setting both spellings at once is rejected as ambiguous", func(t *testing.T) { + var rc RelabelConfig + src := `{"sourceLabels": ["__new__"], "source_labels": ["__old__"]}` + assert.Error(t, json.Unmarshal([]byte(src), &rc)) + }) +} diff --git a/api/operator/v1beta1/common_scrapeparams.go b/api/operator/v1beta1/common_scrapeparams.go index 2ff93a711f..6abb64ee95 100644 --- a/api/operator/v1beta1/common_scrapeparams.go +++ b/api/operator/v1beta1/common_scrapeparams.go @@ -1,7 +1,7 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/v2" "fmt" "reflect" "strings" @@ -34,7 +34,7 @@ type ScrapeClass struct { // When the scrape object defines its own configuration, it takes // precedence over the scrape class configuration. // +optional - AttachMetadata *AttachMetadata `json:"attachMetadata,omitempty"` + AttachMetadata *AttachMetadata `json:"attachMetadata,omitempty,case:ignore"` } // AttachMetadata configures metadata attachment @@ -51,28 +51,29 @@ type AttachMetadata struct { // VMScrapeParams defines scrape target configuration that compatible only with VictoriaMetrics scrapers // VMAgent and VMSingle +// +kubebuilder:pruning:PreserveUnknownFields type VMScrapeParams struct { // DisableCompression // +optional - DisableCompression *bool `json:"disable_compression,omitempty"` + DisableCompression *bool `json:"disable_compression,omitempty,case:ignore"` // disable_keepalive allows disabling HTTP keep-alive when scraping targets. // By default, HTTP keep-alive is enabled, so TCP connections to scrape targets // could be reused. // See https://docs.victoriametrics.com/victoriametrics/vmagent/#scrape_config-enhancements // +optional - DisableKeepAlive *bool `json:"disable_keep_alive,omitempty"` + DisableKeepAlive *bool `json:"disable_keep_alive,omitempty,case:ignore"` // +optional - DisableStaleMarkers *bool `json:"no_stale_markers,omitempty"` + DisableStaleMarkers *bool `json:"no_stale_markers,omitempty,case:ignore"` // +optional - StreamParse *bool `json:"stream_parse,omitempty"` + StreamParse *bool `json:"stream_parse,omitempty,case:ignore"` // +optional - ScrapeAlignInterval *string `json:"scrape_align_interval,omitempty"` + ScrapeAlignInterval *string `json:"scrape_align_interval,omitempty,case:ignore"` // +optional - ScrapeOffset *string `json:"scrape_offset,omitempty"` + ScrapeOffset *string `json:"scrape_offset,omitempty,case:ignore"` // ProxyClientConfig configures proxy auth settings for scraping // See feature description https://docs.victoriametrics.com/victoriametrics/vmagent/#scraping-targets-via-a-proxy // +optional - ProxyClientConfig *ProxyClientConfig `json:"proxy_client_config,omitempty"` + ProxyClientConfig *ProxyClientConfig `json:"proxy_client_config,omitempty,case:ignore"` // Headers allows sending custom headers to scrape targets // must be in of semicolon separated header with it's value // eg: @@ -83,27 +84,28 @@ type VMScrapeParams struct { } // ProxyClientConfig represent proxy client config +// +kubebuilder:pruning:PreserveUnknownFields type ProxyClientConfig struct { // OAuth2 defines auth configuration // +optional OAuth2 *OAuth2 `json:"oauth2,omitempty"` // BasicAuth allows proxy to authenticate over basic authentication // +optional - BasicAuth *BasicAuth `json:"basic_auth,omitempty"` + BasicAuth *BasicAuth `json:"basic_auth,omitempty,case:ignore"` // Secret to mount to read bearer token for scraping targets proxy auth. The secret // needs to be in the same namespace as the scrape object and accessible by // the victoria-metrics operator. // +optional // +nullable - BearerToken *corev1.SecretKeySelector `json:"bearer_token,omitempty"` + BearerToken *corev1.SecretKeySelector `json:"bearer_token,omitempty,case:ignore"` // BearerTokenFile defines file to read bearer token from for proxy auth. // +optional - BearerTokenFile string `json:"bearer_token_file,omitempty"` + BearerTokenFile string `json:"bearer_token_file,omitempty,case:ignore"` // TLSConfig configuration to use when scraping the endpoint // +optional // +kubebuilder:validation:Schemaless // +kubebuilder:pruning:PreserveUnknownFields - TLSConfig *TLSConfig `json:"tls_config,omitempty"` + TLSConfig *TLSConfig `json:"tls_config,omitempty,case:ignore"` // Authorization with http header Authorization // +optional Authorization *Authorization `json:"authorization,omitempty"` @@ -134,39 +136,40 @@ func (c *ProxyClientConfig) validateArbitraryFSAccess() error { } // OAuth2 defines OAuth2 configuration +// +kubebuilder:pruning:PreserveUnknownFields type OAuth2 struct { // The secret or configmap containing the OAuth2 client id // +required - ClientID SecretOrConfigMap `json:"client_id" yaml:"client_id,omitempty"` + ClientID SecretOrConfigMap `json:"client_id,case:ignore" yaml:"client_id,omitempty"` // The secret containing the OAuth2 client secret // +optional - ClientSecret *corev1.SecretKeySelector `json:"client_secret,omitempty" yaml:"client_secret,omitempty"` + ClientSecret *corev1.SecretKeySelector `json:"client_secret,omitempty,case:ignore" yaml:"client_secret,omitempty"` // ClientSecretFile defines path for client secret file. // +optional - ClientSecretFile string `json:"client_secret_file,omitempty" yaml:"client_secret_file,omitempty"` + ClientSecretFile string `json:"client_secret_file,omitempty,case:ignore" yaml:"client_secret_file,omitempty"` // The URL to fetch the token from // +kubebuilder:validation:MinLength=1 // +required - TokenURL string `json:"token_url" yaml:"token_url"` + TokenURL string `json:"token_url,case:ignore" yaml:"token_url"` // OAuth2 scopes used for the token request // +optional Scopes []string `json:"scopes,omitempty"` // Parameters to append to the token URL // +optional - EndpointParams map[string]string `json:"endpoint_params,omitempty" yaml:"endpoint_params"` + EndpointParams map[string]string `json:"endpoint_params,omitempty,case:ignore" yaml:"endpoint_params"` // The proxy URL for token_url connection // Is only supported by Scrape objects family // +optional // +notes={available_from: "v0.55.0"} - ProxyURL string `json:"proxy_url,omitempty"` + ProxyURL string `json:"proxy_url,omitempty,case:ignore"` // TLSConfig for token_url connection // Is only supported by Scrape objects family // +optional // +kubebuilder:validation:Schemaless // +kubebuilder:pruning:PreserveUnknownFields // +notes={available_from: "v0.55.0"} - TLSConfig *TLSConfig `json:"tls_config,omitempty"` + TLSConfig *TLSConfig `json:"tls_config,omitempty,case:ignore"` } func (o *OAuth2) validate() error { @@ -201,7 +204,7 @@ type Authorization struct { Credentials *corev1.SecretKeySelector `json:"credentials,omitempty"` // File with value for authorization // +optional - CredentialsFile string `json:"credentialsFile,omitempty" yaml:"credentials_file,omitempty"` + CredentialsFile string `json:"credentialsFile,omitempty,case:ignore" yaml:"credentials_file,omitempty"` } func (ac *Authorization) validate() error { @@ -222,32 +225,20 @@ func (ac *Authorization) validate() error { // RelabelConfig allows dynamic rewriting of the label set // More info: https://docs.victoriametrics.com/victoriametrics/#relabeling // +k8s:openapi-gen=true +// +kubebuilder:pruning:PreserveUnknownFields type RelabelConfig struct { - // UnderScoreSourceLabels - additional form of source labels source_labels - // for compatibility with original relabel config. - // if set both sourceLabels and source_labels, sourceLabels has priority. - // for details https://github.com/VictoriaMetrics/operator/issues/131 - // +optional - UnderScoreSourceLabels []string `json:"source_labels,omitempty" yaml:"source_labels,omitempty"` - // UnderScoreTargetLabel - additional form of target label - target_label - // for compatibility with original relabel config. - // if set both targetLabel and target_label, targetLabel has priority. - // for details https://github.com/VictoriaMetrics/operator/issues/131 - // +optional - UnderScoreTargetLabel string `json:"target_label,omitempty" yaml:"target_label,omitempty"` - // The source labels select values from existing labels. Their content is concatenated // using the configured separator and matched against the configured regular expression // for the replace, keep, and drop actions. // +optional - SourceLabels []string `json:"sourceLabels,omitempty" yaml:"-"` + SourceLabels []string `json:"sourceLabels,omitempty,case:ignore" yaml:"source_labels,omitempty"` // Separator placed between concatenated source label values. default is ';'. // +optional Separator *string `json:"separator,omitempty" yaml:"separator,omitempty"` // Label to which the resulting value is written in a replace action. // It is mandatory for replace actions. Regex capture groups are available. // +optional - TargetLabel string `json:"targetLabel,omitempty" yaml:"-"` + TargetLabel string `json:"targetLabel,omitempty,case:ignore" yaml:"target_label,omitempty"` // Regular expression against which the extracted value is matched. Default is '(.*)' // victoriaMetrics supports multiline regex joined with | // https://docs.victoriametrics.com/victoriametrics/vmagent/#relabeling-enhancements @@ -278,26 +269,14 @@ type RelabelConfig struct { Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` } -// UnmarshalJSON implements interface -// handles cases for snake and camel cases of json tags +// UnmarshalJSON implements json.Unmarshaler. +// Both snake_case (source_labels, target_label) and camelCase (sourceLabels, targetLabel) +// field names are accepted, thanks to the case:ignore json tag option. func (rc *RelabelConfig) UnmarshalJSON(src []byte) error { type rcfg RelabelConfig - if err := json.Unmarshal(src, (*rcfg)(rc)); err != nil { + if err := json.Unmarshal(src, (*rcfg)(rc), json.MatchCaseInsensitiveNames(true)); err != nil { return fmt.Errorf("cannot parse relabelConfig: %w", err) } - - if len(rc.SourceLabels) == 0 && len(rc.UnderScoreSourceLabels) > 0 { - rc.SourceLabels = append(rc.SourceLabels, rc.UnderScoreSourceLabels...) - } - if len(rc.UnderScoreSourceLabels) == 0 && len(rc.SourceLabels) > 0 { - rc.UnderScoreSourceLabels = append(rc.UnderScoreSourceLabels, rc.SourceLabels...) - } - if rc.TargetLabel == "" && rc.UnderScoreTargetLabel != "" { - rc.TargetLabel = rc.UnderScoreTargetLabel - } - if rc.UnderScoreTargetLabel == "" && rc.TargetLabel != "" { - rc.UnderScoreTargetLabel = rc.TargetLabel - } return nil } @@ -310,6 +289,7 @@ func (rc *RelabelConfig) IsEmpty() bool { } // EndpointScrapeParams defines common configuration params for all scrape endpoint targets +// +kubebuilder:pruning:PreserveUnknownFields type EndpointScrapeParams struct { // HTTP path to scrape for metrics. // +optional @@ -323,39 +303,39 @@ type EndpointScrapeParams struct { Params map[string][]string `json:"params,omitempty"` // FollowRedirects controls redirects for scraping. // +optional - FollowRedirects *bool `json:"follow_redirects,omitempty"` + FollowRedirects *bool `json:"follow_redirects,omitempty,case:ignore"` // SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. // +optional - SampleLimit int `json:"sampleLimit,omitempty"` + SampleLimit int `json:"sampleLimit,omitempty,case:ignore"` // SeriesLimit defines per-scrape limit on number of unique time series // a single target can expose during all the scrapes on the time window of 24h. // +optional - SeriesLimit int `json:"seriesLimit,omitempty"` + SeriesLimit int `json:"seriesLimit,omitempty,case:ignore"` // Interval at which metrics should be scraped // +optional Interval string `json:"interval,omitempty"` // ScrapeInterval is the same as Interval and has priority over it. // one of scrape_interval or interval can be used // +optional - ScrapeInterval string `json:"scrape_interval,omitempty"` + ScrapeInterval string `json:"scrape_interval,omitempty,case:ignore"` // Timeout after which the scrape is ended // +optional - ScrapeTimeout string `json:"scrapeTimeout,omitempty"` + ScrapeTimeout string `json:"scrapeTimeout,omitempty,case:ignore"` // ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. // +optional - ProxyURL *string `json:"proxyURL,omitempty"` + ProxyURL *string `json:"proxyURL,omitempty,case:ignore"` // HonorLabels chooses the metric's labels on collisions with target labels. // +optional - HonorLabels bool `json:"honorLabels,omitempty"` + HonorLabels bool `json:"honorLabels,omitempty,case:ignore"` // HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. // +optional - HonorTimestamps *bool `json:"honorTimestamps,omitempty"` + HonorTimestamps *bool `json:"honorTimestamps,omitempty,case:ignore"` // MaxScrapeSize defines a maximum size of scraped data for a job // +optional - MaxScrapeSize string `json:"max_scrape_size,omitempty"` + MaxScrapeSize string `json:"max_scrape_size,omitempty,case:ignore"` // VMScrapeParams defines VictoriaMetrics specific scrape parameters // +optional - VMScrapeParams *VMScrapeParams `json:"vm_scrape_params,omitempty"` + VMScrapeParams *VMScrapeParams `json:"vm_scrape_params,omitempty,case:ignore"` EndpointAuth `json:",inline"` } @@ -372,25 +352,26 @@ func (p *EndpointScrapeParams) ValidateArbitraryFSAccess() error { } // EndpointAuth defines target endpoint authorization options for scrapping +// +kubebuilder:pruning:PreserveUnknownFields type EndpointAuth struct { // OAuth2 defines auth configuration // +optional OAuth2 *OAuth2 `json:"oauth2,omitempty"` // TLSConfig configuration to use when scraping the endpoint // +optional - TLSConfig *TLSConfig `json:"tlsConfig,omitempty"` + TLSConfig *TLSConfig `json:"tlsConfig,omitempty,case:ignore"` // File to read bearer token for scraping targets. // +optional - BearerTokenFile string `json:"bearerTokenFile,omitempty"` + BearerTokenFile string `json:"bearerTokenFile,omitempty,case:ignore"` // Secret to mount to read bearer token for scraping targets. The secret // needs to be in the same namespace as the scrape object and accessible by // the victoria-metrics operator. // +optional // +nullable - BearerTokenSecret *corev1.SecretKeySelector `json:"bearerTokenSecret,omitempty"` + BearerTokenSecret *corev1.SecretKeySelector `json:"bearerTokenSecret,omitempty,case:ignore"` // BasicAuth allow an endpoint to authenticate over basic authentication // +optional - BasicAuth *BasicAuth `json:"basicAuth,omitempty"` + BasicAuth *BasicAuth `json:"basicAuth,omitempty,case:ignore"` // Authorization with http header Authorization // +optional Authorization *Authorization `json:"authorization,omitempty"` @@ -432,13 +413,14 @@ func (a *EndpointAuth) validateArbitraryFSAccess() error { } // EndpointRelabelings defines service discovery and metrics relabeling configuration for endpoints +// +kubebuilder:pruning:PreserveUnknownFields type EndpointRelabelings struct { // MetricRelabelConfigs to apply to samples after scrapping. // +optional - MetricRelabelConfigs []*RelabelConfig `json:"metricRelabelConfigs,omitempty"` + MetricRelabelConfigs []*RelabelConfig `json:"metricRelabelConfigs,omitempty,case:ignore"` // RelabelConfigs to apply to samples during service discovery. // +optional - RelabelConfigs []*RelabelConfig `json:"relabelConfigs,omitempty"` + RelabelConfigs []*RelabelConfig `json:"relabelConfigs,omitempty,case:ignore"` } func (r *EndpointRelabelings) validate() error { @@ -452,136 +434,138 @@ func (r *EndpointRelabelings) validate() error { } // CommonScrapeSecurityEnforcements defines security configuration for endpoint scrapping +// +kubebuilder:pruning:PreserveUnknownFields type CommonScrapeSecurityEnforcements struct { // OverrideHonorLabels if set to true overrides all user configured honor_labels. // If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. // +optional - OverrideHonorLabels bool `json:"overrideHonorLabels,omitempty"` + OverrideHonorLabels bool `json:"overrideHonorLabels,omitempty,case:ignore"` // OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. // +optional - OverrideHonorTimestamps bool `json:"overrideHonorTimestamps,omitempty"` + OverrideHonorTimestamps bool `json:"overrideHonorTimestamps,omitempty,case:ignore"` // IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from // scrape objects, and they will only discover endpoints // within their current namespace. Defaults to false. // +optional - IgnoreNamespaceSelectors bool `json:"ignoreNamespaceSelectors,omitempty"` + IgnoreNamespaceSelectors bool `json:"ignoreNamespaceSelectors,omitempty,case:ignore"` // 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. // +optional - EnforcedNamespaceLabel string `json:"enforcedNamespaceLabel,omitempty"` + EnforcedNamespaceLabel string `json:"enforcedNamespaceLabel,omitempty,case:ignore"` // ArbitraryFSAccessThroughSMs configures whether configuration // based on EndpointAuth can access arbitrary files on the file system // of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs // +optional - ArbitraryFSAccessThroughSMs ArbitraryFSAccessThroughSMsConfig `json:"arbitraryFSAccessThroughSMs,omitempty"` + ArbitraryFSAccessThroughSMs ArbitraryFSAccessThroughSMsConfig `json:"arbitraryFSAccessThroughSMs,omitempty,case:ignore"` } +// +kubebuilder:pruning:PreserveUnknownFields type CommonScrapeParams struct { // GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. // +optional - GlobalScrapeMetricRelabelConfigs []*RelabelConfig `json:"globalScrapeMetricRelabelConfigs,omitempty"` + GlobalScrapeMetricRelabelConfigs []*RelabelConfig `json:"globalScrapeMetricRelabelConfigs,omitempty,case:ignore"` // GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. // +optional - GlobalScrapeRelabelConfigs []*RelabelConfig `json:"globalScrapeRelabelConfigs,omitempty"` + GlobalScrapeRelabelConfigs []*RelabelConfig `json:"globalScrapeRelabelConfigs,omitempty,case:ignore"` // ScrapeInterval defines how often scrape targets by default // +optional // +kubebuilder:validation:Pattern:="[0-9]+(ms|s|m|h)" - ScrapeInterval string `json:"scrapeInterval,omitempty"` + ScrapeInterval string `json:"scrapeInterval,omitempty,case:ignore"` // ScrapeTimeout defines global timeout for targets scrape // +optional // +kubebuilder:validation:Pattern:="[0-9]+(ms|s|m|h)" - ScrapeTimeout string `json:"scrapeTimeout,omitempty"` + ScrapeTimeout string `json:"scrapeTimeout,omitempty,case:ignore"` // SampleLimit defines global per target limit of scraped samples // +optional - SampleLimit int `json:"sampleLimit,omitempty"` + SampleLimit int `json:"sampleLimit,omitempty,case:ignore"` // SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector. // with selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector // Operator selects all exist serviceScrapes // with selectAllByDefault: false - selects nothing // +optional - SelectAllByDefault bool `json:"selectAllByDefault,omitempty"` + SelectAllByDefault bool `json:"selectAllByDefault,omitempty,case:ignore"` // ServiceScrapeSelector defines ServiceScrapes to be selected for target discovery. // Works in combination with NamespaceSelector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - ServiceScrapeSelector *metav1.LabelSelector `json:"serviceScrapeSelector,omitempty"` + ServiceScrapeSelector *metav1.LabelSelector `json:"serviceScrapeSelector,omitempty,case:ignore"` // ServiceScrapeNamespaceSelector Namespaces to be selected for VMServiceScrape discovery. // Works in combination with Selector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - ServiceScrapeNamespaceSelector *metav1.LabelSelector `json:"serviceScrapeNamespaceSelector,omitempty"` + ServiceScrapeNamespaceSelector *metav1.LabelSelector `json:"serviceScrapeNamespaceSelector,omitempty,case:ignore"` // PodScrapeSelector defines PodScrapes to be selected for target discovery. // Works in combination with NamespaceSelector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - PodScrapeSelector *metav1.LabelSelector `json:"podScrapeSelector,omitempty"` + PodScrapeSelector *metav1.LabelSelector `json:"podScrapeSelector,omitempty,case:ignore"` // PodScrapeNamespaceSelector defines Namespaces to be selected for VMPodScrape discovery. // Works in combination with Selector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - PodScrapeNamespaceSelector *metav1.LabelSelector `json:"podScrapeNamespaceSelector,omitempty"` + PodScrapeNamespaceSelector *metav1.LabelSelector `json:"podScrapeNamespaceSelector,omitempty,case:ignore"` // ProbeSelector defines VMProbe to be selected for target probing. // Works in combination with NamespaceSelector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - ProbeSelector *metav1.LabelSelector `json:"probeSelector,omitempty"` + ProbeSelector *metav1.LabelSelector `json:"probeSelector,omitempty,case:ignore"` // ProbeNamespaceSelector defines Namespaces to be selected for VMProbe discovery. // Works in combination with Selector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - ProbeNamespaceSelector *metav1.LabelSelector `json:"probeNamespaceSelector,omitempty"` + ProbeNamespaceSelector *metav1.LabelSelector `json:"probeNamespaceSelector,omitempty,case:ignore"` // NodeScrapeSelector defines VMNodeScrape to be selected for scraping. // Works in combination with NamespaceSelector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - NodeScrapeSelector *metav1.LabelSelector `json:"nodeScrapeSelector,omitempty"` + NodeScrapeSelector *metav1.LabelSelector `json:"nodeScrapeSelector,omitempty,case:ignore"` // NodeScrapeNamespaceSelector defines Namespaces to be selected for VMNodeScrape discovery. // Works in combination with Selector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - NodeScrapeNamespaceSelector *metav1.LabelSelector `json:"nodeScrapeNamespaceSelector,omitempty"` + NodeScrapeNamespaceSelector *metav1.LabelSelector `json:"nodeScrapeNamespaceSelector,omitempty,case:ignore"` // StaticScrapeSelector defines VMStaticScrape to be selected for target discovery. // Works in combination with NamespaceSelector. // If both nil - match everything. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // +optional - StaticScrapeSelector *metav1.LabelSelector `json:"staticScrapeSelector,omitempty"` + StaticScrapeSelector *metav1.LabelSelector `json:"staticScrapeSelector,omitempty,case:ignore"` // StaticScrapeNamespaceSelector defines Namespaces to be selected for VMStaticScrape discovery. // Works in combination with NamespaceSelector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - StaticScrapeNamespaceSelector *metav1.LabelSelector `json:"staticScrapeNamespaceSelector,omitempty"` + StaticScrapeNamespaceSelector *metav1.LabelSelector `json:"staticScrapeNamespaceSelector,omitempty,case:ignore"` // ScrapeConfigSelector defines VMScrapeConfig to be selected for target discovery. // Works in combination with NamespaceSelector. // +optional - ScrapeConfigSelector *metav1.LabelSelector `json:"scrapeConfigSelector,omitempty"` + ScrapeConfigSelector *metav1.LabelSelector `json:"scrapeConfigSelector,omitempty,case:ignore"` // ScrapeConfigNamespaceSelector defines Namespaces to be selected for VMScrapeConfig discovery. // Works in combination with Selector. // NamespaceSelector nil - only objects at VMAgent or VMSingle namespace. // Selector nil - only objects at NamespaceSelector namespaces. // If both nil - behaviour controlled by selectAllByDefault // +optional - ScrapeConfigNamespaceSelector *metav1.LabelSelector `json:"scrapeConfigNamespaceSelector,omitempty"` + ScrapeConfigNamespaceSelector *metav1.LabelSelector `json:"scrapeConfigNamespaceSelector,omitempty,case:ignore"` // InlineScrapeConfig 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release @@ -593,77 +577,77 @@ type CommonScrapeParams struct { // static_configs: // - targets: ["localhost:9090"] // +optional - InlineScrapeConfig string `json:"inlineScrapeConfig,omitempty"` + InlineScrapeConfig string `json:"inlineScrapeConfig,omitempty,case:ignore"` // AdditionalScrapeConfigs 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release // notes to ensure that no incompatible scrape configs are going to break // VMAgent or VMSingle after the upgrade. // +optional - AdditionalScrapeConfigs *corev1.SecretKeySelector `json:"additionalScrapeConfigs,omitempty"` + AdditionalScrapeConfigs *corev1.SecretKeySelector `json:"additionalScrapeConfigs,omitempty,case:ignore"` // ServiceScrapeRelabelTemplate defines relabel config, that will be added to each VMServiceScrape. // it's useful for adding specific labels to all targets // +optional - ServiceScrapeRelabelTemplate []*RelabelConfig `json:"serviceScrapeRelabelTemplate,omitempty"` + ServiceScrapeRelabelTemplate []*RelabelConfig `json:"serviceScrapeRelabelTemplate,omitempty,case:ignore"` // PodScrapeRelabelTemplate defines relabel config, that will be added to each VMPodScrape. // it's useful for adding specific labels to all targets // +optional - PodScrapeRelabelTemplate []*RelabelConfig `json:"podScrapeRelabelTemplate,omitempty"` + PodScrapeRelabelTemplate []*RelabelConfig `json:"podScrapeRelabelTemplate,omitempty,case:ignore"` // NodeScrapeRelabelTemplate defines relabel config, that will be added to each VMNodeScrape. // it's useful for adding specific labels to all targets // +optional - NodeScrapeRelabelTemplate []*RelabelConfig `json:"nodeScrapeRelabelTemplate,omitempty"` + NodeScrapeRelabelTemplate []*RelabelConfig `json:"nodeScrapeRelabelTemplate,omitempty,case:ignore"` // StaticScrapeRelabelTemplate defines relabel config, that will be added to each VMStaticScrape. // it's useful for adding specific labels to all targets // +optional - StaticScrapeRelabelTemplate []*RelabelConfig `json:"staticScrapeRelabelTemplate,omitempty"` + StaticScrapeRelabelTemplate []*RelabelConfig `json:"staticScrapeRelabelTemplate,omitempty,case:ignore"` // ProbeScrapeRelabelTemplate defines relabel config, that will be added to each VMProbeScrape. // it's useful for adding specific labels to all targets // +optional - ProbeScrapeRelabelTemplate []*RelabelConfig `json:"probeScrapeRelabelTemplate,omitempty"` + ProbeScrapeRelabelTemplate []*RelabelConfig `json:"probeScrapeRelabelTemplate,omitempty,case:ignore"` // ScrapeConfigRelabelTemplate defines relabel config, that will be added to each VMScrapeConfig. // it's useful for adding specific labels to all targets // +optional - ScrapeConfigRelabelTemplate []*RelabelConfig `json:"scrapeConfigRelabelTemplate,omitempty"` + ScrapeConfigRelabelTemplate []*RelabelConfig `json:"scrapeConfigRelabelTemplate,omitempty,case:ignore"` // MinScrapeInterval allows limiting minimal scrape interval for VMServiceScrape, VMPodScrape and other scrapes // If interval is lower than defined limit, `minScrapeInterval` will be used. - MinScrapeInterval *string `json:"minScrapeInterval,omitempty"` + MinScrapeInterval *string `json:"minScrapeInterval,omitempty,case:ignore"` // ScrapeClasses defines the list of scrape classes to expose to scraping objects such as // PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. // +listType=map // +listMapKey=name // +optional - ScrapeClasses []ScrapeClass `json:"scrapeClasses,omitempty"` + ScrapeClasses []ScrapeClass `json:"scrapeClasses,omitempty,case:ignore"` // MaxScrapeInterval allows limiting maximum scrape interval for VMServiceScrape, VMPodScrape and other scrapes // If interval is higher than defined limit, `maxScrapeInterval` will be used. - MaxScrapeInterval *string `json:"maxScrapeInterval,omitempty"` + MaxScrapeInterval *string `json:"maxScrapeInterval,omitempty,case:ignore"` // VMAgentExternalLabelName Name of vmAgent external label used to denote vmAgent instance // name. Defaults to the value of `prometheus`. External label will // _not_ be added when value is set to empty string (`""`). // +notes={deprecated_in: "v0.67.0", removed_in: "v0.69.0", replacements: {externalLabelName}} // +optional - VMAgentExternalLabelName *string `json:"vmAgentExternalLabelName,omitempty"` + VMAgentExternalLabelName *string `json:"vmAgentExternalLabelName,omitempty,case:ignore"` // ExternalLabelName Name of external label used to denote scraping agent instance // name. Defaults to the value of `prometheus`. External label will // _not_ be added when value is set to empty string (`""`). // +optional - ExternalLabelName *string `json:"externalLabelName,omitempty"` + ExternalLabelName *string `json:"externalLabelName,omitempty,case:ignore"` // ExternalLabels The labels to add to any time series scraped by vmagent or vmsingle. // it doesn't affect metrics ingested directly by push API's // +optional - ExternalLabels map[string]string `json:"externalLabels,omitempty"` + ExternalLabels map[string]string `json:"externalLabels,omitempty,case:ignore"` // IngestOnlyMode switches vmagent or vmsingle into unmanaged mode // it disables any config generation for scraping // Currently it prevents vmagent or vmsingle from managing tls and auth options for remote write // +optional - IngestOnlyMode *bool `json:"ingestOnlyMode,omitempty"` + IngestOnlyMode *bool `json:"ingestOnlyMode,omitempty,case:ignore"` // EnableKubernetesAPISelectors instructs vmagent or vmsingle to use CRD scrape objects spec.selectors for // Kubernetes API list and watch requests. // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#list-and-watch-filtering // It could be useful to reduce Kubernetes API server resource usage for serving less than 100 CRD scrape objects in total. // +optional - EnableKubernetesAPISelectors bool `json:"enableKubernetesAPISelectors,omitempty"` - CommonScrapeSecurityEnforcements `json:",inline,omitempty"` + EnableKubernetesAPISelectors bool `json:"enableKubernetesAPISelectors,omitempty,case:ignore"` + CommonScrapeSecurityEnforcements `json:",inline"` } func (cr *CommonScrapeParams) externalLabelName() string { diff --git a/api/operator/v1beta1/vlogs_types.go b/api/operator/v1beta1/vlogs_types.go index 38bd094d5d..09e67b1b7e 100644 --- a/api/operator/v1beta1/vlogs_types.go +++ b/api/operator/v1beta1/vlogs_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -41,7 +42,7 @@ type VLogsSpec struct { // created by operator for the given CustomResource ManagedMetadata *ManagedObjectsMetadata `json:"managedMetadata,omitempty"` - CommonAppsParams `json:",inline,omitempty"` + CommonAppsParams `json:",inline"` // LogLevel for VictoriaLogs to be configured with. // +optional @@ -181,7 +182,7 @@ func (cr *VLogs) UnmarshalJSON(src []byte) error { type pcr VLogs type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmagent_types.go b/api/operator/v1beta1/vmagent_types.go index 8c2e295266..77036fa3c6 100644 --- a/api/operator/v1beta1/vmagent_types.go +++ b/api/operator/v1beta1/vmagent_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -149,10 +150,10 @@ type VMAgentSpec struct { // +optional VPA *EmbeddedVPA `json:"vpa,omitempty"` - CommonRelabelParams `json:",inline,omitempty"` - CommonScrapeParams `json:",inline,omitempty"` - CommonConfigReloaderParams `json:",inline,omitempty"` - CommonAppsParams `json:",inline,omitempty"` + CommonRelabelParams `json:",inline"` + CommonScrapeParams `json:",inline"` + CommonConfigReloaderParams `json:",inline"` + CommonAppsParams `json:",inline"` } func (cr *VMAgent) Validate() error { @@ -310,7 +311,7 @@ func (cr *VMAgent) UnmarshalJSON(src []byte) error { type pcr VMAgent type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmalert_types.go b/api/operator/v1beta1/vmalert_types.go index e1c2b94cdb..a85e2ca861 100644 --- a/api/operator/v1beta1/vmalert_types.go +++ b/api/operator/v1beta1/vmalert_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "net/url" "strings" @@ -165,8 +166,8 @@ type VMAlertSpec struct { // +optional ComponentVersion string `json:"componentVersion,omitempty"` - CommonConfigReloaderParams `json:",inline,omitempty"` - CommonAppsParams `json:",inline,omitempty"` + CommonConfigReloaderParams `json:",inline"` + CommonAppsParams `json:",inline"` } // GetReloadURL implements reloadable interface @@ -194,7 +195,7 @@ func (cr *VMAlert) UnmarshalJSON(src []byte) error { type pcr VMAlert type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { @@ -214,7 +215,7 @@ type VMAlertDatasourceSpec struct { // Victoria Metrics or VMSelect url. Required parameter. E.g. http://127.0.0.1:8428 URL string `json:"url"` // HTTPAuth generic auth methods - HTTPAuth `json:",inline,omitempty"` + HTTPAuth `json:",inline"` } // VMAlertNotifierSpec defines the notifier url for sending information about alerts @@ -229,7 +230,7 @@ type VMAlertNotifierSpec struct { // +optional Selector *DiscoverySelector `json:"selector,omitempty"` - HTTPAuth `json:",inline,omitempty"` + HTTPAuth `json:",inline"` } func (ns *VMAlertNotifierSpec) validate() error { @@ -256,7 +257,7 @@ type VMAlertRemoteReadSpec struct { // +optional Lookback *string `json:"lookback,omitempty"` - HTTPAuth `json:",inline,omitempty"` + HTTPAuth `json:",inline"` } // VMAlertRemoteWriteSpec defines the remote storage configuration for VmAlert @@ -278,7 +279,7 @@ type VMAlertRemoteWriteSpec struct { // +optional MaxQueueSize *int32 `json:"maxQueueSize,omitempty"` // HTTPAuth generic auth methods - HTTPAuth `json:",inline,omitempty"` + HTTPAuth `json:",inline"` } // VMAlertStatus defines the observed state of VMAlert diff --git a/api/operator/v1beta1/vmalertmanager_types.go b/api/operator/v1beta1/vmalertmanager_types.go index bbe5b34273..ca0d1f5ba6 100644 --- a/api/operator/v1beta1/vmalertmanager_types.go +++ b/api/operator/v1beta1/vmalertmanager_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "net/url" "path" @@ -230,8 +231,8 @@ type VMAlertmanagerSpec struct { // +optional VPA *EmbeddedVPA `json:"vpa,omitempty"` - CommonConfigReloaderParams `json:",inline,omitempty"` - CommonAppsParams `json:",inline,omitempty"` + CommonConfigReloaderParams `json:",inline"` + CommonAppsParams `json:",inline"` } // GetReloadURL implements reloadable interface @@ -300,7 +301,7 @@ func (cr *VMAlertmanager) UnmarshalJSON(src []byte) error { type pcr VMAlertmanager type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmalertmanagerconfig_test.go b/api/operator/v1beta1/vmalertmanagerconfig_test.go deleted file mode 100644 index d540e8940a..0000000000 --- a/api/operator/v1beta1/vmalertmanagerconfig_test.go +++ /dev/null @@ -1 +0,0 @@ -package v1beta1 diff --git a/api/operator/v1beta1/vmalertmanagerconfig_types.go b/api/operator/v1beta1/vmalertmanagerconfig_types.go index c253255b73..87b2e28786 100644 --- a/api/operator/v1beta1/vmalertmanagerconfig_types.go +++ b/api/operator/v1beta1/vmalertmanagerconfig_types.go @@ -17,9 +17,9 @@ limitations under the License. package v1beta1 import ( - "bytes" "context" - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "html/template" "log/slog" @@ -42,6 +42,7 @@ import ( "k8s.io/apimachinery/pkg/util/sets" ) +// +kubebuilder:pruning:PreserveUnknownFields // VMAlertmanagerConfigSpec defines configuration for VMAlertmanagerConfig // it must reference only locally defined objects type VMAlertmanagerConfigSpec struct { @@ -54,13 +55,14 @@ type VMAlertmanagerConfigSpec struct { // InhibitRules will only apply for alerts matching // the resource's namespace. // +optional - InhibitRules []InhibitRule `json:"inhibit_rules,omitempty" yaml:"inhibit_rules,omitempty"` + InhibitRules []InhibitRule `json:"inhibit_rules,omitempty,case:ignore" yaml:"inhibit_rules,omitempty"` // TimeIntervals defines named interval for active/mute notifications interval // See https://prometheus.io/docs/alerting/latest/configuration/#time_interval // +optional - TimeIntervals []TimeIntervals `json:"time_intervals,omitempty" yaml:"time_intervals,omitempty"` + TimeIntervals []TimeIntervals `json:"time_intervals,omitempty,case:ignore" yaml:"time_intervals,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields // TimeIntervals for alerts type TimeIntervals struct { // Name of interval @@ -68,9 +70,10 @@ type TimeIntervals struct { Name string `json:"name,omitempty"` // TimeIntervals interval configuration // +required - TimeIntervals []TimeInterval `json:"time_intervals" yaml:"time_intervals"` + TimeIntervals []TimeInterval `json:"time_intervals,case:ignore" yaml:"time_intervals"` } +// +kubebuilder:pruning:PreserveUnknownFields // TimeInterval defines intervals of time type TimeInterval struct { // Times defines time range for mute @@ -82,7 +85,7 @@ type TimeInterval struct { // DayOfMonth defines list of numerical days in the month. Days begin at 1. Negative values are also accepted. // for example, ['1:5', '-3:-1'] // +optional - DaysOfMonth []string `json:"days_of_month,omitempty" yaml:"days_of_month,omitempty"` + DaysOfMonth []string `json:"days_of_month,omitempty,case:ignore" yaml:"days_of_month,omitempty"` // Months defines list of calendar months identified by a case-insensitive name (e.g. ‘January’) or numeric 1. // For example, ['1:3', 'may:august', 'december'] // +optional @@ -96,14 +99,15 @@ type TimeInterval struct { Location string `json:"location,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields // TimeRange ranges inclusive of the starting time and exclusive of the end time type TimeRange struct { // StartTime for example HH:MM // +required - StartTime string `json:"start_time" yaml:"start_time"` + StartTime string `json:"start_time,case:ignore" yaml:"start_time"` // EndTime for example HH:MM // +required - EndTime string `json:"end_time" yaml:"end_time"` + EndTime string `json:"end_time,case:ignore" yaml:"end_time"` } // GetStatusMetadata implements reconcile.objectWithStatus interface @@ -269,7 +273,7 @@ type VMAlertmanagerConfigStatus struct { // ObservedGeneration defines current generation picked by operator for the // reconcile StatusMetadata `json:",inline"` - LastErrorParentAlertmanagerName string `json:"lastErrorParentAlertmanagerName,omitempty"` + LastErrorParentAlertmanagerName string `json:"lastErrorParentAlertmanagerName,omitempty,case:ignore"` // ParsingSpecError contents error with context if operator was failed to parse json object from kubernetes api server ParsingSpecError string `json:"-" yaml:"-"` } @@ -299,6 +303,7 @@ type VMAlertmanagerConfigList struct { Items []VMAlertmanagerConfig `json:"items"` } +// +kubebuilder:pruning:PreserveUnknownFields // Route defines a node in the routing tree. type Route struct { // Name of the receiver for this route. @@ -306,19 +311,19 @@ type Route struct { Receiver string `json:"receiver"` // List of labels to group by. // +optional - GroupBy []string `json:"group_by,omitempty"` + GroupBy []string `json:"group_by,omitempty,case:ignore"` // How long to wait before sending the initial notification. // +kubebuilder:validation:Pattern:="[0-9]+(ms|s|m|h)" // +optional - GroupWait string `json:"group_wait,omitempty"` + GroupWait string `json:"group_wait,omitempty,case:ignore"` // How long to wait before sending an updated notification. // +kubebuilder:validation:Pattern:="[0-9]+(ms|s|m|h)" // +optional - GroupInterval string `json:"group_interval,omitempty"` + GroupInterval string `json:"group_interval,omitempty,case:ignore"` // How long to wait before repeating the last notification. // +kubebuilder:validation:Pattern:="[0-9]+(ms|s|m|h)" // +optional - RepeatInterval string `json:"repeat_interval,omitempty"` + RepeatInterval string `json:"repeat_interval,omitempty,case:ignore"` // List of matchers that the alert’s labels should match. For the first // level route, the operator adds a namespace: "CRD_NS" matcher. // https://prometheus.io/docs/alerting/latest/configuration/#matcher @@ -339,11 +344,11 @@ type Route struct { RawRoutes []apiextensionsv1.JSON `json:"routes,omitempty" yaml:"routes,omitempty"` // MuteTimeIntervals is a list of interval names that will mute matched alert // +optional - MuteTimeIntervals []string `json:"mute_time_intervals,omitempty" yaml:"mute_time_intervals,omitempty"` + MuteTimeIntervals []string `json:"mute_time_intervals,omitempty,case:ignore" yaml:"mute_time_intervals,omitempty"` // ActiveTimeIntervals Times when the route should be active // These must match the name at time_intervals // +optional - ActiveTimeIntervals []string `json:"active_time_intervals,omitempty" yaml:"active_time_intervals,omitempty"` + ActiveTimeIntervals []string `json:"active_time_intervals,omitempty,case:ignore" yaml:"active_time_intervals,omitempty"` } // SubRoute alias for Route, its needed to proper use json parsing with raw input @@ -364,9 +369,7 @@ func parseNestedRoutes(src *Route) error { return fmt.Errorf("unexpected empty route") } var subRoute Route - decoder := json.NewDecoder(bytes.NewReader(nestedRoute.Raw)) - decoder.DisallowUnknownFields() - if err := decoder.Decode(&subRoute); err != nil { + if err := UnmarshalSpecStrict(nestedRoute.Raw, &subRoute); err != nil { return fmt.Errorf("cannot parse json value=%s for nested route: %w", string(nestedRoute.Raw), err) } if err := parseNestedRoutes(&subRoute); err != nil { @@ -383,7 +386,7 @@ func (cr *VMAlertmanagerConfig) UnmarshalJSON(src []byte) error { type pcr VMAlertmanagerConfig type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { @@ -402,6 +405,7 @@ func (cr *VMAlertmanagerConfig) UnmarshalJSON(src []byte) error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // InhibitRule defines an inhibition rule that allows to mute alerts when other // alerts are already firing. // Note, it doesn't support deprecated alertmanager config options. @@ -410,11 +414,11 @@ type InhibitRule struct { // TargetMatchers defines a list of matchers that have to be fulfilled by the target // alerts to be muted. // +optional - TargetMatchers []string `json:"target_matchers,omitempty"` + TargetMatchers []string `json:"target_matchers,omitempty,case:ignore"` // SourceMatchers defines a list of matchers for which one or more alerts have // to exist for the inhibition to take effect. // +optional - SourceMatchers []string `json:"source_matchers,omitempty"` + SourceMatchers []string `json:"source_matchers,omitempty,case:ignore"` // Labels that must have an equal value in the source and target alert for // the inhibition to take effect. @@ -422,6 +426,7 @@ type InhibitRule struct { Equal []string `json:"equal,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields // Receiver defines one or more notification integrations. type Receiver struct { // Name of the receiver. Must be unique across all items from the list. @@ -430,86 +435,87 @@ type Receiver struct { Name string `json:"name"` // EmailConfigs defines email notification configurations. // +optional - EmailConfigs []EmailConfig `json:"email_configs,omitempty" yaml:"email_configs,omitempty"` + EmailConfigs []EmailConfig `json:"email_configs,omitempty,case:ignore" yaml:"email_configs,omitempty"` // PagerDutyConfigs defines pager duty notification configurations. // +optional - PagerDutyConfigs []PagerDutyConfig `json:"pagerduty_configs,omitempty" yaml:"pagerduty_configs,omitempty"` + PagerDutyConfigs []PagerDutyConfig `json:"pagerduty_configs,omitempty,case:ignore" yaml:"pagerduty_configs,omitempty"` // PushoverConfigs defines push over notification configurations. // +optional - PushoverConfigs []PushoverConfig `json:"pushover_configs,omitempty" yaml:"pushover_configs,omitempty"` + PushoverConfigs []PushoverConfig `json:"pushover_configs,omitempty,case:ignore" yaml:"pushover_configs,omitempty"` // SlackConfigs defines slack notification configurations. // +optional - SlackConfigs []SlackConfig `json:"slack_configs,omitempty" yaml:"slack_configs,omitempty"` + SlackConfigs []SlackConfig `json:"slack_configs,omitempty,case:ignore" yaml:"slack_configs,omitempty"` // OpsGenieConfigs defines ops genie notification configurations. // +optional - OpsGenieConfigs []OpsGenieConfig `json:"opsgenie_configs,omitempty" yaml:"opsgenie_configs,omitempty"` + OpsGenieConfigs []OpsGenieConfig `json:"opsgenie_configs,omitempty,case:ignore" yaml:"opsgenie_configs,omitempty"` // WebhookConfigs defines webhook notification configurations. // +optional - WebhookConfigs []WebhookConfig `json:"webhook_configs,omitempty" yaml:"webhook_configs,omitempty"` + WebhookConfigs []WebhookConfig `json:"webhook_configs,omitempty,case:ignore" yaml:"webhook_configs,omitempty"` // MattermostConfigs defines Mattermost notification configurations. // +optional - MattermostConfigs []MattermostConfig `json:"mattermost_configs,omitempty" yaml:"mattermost_configs,omitempty"` + MattermostConfigs []MattermostConfig `json:"mattermost_configs,omitempty,case:ignore" yaml:"mattermost_configs,omitempty"` // VictorOpsConfigs defines victor ops notification configurations. // +optional - VictorOpsConfigs []VictorOpsConfig `json:"victorops_configs,omitempty" yaml:"victorops_configs,omitempty"` + VictorOpsConfigs []VictorOpsConfig `json:"victorops_configs,omitempty,case:ignore" yaml:"victorops_configs,omitempty"` // WechatConfigs defines wechat notification configurations. // +optional - WechatConfigs []WechatConfig `json:"wechat_configs,omitempty" yaml:"wechat_configs,omitempty"` + WechatConfigs []WechatConfig `json:"wechat_configs,omitempty,case:ignore" yaml:"wechat_configs,omitempty"` // +optional - TelegramConfigs []TelegramConfig `json:"telegram_configs,omitempty" yaml:"telegram_configs,omitempty"` + TelegramConfigs []TelegramConfig `json:"telegram_configs,omitempty,case:ignore" yaml:"telegram_configs,omitempty"` // +optional - MSTeamsConfigs []MSTeamsConfig `json:"msteams_configs,omitempty" yaml:"msteams_configs,omitempty"` + MSTeamsConfigs []MSTeamsConfig `json:"msteams_configs,omitempty,case:ignore" yaml:"msteams_configs,omitempty"` // +optional - DiscordConfigs []DiscordConfig `json:"discord_configs,omitempty" yaml:"discord_configs,omitempty"` + DiscordConfigs []DiscordConfig `json:"discord_configs,omitempty,case:ignore" yaml:"discord_configs,omitempty"` // +optional - SNSConfigs []SNSConfig `json:"sns_configs,omitempty" yaml:"sns_configs,omitempty"` + SNSConfigs []SNSConfig `json:"sns_configs,omitempty,case:ignore" yaml:"sns_configs,omitempty"` // +optional - WebexConfigs []WebexConfig `json:"webex_configs,omitempty" yaml:"webex_configs,omitempty"` + WebexConfigs []WebexConfig `json:"webex_configs,omitempty,case:ignore" yaml:"webex_configs,omitempty"` // +optional // +notes={available_from: "v0.55.0"} - JiraConfigs []JiraConfig `json:"jira_configs,omitempty" yaml:"jira_configs,omitempty"` + JiraConfigs []JiraConfig `json:"jira_configs,omitempty,case:ignore" yaml:"jira_configs,omitempty"` // +optional // +notes={available_from: "v0.66.0"} - IncidentioConfigs []IncidentioConfig `json:"incidentio_configs,omitempty" yaml:"incidentio_configs,omitempty"` + IncidentioConfigs []IncidentioConfig `json:"incidentio_configs,omitempty,case:ignore" yaml:"incidentio_configs,omitempty"` // +optional // +notes={available_from: "v0.55.0"} - RocketchatConfigs []RocketchatConfig `json:"rocketchat_configs,omitempty" yaml:"rocketchat_configs,omitempty"` + RocketchatConfigs []RocketchatConfig `json:"rocketchat_configs,omitempty,case:ignore" yaml:"rocketchat_configs,omitempty"` // +optional // +notes={available_from: "v0.55.0"} - MSTeamsV2Configs []MSTeamsV2Config `json:"msteamsv2_configs,omitempty" yaml:"msteamsv2_configs,omitempty"` + MSTeamsV2Configs []MSTeamsV2Config `json:"msteamsv2_configs,omitempty,case:ignore" yaml:"msteamsv2_configs,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields // TelegramConfig configures notification via telegram // https://prometheus.io/docs/alerting/latest/configuration/#telegram_config type TelegramConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // APIUrl the Telegram API URL i.e. https://api.telegram.org. // +optional - APIUrl string `json:"api_url,omitempty" yaml:"api_url,omitempty"` + APIUrl string `json:"api_url,omitempty,case:ignore" yaml:"api_url,omitempty"` // BotToken token for the bot // https://core.telegram.org/bots/api - BotToken *corev1.SecretKeySelector `json:"bot_token" yaml:"bot_token"` + BotToken *corev1.SecretKeySelector `json:"bot_token,case:ignore" yaml:"bot_token"` // ChatID is ID of the chat where to send the messages. - ChatID int `json:"chat_id" yaml:"chat_id"` + ChatID int `json:"chat_id,case:ignore" yaml:"chat_id"` // MessageThreadID defines ID of the message thread where to send the messages. // +optional - MessageThreadID int `json:"message_thread_id,omitempty"` + MessageThreadID int `json:"message_thread_id,omitempty,case:ignore"` // Message is templated message // +optional Message string `json:"message,omitempty"` // DisableNotifications // +optional - DisableNotifications *bool `json:"disable_notifications,omitempty" yaml:"disable_notifications,omitempty"` + DisableNotifications *bool `json:"disable_notifications,omitempty,case:ignore" yaml:"disable_notifications,omitempty"` // ParseMode for telegram message, // supported values are MarkdownV2, Markdown, Markdown and empty string for plain text. // +optional - ParseMode string `json:"parse_mode,omitempty" yaml:"parse_mode"` + ParseMode string `json:"parse_mode,omitempty,case:ignore" yaml:"parse_mode"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *TelegramConfig) validate() error { @@ -531,12 +537,13 @@ func (c *TelegramConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // WebhookConfig configures notifications via a generic receiver supporting the webhook payload. // See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config type WebhookConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // URL to send requests to, // one of `urlSecret` and `url` must be defined. // +optional @@ -545,14 +552,14 @@ type WebhookConfig struct { // It must contain the webhook URL. // one of `urlSecret` and `url` must be defined. // +optional - URLSecret *corev1.SecretKeySelector `json:"url_secret,omitempty" yaml:"url_secret,omitempty"` + URLSecret *corev1.SecretKeySelector `json:"url_secret,omitempty,case:ignore" yaml:"url_secret,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` // Maximum number of alerts to be sent per webhook message. When 0, all alerts are included. // +optional // +kubebuilder:validation:Minimum=0 - MaxAlerts int32 `json:"max_alerts,omitempty" yaml:"max_alerts,omitempty"` + MaxAlerts int32 `json:"max_alerts,omitempty,case:ignore" yaml:"max_alerts,omitempty"` // Timeout is the maximum time allowed to invoke the webhook // available since v0.28.0 alertmanager version // +kubebuilder:validation:Pattern:="^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" @@ -578,40 +585,41 @@ func (c *WebhookConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // WechatConfig configures notifications via Wechat. // See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config type WechatConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The secret's key that contains the WeChat API key. // The secret needs to be in the same namespace as the AlertmanagerConfig // fallback to global alertmanager setting if empty // +optional - APISecret *corev1.SecretKeySelector `json:"api_secret,omitempty" yaml:"api_secret,omitempty"` + APISecret *corev1.SecretKeySelector `json:"api_secret,omitempty,case:ignore" yaml:"api_secret,omitempty"` // The WeChat API URL. // fallback to global alertmanager setting if empty // +optional - APIURL string `json:"api_url,omitempty" yaml:"api_url,omitempty"` + APIURL string `json:"api_url,omitempty,case:ignore" yaml:"api_url,omitempty"` // The corp id for authentication. // fallback to global alertmanager setting if empty // +optional - CorpID string `json:"corp_id,omitempty" yaml:"corp_id,omitempty"` + CorpID string `json:"corp_id,omitempty,case:ignore" yaml:"corp_id,omitempty"` // +optional - AgentID string `json:"agent_id,omitempty" yaml:"agent_id,omitempty"` + AgentID string `json:"agent_id,omitempty,case:ignore" yaml:"agent_id,omitempty"` // +optional - ToUser string `json:"to_user,omitempty" yaml:"to_user,omitempty"` + ToUser string `json:"to_user,omitempty,case:ignore" yaml:"to_user,omitempty"` // +optional - ToParty string `json:"to_party,omitempty" yaml:"to_party,omitempty"` + ToParty string `json:"to_party,omitempty,case:ignore" yaml:"to_party,omitempty"` // +optional - ToTag string `json:"to_tag,omitempty" yaml:"to_tag,omitempty"` + ToTag string `json:"to_tag,omitempty,case:ignore" yaml:"to_tag,omitempty"` // API request data as defined by the WeChat API. Message string `json:"message,omitempty"` // +optional - MessageType string `json:"message_type,omitempty" yaml:"message_type,omitempty"` + MessageType string `json:"message_type,omitempty,case:ignore" yaml:"message_type,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *WechatConfig) validate() error { @@ -626,11 +634,12 @@ func (c *WechatConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // EmailConfig configures notifications via Email. type EmailConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The email address to send notifications to. // +optional To string `json:"to,omitempty"` @@ -647,17 +656,17 @@ type EmailConfig struct { Smarthost string `json:"smarthost,omitempty"` // The username to use for authentication. // +optional - AuthUsername string `json:"auth_username,omitempty" yaml:"auth_username,omitempty"` + AuthUsername string `json:"auth_username,omitempty,case:ignore" yaml:"auth_username,omitempty"` // AuthPassword defines secret name and key at CRD namespace. // +optional - AuthPassword *corev1.SecretKeySelector `json:"auth_password,omitempty" yaml:"auth_password,omitempty"` + AuthPassword *corev1.SecretKeySelector `json:"auth_password,omitempty,case:ignore" yaml:"auth_password,omitempty"` // AuthSecret defines secret name and key at CRD namespace. // It must contain the CRAM-MD5 secret. // +optional - AuthSecret *corev1.SecretKeySelector `json:"auth_secret,omitempty" yaml:"auth_secret,omitempty"` + AuthSecret *corev1.SecretKeySelector `json:"auth_secret,omitempty,case:ignore" yaml:"auth_secret,omitempty"` // The identity to use for authentication. // +optional - AuthIdentity string `json:"auth_identity,omitempty" yaml:"auth_identity,omitempty"` + AuthIdentity string `json:"auth_identity,omitempty,case:ignore" yaml:"auth_identity,omitempty"` // Further headers email header key/value pairs. Overrides any headers // previously set by the notification implementation. Headers map[string]string `json:"headers,omitempty" yaml:"headers,omitempty"` @@ -670,10 +679,10 @@ type EmailConfig struct { // The SMTP TLS requirement. // Note that Go does not support unencrypted connections to remote SMTP endpoints. // +optional - RequireTLS *bool `json:"require_tls,omitempty" yaml:"require_tls,omitempty"` + RequireTLS *bool `json:"require_tls,omitempty,case:ignore" yaml:"require_tls,omitempty"` // TLS configuration // +optional - TLSConfig *TLSConfig `json:"tls_config,omitempty" yaml:"tls_config,omitempty"` + TLSConfig *TLSConfig `json:"tls_config,omitempty,case:ignore" yaml:"tls_config,omitempty"` } func (c *EmailConfig) validate() error { @@ -717,41 +726,42 @@ func (c *EmailConfig) validateArbitraryFSAccess() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // VictorOpsConfig configures notifications via VictorOps. // See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config type VictorOpsConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The secret's key that contains the API key to use when talking to the VictorOps API. // It must be at them same namespace as CRD // fallback to global setting if empty // +optional - APIKey *corev1.SecretKeySelector `json:"api_key,omitempty" yaml:"api_key,omitempty"` + APIKey *corev1.SecretKeySelector `json:"api_key,omitempty,case:ignore" yaml:"api_key,omitempty"` // The VictorOps API URL. // +optional - APIURL string `json:"api_url,omitempty" yaml:"api_url,omitempty"` + APIURL string `json:"api_url,omitempty,case:ignore" yaml:"api_url,omitempty"` // A key used to map the alert to a team. - RoutingKey string `json:"routing_key" yaml:"routing_key"` + RoutingKey string `json:"routing_key,case:ignore" yaml:"routing_key"` // Describes the behavior of the alert (CRITICAL, WARNING, INFO). // +optional - MessageType string `json:"message_type,omitempty" yaml:"message_type,omitempty"` + MessageType string `json:"message_type,omitempty,case:ignore" yaml:"message_type,omitempty"` // Contains summary of the alerted problem. // +optional - EntityDisplayName string `json:"entity_display_name,omitempty" yaml:"entity_display_name,omitempty"` + EntityDisplayName string `json:"entity_display_name,omitempty,case:ignore" yaml:"entity_display_name,omitempty"` // Contains long explanation of the alerted problem. // +optional - StateMessage string `json:"state_message,omitempty" yaml:"state_message,omitempty"` + StateMessage string `json:"state_message,omitempty,case:ignore" yaml:"state_message,omitempty"` // The monitoring tool the state message is from. // +optional - MonitoringTool string `json:"monitoring_tool,omitempty" yaml:"monitoring_tool,omitempty"` + MonitoringTool string `json:"monitoring_tool,omitempty,case:ignore" yaml:"monitoring_tool,omitempty"` // The HTTP client's configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` // Adds optional custom fields // https://github.com/prometheus/alertmanager/blob/v0.24.0/config/notifiers.go#L537 // +optional - CustomFields map[string]string `json:"custom_fields,omitempty" yaml:"custom_fields,omitempty"` + CustomFields map[string]string `json:"custom_fields,omitempty,case:ignore" yaml:"custom_fields,omitempty"` } func (c *VictorOpsConfig) validate() error { @@ -784,15 +794,16 @@ func (c *VictorOpsConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // PushoverConfig configures notifications via Pushover. // See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config type PushoverConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The secret's key that contains the recipient user’s user key. // It must be at them same namespace as CRD - UserKey *corev1.SecretKeySelector `json:"user_key,omitempty" yaml:"user_key,omitempty"` + UserKey *corev1.SecretKeySelector `json:"user_key,omitempty,case:ignore" yaml:"user_key,omitempty"` // The secret's key that contains the registered application’s API token, see https://pushover.net/apps. // It must be at them same namespace as CRD Token *corev1.SecretKeySelector `json:"token,omitempty"` @@ -807,7 +818,7 @@ type PushoverConfig struct { URL string `json:"url,omitempty"` // A title for supplementary URL, otherwise just the URL is shown // +optional - URLTitle string `json:"url_title,omitempty" yaml:"url_title,omitempty"` + URLTitle string `json:"url_title,omitempty,case:ignore" yaml:"url_title,omitempty"` // The name of one of the sounds supported by device clients to override the user's default sound choice // +optional Sound string `json:"sound,omitempty"` @@ -827,7 +838,7 @@ type PushoverConfig struct { HTML bool `json:"html,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *PushoverConfig) validate() error { @@ -843,17 +854,18 @@ func (c *PushoverConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // SlackConfig configures notifications via Slack. // See https://prometheus.io/docs/alerting/latest/configuration/#slack_config type SlackConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The secret's key that contains the Slack webhook URL. // It must be at them same namespace as CRD // fallback to global setting if empty // +optional - APIURL *corev1.SecretKeySelector `json:"api_url,omitempty" yaml:"api_url,omitempty"` + APIURL *corev1.SecretKeySelector `json:"api_url,omitempty,case:ignore" yaml:"api_url,omitempty"` // The channel or user to send notifications to. // +optional Channel string `json:"channel,omitempty"` @@ -864,7 +876,7 @@ type SlackConfig struct { // +optional Title string `json:"title,omitempty"` // +optional - TitleLink string `json:"title_link,omitempty" yaml:"title_link,omitempty"` + TitleLink string `json:"title_link,omitempty,case:ignore" yaml:"title_link,omitempty"` // +optional Pretext string `json:"pretext,omitempty"` // +optional @@ -873,25 +885,25 @@ type SlackConfig struct { // +optional Fields []SlackField `json:"fields,omitempty"` // +optional - ShortFields bool `json:"short_fields,omitempty" yaml:"short_fields,omitempty"` + ShortFields bool `json:"short_fields,omitempty,case:ignore" yaml:"short_fields,omitempty"` // +optional Footer string `json:"footer,omitempty"` // +optional Fallback string `json:"fallback,omitempty"` // +optional - CallbackID string `json:"callback_id,omitempty" yaml:"callback_id,omitempty"` + CallbackID string `json:"callback_id,omitempty,case:ignore" yaml:"callback_id,omitempty"` // +optional - IconEmoji string `json:"icon_emoji,omitempty" yaml:"icon_emoji,omitempty"` + IconEmoji string `json:"icon_emoji,omitempty,case:ignore" yaml:"icon_emoji,omitempty"` // +optional - IconURL string `json:"icon_url,omitempty" yaml:"icon_url,omitempty"` + IconURL string `json:"icon_url,omitempty,case:ignore" yaml:"icon_url,omitempty"` // +optional - ImageURL string `json:"image_url,omitempty" yaml:"image_url,omitempty"` + ImageURL string `json:"image_url,omitempty,case:ignore" yaml:"image_url,omitempty"` // +optional - ThumbURL string `json:"thumb_url,omitempty" yaml:"thumb_url,omitempty"` + ThumbURL string `json:"thumb_url,omitempty,case:ignore" yaml:"thumb_url,omitempty"` // +optional - LinkNames bool `json:"link_names,omitempty" yaml:"link_names,omitempty"` + LinkNames bool `json:"link_names,omitempty,case:ignore" yaml:"link_names,omitempty"` // +optional - MrkdwnIn []string `json:"mrkdwn_in,omitempty" yaml:"mrkdwn_in,omitempty"` + MrkdwnIn []string `json:"mrkdwn_in,omitempty,case:ignore" yaml:"mrkdwn_in,omitempty"` // A list of Slack actions that are sent with each notification. // +optional Actions []SlackAction `json:"actions,omitempty"` @@ -899,10 +911,10 @@ type SlackConfig struct { // Requires Slack Bot API and chat:write scope. // Available since alertmanager v0.32.0. // +optional - UpdateMessage *bool `json:"update_message,omitempty" yaml:"update_message,omitempty"` + UpdateMessage *bool `json:"update_message,omitempty,case:ignore" yaml:"update_message,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *SlackConfig) validate() error { @@ -934,6 +946,7 @@ func (c *SlackConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // SlackField configures a single Slack field that is sent with each notification. // See https://docs.slack.dev/legacy/legacy-messaging/legacy-secondary-message-attachments/#field_objects for more information. type SlackField struct { @@ -951,6 +964,7 @@ type SlackField struct { // notification. // See https://docs.slack.dev/legacy/legacy-messaging/legacy-interactive-message-field-guide/#action_fields and // https://api.slack.com/docs/message-buttons for more information. +// +kubebuilder:pruning:PreserveUnknownFields type SlackAction struct { // +kubebuilder:validation:MinLength=1 // +required @@ -975,6 +989,7 @@ type SlackAction struct { // click one more time. // See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields // for more information. +// +kubebuilder:pruning:PreserveUnknownFields type SlackConfirmationField struct { // +kubebuilder:validation:MinLength=1 // +required @@ -982,25 +997,26 @@ type SlackConfirmationField struct { // +optional Title string `json:"title,omitempty"` // +optional - OkText string `json:"ok_text,omitempty" yaml:"ok_text,omitempty"` + OkText string `json:"ok_text,omitempty,case:ignore" yaml:"ok_text,omitempty"` // +optional - DismissText string `json:"dismiss_text,omitempty" yaml:"dismiss_text,omitempty"` + DismissText string `json:"dismiss_text,omitempty,case:ignore" yaml:"dismiss_text,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields // OpsGenieConfig configures notifications via OpsGenie. // See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config type OpsGenieConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The secret's key that contains the OpsGenie API key. // It must be at them same namespace as CRD // fallback to global setting if empty // +optional - APIKey *corev1.SecretKeySelector `json:"api_key,omitempty" yaml:"api_key,omitempty"` + APIKey *corev1.SecretKeySelector `json:"api_key,omitempty,case:ignore" yaml:"api_key,omitempty"` // The URL to send OpsGenie API requests to. // +optional - APIURL string `json:"apiURL,omitempty" yaml:"apiURL,omitempty"` + APIURL string `json:"apiURL,omitempty,case:ignore" yaml:"apiURL,omitempty"` // Alert text limited to 130 characters. // +optional Message string `json:"message,omitempty"` @@ -1031,10 +1047,10 @@ type OpsGenieConfig struct { Actions string `json:"actions,omitempty"` // 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. - UpdateAlerts bool `json:"update_alerts,omitempty" yaml:"update_alerts,omitempty"` + UpdateAlerts bool `json:"update_alerts,omitempty,case:ignore" yaml:"update_alerts,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *OpsGenieConfig) validate() error { @@ -1061,6 +1077,7 @@ func (c *OpsGenieConfig) validate() error { // OpsGenieConfigResponder defines a responder to an incident. // One of `id`, `name` or `username` has to be defined. +// +kubebuilder:pruning:PreserveUnknownFields type OpsGenieConfigResponder struct { // ID of the responder. // +optional @@ -1077,23 +1094,24 @@ type OpsGenieConfigResponder struct { Type string `json:"type"` } +// +kubebuilder:pruning:PreserveUnknownFields // PagerDutyConfig configures notifications via PagerDuty. // See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config type PagerDutyConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The secret's key that contains the PagerDuty integration key (when using // Events API v2). Either this field or `serviceKey` needs to be defined. // It must be at them same namespace as CRD // +optional - RoutingKey *corev1.SecretKeySelector `json:"routing_key,omitempty" yaml:"routing_key,omitempty"` + RoutingKey *corev1.SecretKeySelector `json:"routing_key,omitempty,case:ignore" yaml:"routing_key,omitempty"` // The secret's key that contains the PagerDuty service key (when using // integration type "Prometheus"). Either this field or `routingKey` needs to // be defined. // It must be at them same namespace as CRD // +optional - ServiceKey *corev1.SecretKeySelector `json:"service_key,omitempty" yaml:"service_key,omitempty"` + ServiceKey *corev1.SecretKeySelector `json:"service_key,omitempty,case:ignore" yaml:"service_key,omitempty"` // The URL to send requests to. // +optional URL string `json:"url,omitempty"` @@ -1102,7 +1120,7 @@ type PagerDutyConfig struct { Client string `json:"client,omitempty"` // Backlink to the sender of notification. // +optional - ClientURL string `json:"client_url,omitempty" yaml:"client_url,omitempty"` + ClientURL string `json:"client_url,omitempty,case:ignore" yaml:"client_url,omitempty"` // Images to attach to the incident. // +optional Images []ImageConfig `json:"images,omitempty"` @@ -1129,7 +1147,7 @@ type PagerDutyConfig struct { Details map[string]string `json:"details,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *PagerDutyConfig) validate() error { @@ -1153,6 +1171,7 @@ func (c *PagerDutyConfig) validate() error { // ImageConfig is used to attach images to the incident. // See https://developer.pagerduty.com/docs/send-alert-event#the-images-property // for more information. +// +kubebuilder:pruning:PreserveUnknownFields type ImageConfig struct { // +optional Href string `json:"href,omitempty"` @@ -1164,24 +1183,26 @@ type ImageConfig struct { // LinkConfig is used to attach text links to the incident. // See https://developer.pagerduty.com/docs/send-alert-event#the-links-property // for more information. +// +kubebuilder:pruning:PreserveUnknownFields type LinkConfig struct { Href string `json:"href"` Text string `json:"text,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields type MSTeamsConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The incoming webhook URL // one of `urlSecret` and `url` must be defined. // +optional - URL *string `json:"webhook_url,omitempty" yaml:"webhook_url,omitempty"` + URL *string `json:"webhook_url,omitempty,case:ignore" yaml:"webhook_url,omitempty"` // URLSecret defines secret name and key at the CRD namespace. // It must contain the webhook URL. // one of `urlSecret` and `url` must be defined. // +optional - URLSecret *corev1.SecretKeySelector `json:"webhook_url_secret,omitempty" yaml:"webhook_url_secret,omitempty"` + URLSecret *corev1.SecretKeySelector `json:"webhook_url_secret,omitempty,case:ignore" yaml:"webhook_url_secret,omitempty"` // The title of the teams notification. // +optional Title string `json:"title,omitempty"` @@ -1190,7 +1211,7 @@ type MSTeamsConfig struct { Text string `json:"text,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *MSTeamsConfig) validate() error { @@ -1211,19 +1232,20 @@ func (c *MSTeamsConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields type DiscordConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The discord webhook URL // one of `urlSecret` and `url` must be defined. // +optional - URL *string `json:"webhook_url,omitempty" yaml:"webhook_url,omitempty"` + URL *string `json:"webhook_url,omitempty,case:ignore" yaml:"webhook_url,omitempty"` // URLSecret defines secret name and key at the CRD namespace. // It must contain the webhook URL. // one of `urlSecret` and `url` must be defined. // +optional - URLSecret *corev1.SecretKeySelector `json:"webhook_url_secret,omitempty" yaml:"webhook_url_secret,omitempty"` + URLSecret *corev1.SecretKeySelector `json:"webhook_url_secret,omitempty,case:ignore" yaml:"webhook_url_secret,omitempty"` // The message title template // +optional Title string `json:"title,omitempty"` @@ -1232,7 +1254,7 @@ type DiscordConfig struct { Message string `json:"message,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` // Content defines message content template // Available from alertmanager v0.28.0 // +kubebuilder:validation:MaxLength:=2000 @@ -1248,7 +1270,7 @@ type DiscordConfig struct { // Available from alertmanager v0.28.0 // +optional // +notes={available_from: "v0.55.0"} - AvatarURL string `json:"avatar_url,omitempty" yaml:"avatar_url,omitempty"` + AvatarURL string `json:"avatar_url,omitempty,case:ignore" yaml:"avatar_url,omitempty"` } func (c *DiscordConfig) validate() error { @@ -1269,28 +1291,29 @@ func (c *DiscordConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields type SNSConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The api URL // +optional - URL string `json:"api_url,omitempty" yaml:"api_url,omitempty"` + URL string `json:"api_url,omitempty,case:ignore" yaml:"api_url,omitempty"` // Configure the AWS Signature Verification 4 signing process Sigv4 *Sigv4Config `json:"sigv4,omitempty"` // SNS topic ARN, either specify this, phone_number or target_arn // +optional - TopicArn string `json:"topic_arn,omitempty" yaml:"topic_arn,omitempty"` + TopicArn string `json:"topic_arn,omitempty,case:ignore" yaml:"topic_arn,omitempty"` // The subject line if message is delivered to an email endpoint. // +optional Subject string `json:"subject,omitempty"` // Phone number if message is delivered via SMS // Specify this, topic_arn or target_arn - PhoneNumber string `json:"phone_number,omitempty" yaml:"phone_number,omitempty"` + PhoneNumber string `json:"phone_number,omitempty,case:ignore" yaml:"phone_number,omitempty"` // Mobile platform endpoint ARN if message is delivered via mobile notifications // Specify this, topic_arn or phone_number // +optional - TargetArn string `json:"target_arn,omitempty" yaml:"target_arn,omitempty"` + TargetArn string `json:"target_arn,omitempty,case:ignore" yaml:"target_arn,omitempty"` // The message content of the SNS notification. // +optional Message string `json:"message,omitempty"` @@ -1299,7 +1322,7 @@ type SNSConfig struct { Attributes map[string]string `json:"attributes,omitempty"` // HTTP client configuration. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *SNSConfig) validate() error { @@ -1312,6 +1335,7 @@ func (c *SNSConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields type Sigv4Config struct { // AWS region, if blank the region from the default credentials chain is used // +optional @@ -1319,37 +1343,38 @@ type Sigv4Config struct { // The AWS API keys. Both access_key and secret_key must be supplied or both must be blank. // If blank the environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are used. // +optional - AccessKey string `json:"access_key,omitempty" yaml:"access_key,omitempty"` + AccessKey string `json:"access_key,omitempty,case:ignore" yaml:"access_key,omitempty"` // secret key selector to get the keys from a Kubernetes Secret // +optional - AccessKeySelector *corev1.SecretKeySelector `json:"access_key_selector,omitempty" yaml:"access_key_selector,omitempty"` + AccessKeySelector *corev1.SecretKeySelector `json:"access_key_selector,omitempty,case:ignore" yaml:"access_key_selector,omitempty"` // secret key selector to get the keys from a Kubernetes Secret // +optional - SecretKey *corev1.SecretKeySelector `json:"secret_key_selector,omitempty" yaml:"secret_key_selector,omitempty"` + SecretKey *corev1.SecretKeySelector `json:"secret_key_selector,omitempty,case:ignore" yaml:"secret_key_selector,omitempty"` // Named AWS profile used to authenticate // +optional Profile string `json:"profile,omitempty"` // AWS Role ARN, an alternative to using AWS API keys // +optional - RoleArn string `json:"role_arn,omitempty" yaml:"role_arn,omitempty"` + RoleArn string `json:"role_arn,omitempty,case:ignore" yaml:"role_arn,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields type WebexConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The Webex Teams API URL, i.e. https://webexapis.com/v1/messages // +optional - URL *string `json:"api_url,omitempty" yaml:"api_url,omitempty"` + URL *string `json:"api_url,omitempty,case:ignore" yaml:"api_url,omitempty"` // The ID of the Webex Teams room where to send the messages // +required - RoomId string `json:"room_id,omitempty" yaml:"room_id,omitempty"` + RoomId string `json:"room_id,omitempty,case:ignore" yaml:"room_id,omitempty"` // The message body template // +optional Message string `json:"message,omitempty"` // HTTP client configuration. You must use this configuration to supply the bot token as part of the HTTP `Authorization` header. // +optional - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *WebexConfig) validate() error { @@ -1372,16 +1397,18 @@ func (c *WebexConfig) validate() error { // JiraConfig represent alertmanager's jira_config entry // https://prometheus.io/docs/alerting/latest/configuration/#jira_config -// Available from v0.28.0 alertmanager version +// available from v0.55.0 operator version +// and v0.28.0 alertmanager version +// +kubebuilder:pruning:PreserveUnknownFields type JiraConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The URL to send API requests to. The full API path must be included. // Example: https://company.atlassian.net/rest/api/2/ // +optional - APIURL *string `json:"api_url,omitempty" yaml:"api_url,omitempty"` + APIURL *string `json:"api_url,omitempty,case:ignore" yaml:"api_url,omitempty"` // The project key where issues are created Project string `json:"project" yaml:"project"` @@ -1397,29 +1424,29 @@ type JiraConfig struct { Priority string `json:"priority,omitempty" yaml:"priority,omitempty"` // Type of the issue (e.g. Bug) - IssueType string `json:"issue_type" yaml:"issue_type"` + IssueType string `json:"issue_type,case:ignore" yaml:"issue_type"` // Name of the workflow transition to resolve an issue. // The target status must have the category "done". - ReopenTransition string `json:"reopen_transition,omitempty" yaml:"reopen_transition,omitempty"` + ReopenTransition string `json:"reopen_transition,omitempty,case:ignore" yaml:"reopen_transition,omitempty"` // Name of the workflow transition to reopen an issue. // The target status should not have the category "done". - ResolveTransition string `json:"resolve_transition,omitempty" yaml:"resolve_transition,omitempty"` + ResolveTransition string `json:"resolve_transition,omitempty,case:ignore" yaml:"resolve_transition,omitempty"` // If reopen_transition is defined, ignore issues with that resolution. - WontFixResolution string `json:"wont_fix_resolution,omitempty" yaml:"wont_fix_resolution,omitempty"` + WontFixResolution string `json:"wont_fix_resolution,omitempty,case:ignore" yaml:"wont_fix_resolution,omitempty"` // If reopen_transition is defined, reopen the issue when it is not older than this value (rounded down to the nearest minute). // The resolutiondate field is used to determine the age of the issue. // +kubebuilder:validation:Pattern:="^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" // +optional - ReopenDuration string `json:"reopen_duration,omitempty" yaml:"reopen_duration,omitempty"` + ReopenDuration string `json:"reopen_duration,omitempty,case:ignore" yaml:"reopen_duration,omitempty"` // Other issue and custom fields. // Jira issue field can have multiple types. // Depends on the field type, the values must be provided differently. // See https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/#setting-custom-field-data-for-other-field-types for further examples. // +optional - Fields map[string]apiextensionsv1.JSON `json:"custom_fields,omitempty" yaml:"fields,omitempty"` + Fields map[string]apiextensionsv1.JSON `json:"custom_fields,omitempty,case:ignore" yaml:"fields,omitempty"` // The HTTP client's configuration. You must use this configuration to supply the personal access token (PAT) as part of the HTTP `Authorization` header. // For Jira Cloud, use basic_auth with the email address as the username and the PAT as the password. @@ -1427,7 +1454,7 @@ type JiraConfig struct { // +optional // +kubebuilder:validation:Schemaless // +kubebuilder:pruning:PreserveUnknownFields - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *JiraConfig) validate() error { @@ -1450,11 +1477,13 @@ func (c *JiraConfig) validate() error { // IncidentioConfig configures notifications via incident.io. // https://prometheus.io/docs/alerting/latest/configuration/#incidentio_config -// Available from v0.29.0 alertmanager version +// available from v0.66.0 operator version +// and v0.29.0 alertmanager version +// +kubebuilder:pruning:PreserveUnknownFields type IncidentioConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The URL to send the incident.io alert. This would typically be provided by the // incident.io team when setting up an alert source. // Mutually exclusive with URLFile. @@ -1467,21 +1496,21 @@ type IncidentioConfig struct { // AlertSourceToken is used to authenticate with incident.io. // Mutually exclusive with AlertSourceTokenFile. // +optional - AlertSourceToken *corev1.SecretKeySelector `yaml:"alert_source_token,omitempty" json:"alert_source_token,omitempty"` + AlertSourceToken *corev1.SecretKeySelector `yaml:"alert_source_token,omitempty" json:"alert_source_token,omitempty,case:ignore"` // AlertSourceTokenFile defines the path to a file that contains the alert source token. // Mutually exclusive with AlertSourceToken. // +optional AlertSourceTokenFile string `json:"alert_source_token_file,omitempty" yaml:"alert_source_token_file,omitempty"` // MaxAlerts defines maximum number of alerts to be sent per incident.io message. // +optional - MaxAlerts int `json:"max_alerts,omitempty" yaml:"max_alerts,omitempty"` + MaxAlerts int `json:"max_alerts,omitempty,case:ignore" yaml:"max_alerts,omitempty"` // Timeout is the maximum time allowed to invoke incident.io // +optional Timeout string `json:"timeout,omitempty" yaml:"timeout,omitempty"` // +optional // +kubebuilder:validation:Schemaless // +kubebuilder:pruning:PreserveUnknownFields - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *IncidentioConfig) validate() error { @@ -1511,18 +1540,20 @@ func (c *IncidentioConfig) validateArbitraryFSAccess() error { // RocketchatConfig configures notifications via Rocketchat. // https://prometheus.io/docs/alerting/latest/configuration/#rocketchat_config -// Available from v0.28.0 alertmanager version +// available from v0.55.0 operator version +// and v0.28.0 alertmanager version +// +kubebuilder:pruning:PreserveUnknownFields type RocketchatConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // +optional - APIURL *string `json:"api_url,omitempty" yaml:"api_url,omitempty"` + APIURL *string `json:"api_url,omitempty,case:ignore" yaml:"api_url,omitempty"` // The sender token and token_id // See https://docs.rocket.chat/docs/manage-personal-access-tokens // +optional - TokenID *corev1.SecretKeySelector `yaml:"token_id,omitempty" json:"token_id,omitempty"` + TokenID *corev1.SecretKeySelector `yaml:"token_id,omitempty" json:"token_id,omitempty,case:ignore"` // +optional Token *corev1.SecretKeySelector `yaml:"token,omitempty" json:"token,omitempty"` @@ -1534,29 +1565,29 @@ type RocketchatConfig struct { // +optional Title string `json:"title,omitempty" yaml:"title,omitempty"` // +optional - TitleLink string `json:"title_link,omitempty" yaml:"title_link,omitempty"` + TitleLink string `json:"title_link,omitempty,case:ignore" yaml:"title_link,omitempty"` // +optional Text string `json:"text,omitempty" yaml:"text,omitempty"` // +optional Fields []RocketchatAttachmentField `json:"fields,omitempty" yaml:"fields,omitempty"` // +optional - ShortFields bool `json:"short_fields,omitempty" yaml:"short_fields,omitempty"` + ShortFields bool `json:"short_fields,omitempty,case:ignore" yaml:"short_fields,omitempty"` // +optional Emoji string `json:"emoji,omitempty" yaml:"emoji,omitempty"` // +optional - IconURL string `json:"icon_url,omitempty" yaml:"icon_url,omitempty"` + IconURL string `json:"icon_url,omitempty,case:ignore" yaml:"icon_url,omitempty"` // +optional - ImageURL string `json:"image_url,omitempty" yaml:"image_url,omitempty"` + ImageURL string `json:"image_url,omitempty,case:ignore" yaml:"image_url,omitempty"` // +optional - ThumbURL string `json:"thumb_url,omitempty" yaml:"thumb_url,omitempty"` + ThumbURL string `json:"thumb_url,omitempty,case:ignore" yaml:"thumb_url,omitempty"` // +optional - LinkNames bool `json:"link_names,omitempty" yaml:"link_names"` + LinkNames bool `json:"link_names,omitempty,case:ignore" yaml:"link_names"` // +optional Actions []RocketchatAttachmentAction `json:"actions,omitempty" yaml:"actions,omitempty"` // +optional // +kubebuilder:validation:Schemaless // +kubebuilder:pruning:PreserveUnknownFields - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *RocketchatConfig) validate() error { @@ -1573,6 +1604,7 @@ func (c *RocketchatConfig) validate() error { // RocketchatAttachmentField defines API fields // https://developer.rocket.chat/apidocs/post-message +// +kubebuilder:pruning:PreserveUnknownFields type RocketchatAttachmentField struct { // +optional Short *bool `json:"short"` @@ -1584,6 +1616,7 @@ type RocketchatAttachmentField struct { // RocketchatAttachmentAction defines message attachments // https://github.com/RocketChat/Rocket.Chat.Go.SDK/blob/master/models/message.go +// +kubebuilder:pruning:PreserveUnknownFields type RocketchatAttachmentAction struct { // +optional Type string `json:"type,omitempty"` @@ -1597,21 +1630,23 @@ type RocketchatAttachmentAction struct { // MSTeamsV2Config sends notifications using the new message format with adaptive cards as required by flows. // https://support.microsoft.com/en-gb/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498 -// Available from v0.28.0 alertmanager version +// available from v0.55.0 operator version +// and v0.28.0 alertmanager version +// +kubebuilder:pruning:PreserveUnknownFields type MSTeamsV2Config struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // The incoming webhook URL // one of `urlSecret` and `url` must be defined. // +optional - URL *string `json:"webhook_url,omitempty" yaml:"webhook_url,omitempty"` + URL *string `json:"webhook_url,omitempty,case:ignore" yaml:"webhook_url,omitempty"` // URLSecret defines secret name and key at the CRD namespace. // It must contain the webhook URL. // one of `webhook_url` or `webhook_url_secret` must be defined. // +optional - URLSecret *corev1.SecretKeySelector `json:"webhook_url_secret,omitempty" yaml:"webhook_url_secret,omitempty"` + URLSecret *corev1.SecretKeySelector `json:"webhook_url_secret,omitempty,case:ignore" yaml:"webhook_url_secret,omitempty"` // Message title template. // +optional @@ -1623,7 +1658,7 @@ type MSTeamsV2Config struct { // +optional // +kubebuilder:validation:Schemaless // +kubebuilder:pruning:PreserveUnknownFields - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *MSTeamsV2Config) validate() error { @@ -1645,10 +1680,11 @@ func (c *MSTeamsV2Config) validate() error { } // MattermostConfig configures notifications via Mattermost. +// +kubebuilder:pruning:PreserveUnknownFields type MattermostConfig struct { // SendResolved controls notify about resolved alerts. // +optional - SendResolved *bool `json:"send_resolved,omitempty" yaml:"send_resolved,omitempty"` + SendResolved *bool `json:"send_resolved,omitempty,case:ignore" yaml:"send_resolved,omitempty"` // Username overrides the username the message posts as // +optional Username string `json:"username,omitempty" yaml:"username,omitempty"` @@ -1659,10 +1695,10 @@ type MattermostConfig struct { Text string `json:"text"` // IconURL overrides the profile picture the message posts with. // +optional - IconURL string `json:"icon_url,omitempty" yaml:"icon_url,omitempty"` + IconURL string `json:"icon_url,omitempty,case:ignore" yaml:"icon_url,omitempty"` // IconEmoji overrides the profile picture and icon_url parameter. // +optional - IconEmoji string `json:"icon_emoji,omitempty" yaml:"icon_emoji,omitempty"` + IconEmoji string `json:"icon_emoji,omitempty,case:ignore" yaml:"icon_emoji,omitempty"` // URL to send requests to, // one of `urlSecret` and `url` must be defined. // +optional @@ -1671,7 +1707,7 @@ type MattermostConfig struct { // It must contain the Mattermost URL. // one of `urlSecret` and `url` must be defined. // +optional - URLSecret *corev1.SecretKeySelector `json:"url_secret,omitempty" yaml:"url_secret,omitempty"` + URLSecret *corev1.SecretKeySelector `json:"url_secret,omitempty,case:ignore" yaml:"url_secret,omitempty"` // Attachments defines richer formatting options // +optional Attachments []*MattermostAttachment `json:"attachments,omitempty" yaml:"attachments,omitempty"` @@ -1682,7 +1718,7 @@ type MattermostConfig struct { // +optional // +kubebuilder:validation:Schemaless // +kubebuilder:pruning:PreserveUnknownFields - HTTPConfig *HTTPConfig `json:"http_config,omitempty" yaml:"http_config,omitempty"` + HTTPConfig *HTTPConfig `json:"http_config,omitempty,case:ignore" yaml:"http_config,omitempty"` } func (c *MattermostConfig) validate() error { @@ -1698,55 +1734,60 @@ func (c *MattermostConfig) validate() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields type MattermostAttachment struct { Fallback string `json:"fallback,omitempty" yaml:"fallback,omitempty"` Color string `json:"color,omitempty" yaml:"color,omitempty"` Pretext string `json:"pretext,omitempty" yaml:"pretext,omitempty"` Text string `json:"text,omitempty" yaml:"text,omitempty"` - AuthorName string `json:"author_name,omitempty" yaml:"author_name,omitempty"` - AuthorLink string `json:"author_link,omitempty" yaml:"author_link,omitempty"` - AuthorIcon string `json:"author_icon,omitempty" yaml:"author_icon,omitempty"` + AuthorName string `json:"author_name,omitempty,case:ignore" yaml:"author_name,omitempty"` + AuthorLink string `json:"author_link,omitempty,case:ignore" yaml:"author_link,omitempty"` + AuthorIcon string `json:"author_icon,omitempty,case:ignore" yaml:"author_icon,omitempty"` Title string `json:"title,omitempty" yaml:"title,omitempty"` - TitleLink string `json:"title_link,omitempty" yaml:"title_link,omitempty"` + TitleLink string `json:"title_link,omitempty,case:ignore" yaml:"title_link,omitempty"` Fields []MattermostField `json:"fields,omitempty" yaml:"fields,omitempty"` - ThumbURL string `json:"thumb_url,omitempty" yaml:"thumb_url,omitempty"` + ThumbURL string `json:"thumb_url,omitempty,case:ignore" yaml:"thumb_url,omitempty"` Footer string `json:"footer,omitempty" yaml:"footer,omitempty"` - FooterIcon string `json:"footer_icon,omitempty" yaml:"footer_icon,omitempty"` - ImageURL string `json:"image_url,omitempty" yaml:"image_url,omitempty"` + FooterIcon string `json:"footer_icon,omitempty,case:ignore" yaml:"footer_icon,omitempty"` + ImageURL string `json:"image_url,omitempty,case:ignore" yaml:"image_url,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields type MattermostField struct { Title string `json:"title,omitempty" yaml:"title,omitempty"` Value string `json:"value,omitempty" yaml:"value,omitempty"` Short bool `json:"short,omitempty" yaml:"short,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields type MattermostProps struct { Card *string `json:"card,omitempty" yaml:"card,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields type MattermostPriority struct { Priority string `json:"priority,omitempty" yaml:"priority,omitempty"` - RequestedAck *bool `json:"requested_ack,omitempty" yaml:"requested_ack,omitempty"` - PersistentNotifications *bool `json:"persistent_notifications,omitempty" yaml:"persistent_notifications,omitempty"` + RequestedAck *bool `json:"requested_ack,omitempty,case:ignore" yaml:"requested_ack,omitempty"` + PersistentNotifications *bool `json:"persistent_notifications,omitempty,case:ignore" yaml:"persistent_notifications,omitempty"` } +// +kubebuilder:pruning:PreserveUnknownFields // HTTPConfig defines a client HTTP configuration for VMAlertmanagerConfig objects // See https://prometheus.io/docs/alerting/latest/configuration/#http_config type HTTPConfig struct { // BasicAuth for the client. // +optional - BasicAuth *BasicAuth `json:"basic_auth,omitempty" yaml:"basic_auth,omitempty"` + BasicAuth *BasicAuth `json:"basic_auth,omitempty,case:ignore" yaml:"basic_auth,omitempty"` // The secret's key that contains the bearer token // It must be at them same namespace as CRD // +optional - BearerTokenSecret *corev1.SecretKeySelector `json:"bearer_token_secret,omitempty" yaml:"bearer_token_secret,omitempty"` + BearerTokenSecret *corev1.SecretKeySelector `json:"bearer_token_secret,omitempty,case:ignore" yaml:"bearer_token_secret,omitempty"` // BearerTokenFile defines filename for bearer token, it must be mounted to pod. // +optional - BearerTokenFile string `json:"bearer_token_file,omitempty" yaml:"bearer_token_file,omitempty"` + BearerTokenFile string `json:"bearer_token_file,omitempty,case:ignore" yaml:"bearer_token_file,omitempty"` // TLS configuration for the client. // +optional - TLSConfig *TLSConfig `json:"tls_config,omitempty" yaml:"tls_config,omitempty"` + TLSConfig *TLSConfig `json:"tls_config,omitempty,case:ignore" yaml:"tls_config,omitempty"` // Authorization header configuration for the client. // This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. // +optional @@ -1756,7 +1797,7 @@ type HTTPConfig struct { OAuth2 *OAuth2 `json:"oauth2,omitempty"` // FollowRedirects controls redirects for scraping. // +optional - FollowRedirects *bool `json:"follow_redirects,omitempty"` + FollowRedirects *bool `json:"follow_redirects,omitempty,case:ignore"` // HTTPHeaders defines custom HTTP headers to be sent along with each request. // Only supported starting from Alertmanager v0.28.0; ignored by older versions. // +optional @@ -1849,35 +1890,29 @@ func (c *HTTPConfig) validateArbitraryFSAccess() error { return nil } +// +kubebuilder:pruning:PreserveUnknownFields // ProxyConfig defines proxy configs type ProxyConfig struct { // ProxyUrl defines the HTTP proxy server to use. // +kubebuilder:validation:Pattern:="^(http|https|socks5)://.+$" // +optional - ProxyURL string `json:"proxyURL,omitempty" yaml:"proxy_url,omitempty"` + ProxyURL string `json:"proxyURL,omitempty,case:ignore" yaml:"proxy_url,omitempty"` // 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. // +optional - NoProxy string `json:"noProxy,omitempty" yaml:"no_proxy,omitempty"` + NoProxy string `json:"noProxy,omitempty,case:ignore" yaml:"no_proxy,omitempty"` // ProxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY). // +optional - ProxyFromEnvironment bool `json:"proxyFromEnvironment,omitempty" yaml:"proxy_from_environment,omitempty"` + ProxyFromEnvironment bool `json:"proxyFromEnvironment,omitempty,case:ignore" yaml:"proxy_from_environment,omitempty"` // ProxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests. // +optional - ProxyConnectHeader map[string][]corev1.SecretKeySelector `json:"proxyConnectHeader,omitempty" yaml:"proxy_connect_header,omitempty"` + ProxyConnectHeader map[string][]corev1.SecretKeySelector `json:"proxyConnectHeader,omitempty,case:ignore" yaml:"proxy_connect_header,omitempty"` } // UnmarshalJSON implements json.Unmarshaller interface func (c *HTTPConfig) UnmarshalJSON(data []byte) error { - decoder := json.NewDecoder(bytes.NewReader(data)) - decoder.DisallowUnknownFields() - type pc HTTPConfig - if err := decoder.Decode((*pc)(c)); err != nil { - return err - } - - return nil + return UnmarshalSpecStrict(data, (*pc)(c)) } func (c *HTTPConfig) validate() error { diff --git a/api/operator/v1beta1/vmalertmanagerconfig_types_test.go b/api/operator/v1beta1/vmalertmanagerconfig_types_test.go index c14e4b3f96..6fe5ceb8f0 100644 --- a/api/operator/v1beta1/vmalertmanagerconfig_types_test.go +++ b/api/operator/v1beta1/vmalertmanagerconfig_types_test.go @@ -1,11 +1,12 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/v2" "strings" "testing" "github.com/stretchr/testify/assert" + corev1 "k8s.io/api/core/v1" ) func TestValidateVMAlertmanagerConfigFail(t *testing.T) { @@ -58,7 +59,7 @@ func TestValidateVMAlertmanagerConfigFail(t *testing.T) { } } } -`, `unknown field "match"`) +`, `unknown object member name "match"`) f(`{ "apiVersion": "v1", "kind": "VMAlertmanagerConfig", @@ -381,7 +382,7 @@ func TestValidateVMAlertmanagerConfigFail(t *testing.T) { } }, "tls_config": { - "insecure_skip_verify": true + "verify_certificate": true } }, "title": "some", @@ -395,7 +396,7 @@ func TestValidateVMAlertmanagerConfigFail(t *testing.T) { "receiver": "teams" } } -}`, `unknown field "insecure_skip_verify"`) +}`, `unknown object member name "verify_certificate"`) } func TestValidateVMAlertmanagerConfigOk(t *testing.T) { @@ -1042,3 +1043,262 @@ func TestHTTPConfig_ValidateArbitraryFSAccess(t *testing.T) { }, }, true) } + +// TestVMAlertmanagerConfigCaseIgnore verifies that both snake_case and camelCase +// field names are accepted when unmarshalling VMAlertmanagerConfig, thanks to the +// json "case:ignore" tag option processed by encoding/json/v2. +func TestVMAlertmanagerConfigCaseIgnore(t *testing.T) { + unmarshal := func(t *testing.T, src string) VMAlertmanagerConfig { + t.Helper() + var amc VMAlertmanagerConfig + assert.NoError(t, json.Unmarshal([]byte(src), &amc)) + assert.Empty(t, amc.Status.ParsingSpecError) + return amc + } + + t.Run("spec top-level fields camelCase", func(t *testing.T) { + amc := unmarshal(t, `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMAlertmanagerConfig", + "metadata": {"name": "test"}, + "spec": { + "receivers": [{"name": "recv"}], + "inhibitRules": [ + { + "targetMatchers": ["env=prod"], + "sourceMatchers": ["env=dev"], + "equal": ["alertname"] + } + ], + "timeIntervals": [ + { + "name": "workhours", + "timeIntervals": [ + { + "daysOfMonth": ["1:5"], + "times": [{"startTime": "09:00", "endTime": "17:00"}] + } + ] + } + ], + "route": {"receiver": "recv"} + } + }`) + assert.Len(t, amc.Spec.InhibitRules, 1) + assert.Equal(t, []string{"env=prod"}, amc.Spec.InhibitRules[0].TargetMatchers) + assert.Equal(t, []string{"env=dev"}, amc.Spec.InhibitRules[0].SourceMatchers) + assert.Len(t, amc.Spec.TimeIntervals, 1) + assert.Equal(t, "workhours", amc.Spec.TimeIntervals[0].Name) + ti := amc.Spec.TimeIntervals[0].TimeIntervals[0] + assert.Equal(t, []string{"1:5"}, ti.DaysOfMonth) + assert.Equal(t, "09:00", ti.Times[0].StartTime) + assert.Equal(t, "17:00", ti.Times[0].EndTime) + }) + + t.Run("route camelCase fields", func(t *testing.T) { + amc := unmarshal(t, `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMAlertmanagerConfig", + "metadata": {"name": "test"}, + "spec": { + "receivers": [{"name": "recv"}, {"name": "recv2"}], + "timeIntervals": [{"name": "quiet", "timeIntervals": [{"weekdays": ["saturday", "sunday"]}]}], + "route": { + "receiver": "recv", + "groupBy": ["alertname", "cluster"], + "groupWait": "30s", + "groupInterval": "5m", + "repeatInterval": "12h", + "muteTimeIntervals": ["quiet"], + "activeTimeIntervals": ["quiet"], + "routes": [{"receiver": "recv2"}] + } + } + }`) + r := amc.Spec.Route + assert.Equal(t, []string{"alertname", "cluster"}, r.GroupBy) + assert.Equal(t, "30s", r.GroupWait) + assert.Equal(t, "5m", r.GroupInterval) + assert.Equal(t, "12h", r.RepeatInterval) + assert.Equal(t, []string{"quiet"}, r.MuteTimeIntervals) + assert.Equal(t, []string{"quiet"}, r.ActiveTimeIntervals) + }) + + t.Run("nested route camelCase fields", func(t *testing.T) { + amc := unmarshal(t, `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMAlertmanagerConfig", + "metadata": {"name": "test"}, + "spec": { + "receivers": [{"name": "recv"}], + "route": { + "receiver": "recv", + "routes": [ + { + "receiver": "recv", + "groupWait": "10s", + "groupInterval": "2m", + "matchers": ["env=prod"] + } + ] + } + } + }`) + assert.Len(t, amc.Spec.Route.Routes, 1) + sub := amc.Spec.Route.Routes[0] + assert.Equal(t, "10s", sub.GroupWait) + assert.Equal(t, "2m", sub.GroupInterval) + }) + + t.Run("receiver list fields camelCase", func(t *testing.T) { + amc := unmarshal(t, `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMAlertmanagerConfig", + "metadata": {"name": "test"}, + "spec": { + "receivers": [ + { + "name": "recv", + "webhookConfigs": [ + { + "url": "http://example.com/hook", + "sendResolved": true, + "maxAlerts": 5 + } + ], + "telegramConfigs": [ + { + "botToken": {"name": "secret", "key": "token"}, + "chatId": 12345, + "sendResolved": false + } + ] + } + ], + "route": {"receiver": "recv"} + } + }`) + recv := amc.Spec.Receivers[0] + assert.Len(t, recv.WebhookConfigs, 1) + wh := recv.WebhookConfigs[0] + assert.Equal(t, "http://example.com/hook", *wh.URL) + assert.Equal(t, true, *wh.SendResolved) + assert.Equal(t, int32(5), wh.MaxAlerts) + + assert.Len(t, recv.TelegramConfigs, 1) + tg := recv.TelegramConfigs[0] + assert.Equal(t, corev1.SecretKeySelector{LocalObjectReference: corev1.LocalObjectReference{Name: "secret"}, Key: "token"}, *tg.BotToken) + assert.Equal(t, 12345, tg.ChatID) + assert.Equal(t, false, *tg.SendResolved) + }) + + t.Run("http_config camelCase fields", func(t *testing.T) { + amc := unmarshal(t, `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMAlertmanagerConfig", + "metadata": {"name": "test"}, + "spec": { + "receivers": [ + { + "name": "recv", + "webhookConfigs": [ + { + "url": "http://example.com/hook", + "httpConfig": { + "bearerTokenSecret": {"name": "secret", "key": "token"}, + "followRedirects": false, + "tlsConfig": { + "insecureSkipVerify": true, + "serverName": "example.com" + } + } + } + ] + } + ], + "route": {"receiver": "recv"} + } + }`) + hc := amc.Spec.Receivers[0].WebhookConfigs[0].HTTPConfig + assert.Equal(t, "secret", hc.BearerTokenSecret.Name) + assert.Equal(t, "token", hc.BearerTokenSecret.Key) + assert.Equal(t, false, *hc.FollowRedirects) + assert.Equal(t, true, hc.TLSConfig.InsecureSkipVerify) + assert.Equal(t, "example.com", hc.TLSConfig.ServerName) + }) + + t.Run("ProxyConfig snake_case for camelCase canonical fields", func(t *testing.T) { + amc := unmarshal(t, `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMAlertmanagerConfig", + "metadata": {"name": "test"}, + "spec": { + "receivers": [ + { + "name": "recv", + "webhookConfigs": [ + { + "url": "http://example.com/hook", + "httpConfig": { + "proxy_url": "http://proxy:3128", + "no_proxy": "localhost,127.0.0.1" + } + } + ] + } + ], + "route": {"receiver": "recv"} + } + }`) + hc := amc.Spec.Receivers[0].WebhookConfigs[0].HTTPConfig + assert.Equal(t, "http://proxy:3128", hc.ProxyURL) + assert.Equal(t, "localhost,127.0.0.1", hc.NoProxy) + }) + + t.Run("snake_case canonical fields still work (regression)", func(t *testing.T) { + amc := unmarshal(t, `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMAlertmanagerConfig", + "metadata": {"name": "test"}, + "spec": { + "receivers": [{"name": "recv"}], + "inhibit_rules": [ + { + "target_matchers": ["env=prod"], + "source_matchers": ["env=dev"] + } + ], + "route": { + "receiver": "recv", + "group_by": ["alertname"], + "group_wait": "30s", + "group_interval": "5m", + "repeat_interval": "12h" + } + } + }`) + assert.Len(t, amc.Spec.InhibitRules, 1) + assert.Equal(t, "30s", amc.Spec.Route.GroupWait) + assert.Equal(t, []string{"alertname"}, amc.Spec.Route.GroupBy) + }) + + t.Run("mixed snake_case and camelCase in same object", func(t *testing.T) { + amc := unmarshal(t, `{ + "apiVersion": "operator.victoriametrics.com/v1beta1", + "kind": "VMAlertmanagerConfig", + "metadata": {"name": "test"}, + "spec": { + "receivers": [{"name": "recv"}], + "route": { + "receiver": "recv", + "group_wait": "30s", + "groupInterval": "5m", + "repeat_interval": "12h" + } + } + }`) + assert.Equal(t, "30s", amc.Spec.Route.GroupWait) + assert.Equal(t, "5m", amc.Spec.Route.GroupInterval) + assert.Equal(t, "12h", amc.Spec.Route.RepeatInterval) + }) +} diff --git a/api/operator/v1beta1/vmauth_types.go b/api/operator/v1beta1/vmauth_types.go index dbdf9e90e6..507c465a30 100644 --- a/api/operator/v1beta1/vmauth_types.go +++ b/api/operator/v1beta1/vmauth_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "net/url" "regexp" @@ -141,8 +142,8 @@ type VMAuthSpec struct { // +notes={available_from: "v0.74.0"} WaitForConfigReload *bool `json:"waitForConfigReload,omitempty"` - CommonConfigReloaderParams `json:",inline,omitempty" yaml:",inline"` - CommonAppsParams `json:",inline,omitempty" yaml:",inline"` + CommonConfigReloaderParams `json:",inline" yaml:",inline"` + CommonAppsParams `json:",inline" yaml:",inline"` // InternalListenPort instructs vmauth to serve internal routes at given port // available from v1.111.0 vmauth version // related doc https://docs.victoriametrics.com/victoriametrics/vmauth/#security @@ -247,7 +248,7 @@ type UnauthorizedAccessConfigURLMap struct { // +kubebuilder:pruning:PreserveUnknownFields URLPrefix StringOrArray `json:"url_prefix,omitempty" yaml:"url_prefix,omitempty"` - URLMapCommon `json:",omitempty" yaml:",inline"` + URLMapCommon `json:",inline" yaml:",inline"` } // Validate performs syntax logic validation @@ -625,7 +626,7 @@ func (cr *VMAuth) UnmarshalJSON(src []byte) error { type pcr VMAuth type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmcluster_types.go b/api/operator/v1beta1/vmcluster_types.go index a9758d4388..83a683ec90 100644 --- a/api/operator/v1beta1/vmcluster_types.go +++ b/api/operator/v1beta1/vmcluster_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "regexp" "strings" @@ -284,7 +285,7 @@ func (cr *VMCluster) UnmarshalJSON(src []byte) error { type pcr VMCluster type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmextra_types.go b/api/operator/v1beta1/vmextra_types.go index d9d4a2bcb3..5b0f6f5fe9 100644 --- a/api/operator/v1beta1/vmextra_types.go +++ b/api/operator/v1beta1/vmextra_types.go @@ -1,8 +1,8 @@ package v1beta1 import ( - "bytes" - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "net/url" "path" @@ -332,7 +332,7 @@ type HTTPAuth struct { // +optional TLSConfig *TLSConfig `json:"tlsConfig,omitempty"` // +optional - *BearerAuth `json:",inline,omitempty"` + *BearerAuth `json:",inline"` // Headers allow configuring custom http headers // Must be in form of semicolon separated header with value // e.g. @@ -1059,7 +1059,7 @@ func (m *StringOrArray) UnmarshalJSON(data []byte) error { *m = match return nil default: - return &json.UnmarshalTypeError{Value: string(data), Type: rawType} + return &json.SemanticError{JSONValue: jsontext.Value(data), GoType: rawType} } } @@ -1177,32 +1177,29 @@ func (c *TLSConfig) appendForbiddenProperties(props []string) []string { return props } -// UnmarshalSpecStrict decodes spec JSON into v and rejects unknown fields. -// A lenient pass runs first so real parse errors (type mismatches, syntax) -// are returned before unknown-field errors can hide them. -func UnmarshalSpecStrict(data []byte, v any) error { - if err := json.Unmarshal(data, v); err != nil { - return err - } - d := json.NewDecoder(bytes.NewReader(data)) - d.DisallowUnknownFields() - return d.Decode(v) -} - // HasUnknownFields reports whether a ParsingSpecError was caused by unknown spec fields. // Webhook ValidateUpdate uses this to allow updates to CRs that contain fields unknown to // the current operator version (e.g. after a downgrade), while ValidateCreate still rejects them. func HasUnknownFields(parsingSpecErr string) bool { - return strings.Contains(parsingSpecErr, "json: unknown field") + return strings.Contains(parsingSpecErr, "unknown object member name") || strings.Contains(parsingSpecErr, "json: unknown field") +} + +// UnmarshalSpecStrict unmarshals src into spec using case-insensitive field name matching. It +// first attempts a lenient parse (case-insensitive only, unknown members allowed) so a genuine +// type/syntax error is returned before a stricter "unknown member" error could mask it, then +// re-parses with unknown members rejected so those are still reported when nothing more +// fundamental is wrong. +func UnmarshalSpecStrict(src []byte, spec any) error { + if err := json.Unmarshal(src, spec, json.MatchCaseInsensitiveNames(true)); err != nil { + return err + } + return json.Unmarshal(src, spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)) } // UnmarshalJSON implements json.Unmarshaller interface func (c *TLSConfig) UnmarshalJSON(data []byte) error { - decoder := json.NewDecoder(bytes.NewReader(data)) - decoder.DisallowUnknownFields() - type pc TLSConfig - if err := decoder.Decode((*pc)(c)); err != nil { + if err := UnmarshalSpecStrict(data, (*pc)(c)); err != nil { return err } diff --git a/api/operator/v1beta1/vmextra_types_test.go b/api/operator/v1beta1/vmextra_types_test.go index c90ee705b6..f4efcff960 100644 --- a/api/operator/v1beta1/vmextra_types_test.go +++ b/api/operator/v1beta1/vmextra_types_test.go @@ -1,7 +1,7 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/v2" "fmt" "testing" @@ -91,9 +91,10 @@ func TestStringOrArrayMarshal(t *testing.T) { assert.Equal(t, expected, string(got)) } - f(&StringOrArray{"1", "2", "3"}, json.Marshal, `["1","2","3"]`) - f(&StringOrArray{"1"}, json.Marshal, `"1"`) - f(&StringOrArray{}, json.Marshal, `""`) + jsonMarshal := func(v any) ([]byte, error) { return json.Marshal(v) } + f(&StringOrArray{"1", "2", "3"}, jsonMarshal, `["1","2","3"]`) + f(&StringOrArray{"1"}, jsonMarshal, `"1"`) + f(&StringOrArray{}, jsonMarshal, `""`) f(&StringOrArray{"1", "2", "3"}, yaml.Marshal, `- "1" - "2" - "3" @@ -112,9 +113,10 @@ func TestStringOrArrayUnMarshal(t *testing.T) { assert.NoError(t, unmarshalF([]byte(src), &got)) assert.Equal(t, expected, got) } - f(`["1","2","3"]`, json.Unmarshal, StringOrArray{"1", "2", "3"}) - f(`"1"`, json.Unmarshal, StringOrArray{"1"}) - f(`""`, json.Unmarshal, StringOrArray{""}) + jsonUnmarshal := func(data []byte, v any) error { return json.Unmarshal(data, v) } + f(`["1","2","3"]`, jsonUnmarshal, StringOrArray{"1", "2", "3"}) + f(`"1"`, jsonUnmarshal, StringOrArray{"1"}) + f(`""`, jsonUnmarshal, StringOrArray{""}) f(`- "1" - "2" - "3" diff --git a/api/operator/v1beta1/vmnodescrape_types.go b/api/operator/v1beta1/vmnodescrape_types.go index bfa253aac2..50cd02db06 100644 --- a/api/operator/v1beta1/vmnodescrape_types.go +++ b/api/operator/v1beta1/vmnodescrape_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -87,7 +88,7 @@ func (cr *VMNodeScrape) UnmarshalJSON(src []byte) error { type pcr VMNodeScrape type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmpodscrape_types.go b/api/operator/v1beta1/vmpodscrape_types.go index 3ff05f8b1c..a0c49efec6 100644 --- a/api/operator/v1beta1/vmpodscrape_types.go +++ b/api/operator/v1beta1/vmpodscrape_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -152,7 +153,7 @@ func (cr *VMPodScrape) UnmarshalJSON(src []byte) error { type pcr VMPodScrape type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmprobe_types.go b/api/operator/v1beta1/vmprobe_types.go index a82a54a6f7..8db6f58ee8 100644 --- a/api/operator/v1beta1/vmprobe_types.go +++ b/api/operator/v1beta1/vmprobe_types.go @@ -17,7 +17,8 @@ limitations under the License. package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -167,7 +168,7 @@ func (cr *VMProbe) UnmarshalJSON(src []byte) error { type pcr VMProbe type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmrule_types.go b/api/operator/v1beta1/vmrule_types.go index 90fff90476..042d3c08fa 100644 --- a/api/operator/v1beta1/vmrule_types.go +++ b/api/operator/v1beta1/vmrule_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "net/url" "strconv" @@ -253,7 +254,7 @@ func (cr *VMRule) UnmarshalJSON(src []byte) error { type pcr VMRule type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmrule_types_test.go b/api/operator/v1beta1/vmrule_types_test.go index 4acec267c7..bf893f28e9 100644 --- a/api/operator/v1beta1/vmrule_types_test.go +++ b/api/operator/v1beta1/vmrule_types_test.go @@ -1,7 +1,7 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/v2" "reflect" "strings" "testing" diff --git a/api/operator/v1beta1/vmscrapeconfig_types.go b/api/operator/v1beta1/vmscrapeconfig_types.go index 51417dfb0d..c44ca938e8 100644 --- a/api/operator/v1beta1/vmscrapeconfig_types.go +++ b/api/operator/v1beta1/vmscrapeconfig_types.go @@ -16,7 +16,8 @@ limitations under the License. package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" corev1 "k8s.io/api/core/v1" @@ -790,7 +791,7 @@ func (cr *VMScrapeConfig) UnmarshalJSON(src []byte) error { type pcr VMScrapeConfig type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmservicescrape_types.go b/api/operator/v1beta1/vmservicescrape_types.go index 39f00a5b3b..6866d1fc0d 100644 --- a/api/operator/v1beta1/vmservicescrape_types.go +++ b/api/operator/v1beta1/vmservicescrape_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -174,7 +175,7 @@ func (cr *VMServiceScrape) UnmarshalJSON(src []byte) error { type pcr VMServiceScrape type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmsingle_types.go b/api/operator/v1beta1/vmsingle_types.go index 15ea3d12d2..29e99dadbf 100644 --- a/api/operator/v1beta1/vmsingle_types.go +++ b/api/operator/v1beta1/vmsingle_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -116,9 +117,9 @@ type VMSingleSpec struct { // NetworkPolicy defines network access rules for pods created by this CR. // +optional NetworkPolicy *EmbeddedNetworkPolicy `json:"networkPolicy,omitempty"` - CommonRelabelParams `json:",inline,omitempty"` - CommonScrapeParams `json:",inline,omitempty"` - CommonConfigReloaderParams `json:",inline,omitempty"` + CommonRelabelParams `json:",inline"` + CommonScrapeParams `json:",inline"` + CommonConfigReloaderParams `json:",inline"` CommonAppsParams `json:",inline"` } @@ -239,7 +240,7 @@ func (cr *VMSingle) UnmarshalJSON(src []byte) error { type pcr VMSingle type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmstaticscrape_types.go b/api/operator/v1beta1/vmstaticscrape_types.go index 7ee0be6481..62d3464535 100644 --- a/api/operator/v1beta1/vmstaticscrape_types.go +++ b/api/operator/v1beta1/vmstaticscrape_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -93,7 +94,7 @@ func (cr *VMStaticScrape) UnmarshalJSON(src []byte) error { type pcr VMStaticScrape type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/vmuser_types.go b/api/operator/v1beta1/vmuser_types.go index 16ee822f2d..9d4a556d0b 100644 --- a/api/operator/v1beta1/vmuser_types.go +++ b/api/operator/v1beta1/vmuser_types.go @@ -1,7 +1,8 @@ package v1beta1 import ( - "encoding/json" + "encoding/json/jsontext" + "encoding/json/v2" "fmt" "strings" @@ -136,7 +137,7 @@ type TargetRef struct { Paths []string `json:"paths,omitempty"` Hosts []string `json:"hosts,omitempty"` - URLMapCommon `json:",omitempty"` + URLMapCommon `json:",inline"` // TargetPathSuffix allows to add some suffix to the target path // It allows to hide tenant configuration from user with crd as ref. @@ -386,7 +387,7 @@ func (cr *VMUser) UnmarshalJSON(src []byte) error { type pcr VMUser type shadow struct { *pcr - Spec json.RawMessage `json:"spec"` + Spec jsontext.Value `json:"spec"` } s := shadow{pcr: (*pcr)(cr)} if err := json.Unmarshal(src, &s); err != nil { diff --git a/api/operator/v1beta1/zz_generated.deepcopy.go b/api/operator/v1beta1/zz_generated.deepcopy.go index cbd6afb1e9..821f2383bc 100644 --- a/api/operator/v1beta1/zz_generated.deepcopy.go +++ b/api/operator/v1beta1/zz_generated.deepcopy.go @@ -3231,11 +3231,6 @@ func (in *Receiver) DeepCopy() *Receiver { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RelabelConfig) DeepCopyInto(out *RelabelConfig) { *out = *in - if in.UnderScoreSourceLabels != nil { - in, out := &in.UnderScoreSourceLabels, &out.UnderScoreSourceLabels - *out = make([]string, len(*in)) - copy(*out, *in) - } if in.SourceLabels != nil { in, out := &in.SourceLabels, &out.SourceLabels *out = make([]string, len(*in)) diff --git a/cmd/config-reloader/k8s_watch.go b/cmd/config-reloader/k8s_watch.go index 7beb63b57c..3b52e60ae1 100644 --- a/cmd/config-reloader/k8s_watch.go +++ b/cmd/config-reloader/k8s_watch.go @@ -34,7 +34,7 @@ type syncEvent struct { obj *corev1.Secret } -func newKubernetesWatcher(ctx context.Context, secretName, namespace string) (*k8sWatcher, error) { +func newKubernetesWatcher(secretName, namespace string) (*k8sWatcher, error) { lr := clientcmd.NewDefaultClientConfigLoadingRules() cfg := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(lr, &clientcmd.ConfigOverrides{}) @@ -47,7 +47,7 @@ func newKubernetesWatcher(ctx context.Context, secretName, namespace string) (*k return nil, fmt.Errorf("cannot start watch for secret: %w", err) } inf := cache.NewSharedIndexInformer(&cache.ListWatch{ - ListWithContextFunc: func(_ context.Context, options metav1.ListOptions) (runtime.Object, error) { + ListWithContextFunc: func(ctx context.Context, options metav1.ListOptions) (runtime.Object, error) { var s corev1.SecretList listOpts := &client.ListOptions{ Namespace: namespace, @@ -61,7 +61,7 @@ func newKubernetesWatcher(ctx context.Context, secretName, namespace string) (*k return &s, nil }, - WatchFuncWithContext: func(_ context.Context, options metav1.ListOptions) (watch.Interface, error) { + WatchFuncWithContext: func(ctx context.Context, options metav1.ListOptions) (watch.Interface, error) { listOpts := &client.ListOptions{ Namespace: namespace, FieldSelector: fields.OneTermEqualSelector("metadata.name", secretName), diff --git a/cmd/config-reloader/main.go b/cmd/config-reloader/main.go index 1a8fdde21c..4c4d04f2bb 100644 --- a/cmd/config-reloader/main.go +++ b/cmd/config-reloader/main.go @@ -104,7 +104,7 @@ func main() { r := reloader{ c: buildHTTPClient(), } - configWatcher, err := newConfigWatcher(ctx) + configWatcher, err := newConfigWatcher() if err != nil { logger.Fatalf("cannot create configWatcher: %s", err) } @@ -352,7 +352,7 @@ func (ew *emptyWatcher) start(_ context.Context, _ chan struct{}) {} func (ew *emptyWatcher) close() {} -func newConfigWatcher(ctx context.Context) (watcher, error) { +func newConfigWatcher() (watcher, error) { var w watcher if *configFileName == "" && *configSecretName == "" { logger.Infof("direct config watch not needed, both configFileName and configSecretName is empty") @@ -383,7 +383,7 @@ func newConfigWatcher(ctx context.Context) (watcher, error) { namespace := secretNamespaced[:idx] secretName := secretNamespaced[idx+1:] logger.Infof("starting watch for secret: %s at namespace: %s", secretName, namespace) - kw, err := newKubernetesWatcher(ctx, secretName, namespace) + kw, err := newKubernetesWatcher(secretName, namespace) if err != nil { return nil, fmt.Errorf("cannot create kubernetes watcher: %w", err) } diff --git a/config/crd/overlay/crd.descriptionless.yaml b/config/crd/overlay/crd.descriptionless.yaml index d089ae1a44..7fbb648d19 100644 --- a/config/crd/overlay/crd.descriptionless.yaml +++ b/config/crd/overlay/crd.descriptionless.yaml @@ -9908,19 +9908,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array globalScrapeRelabelConfigs: items: @@ -9944,19 +9939,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array host_aliases: items: @@ -10383,19 +10373,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array inlineScrapeConfig: type: string @@ -10699,19 +10684,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array nodeScrapeSelector: properties: @@ -10839,19 +10819,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array podScrapeSelector: properties: @@ -10934,19 +10909,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array probeSelector: properties: @@ -11089,19 +11059,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array maxDiskUsage: x-kubernetes-preserve-unknown-fields: true @@ -11170,6 +11135,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string queues: @@ -11256,19 +11222,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array interval: type: string @@ -11300,19 +11261,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array outputs: items: @@ -11616,19 +11572,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array name: minLength: 1 @@ -11698,6 +11649,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true relabelConfigs: items: properties: @@ -11720,19 +11672,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array tlsConfig: properties: @@ -11821,6 +11768,7 @@ spec: required: - name type: object + x-kubernetes-preserve-unknown-fields: true type: array x-kubernetes-list-map-keys: - name @@ -11873,19 +11821,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array scrapeConfigSelector: properties: @@ -11978,19 +11921,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array serviceScrapeSelector: properties: @@ -12331,19 +12269,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array staticScrapeSelector: properties: @@ -12449,19 +12382,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array interval: type: string @@ -12493,19 +12421,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array outputs: items: @@ -12743,6 +12666,7 @@ spec: required: - remoteWrite type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -12866,6 +12790,7 @@ spec: type: string type: array type: object + x-kubernetes-preserve-unknown-fields: true type: array receivers: items: @@ -13043,6 +12968,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -13150,6 +13076,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: type: string send_resolved: @@ -13174,6 +13101,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array email_configs: items: @@ -13313,6 +13241,7 @@ spec: to: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array incidentio_configs: items: @@ -13345,6 +13274,7 @@ spec: url_file: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array jira_configs: items: @@ -13386,6 +13316,7 @@ spec: - issue_type - project type: object + x-kubernetes-preserve-unknown-fields: true type: array mattermost_configs: items: @@ -13413,6 +13344,7 @@ spec: value: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array footer: type: string @@ -13431,6 +13363,7 @@ spec: title_link: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array channel: type: string @@ -13449,11 +13382,13 @@ spec: requested_ack: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true props: properties: card: type: string type: object + x-kubernetes-preserve-unknown-fields: true send_resolved: type: boolean text: @@ -13478,6 +13413,7 @@ spec: required: - text type: object + x-kubernetes-preserve-unknown-fields: true type: array msteams_configs: items: @@ -13647,6 +13583,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -13754,6 +13691,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true send_resolved: type: boolean text: @@ -13776,6 +13714,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array msteamsv2_configs: items: @@ -13804,6 +13743,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array name: minLength: 1 @@ -13860,6 +13800,7 @@ spec: required: - type type: object + x-kubernetes-preserve-unknown-fields: true type: array send_resolved: type: boolean @@ -13870,6 +13811,7 @@ spec: update_alerts: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: array pagerduty_configs: items: @@ -13905,6 +13847,7 @@ spec: required: - source type: object + x-kubernetes-preserve-unknown-fields: true type: array links: items: @@ -13916,6 +13859,7 @@ spec: required: - href type: object + x-kubernetes-preserve-unknown-fields: true type: array routing_key: properties: @@ -13950,6 +13894,7 @@ spec: url: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array pushover_configs: items: @@ -14004,6 +13949,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array rocketchat_configs: items: @@ -14020,6 +13966,7 @@ spec: url: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array api_url: type: string @@ -14039,6 +13986,7 @@ spec: value: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array http_config: x-kubernetes-preserve-unknown-fields: true @@ -14087,6 +14035,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array slack_configs: items: @@ -14108,6 +14057,7 @@ spec: required: - text type: object + x-kubernetes-preserve-unknown-fields: true name: type: string style: @@ -14126,6 +14076,7 @@ spec: - text - type type: object + x-kubernetes-preserve-unknown-fields: true type: array api_url: properties: @@ -14163,6 +14114,7 @@ spec: - title - value type: object + x-kubernetes-preserve-unknown-fields: true type: array footer: type: string @@ -14200,6 +14152,7 @@ spec: username: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sns_configs: items: @@ -14375,6 +14328,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -14482,6 +14436,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: type: string phone_number: @@ -14525,6 +14480,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true subject: type: string target_arn: @@ -14532,6 +14488,7 @@ spec: topic_arn: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array telegram_configs: items: @@ -14570,6 +14527,7 @@ spec: - bot_token - chat_id type: object + x-kubernetes-preserve-unknown-fields: true type: array victorops_configs: items: @@ -14760,6 +14718,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -14867,6 +14826,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message_type: type: string monitoring_tool: @@ -14880,6 +14840,7 @@ spec: required: - routing_key type: object + x-kubernetes-preserve-unknown-fields: true type: array webex_configs: items: @@ -15051,6 +15012,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -15158,6 +15120,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: type: string room_id: @@ -15167,6 +15130,7 @@ spec: required: - room_id type: object + x-kubernetes-preserve-unknown-fields: true type: array webhook_configs: items: @@ -15199,6 +15163,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array wechat_configs: items: @@ -15387,6 +15352,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -15494,6 +15460,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: type: string message_type: @@ -15507,10 +15474,12 @@ spec: to_user: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array required: - name type: object + x-kubernetes-preserve-unknown-fields: true type: array route: properties: @@ -15550,6 +15519,7 @@ spec: required: - receiver type: object + x-kubernetes-preserve-unknown-fields: true time_intervals: items: properties: @@ -15579,6 +15549,7 @@ spec: - end_time - start_time type: object + x-kubernetes-preserve-unknown-fields: true type: array weekdays: items: @@ -15589,13 +15560,16 @@ spec: type: string type: array type: object + x-kubernetes-preserve-unknown-fields: true type: array required: - name - time_intervals type: object + x-kubernetes-preserve-unknown-fields: true type: array type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -30357,19 +30331,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: properties: @@ -30436,6 +30405,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -30470,19 +30440,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: type: integer @@ -30761,9 +30726,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -30771,7 +30738,9 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -30994,19 +30963,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: properties: @@ -31073,6 +31037,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -31112,19 +31077,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: type: integer @@ -31376,9 +31336,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -31386,7 +31348,9 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true type: array podTargetLabels: items: @@ -31621,19 +31585,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array module: type: string @@ -31702,6 +31661,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -31764,19 +31724,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array role: enum: @@ -31846,19 +31801,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array role: enum: @@ -31923,19 +31873,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array targets: items: @@ -31972,19 +31917,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array targets: items: @@ -32224,9 +32164,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -32234,6 +32176,7 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true vmProberSpec: properties: path: @@ -32251,6 +32194,7 @@ spec: required: - vmProberSpec type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -32683,6 +32627,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: format: int32 type: integer @@ -32820,9 +32765,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string resourceGroup: @@ -33094,6 +33041,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: properties: authorization: @@ -33228,9 +33176,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string scheme: @@ -33482,6 +33432,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true partition: type: string proxy_client_config: @@ -33618,9 +33569,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string scheme: @@ -33865,6 +33818,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: format: int32 type: integer @@ -34002,9 +33956,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string server: @@ -34259,6 +34215,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: format: int32 type: integer @@ -34396,9 +34353,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string tlsConfig: @@ -34625,6 +34584,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: format: int32 type: integer @@ -34762,9 +34722,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string role: @@ -35035,6 +34997,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: properties: authorization: @@ -35169,9 +35132,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string server: @@ -35417,6 +35382,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: format: int32 type: integer @@ -35554,9 +35520,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string role: @@ -35779,6 +35747,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: properties: authorization: @@ -35913,9 +35882,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string tlsConfig: @@ -36151,6 +36122,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: properties: authorization: @@ -36285,9 +36257,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string role: @@ -36533,6 +36507,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: properties: authorization: @@ -36667,9 +36642,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string server: @@ -36884,6 +36861,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: properties: authorization: @@ -37018,9 +36996,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string servers: @@ -37141,19 +37121,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array nomadSDConfigs: items: @@ -37280,6 +37255,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: properties: authorization: @@ -37414,9 +37390,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string region: @@ -37579,6 +37557,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true openstackSDConfigs: items: properties: @@ -37891,6 +37870,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: properties: authorization: @@ -38025,9 +38005,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string service: @@ -38261,6 +38243,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: format: int32 type: integer @@ -38398,9 +38381,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string query: @@ -38518,19 +38503,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: type: integer @@ -38793,9 +38773,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -38803,6 +38785,7 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true vultrSDConfigs: items: properties: @@ -38932,6 +38915,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: format: int32 type: integer @@ -39069,9 +39053,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: type: string region: @@ -39279,6 +39265,7 @@ spec: type: object type: array type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -39495,19 +39482,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: properties: @@ -39574,6 +39556,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -39608,19 +39591,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: type: integer @@ -39872,9 +39850,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -39882,7 +39862,9 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true type: array jobLabel: type: string @@ -40375,19 +40357,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array globalScrapeRelabelConfigs: items: @@ -40411,19 +40388,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array host_aliases: items: @@ -40506,19 +40478,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array inlineScrapeConfig: type: string @@ -40822,19 +40789,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array nodeScrapeSelector: properties: @@ -40933,19 +40895,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array podScrapeSelector: properties: @@ -41028,19 +40985,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array probeSelector: properties: @@ -41256,19 +41208,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array name: minLength: 1 @@ -41338,6 +41285,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true relabelConfigs: items: properties: @@ -41360,19 +41308,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array tlsConfig: properties: @@ -41461,6 +41404,7 @@ spec: required: - name type: object + x-kubernetes-preserve-unknown-fields: true type: array x-kubernetes-list-map-keys: - name @@ -41513,19 +41457,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array scrapeConfigSelector: properties: @@ -41618,19 +41557,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array serviceScrapeSelector: properties: @@ -41735,19 +41669,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array staticScrapeSelector: properties: @@ -41956,19 +41885,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array interval: type: string @@ -42000,19 +41924,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array outputs: items: @@ -42486,6 +42405,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -42695,19 +42615,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: properties: @@ -42774,6 +42689,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -42806,19 +42722,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: type: integer @@ -43070,9 +42981,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -43080,9 +42993,11 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true required: - targets type: object + x-kubernetes-preserve-unknown-fields: true type: array required: - targetEndpoints @@ -44702,19 +44617,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: properties: @@ -44781,6 +44691,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -44815,19 +44726,14 @@ spec: type: string separator: type: string - source_labels: - items: - type: string - type: array sourceLabels: items: type: string type: array - target_label: - type: string targetLabel: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: type: integer @@ -45079,9 +44985,11 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -45089,7 +44997,9 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true type: array jobLabel: type: string diff --git a/config/crd/overlay/crd.yaml b/config/crd/overlay/crd.yaml index 01463fb896..db2a880726 100644 --- a/config/crd/overlay/crd.yaml +++ b/config/crd/overlay/crd.yaml @@ -20020,15 +20020,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -20037,19 +20028,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array globalScrapeRelabelConfigs: description: GlobalScrapeRelabelConfigs is a global relabel configuration, @@ -20098,15 +20083,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -20115,19 +20091,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array host_aliases: description: |- @@ -20914,15 +20884,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -20931,19 +20892,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array inlineScrapeConfig: description: |- @@ -21564,15 +21519,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -21581,19 +21527,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array nodeScrapeSelector: description: |- @@ -21858,15 +21798,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -21875,19 +21806,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array podScrapeSelector: description: |- @@ -22051,15 +21976,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -22068,19 +21984,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array probeSelector: description: |- @@ -22366,15 +22276,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -22383,19 +22284,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array maxDiskUsage: description: |- @@ -22516,6 +22411,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: 'ProxyURL for -remoteWrite.url. Supported proxies: http, https, socks5. Example: socks5://proxy:1234' @@ -22691,15 +22587,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -22708,19 +22595,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array interval: description: Interval is the interval between aggregations. @@ -22788,15 +22669,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -22805,19 +22677,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array outputs: description: |- @@ -23427,15 +23293,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -23444,19 +23301,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array name: description: name of the scrape class. @@ -23576,6 +23427,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true relabelConfigs: description: RelabelConfigs to apply to samples during service discovery. @@ -23622,15 +23474,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -23639,19 +23482,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array tlsConfig: description: TLSConfig configuration to use when scraping the @@ -23814,6 +23651,7 @@ spec: required: - name type: object + x-kubernetes-preserve-unknown-fields: true type: array x-kubernetes-list-map-keys: - name @@ -23916,15 +23754,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -23933,19 +23762,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array scrapeConfigSelector: description: |- @@ -24126,15 +23949,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -24143,19 +23957,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array serviceScrapeSelector: description: |- @@ -24920,15 +24728,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -24937,19 +24736,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array staticScrapeSelector: description: |- @@ -25159,15 +24952,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -25176,19 +24960,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array interval: description: Interval is the interval between aggregations. @@ -25255,15 +25033,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -25272,19 +25041,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array outputs: description: |- @@ -25765,6 +25528,7 @@ spec: required: - remoteWrite type: object + x-kubernetes-preserve-unknown-fields: true status: description: VMAgentStatus defines the observed state of VMAgent properties: @@ -25954,6 +25718,7 @@ spec: type: string type: array type: object + x-kubernetes-preserve-unknown-fields: true type: array receivers: description: Receivers defines alert receivers @@ -26289,6 +26054,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -26493,6 +26259,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: description: The message body template type: string @@ -26541,6 +26308,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array email_configs: description: EmailConfigs defines email notification configurations. @@ -26802,13 +26570,15 @@ spec: description: The email address to send notifications to. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array incidentio_configs: items: description: |- IncidentioConfig configures notifications via incident.io. https://prometheus.io/docs/alerting/latest/configuration/#incidentio_config - Available from v0.29.0 alertmanager version + available from v0.66.0 operator version + and v0.29.0 alertmanager version properties: alert_source_token: description: |- @@ -26867,13 +26637,15 @@ spec: Mutually exclusive with URL. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array jira_configs: items: description: |- JiraConfig represent alertmanager's jira_config entry https://prometheus.io/docs/alerting/latest/configuration/#jira_config - Available from v0.28.0 alertmanager version + available from v0.55.0 operator version + and v0.28.0 alertmanager version properties: api_url: description: |- @@ -26943,6 +26715,7 @@ spec: - issue_type - project type: object + x-kubernetes-preserve-unknown-fields: true type: array mattermost_configs: description: MattermostConfigs defines Mattermost notification @@ -26975,6 +26748,7 @@ spec: value: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array footer: type: string @@ -26993,6 +26767,7 @@ spec: title_link: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array channel: description: Channel overrides the channel the message @@ -27017,11 +26792,13 @@ spec: requested_ack: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true props: properties: card: type: string type: object + x-kubernetes-preserve-unknown-fields: true send_resolved: description: SendResolved controls notify about resolved alerts. @@ -27069,6 +26846,7 @@ spec: required: - text type: object + x-kubernetes-preserve-unknown-fields: true type: array msteams_configs: items: @@ -27388,6 +27166,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -27592,6 +27371,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true send_resolved: description: SendResolved controls notify about resolved alerts. @@ -27635,13 +27415,15 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array msteamsv2_configs: items: description: |- MSTeamsV2Config sends notifications using the new message format with adaptive cards as required by flows. https://support.microsoft.com/en-gb/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498 - Available from v0.28.0 alertmanager version + available from v0.55.0 operator version + and v0.28.0 alertmanager version properties: http_config: x-kubernetes-preserve-unknown-fields: true @@ -27688,6 +27470,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array name: description: Name of the receiver. Must be unique across all @@ -27786,6 +27569,7 @@ spec: required: - type type: object + x-kubernetes-preserve-unknown-fields: true type: array send_resolved: description: SendResolved controls notify about resolved @@ -27804,6 +27588,7 @@ spec: By default, the alert is never updated in OpsGenie, the new message only appears in activity log. type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: array pagerduty_configs: description: PagerDutyConfigs defines pager duty notification @@ -27859,6 +27644,7 @@ spec: required: - source type: object + x-kubernetes-preserve-unknown-fields: true type: array links: description: Links to attach to the incident. @@ -27875,6 +27661,7 @@ spec: required: - href type: object + x-kubernetes-preserve-unknown-fields: true type: array routing_key: description: |- @@ -27942,6 +27729,7 @@ spec: description: The URL to send requests to. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array pushover_configs: description: PushoverConfigs defines push over notification @@ -28047,13 +27835,15 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array rocketchat_configs: items: description: |- RocketchatConfig configures notifications via Rocketchat. https://prometheus.io/docs/alerting/latest/configuration/#rocketchat_config - Available from v0.28.0 alertmanager version + available from v0.55.0 operator version + and v0.28.0 alertmanager version properties: actions: items: @@ -28070,6 +27860,7 @@ spec: url: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array api_url: type: string @@ -28094,6 +27885,7 @@ spec: value: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array http_config: x-kubernetes-preserve-unknown-fields: true @@ -28168,6 +27960,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array slack_configs: description: SlackConfigs defines slack notification configurations. @@ -28206,6 +27999,7 @@ spec: required: - text type: object + x-kubernetes-preserve-unknown-fields: true name: type: string style: @@ -28224,6 +28018,7 @@ spec: - text - type type: object + x-kubernetes-preserve-unknown-fields: true type: array api_url: description: |- @@ -28282,6 +28077,7 @@ spec: - title - value type: object + x-kubernetes-preserve-unknown-fields: true type: array footer: type: string @@ -28326,6 +28122,7 @@ spec: username: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sns_configs: items: @@ -28653,6 +28450,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -28857,6 +28655,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: description: The message content of the SNS notification. type: string @@ -28940,6 +28739,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true subject: description: The subject line if message is delivered to an email endpoint. @@ -28954,6 +28754,7 @@ spec: or target_arn type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array telegram_configs: items: @@ -29021,6 +28822,7 @@ spec: - bot_token - chat_id type: object + x-kubernetes-preserve-unknown-fields: true type: array victorops_configs: description: VictorOpsConfigs defines victor ops notification @@ -29385,6 +29187,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -29589,6 +29392,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message_type: description: Describes the behavior of the alert (CRITICAL, WARNING, INFO). @@ -29611,6 +29415,7 @@ spec: required: - routing_key type: object + x-kubernetes-preserve-unknown-fields: true type: array webex_configs: items: @@ -29935,6 +29740,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -30139,6 +29945,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: description: The message body template type: string @@ -30153,6 +29960,7 @@ spec: required: - room_id type: object + x-kubernetes-preserve-unknown-fields: true type: array webhook_configs: description: WebhookConfigs defines webhook notification configurations. @@ -30214,6 +30022,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array wechat_configs: description: WechatConfigs defines wechat notification configurations. @@ -30576,6 +30385,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxyConnectHeader: additionalProperties: items: @@ -30780,6 +30590,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: description: API request data as defined by the WeChat API. @@ -30797,10 +30608,12 @@ spec: to_user: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array required: - name type: object + x-kubernetes-preserve-unknown-fields: true type: array route: description: Route definition for alertmanager, may include nested @@ -30862,6 +30675,7 @@ spec: required: - receiver type: object + x-kubernetes-preserve-unknown-fields: true time_intervals: description: |- TimeIntervals defines named interval for active/mute notifications interval @@ -30911,6 +30725,7 @@ spec: - end_time - start_time type: object + x-kubernetes-preserve-unknown-fields: true type: array weekdays: description: Weekdays defines list of days of the week, @@ -30926,13 +30741,16 @@ spec: type: string type: array type: object + x-kubernetes-preserve-unknown-fields: true type: array required: - name - time_intervals type: object + x-kubernetes-preserve-unknown-fields: true type: array type: object + x-kubernetes-preserve-unknown-fields: true status: description: VMAlertmanagerConfigStatus defines the observed state of VMAlertmanagerConfig @@ -60508,15 +60326,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -60525,19 +60334,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: description: OAuth2 defines auth configuration @@ -60651,6 +60454,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -60713,15 +60517,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -60730,19 +60525,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: description: SampleLimit defines per-scrape limit on number of scraped @@ -61250,11 +61039,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -61262,7 +61053,9 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true status: description: ScrapeObjectStatus defines the observed state of ScrapeObjects properties: @@ -61652,15 +61445,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -61669,19 +61453,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: description: OAuth2 defines auth configuration @@ -61797,6 +61575,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -61867,15 +61646,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -61884,19 +61654,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: description: SampleLimit defines per-scrape limit on number @@ -62365,11 +62129,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -62377,7 +62143,9 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true type: array podTargetLabels: description: PodTargetLabels transfers labels on the Kubernetes Pod @@ -62776,15 +62544,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -62793,19 +62552,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array module: description: |- @@ -62925,6 +62678,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -63035,15 +62789,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -63052,19 +62797,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array role: description: Role defines k8s role name @@ -63188,15 +62927,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -63205,19 +62935,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array role: description: Role defines k8s role name @@ -63331,15 +63055,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -63348,19 +63063,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array targets: description: Targets is a list of URLs to probe using the @@ -63427,15 +63136,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -63444,19 +63144,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array targets: description: Targets is a list of URLs to probe using the @@ -63894,11 +63588,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -63906,6 +63602,7 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true vmProberSpec: description: |- Specification for the prober to use for probing targets. @@ -63933,6 +63630,7 @@ spec: required: - vmProberSpec type: object + x-kubernetes-preserve-unknown-fields: true status: description: ScrapeObjectStatus defines the observed state of ScrapeObjects properties: @@ -64654,6 +64352,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: description: |- The port to scrape metrics from. If using the public IP address, this must @@ -64910,11 +64609,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -65417,6 +65118,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: description: |- ProxyClientConfig configures proxy auth settings for scraping @@ -65667,11 +65369,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -66128,6 +65832,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true partition: description: Admin Partitions are only supported in Consul Enterprise. type: string @@ -66381,11 +66086,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -66828,6 +66535,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: description: The port to scrape metrics from. format: int32 @@ -67082,11 +66790,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -67542,6 +67252,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: description: Port to scrape metrics from, when containers expose multiple ports. @@ -67797,11 +67508,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -68210,6 +67923,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: description: Port to scrape metrics from, when containers expose multiple ports. @@ -68465,11 +68179,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -68957,6 +68673,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: description: |- ProxyClientConfig configures proxy auth settings for scraping @@ -69207,11 +68924,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -69665,6 +69384,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: description: Port is an optional port to scrape metrics from format: int32 @@ -69919,11 +69639,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -70327,6 +70049,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: description: |- ProxyClientConfig configures proxy auth settings for scraping @@ -70577,11 +70300,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -71015,6 +70740,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: description: |- ProxyClientConfig configures proxy auth settings for scraping @@ -71265,11 +70991,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -71698,6 +71426,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: description: |- ProxyClientConfig configures proxy auth settings for scraping @@ -71948,11 +71677,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -72344,6 +72075,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: description: |- ProxyClientConfig configures proxy auth settings for scraping @@ -72594,11 +72326,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -72820,15 +72554,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -72837,19 +72562,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array nomadSDConfigs: description: NomadSDConfigs defines a list of Nomad service discovery @@ -73080,6 +72799,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: description: |- ProxyClientConfig configures proxy auth settings for scraping @@ -73330,11 +73050,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -73625,6 +73347,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true openstackSDConfigs: description: OpenStackSDConfigs defines a list of OpenStack service discovery configurations. @@ -74199,6 +73922,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true proxy_client_config: description: |- ProxyClientConfig configures proxy auth settings for scraping @@ -74449,11 +74173,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -74869,6 +74595,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: description: Port defines port to scrape metrics from format: int32 @@ -75123,11 +74850,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -75346,15 +75075,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -75363,19 +75083,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: description: SampleLimit defines per-scrape limit on number of scraped @@ -75853,11 +75567,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -75865,6 +75581,7 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true vultrSDConfigs: description: VultrSDConfigs defines a list of Vultr service discovery configurations. @@ -76102,6 +75819,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true port: description: Port is an optional port to scrape metrics from. format: int32 @@ -76356,11 +76074,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true proxyURL: description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. @@ -76740,6 +76460,7 @@ spec: type: object type: array type: object + x-kubernetes-preserve-unknown-fields: true status: description: ScrapeObjectStatus defines the observed state of ScrapeObjects properties: @@ -77118,15 +76839,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -77135,19 +76847,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: description: OAuth2 defines auth configuration @@ -77263,6 +76969,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -77326,15 +77033,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -77343,19 +77041,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: description: SampleLimit defines per-scrape limit on number @@ -77824,11 +77516,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -77836,7 +77530,9 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true type: array jobLabel: description: The label to use to retrieve the job name from. @@ -78745,15 +78441,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -78762,19 +78449,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array globalScrapeRelabelConfigs: description: GlobalScrapeRelabelConfigs is a global relabel configuration, @@ -78823,15 +78504,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -78840,19 +78512,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array host_aliases: description: |- @@ -79018,15 +78684,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -79035,19 +78692,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array inlineScrapeConfig: description: |- @@ -79667,15 +79318,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -79684,19 +79326,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array nodeScrapeSelector: description: |- @@ -79899,15 +79535,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -79916,19 +79543,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array podScrapeSelector: description: |- @@ -80092,15 +79713,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -80109,19 +79721,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array probeSelector: description: |- @@ -80546,15 +80152,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -80563,19 +80160,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array name: description: name of the scrape class. @@ -80695,6 +80286,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true relabelConfigs: description: RelabelConfigs to apply to samples during service discovery. @@ -80741,15 +80333,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -80758,19 +80341,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array tlsConfig: description: TLSConfig configuration to use when scraping the @@ -80933,6 +80510,7 @@ spec: required: - name type: object + x-kubernetes-preserve-unknown-fields: true type: array x-kubernetes-list-map-keys: - name @@ -81035,15 +80613,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -81052,19 +80621,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array scrapeConfigSelector: description: |- @@ -81245,15 +80808,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -81262,19 +80816,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array serviceScrapeSelector: description: |- @@ -81483,15 +81031,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -81500,19 +81039,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array staticScrapeSelector: description: |- @@ -81957,15 +81490,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -81974,19 +81498,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array interval: description: Interval is the interval between aggregations. @@ -82053,15 +81571,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -82070,19 +81579,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array outputs: description: |- @@ -83029,6 +82532,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true status: description: VMSingleStatus defines the observed state of VMSingle properties: @@ -83382,15 +82886,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -83399,19 +82894,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: description: OAuth2 defines auth configuration @@ -83527,6 +83016,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -83587,15 +83077,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -83604,19 +83085,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: description: SampleLimit defines per-scrape limit on number @@ -84083,11 +83558,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -84095,9 +83572,11 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true required: - targets type: object + x-kubernetes-preserve-unknown-fields: true type: array required: - targetEndpoints @@ -87167,15 +86646,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -87184,19 +86654,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array oauth2: description: OAuth2 defines auth configuration @@ -87314,6 +86778,7 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true params: additionalProperties: items: @@ -87377,15 +86842,6 @@ spec: description: Separator placed between concatenated source label values. default is ';'. type: string - source_labels: - description: |- - UnderScoreSourceLabels - additional form of source labels source_labels - for compatibility with original relabel config. - if set both sourceLabels and source_labels, sourceLabels has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - items: - type: string - type: array sourceLabels: description: |- The source labels select values from existing labels. Their content is concatenated @@ -87394,19 +86850,13 @@ spec: items: type: string type: array - target_label: - description: |- - UnderScoreTargetLabel - additional form of target label - target_label - for compatibility with original relabel config. - if set both targetLabel and target_label, targetLabel has priority. - for details https://github.com/VictoriaMetrics/operator/issues/131 - type: string targetLabel: description: |- Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sampleLimit: description: SampleLimit defines per-scrape limit on number @@ -87881,11 +87331,13 @@ spec: - client_id - token_url type: object + x-kubernetes-preserve-unknown-fields: true tls_config: description: TLSConfig configuration to use when scraping the endpoint x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true scrape_align_interval: type: string scrape_offset: @@ -87893,7 +87345,9 @@ spec: stream_parse: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true type: array jobLabel: description: The label to use to retrieve the job name from. diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b1323c8676..da46d7de7e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -25,6 +25,7 @@ aliases: * FEATURE: [vtagent](https://docs.victoriametrics.com/operator/resources/vtagent/), [vtsingle](https://docs.victoriametrics.com/operator/resources/vtsingle/), [vtcluster](https://docs.victoriametrics.com/operator/resources/vtcluster/): add `grpcSpec` field (`spec.insert.grpcSpec` for `VTCluster`) to accept OTLP trace spans over gRPC in addition to HTTP, with optional TLS via `tlsConfig`. See [#2510](https://github.com/VictoriaMetrics/operator/pull/2510). * FEATURE: [vlagent](https://docs.victoriametrics.com/operator/resources/vlagent/), [vlsingle](https://docs.victoriametrics.com/operator/resources/vlsingle/), [vlcluster](https://docs.victoriametrics.com/operator/resources/vlcluster/): add `cipherSuites` and `minVersion` fields to syslog listener `tlsConfig`. See [#2510](https://github.com/VictoriaMetrics/operator/pull/2510). * FEATURE: [vlsingle](https://docs.victoriametrics.com/operator/resources/vlsingle/), [vtsingle](https://docs.victoriametrics.com/operator/resources/vtsingle/): add `removePvcAfterDelete` field to support PVC cleanup after deletion. See [#2545](https://github.com/VictoriaMetrics/operator/pull/2545). +* FEATURE: [vmoperator](https://docs.victoriametrics.com/operator/): CRD fields now accept both `snake_case` and `camelCase` naming. For example, `group_wait` and `groupWait` are interchangeable in `VMAlertmanagerConfig`, and `scrape_interval` / `scrapeInterval` in scrape CRDs. This makes it easier to copy-paste native VictoriaMetrics or Alertmanager YAML configs into operator CRDs without reformatting. See [#1146](https://github.com/VictoriaMetrics/operator/issues/1146). * BUGFIX: [vmagent](https://docs.victoriametrics.com/operator/resources/vmagent/), [vmanomaly](https://docs.victoriametrics.com/operator/resources/vmanomaly/): default `spec.shardCount` to `0` at the CRD schema level, fixing `VerticalPodAutoscaler`'s `/scale` subresource lookups failing with `the spec replicas field ".spec.shardCount" does not exist` whenever sharding wasn't configured (the common case). See [#2473](https://github.com/VictoriaMetrics/operator/issues/2473). * BUGFIX: [vmoperator](https://docs.victoriametrics.com/operator/): set default values for each possible `level` label of `operator_log_messages_total` metric. See [#2477](https://github.com/VictoriaMetrics/operator/issues/2477). diff --git a/docs/api.md b/docs/api.md index 5e1002b3fc..0ddc527c03 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1888,7 +1888,7 @@ Appears in: [APIServerConfig (v1beta1)](#v1beta1-apiserverconfig), [AzureSDConfi | Field | Description | | --- | --- | | credentials#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Required)_
Reference to the secret with value for authorization | -| credentialsFile#
_string_ | _(Optional)_
File with value for authorization | +| credentialsFile _(or credentials_file)_ #
_string_ | _(Optional)_
File with value for authorization | | type#
_string_ | _(Optional)_
Type of authorization, default to bearer | #### AzureSDConfig {#v1beta1-azuresdconfig} @@ -2066,45 +2066,45 @@ Appears in: [VMAgentSpec (v1beta1)](#v1beta1-vmagentspec), [VMSingleSpec (v1beta | Field | Description | | --- | --- | -| additionalScrapeConfigs#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AdditionalScrapeConfigs 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade. | -| arbitraryFSAccessThroughSMs#
_[ArbitraryFSAccessThroughSMsConfig (v1beta1)](#v1beta1-arbitraryfsaccessthroughsmsconfig)_ | _(Optional)_
ArbitraryFSAccessThroughSMs configures whether configuration
based on EndpointAuth can access arbitrary files on the file system
of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs | -| enableKubernetesAPISelectors#
_boolean_ | _(Optional)_
EnableKubernetesAPISelectors instructs vmagent or vmsingle to use CRD scrape objects spec.selectors for
Kubernetes API list and watch requests.
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#list-and-watch-filtering
It could be useful to reduce Kubernetes API server resource usage for serving less than 100 CRD scrape objects in total. | -| enforcedNamespaceLabel#
_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. | -| externalLabelName#
_string_ | _(Optional)_
ExternalLabelName Name of external label used to denote scraping agent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`). | -| externalLabels#
_object (keys:string, values:string)_ | _(Optional)_
ExternalLabels The labels to add to any time series scraped by vmagent or vmsingle.
it doesn't affect metrics ingested directly by push API's | -| globalScrapeMetricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | -| globalScrapeRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | -| ignoreNamespaceSelectors#
_boolean_ | _(Optional)_
IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from
scrape objects, and they will only discover endpoints
within their current namespace. Defaults to false. | -| ingestOnlyMode#
_boolean_ | _(Optional)_
IngestOnlyMode switches vmagent or vmsingle into unmanaged mode
it disables any config generation for scraping
Currently it prevents vmagent or vmsingle from managing tls and auth options for remote write | -| inlineScrapeConfig#
_string_ | _(Optional)_
InlineScrapeConfig 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade.
it should be defined as single yaml file.
inlineScrapeConfig: \|
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"] | -| maxScrapeInterval#
_string_ | _(Required)_
MaxScrapeInterval allows limiting maximum scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is higher than defined limit, `maxScrapeInterval` will be used. | -| minScrapeInterval#
_string_ | _(Required)_
MinScrapeInterval allows limiting minimal scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is lower than defined limit, `minScrapeInterval` will be used. | -| nodeScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeNamespaceSelector defines Namespaces to be selected for VMNodeScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| nodeScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
NodeScrapeRelabelTemplate defines relabel config, that will be added to each VMNodeScrape.
it's useful for adding specific labels to all targets | -| nodeScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeSelector defines VMNodeScrape to be selected for scraping.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| overrideHonorLabels#
_boolean_ | _(Optional)_
OverrideHonorLabels if set to true overrides all user configured honor_labels.
If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. | -| overrideHonorTimestamps#
_boolean_ | _(Optional)_
OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | -| podScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeNamespaceSelector defines Namespaces to be selected for VMPodScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| podScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
PodScrapeRelabelTemplate defines relabel config, that will be added to each VMPodScrape.
it's useful for adding specific labels to all targets | -| podScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeSelector defines PodScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| probeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeNamespaceSelector defines Namespaces to be selected for VMProbe discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| probeScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ProbeScrapeRelabelTemplate defines relabel config, that will be added to each VMProbeScrape.
it's useful for adding specific labels to all targets | -| probeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeSelector defines VMProbe to be selected for target probing.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines global per target limit of scraped samples | -| scrapeClasses#
_[ScrapeClass (v1beta1)](#v1beta1-scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | -| scrapeConfigNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigNamespaceSelector defines Namespaces to be selected for VMScrapeConfig discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| scrapeConfigRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ScrapeConfigRelabelTemplate defines relabel config, that will be added to each VMScrapeConfig.
it's useful for adding specific labels to all targets | -| scrapeConfigSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigSelector defines VMScrapeConfig to be selected for target discovery.
Works in combination with NamespaceSelector. | -| scrapeInterval#
_string_ | _(Optional)_
ScrapeInterval defines how often scrape targets by default | -| scrapeTimeout#
_string_ | _(Optional)_
ScrapeTimeout defines global timeout for targets scrape | -| selectAllByDefault#
_boolean_ | _(Optional)_
SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector.
with selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector
Operator selects all exist serviceScrapes
with selectAllByDefault: false - selects nothing | -| serviceScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeNamespaceSelector Namespaces to be selected for VMServiceScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| serviceScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ServiceScrapeRelabelTemplate defines relabel config, that will be added to each VMServiceScrape.
it's useful for adding specific labels to all targets | -| serviceScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeSelector defines ServiceScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| staticScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeNamespaceSelector defines Namespaces to be selected for VMStaticScrape discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| staticScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
StaticScrapeRelabelTemplate defines relabel config, that will be added to each VMStaticScrape.
it's useful for adding specific labels to all targets | -| staticScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeSelector defines VMStaticScrape to be selected for target discovery.
Works in combination with NamespaceSelector.
If both nil - match everything.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces. | -| vmAgentExternalLabelName#
_string_ | _(Optional)_
VMAgentExternalLabelName Name of vmAgent external label used to denote vmAgent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`).
Deprecated: since version v0.67.0 will be removed in v0.69.0 use externalLabelName instead
| +| additionalScrapeConfigs _(or additional_scrape_configs)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AdditionalScrapeConfigs 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade. | +| arbitraryFSAccessThroughSMs _(or arbitrary_fs_access_through_s_ms)_ #
_[ArbitraryFSAccessThroughSMsConfig (v1beta1)](#v1beta1-arbitraryfsaccessthroughsmsconfig)_ | _(Optional)_
ArbitraryFSAccessThroughSMs configures whether configuration
based on EndpointAuth can access arbitrary files on the file system
of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs | +| enableKubernetesAPISelectors _(or enable_kubernetes_api_selectors)_ #
_boolean_ | _(Optional)_
EnableKubernetesAPISelectors instructs vmagent or vmsingle to use CRD scrape objects spec.selectors for
Kubernetes API list and watch requests.
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#list-and-watch-filtering
It could be useful to reduce Kubernetes API server resource usage for serving less than 100 CRD scrape objects in total. | +| enforcedNamespaceLabel _(or enforced_namespace_label)_ #
_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. | +| externalLabelName _(or external_label_name)_ #
_string_ | _(Optional)_
ExternalLabelName Name of external label used to denote scraping agent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`). | +| externalLabels _(or external_labels)_ #
_object (keys:string, values:string)_ | _(Optional)_
ExternalLabels The labels to add to any time series scraped by vmagent or vmsingle.
it doesn't affect metrics ingested directly by push API's | +| globalScrapeMetricRelabelConfigs _(or global_scrape_metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | +| globalScrapeRelabelConfigs _(or global_scrape_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | +| ignoreNamespaceSelectors _(or ignore_namespace_selectors)_ #
_boolean_ | _(Optional)_
IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from
scrape objects, and they will only discover endpoints
within their current namespace. Defaults to false. | +| ingestOnlyMode _(or ingest_only_mode)_ #
_boolean_ | _(Optional)_
IngestOnlyMode switches vmagent or vmsingle into unmanaged mode
it disables any config generation for scraping
Currently it prevents vmagent or vmsingle from managing tls and auth options for remote write | +| inlineScrapeConfig _(or inline_scrape_config)_ #
_string_ | _(Optional)_
InlineScrapeConfig 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade.
it should be defined as single yaml file.
inlineScrapeConfig: \|
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"] | +| maxScrapeInterval _(or max_scrape_interval)_ #
_string_ | _(Required)_
MaxScrapeInterval allows limiting maximum scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is higher than defined limit, `maxScrapeInterval` will be used. | +| minScrapeInterval _(or min_scrape_interval)_ #
_string_ | _(Required)_
MinScrapeInterval allows limiting minimal scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is lower than defined limit, `minScrapeInterval` will be used. | +| nodeScrapeNamespaceSelector _(or node_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeNamespaceSelector defines Namespaces to be selected for VMNodeScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| nodeScrapeRelabelTemplate _(or node_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
NodeScrapeRelabelTemplate defines relabel config, that will be added to each VMNodeScrape.
it's useful for adding specific labels to all targets | +| nodeScrapeSelector _(or node_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeSelector defines VMNodeScrape to be selected for scraping.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| overrideHonorLabels _(or override_honor_labels)_ #
_boolean_ | _(Optional)_
OverrideHonorLabels if set to true overrides all user configured honor_labels.
If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. | +| overrideHonorTimestamps _(or override_honor_timestamps)_ #
_boolean_ | _(Optional)_
OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | +| podScrapeNamespaceSelector _(or pod_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeNamespaceSelector defines Namespaces to be selected for VMPodScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| podScrapeRelabelTemplate _(or pod_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
PodScrapeRelabelTemplate defines relabel config, that will be added to each VMPodScrape.
it's useful for adding specific labels to all targets | +| podScrapeSelector _(or pod_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeSelector defines PodScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| probeNamespaceSelector _(or probe_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeNamespaceSelector defines Namespaces to be selected for VMProbe discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| probeScrapeRelabelTemplate _(or probe_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ProbeScrapeRelabelTemplate defines relabel config, that will be added to each VMProbeScrape.
it's useful for adding specific labels to all targets | +| probeSelector _(or probe_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeSelector defines VMProbe to be selected for target probing.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines global per target limit of scraped samples | +| scrapeClasses _(or scrape_classes)_ #
_[ScrapeClass (v1beta1)](#v1beta1-scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | +| scrapeConfigNamespaceSelector _(or scrape_config_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigNamespaceSelector defines Namespaces to be selected for VMScrapeConfig discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| scrapeConfigRelabelTemplate _(or scrape_config_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ScrapeConfigRelabelTemplate defines relabel config, that will be added to each VMScrapeConfig.
it's useful for adding specific labels to all targets | +| scrapeConfigSelector _(or scrape_config_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigSelector defines VMScrapeConfig to be selected for target discovery.
Works in combination with NamespaceSelector. | +| scrapeInterval _(or scrape_interval)_ #
_string_ | _(Optional)_
ScrapeInterval defines how often scrape targets by default | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
ScrapeTimeout defines global timeout for targets scrape | +| selectAllByDefault _(or select_all_by_default)_ #
_boolean_ | _(Optional)_
SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector.
with selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector
Operator selects all exist serviceScrapes
with selectAllByDefault: false - selects nothing | +| serviceScrapeNamespaceSelector _(or service_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeNamespaceSelector Namespaces to be selected for VMServiceScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| serviceScrapeRelabelTemplate _(or service_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ServiceScrapeRelabelTemplate defines relabel config, that will be added to each VMServiceScrape.
it's useful for adding specific labels to all targets | +| serviceScrapeSelector _(or service_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeSelector defines ServiceScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| staticScrapeNamespaceSelector _(or static_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeNamespaceSelector defines Namespaces to be selected for VMStaticScrape discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| staticScrapeRelabelTemplate _(or static_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
StaticScrapeRelabelTemplate defines relabel config, that will be added to each VMStaticScrape.
it's useful for adding specific labels to all targets | +| staticScrapeSelector _(or static_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeSelector defines VMStaticScrape to be selected for target discovery.
Works in combination with NamespaceSelector.
If both nil - match everything.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces. | +| vmAgentExternalLabelName _(or vm_agent_external_label_name)_ #
_string_ | _(Optional)_
VMAgentExternalLabelName Name of vmAgent external label used to denote vmAgent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`).
Deprecated: since version v0.67.0 will be removed in v0.69.0 use externalLabelName instead
| #### CommonScrapeSecurityEnforcements {#v1beta1-commonscrapesecurityenforcements} @@ -2115,11 +2115,11 @@ Appears in: [CommonScrapeParams (v1beta1)](#v1beta1-commonscrapeparams), [VMAgen | Field | Description | | --- | --- | -| arbitraryFSAccessThroughSMs#
_[ArbitraryFSAccessThroughSMsConfig (v1beta1)](#v1beta1-arbitraryfsaccessthroughsmsconfig)_ | _(Optional)_
ArbitraryFSAccessThroughSMs configures whether configuration
based on EndpointAuth can access arbitrary files on the file system
of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs | -| enforcedNamespaceLabel#
_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. | -| ignoreNamespaceSelectors#
_boolean_ | _(Optional)_
IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from
scrape objects, and they will only discover endpoints
within their current namespace. Defaults to false. | -| overrideHonorLabels#
_boolean_ | _(Optional)_
OverrideHonorLabels if set to true overrides all user configured honor_labels.
If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. | -| overrideHonorTimestamps#
_boolean_ | _(Optional)_
OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | +| arbitraryFSAccessThroughSMs _(or arbitrary_fs_access_through_s_ms)_ #
_[ArbitraryFSAccessThroughSMsConfig (v1beta1)](#v1beta1-arbitraryfsaccessthroughsmsconfig)_ | _(Optional)_
ArbitraryFSAccessThroughSMs configures whether configuration
based on EndpointAuth can access arbitrary files on the file system
of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs | +| enforcedNamespaceLabel _(or enforced_namespace_label)_ #
_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. | +| ignoreNamespaceSelectors _(or ignore_namespace_selectors)_ #
_boolean_ | _(Optional)_
IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from
scrape objects, and they will only discover endpoints
within their current namespace. Defaults to false. | +| overrideHonorLabels _(or override_honor_labels)_ #
_boolean_ | _(Optional)_
OverrideHonorLabels if set to true overrides all user configured honor_labels.
If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. | +| overrideHonorTimestamps _(or override_honor_timestamps)_ #
_boolean_ | _(Optional)_
OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | #### ConfigMapKeyReference {#v1beta1-configmapkeyreference} @@ -2247,15 +2247,15 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| avatar_url#
_string_ | _(Optional)_
AvatarURL defines message avatar URL
Available from alertmanager v0.28.0
Available from: v0.55.0 | +| avatar_url _(or avatarUrl)_ #
_string_ | _(Optional)_
AvatarURL defines message avatar URL
Available from alertmanager v0.28.0
Available from: v0.55.0 | | content#
_string_ | _(Optional)_
Content defines message content template
Available from alertmanager v0.28.0
Available from: v0.55.0 | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | | message#
_string_ | _(Optional)_
The message body template | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | title#
_string_ | _(Optional)_
The message title template | | username#
_string_ | _(Optional)_
Username defines message username
Available from alertmanager v0.28.0
Available from: v0.55.0 | -| webhook_url#
_string_ | _(Optional)_
The discord webhook URL
one of `urlSecret` and `url` must be defined. | -| webhook_url_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the webhook URL.
one of `urlSecret` and `url` must be defined. | +| webhook_url _(or webhookUrl)_ #
_string_ | _(Optional)_
The discord webhook URL
one of `urlSecret` and `url` must be defined. | +| webhook_url_secret _(or webhookUrlSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the webhook URL.
one of `urlSecret` and `url` must be defined. | #### DiscoverySelector {#v1beta1-discoveryselector} @@ -2405,19 +2405,19 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| auth_identity#
_string_ | _(Optional)_
The identity to use for authentication. | -| auth_password#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AuthPassword defines secret name and key at CRD namespace. | -| auth_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AuthSecret defines secret name and key at CRD namespace.
It must contain the CRAM-MD5 secret. | -| auth_username#
_string_ | _(Optional)_
The username to use for authentication. | +| auth_identity _(or authIdentity)_ #
_string_ | _(Optional)_
The identity to use for authentication. | +| auth_password _(or authPassword)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AuthPassword defines secret name and key at CRD namespace. | +| auth_secret _(or authSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AuthSecret defines secret name and key at CRD namespace.
It must contain the CRAM-MD5 secret. | +| auth_username _(or authUsername)_ #
_string_ | _(Optional)_
The username to use for authentication. | | from#
_string_ | _(Optional)_
The sender address.
fallback to global setting if empty | | headers#
_object (keys:string, values:string)_ | _(Required)_
Further headers email header key/value pairs. Overrides any headers
previously set by the notification implementation. | | hello#
_string_ | _(Optional)_
The hostname to identify to the SMTP server. | | html#
_string_ | _(Optional)_
The HTML body of the email notification. | -| require_tls#
_boolean_ | _(Optional)_
The SMTP TLS requirement.
Note that Go does not support unencrypted connections to remote SMTP endpoints. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| require_tls _(or requireTls)_ #
_boolean_ | _(Optional)_
The SMTP TLS requirement.
Note that Go does not support unencrypted connections to remote SMTP endpoints. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | smarthost#
_string_ | _(Optional)_
The SMTP host through which emails are sent.
fallback to global setting if empty | | text#
_string_ | _(Optional)_
The text body of the email notification. | -| tls_config#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLS configuration | +| tls_config _(or tlsConfig)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLS configuration | | to#
_string_ | _(Optional)_
The email address to send notifications to. | #### EmbeddedHPA {#v1beta1-embeddedhpa} @@ -2550,29 +2550,29 @@ Appears in: [VMServiceScrapeSpec (v1beta1)](#v1beta1-vmservicescrapespec) | --- | --- | | attach_metadata#
_[AttachMetadata (v1beta1)](#v1beta1-attachmetadata)_ | _(Optional)_
AttachMetadata configures metadata attaching from service discovery | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | -| follow_redirects#
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | -| honorLabels#
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | -| honorTimestamps#
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| follow_redirects _(or followRedirects)_ #
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | +| honorLabels _(or honor_labels)_ #
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | +| honorTimestamps _(or honor_timestamps)_ #
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | | interval#
_string_ | _(Optional)_
Interval at which metrics should be scraped | -| max_scrape_size#
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | -| metricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| max_scrape_size _(or maxScrapeSize)_ #
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | | params#
_object (keys:string, values:string array)_ | _(Optional)_
Optional HTTP URL parameters | | path#
_string_ | _(Optional)_
HTTP path to scrape for metrics. | | port#
_string_ | _(Optional)_
Name of the port exposed at Service. | -| proxyURL#
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | -| relabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | | scheme#
_string_ | _(Optional)_
HTTP scheme to use for scraping. | -| scrapeTimeout#
_string_ | _(Optional)_
Timeout after which the scrape is ended | -| scrape_interval#
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | -| seriesLimit#
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
Timeout after which the scrape is ended | +| scrape_interval _(or scrapeInterval)_ #
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | +| seriesLimit _(or series_limit)_ #
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | | targetPort#
_[IntOrString (intstr)](#intstr-intorstring)_ | _(Optional)_
TargetPort
Name or number of the pod port this endpoint refers to. Mutually exclusive with port. | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### EndpointAuth {#v1beta1-endpointauth} @@ -2584,11 +2584,11 @@ Appears in: [Endpoint (v1beta1)](#v1beta1-endpoint), [EndpointScrapeParams (v1be | Field | Description | | --- | --- | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | #### EndpointRelabelings {#v1beta1-endpointrelabelings} @@ -2599,8 +2599,8 @@ Appears in: [Endpoint (v1beta1)](#v1beta1-endpoint), [PodMetricsEndpoint (v1beta | Field | Description | | --- | --- | -| metricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | -| relabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | #### EndpointScrapeParams {#v1beta1-endpointscrapeparams} @@ -2612,25 +2612,25 @@ Appears in: [Endpoint (v1beta1)](#v1beta1-endpoint), [PodMetricsEndpoint (v1beta | Field | Description | | --- | --- | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | -| follow_redirects#
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | -| honorLabels#
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | -| honorTimestamps#
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| follow_redirects _(or followRedirects)_ #
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | +| honorLabels _(or honor_labels)_ #
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | +| honorTimestamps _(or honor_timestamps)_ #
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | | interval#
_string_ | _(Optional)_
Interval at which metrics should be scraped | -| max_scrape_size#
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | +| max_scrape_size _(or maxScrapeSize)_ #
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | | params#
_object (keys:string, values:string array)_ | _(Optional)_
Optional HTTP URL parameters | | path#
_string_ | _(Optional)_
HTTP path to scrape for metrics. | -| proxyURL#
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | | scheme#
_string_ | _(Optional)_
HTTP scheme to use for scraping. | -| scrapeTimeout#
_string_ | _(Optional)_
Timeout after which the scrape is ended | -| scrape_interval#
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | -| seriesLimit#
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
Timeout after which the scrape is ended | +| scrape_interval _(or scrapeInterval)_ #
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | +| seriesLimit _(or series_limit)_ #
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### EurekaSDConfig {#v1beta1-eurekasdconfig} @@ -2722,17 +2722,17 @@ Appears in: [DiscordConfig (v1beta1)](#v1beta1-discordconfig), [IncidentioConfig | Field | Description | | --- | --- | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization header configuration for the client.
This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+. | -| basic_auth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth for the client. | -| bearer_token_file#
_string_ | _(Optional)_
BearerTokenFile defines filename for bearer token, it must be mounted to pod. | -| bearer_token_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the bearer token
It must be at them same namespace as CRD | -| follow_redirects#
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | +| basic_auth _(or basicAuth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth for the client. | +| bearer_token_file _(or bearerTokenFile)_ #
_string_ | _(Optional)_
BearerTokenFile defines filename for bearer token, it must be mounted to pod. | +| bearer_token_secret _(or bearerTokenSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the bearer token
It must be at them same namespace as CRD | +| follow_redirects _(or followRedirects)_ #
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | | http_headers#
_object (keys:string, values:[HTTPHeaderConfig (v1beta1)](#v1beta1-httpheaderconfig))_ | _(Optional)_
HTTPHeaders defines custom HTTP headers to be sent along with each request.
Only supported starting from Alertmanager v0.28.0; ignored by older versions.
Available from: v0.75.0 | -| noProxy#
_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. | +| noProxy _(or no_proxy)_ #
_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. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 client credentials used to fetch a token for the targets. | -| proxyConnectHeader#
_object (keys:string, values:[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core))_ | _(Optional)_
ProxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests. | -| proxyFromEnvironment#
_boolean_ | _(Optional)_
ProxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY). | -| proxyURL#
_string_ | _(Optional)_
ProxyUrl defines the HTTP proxy server to use. | -| tls_config#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLS configuration for the client. | +| proxyConnectHeader _(or proxy_connect_header)_ #
_object (keys:string, values:[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core))_ | _(Optional)_
ProxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests. | +| proxyFromEnvironment _(or proxy_from_environment)_ #
_boolean_ | _(Optional)_
ProxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY). | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyUrl defines the HTTP proxy server to use. | +| tls_config _(or tlsConfig)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLS configuration for the client. | #### HTTPHeaderConfig {#v1beta1-httpheaderconfig} @@ -2838,17 +2838,18 @@ Appears in: [PagerDutyConfig (v1beta1)](#v1beta1-pagerdutyconfig) IncidentioConfig configures notifications via incident.io. https://prometheus.io/docs/alerting/latest/configuration/#incidentio_config -Available from v0.29.0 alertmanager version +available from v0.66.0 operator version +and v0.29.0 alertmanager version Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| alert_source_token#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AlertSourceToken is used to authenticate with incident.io.
Mutually exclusive with AlertSourceTokenFile. | +| alert_source_token _(or alertSourceToken)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AlertSourceToken is used to authenticate with incident.io.
Mutually exclusive with AlertSourceTokenFile. | | alert_source_token_file#
_string_ | _(Optional)_
AlertSourceTokenFile defines the path to a file that contains the alert source token.
Mutually exclusive with AlertSourceToken. | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
| -| max_alerts#
_integer_ | _(Optional)_
MaxAlerts defines maximum number of alerts to be sent per incident.io message. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
| +| max_alerts _(or maxAlerts)_ #
_integer_ | _(Optional)_
MaxAlerts defines maximum number of alerts to be sent per incident.io message. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | timeout#
_string_ | _(Optional)_
Timeout is the maximum time allowed to invoke incident.io | | url#
_string_ | _(Optional)_
The URL to send the incident.io alert. This would typically be provided by the
incident.io team when setting up an alert source.
Mutually exclusive with URLFile. | | url_file#
_string_ | _(Optional)_
URLFile defines the path to a file that holds the incident.io alert URL.
Mutually exclusive with URL. | @@ -2866,8 +2867,8 @@ Appears in: [VMAlertmanagerConfigSpec (v1beta1)](#v1beta1-vmalertmanagerconfigsp | Field | Description | | --- | --- | | equal#
_string array_ | _(Optional)_
Labels that must have an equal value in the source and target alert for
the inhibition to take effect. | -| source_matchers#
_string array_ | _(Optional)_
SourceMatchers defines a list of matchers for which one or more alerts have
to exist for the inhibition to take effect. | -| target_matchers#
_string array_ | _(Optional)_
TargetMatchers defines a list of matchers that have to be fulfilled by the target
alerts to be muted. | +| source_matchers _(or sourceMatchers)_ #
_string array_ | _(Optional)_
SourceMatchers defines a list of matchers for which one or more alerts have
to exist for the inhibition to take effect. | +| target_matchers _(or targetMatchers)_ #
_string array_ | _(Optional)_
TargetMatchers defines a list of matchers that have to be fulfilled by the target
alerts to be muted. | #### InsertPorts {#v1beta1-insertports} @@ -2886,26 +2887,27 @@ Appears in: [VMAgentSpec (v1beta1)](#v1beta1-vmagentspec), [VMInsert (v1beta1)]( JiraConfig represent alertmanager's jira_config entry https://prometheus.io/docs/alerting/latest/configuration/#jira_config -Available from v0.28.0 alertmanager version +available from v0.55.0 operator version +and v0.28.0 alertmanager version Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| api_url#
_string_ | _(Optional)_
The URL to send API requests to. The full API path must be included.
Example: https://company.atlassian.net/rest/api/2/ | -| custom_fields#
_object (keys:string, values:[JSON (v1)](#v1-json))_ | _(Optional)_
Other issue and custom fields.
Jira issue field can have multiple types.
Depends on the field type, the values must be provided differently.
See https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/#setting-custom-field-data-for-other-field-types for further examples. | +| api_url _(or apiUrl)_ #
_string_ | _(Optional)_
The URL to send API requests to. The full API path must be included.
Example: https://company.atlassian.net/rest/api/2/ | +| custom_fields _(or customFields)_ #
_object (keys:string, values:[JSON (v1)](#v1-json))_ | _(Optional)_
Other issue and custom fields.
Jira issue field can have multiple types.
Depends on the field type, the values must be provided differently.
See https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/#setting-custom-field-data-for-other-field-types for further examples. | | description#
_string_ | _(Optional)_
Issue description template. | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
The HTTP client's configuration. You must use this configuration to supply the personal access token (PAT) as part of the HTTP `Authorization` header.
For Jira Cloud, use basic_auth with the email address as the username and the PAT as the password.
For Jira Data Center, use the 'authorization' field with 'credentials: '. | -| issue_type#
_string_ | _(Required)_
Type of the issue (e.g. Bug) | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
The HTTP client's configuration. You must use this configuration to supply the personal access token (PAT) as part of the HTTP `Authorization` header.
For Jira Cloud, use basic_auth with the email address as the username and the PAT as the password.
For Jira Data Center, use the 'authorization' field with 'credentials: '. | +| issue_type _(or issueType)_ #
_string_ | _(Required)_
Type of the issue (e.g. Bug) | | labels#
_string array_ | _(Required)_
Labels to be added to the issue | | priority#
_string_ | _(Required)_
Priority of the issue | | project#
_string_ | _(Required)_
The project key where issues are created | -| reopen_duration#
_string_ | _(Optional)_
If reopen_transition is defined, reopen the issue when it is not older than this value (rounded down to the nearest minute).
The resolutiondate field is used to determine the age of the issue. | -| reopen_transition#
_string_ | _(Required)_
Name of the workflow transition to resolve an issue.
The target status must have the category "done". | -| resolve_transition#
_string_ | _(Required)_
Name of the workflow transition to reopen an issue.
The target status should not have the category "done". | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| reopen_duration _(or reopenDuration)_ #
_string_ | _(Optional)_
If reopen_transition is defined, reopen the issue when it is not older than this value (rounded down to the nearest minute).
The resolutiondate field is used to determine the age of the issue. | +| reopen_transition _(or reopenTransition)_ #
_string_ | _(Required)_
Name of the workflow transition to resolve an issue.
The target status must have the category "done". | +| resolve_transition _(or resolveTransition)_ #
_string_ | _(Required)_
Name of the workflow transition to reopen an issue.
The target status should not have the category "done". | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | summary#
_string_ | _(Optional)_
Issue summary template | -| wont_fix_resolution#
_string_ | _(Required)_
If reopen_transition is defined, ignore issues with that resolution. | +| wont_fix_resolution _(or wontFixResolution)_ #
_string_ | _(Required)_
If reopen_transition is defined, ignore issues with that resolution. | #### K8SSelectorConfig {#v1beta1-k8sselectorconfig} @@ -3000,30 +3002,31 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | text#
_string_ | _(Optional)_
The text body of the teams notification. | | title#
_string_ | _(Optional)_
The title of the teams notification. | -| webhook_url#
_string_ | _(Optional)_
The incoming webhook URL
one of `urlSecret` and `url` must be defined. | -| webhook_url_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the webhook URL.
one of `urlSecret` and `url` must be defined. | +| webhook_url _(or webhookUrl)_ #
_string_ | _(Optional)_
The incoming webhook URL
one of `urlSecret` and `url` must be defined. | +| webhook_url_secret _(or webhookUrlSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the webhook URL.
one of `urlSecret` and `url` must be defined. | #### MSTeamsV2Config {#v1beta1-msteamsv2config} MSTeamsV2Config sends notifications using the new message format with adaptive cards as required by flows. https://support.microsoft.com/en-gb/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498 -Available from v0.28.0 alertmanager version +available from v0.55.0 operator version +and v0.28.0 alertmanager version Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
| -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
| +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | text#
_string_ | _(Optional)_
Message body template. | | title#
_string_ | _(Optional)_
Message title template. | -| webhook_url#
_string_ | _(Optional)_
The incoming webhook URL
one of `urlSecret` and `url` must be defined. | -| webhook_url_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the webhook URL.
one of `webhook_url` or `webhook_url_secret` must be defined. | +| webhook_url _(or webhookUrl)_ #
_string_ | _(Optional)_
The incoming webhook URL
one of `urlSecret` and `url` must be defined. | +| webhook_url_secret _(or webhookUrlSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the webhook URL.
one of `webhook_url` or `webhook_url_secret` must be defined. | #### ManagedObjectsMetadata {#v1beta1-managedobjectsmetadata} @@ -3063,20 +3066,20 @@ Appears in: [MattermostConfig (v1beta1)](#v1beta1-mattermostconfig) | Field | Description | | --- | --- | -| author_icon#
_string_ | _(Required)_
| -| author_link#
_string_ | _(Required)_
| -| author_name#
_string_ | _(Required)_
| +| author_icon _(or authorIcon)_ #
_string_ | _(Required)_
| +| author_link _(or authorLink)_ #
_string_ | _(Required)_
| +| author_name _(or authorName)_ #
_string_ | _(Required)_
| | color#
_string_ | _(Required)_
| | fallback#
_string_ | _(Required)_
| | fields#
_[MattermostField (v1beta1)](#v1beta1-mattermostfield) array_ | _(Required)_
| | footer#
_string_ | _(Required)_
| -| footer_icon#
_string_ | _(Required)_
| -| image_url#
_string_ | _(Required)_
| +| footer_icon _(or footerIcon)_ #
_string_ | _(Required)_
| +| image_url _(or imageUrl)_ #
_string_ | _(Required)_
| | pretext#
_string_ | _(Required)_
| | text#
_string_ | _(Required)_
| -| thumb_url#
_string_ | _(Required)_
| +| thumb_url _(or thumbUrl)_ #
_string_ | _(Required)_
| | title#
_string_ | _(Required)_
| -| title_link#
_string_ | _(Required)_
| +| title_link _(or titleLink)_ #
_string_ | _(Required)_
| #### MattermostConfig {#v1beta1-mattermostconfig} @@ -3089,15 +3092,15 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | --- | --- | | attachments#
_[MattermostAttachment (v1beta1)](#v1beta1-mattermostattachment) array_ | _(Optional)_
Attachments defines richer formatting options | | channel#
_string_ | _(Optional)_
Channel overrides the channel the message posts in. | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
| -| icon_emoji#
_string_ | _(Optional)_
IconEmoji overrides the profile picture and icon_url parameter. | -| icon_url#
_string_ | _(Optional)_
IconURL overrides the profile picture the message posts with. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
| +| icon_emoji _(or iconEmoji)_ #
_string_ | _(Optional)_
IconEmoji overrides the profile picture and icon_url parameter. | +| icon_url _(or iconUrl)_ #
_string_ | _(Optional)_
IconURL overrides the profile picture the message posts with. | | priority#
_[MattermostPriority (v1beta1)](#v1beta1-mattermostpriority)_ | _(Optional)_
| | props#
_[MattermostProps (v1beta1)](#v1beta1-mattermostprops)_ | _(Optional)_
| -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | text#
_string_ | _(Required)_
Text defines markdown-formatted message to display in the post. | | url#
_string_ | _(Optional)_
URL to send requests to,
one of `urlSecret` and `url` must be defined. | -| url_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the Mattermost URL.
one of `urlSecret` and `url` must be defined. | +| url_secret _(or urlSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the Mattermost URL.
one of `urlSecret` and `url` must be defined. | | username#
_string_ | _(Optional)_
Username overrides the username the message posts as | #### MattermostField {#v1beta1-mattermostfield} @@ -3118,9 +3121,9 @@ Appears in: [MattermostConfig (v1beta1)](#v1beta1-mattermostconfig) | Field | Description | | --- | --- | -| persistent_notifications#
_boolean_ | _(Required)_
| +| persistent_notifications _(or persistentNotifications)_ #
_boolean_ | _(Required)_
| | priority#
_string_ | _(Required)_
| -| requested_ack#
_boolean_ | _(Required)_
| +| requested_ack _(or requestedAck)_ #
_boolean_ | _(Required)_
| #### MattermostProps {#v1beta1-mattermostprops} @@ -3201,14 +3204,14 @@ Appears in: [AzureSDConfig (v1beta1)](#v1beta1-azuresdconfig), [ConsulAgentSDCon | Field | Description | | --- | --- | -| client_id#
_[SecretOrConfigMap (v1beta1)](#v1beta1-secretorconfigmap)_ | _(Required)_
The secret or configmap containing the OAuth2 client id | -| client_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret containing the OAuth2 client secret | -| client_secret_file#
_string_ | _(Optional)_
ClientSecretFile defines path for client secret file. | -| endpoint_params#
_object (keys:string, values:string)_ | _(Optional)_
Parameters to append to the token URL | -| proxy_url#
_string_ | _(Optional)_
The proxy URL for token_url connection
Is only supported by Scrape objects family
Available from: v0.55.0 | +| client_id _(or clientId)_ #
_[SecretOrConfigMap (v1beta1)](#v1beta1-secretorconfigmap)_ | _(Required)_
The secret or configmap containing the OAuth2 client id | +| client_secret _(or clientSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret containing the OAuth2 client secret | +| client_secret_file _(or clientSecretFile)_ #
_string_ | _(Optional)_
ClientSecretFile defines path for client secret file. | +| endpoint_params _(or endpointParams)_ #
_object (keys:string, values:string)_ | _(Optional)_
Parameters to append to the token URL | +| proxy_url _(or proxyUrl)_ #
_string_ | _(Optional)_
The proxy URL for token_url connection
Is only supported by Scrape objects family
Available from: v0.55.0 | | scopes#
_string array_ | _(Optional)_
OAuth2 scopes used for the token request | -| tls_config#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig for token_url connection
Is only supported by Scrape objects family
Available from: v0.55.0 | -| token_url#
_string_ | _(Required)_
The URL to fetch the token from | +| tls_config _(or tlsConfig)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig for token_url connection
Is only supported by Scrape objects family
Available from: v0.55.0 | +| token_url _(or tokenUrl)_ #
_string_ | _(Required)_
The URL to fetch the token from | #### OVHCloudSDConfig {#v1beta1-ovhcloudsdconfig} @@ -3272,20 +3275,20 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | | actions#
_string_ | _(Required)_
Comma separated list of actions that will be available for the alert. | -| apiURL#
_string_ | _(Optional)_
The URL to send OpsGenie API requests to. | -| api_key#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the OpsGenie API key.
It must be at them same namespace as CRD
fallback to global setting if empty | +| apiURL _(or api_url)_ #
_string_ | _(Optional)_
The URL to send OpsGenie API requests to. | +| api_key _(or apiKey)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the OpsGenie API key.
It must be at them same namespace as CRD
fallback to global setting if empty | | description#
_string_ | _(Optional)_
Description of the incident. | | details#
_object (keys:string, values:string)_ | _(Optional)_
A set of arbitrary key/value pairs that provide further detail about the incident. | | entity#
_string_ | _(Required)_
Optional field that can be used to specify which domain alert is related to. | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | | message#
_string_ | _(Optional)_
Alert text limited to 130 characters. | | note#
_string_ | _(Optional)_
Additional alert note. | | priority#
_string_ | _(Optional)_
Priority level of alert. Possible values are P1, P2, P3, P4, and P5. | | responders#
_[OpsGenieConfigResponder (v1beta1)](#v1beta1-opsgenieconfigresponder) array_ | _(Optional)_
List of responders responsible for notifications. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | source#
_string_ | _(Optional)_
Backlink to the sender of the notification. | | tags#
_string_ | _(Optional)_
Comma separated list of tags attached to the notifications. | -| update_alerts#
_boolean_ | _(Required)_
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. | +| update_alerts _(or updateAlerts)_ #
_boolean_ | _(Required)_
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. | #### OpsGenieConfigResponder {#v1beta1-opsgenieconfigresponder} @@ -3314,17 +3317,17 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | --- | --- | | class#
_string_ | _(Optional)_
The class/type of the event. | | client#
_string_ | _(Optional)_
Client identification. | -| client_url#
_string_ | _(Optional)_
Backlink to the sender of notification. | +| client_url _(or clientUrl)_ #
_string_ | _(Optional)_
Backlink to the sender of notification. | | component#
_string_ | _(Optional)_
The part or component of the affected system that is broken. | | description#
_string_ | _(Optional)_
Description of the incident. | | details#
_object (keys:string, values:string)_ | _(Optional)_
Arbitrary key/value pairs that provide further detail about the incident. | | group#
_string_ | _(Optional)_
A cluster or grouping of sources. | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | | images#
_[ImageConfig (v1beta1)](#v1beta1-imageconfig) array_ | _(Optional)_
Images to attach to the incident. | | links#
_[LinkConfig (v1beta1)](#v1beta1-linkconfig) array_ | _(Optional)_
Links to attach to the incident. | -| routing_key#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the PagerDuty integration key (when using
Events API v2). Either this field or `serviceKey` needs to be defined.
It must be at them same namespace as CRD | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | -| service_key#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the PagerDuty service key (when using
integration type "Prometheus"). Either this field or `routingKey` needs to
be defined.
It must be at them same namespace as CRD | +| routing_key _(or routingKey)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the PagerDuty integration key (when using
Events API v2). Either this field or `serviceKey` needs to be defined.
It must be at them same namespace as CRD | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| service_key _(or serviceKey)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the PagerDuty service key (when using
integration type "Prometheus"). Either this field or `routingKey` needs to
be defined.
It must be at them same namespace as CRD | | severity#
_string_ | _(Optional)_
Severity of the incident. | | url#
_string_ | _(Optional)_
The URL to send requests to. | @@ -3339,31 +3342,31 @@ Appears in: [VMPodScrapeSpec (v1beta1)](#v1beta1-vmpodscrapespec) | --- | --- | | attach_metadata#
_[AttachMetadata (v1beta1)](#v1beta1-attachmetadata)_ | _(Optional)_
AttachMetadata configures metadata attaching from service discovery | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | | filterRunning#
_boolean_ | _(Optional)_
FilterRunning applies filter with pod status == running
it prevents from scrapping metrics at failed or succeed state pods.
enabled by default | -| follow_redirects#
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | -| honorLabels#
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | -| honorTimestamps#
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | +| follow_redirects _(or followRedirects)_ #
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | +| honorLabels _(or honor_labels)_ #
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | +| honorTimestamps _(or honor_timestamps)_ #
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | | interval#
_string_ | _(Optional)_
Interval at which metrics should be scraped | -| max_scrape_size#
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | -| metricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| max_scrape_size _(or maxScrapeSize)_ #
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | | params#
_object (keys:string, values:string array)_ | _(Optional)_
Optional HTTP URL parameters | | path#
_string_ | _(Optional)_
HTTP path to scrape for metrics. | | port#
_string_ | _(Optional)_
Name of the port exposed at Pod. | | portNumber#
_integer_ | _(Optional)_
PortNumber defines the `Pod` port number which exposes the endpoint. | -| proxyURL#
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | -| relabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | | scheme#
_string_ | _(Optional)_
HTTP scheme to use for scraping. | -| scrapeTimeout#
_string_ | _(Optional)_
Timeout after which the scrape is ended | -| scrape_interval#
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | -| seriesLimit#
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
Timeout after which the scrape is ended | +| scrape_interval _(or scrapeInterval)_ #
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | +| seriesLimit _(or series_limit)_ #
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | | targetPort#
_[IntOrString (intstr)](#intstr-intorstring)_ | _(Optional)_
TargetPort defines name or number of the pod port this endpoint refers to.
Mutually exclusive with Port and PortNumber. | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### ProxyClientConfig {#v1beta1-proxyclientconfig} @@ -3375,11 +3378,11 @@ Appears in: [AzureSDConfig (v1beta1)](#v1beta1-azuresdconfig), [ConsulAgentSDCon | Field | Description | | --- | --- | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basic_auth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allows proxy to authenticate over basic authentication | -| bearer_token#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets proxy auth. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | -| bearer_token_file#
_string_ | _(Optional)_
BearerTokenFile defines file to read bearer token from for proxy auth. | +| basic_auth _(or basicAuth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allows proxy to authenticate over basic authentication | +| bearer_token _(or bearerToken)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets proxy auth. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| bearer_token_file _(or bearerTokenFile)_ #
_string_ | _(Optional)_
BearerTokenFile defines file to read bearer token from for proxy auth. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | -| tls_config#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| tls_config _(or tlsConfig)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | #### ProxyConfig {#v1beta1-proxyconfig} @@ -3390,10 +3393,10 @@ Appears in: [HTTPConfig (v1beta1)](#v1beta1-httpconfig) | Field | Description | | --- | --- | -| noProxy#
_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. | -| proxyConnectHeader#
_object (keys:string, values:[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core))_ | _(Optional)_
ProxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests. | -| proxyFromEnvironment#
_boolean_ | _(Optional)_
ProxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY). | -| proxyURL#
_string_ | _(Optional)_
ProxyUrl defines the HTTP proxy server to use. | +| noProxy _(or no_proxy)_ #
_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. | +| proxyConnectHeader _(or proxy_connect_header)_ #
_object (keys:string, values:[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core))_ | _(Optional)_
ProxyConnectHeader optionally specifies headers to send to proxies during CONNECT requests. | +| proxyFromEnvironment _(or proxy_from_environment)_ #
_boolean_ | _(Optional)_
ProxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY). | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyUrl defines the HTTP proxy server to use. | #### PuppetDBSDConfig {#v1beta1-puppetdbsdconfig} @@ -3429,17 +3432,17 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | --- | --- | | expire#
_string_ | _(Optional)_
How long your notification will continue to be retried for, unless the user
acknowledges the notification. | | html#
_boolean_ | _(Optional)_
Whether notification message is HTML or plain text. | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | | message#
_string_ | _(Optional)_
Notification message. | | priority#
_string_ | _(Optional)_
Priority, see https://pushover.net/api#priority | | retry#
_string_ | _(Optional)_
How often the Pushover servers will send the same notification to the user.
Must be at least 30 seconds. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | sound#
_string_ | _(Optional)_
The name of one of the sounds supported by device clients to override the user's default sound choice | | title#
_string_ | _(Optional)_
Notification title. | | token#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Required)_
The secret's key that contains the registered application’s API token, see https://pushover.net/apps.
It must be at them same namespace as CRD | | url#
_string_ | _(Optional)_
A supplementary URL shown alongside the message. | -| url_title#
_string_ | _(Optional)_
A title for supplementary URL, otherwise just the URL is shown | -| user_key#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Required)_
The secret's key that contains the recipient user’s user key.
It must be at them same namespace as CRD | +| url_title _(or urlTitle)_ #
_string_ | _(Optional)_
A title for supplementary URL, otherwise just the URL is shown | +| user_key _(or userKey)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Required)_
The secret's key that contains the recipient user’s user key.
It must be at them same namespace as CRD | #### QueryArg {#v1beta1-queryarg} @@ -3462,25 +3465,25 @@ Appears in: [VMAlertmanagerConfigSpec (v1beta1)](#v1beta1-vmalertmanagerconfigsp | Field | Description | | --- | --- | -| discord_configs#
_[DiscordConfig (v1beta1)](#v1beta1-discordconfig) array_ | _(Optional)_
| -| email_configs#
_[EmailConfig (v1beta1)](#v1beta1-emailconfig) array_ | _(Optional)_
EmailConfigs defines email notification configurations. | -| incidentio_configs#
_[IncidentioConfig (v1beta1)](#v1beta1-incidentioconfig) array_ | _(Optional)_

Available from: v0.66.0 | -| jira_configs#
_[JiraConfig (v1beta1)](#v1beta1-jiraconfig) array_ | _(Optional)_

Available from: v0.55.0 | -| mattermost_configs#
_[MattermostConfig (v1beta1)](#v1beta1-mattermostconfig) array_ | _(Optional)_
MattermostConfigs defines Mattermost notification configurations. | -| msteams_configs#
_[MSTeamsConfig (v1beta1)](#v1beta1-msteamsconfig) array_ | _(Optional)_
| -| msteamsv2_configs#
_[MSTeamsV2Config (v1beta1)](#v1beta1-msteamsv2config) array_ | _(Optional)_

Available from: v0.55.0 | +| discord_configs _(or discordConfigs)_ #
_[DiscordConfig (v1beta1)](#v1beta1-discordconfig) array_ | _(Optional)_
| +| email_configs _(or emailConfigs)_ #
_[EmailConfig (v1beta1)](#v1beta1-emailconfig) array_ | _(Optional)_
EmailConfigs defines email notification configurations. | +| incidentio_configs _(or incidentioConfigs)_ #
_[IncidentioConfig (v1beta1)](#v1beta1-incidentioconfig) array_ | _(Optional)_

Available from: v0.66.0 | +| jira_configs _(or jiraConfigs)_ #
_[JiraConfig (v1beta1)](#v1beta1-jiraconfig) array_ | _(Optional)_

Available from: v0.55.0 | +| mattermost_configs _(or mattermostConfigs)_ #
_[MattermostConfig (v1beta1)](#v1beta1-mattermostconfig) array_ | _(Optional)_
MattermostConfigs defines Mattermost notification configurations. | +| msteams_configs _(or msteamsConfigs)_ #
_[MSTeamsConfig (v1beta1)](#v1beta1-msteamsconfig) array_ | _(Optional)_
| +| msteamsv2_configs _(or msteamsv2Configs)_ #
_[MSTeamsV2Config (v1beta1)](#v1beta1-msteamsv2config) array_ | _(Optional)_

Available from: v0.55.0 | | name#
_string_ | _(Required)_
Name of the receiver. Must be unique across all items from the list. | -| opsgenie_configs#
_[OpsGenieConfig (v1beta1)](#v1beta1-opsgenieconfig) array_ | _(Optional)_
OpsGenieConfigs defines ops genie notification configurations. | -| pagerduty_configs#
_[PagerDutyConfig (v1beta1)](#v1beta1-pagerdutyconfig) array_ | _(Optional)_
PagerDutyConfigs defines pager duty notification configurations. | -| pushover_configs#
_[PushoverConfig (v1beta1)](#v1beta1-pushoverconfig) array_ | _(Optional)_
PushoverConfigs defines push over notification configurations. | -| rocketchat_configs#
_[RocketchatConfig (v1beta1)](#v1beta1-rocketchatconfig) array_ | _(Optional)_

Available from: v0.55.0 | -| slack_configs#
_[SlackConfig (v1beta1)](#v1beta1-slackconfig) array_ | _(Optional)_
SlackConfigs defines slack notification configurations. | -| sns_configs#
_[SNSConfig (v1beta1)](#v1beta1-snsconfig) array_ | _(Optional)_
| -| telegram_configs#
_[TelegramConfig (v1beta1)](#v1beta1-telegramconfig) array_ | _(Optional)_
| -| victorops_configs#
_[VictorOpsConfig (v1beta1)](#v1beta1-victoropsconfig) array_ | _(Optional)_
VictorOpsConfigs defines victor ops notification configurations. | -| webex_configs#
_[WebexConfig (v1beta1)](#v1beta1-webexconfig) array_ | _(Optional)_
| -| webhook_configs#
_[WebhookConfig (v1beta1)](#v1beta1-webhookconfig) array_ | _(Optional)_
WebhookConfigs defines webhook notification configurations. | -| wechat_configs#
_[WechatConfig (v1beta1)](#v1beta1-wechatconfig) array_ | _(Optional)_
WechatConfigs defines wechat notification configurations. | +| opsgenie_configs _(or opsgenieConfigs)_ #
_[OpsGenieConfig (v1beta1)](#v1beta1-opsgenieconfig) array_ | _(Optional)_
OpsGenieConfigs defines ops genie notification configurations. | +| pagerduty_configs _(or pagerdutyConfigs)_ #
_[PagerDutyConfig (v1beta1)](#v1beta1-pagerdutyconfig) array_ | _(Optional)_
PagerDutyConfigs defines pager duty notification configurations. | +| pushover_configs _(or pushoverConfigs)_ #
_[PushoverConfig (v1beta1)](#v1beta1-pushoverconfig) array_ | _(Optional)_
PushoverConfigs defines push over notification configurations. | +| rocketchat_configs _(or rocketchatConfigs)_ #
_[RocketchatConfig (v1beta1)](#v1beta1-rocketchatconfig) array_ | _(Optional)_

Available from: v0.55.0 | +| slack_configs _(or slackConfigs)_ #
_[SlackConfig (v1beta1)](#v1beta1-slackconfig) array_ | _(Optional)_
SlackConfigs defines slack notification configurations. | +| sns_configs _(or snsConfigs)_ #
_[SNSConfig (v1beta1)](#v1beta1-snsconfig) array_ | _(Optional)_
| +| telegram_configs _(or telegramConfigs)_ #
_[TelegramConfig (v1beta1)](#v1beta1-telegramconfig) array_ | _(Optional)_
| +| victorops_configs _(or victoropsConfigs)_ #
_[VictorOpsConfig (v1beta1)](#v1beta1-victoropsconfig) array_ | _(Optional)_
VictorOpsConfigs defines victor ops notification configurations. | +| webex_configs _(or webexConfigs)_ #
_[WebexConfig (v1beta1)](#v1beta1-webexconfig) array_ | _(Optional)_
| +| webhook_configs _(or webhookConfigs)_ #
_[WebhookConfig (v1beta1)](#v1beta1-webhookconfig) array_ | _(Optional)_
WebhookConfigs defines webhook notification configurations. | +| wechat_configs _(or wechatConfigs)_ #
_[WechatConfig (v1beta1)](#v1beta1-wechatconfig) array_ | _(Optional)_
WechatConfigs defines wechat notification configurations. | #### RelabelConfig {#v1beta1-relabelconfig} @@ -3500,10 +3503,8 @@ Appears in: [CommonRelabelParams (v1beta1)](#v1beta1-commonrelabelparams), [Comm | regex#
_[StringOrArray (v1beta1)](#v1beta1-stringorarray)_ | _(Optional)_
Regular expression against which the extracted value is matched. Default is '(.*)'
victoriaMetrics supports multiline regex joined with \|
https://docs.victoriametrics.com/victoriametrics/vmagent/#relabeling-enhancements | | replacement#
_string_ | _(Optional)_
Replacement value against which a regex replace is performed if the
regular expression matches. Regex capture groups are available. Default is '$1' | | separator#
_string_ | _(Optional)_
Separator placed between concatenated source label values. default is ';'. | -| sourceLabels#
_string array_ | _(Optional)_
The source labels select values from existing labels. Their content is concatenated
using the configured separator and matched against the configured regular expression
for the replace, keep, and drop actions. | -| source_labels#
_string array_ | _(Optional)_
UnderScoreSourceLabels - additional form of source labels source_labels
for compatibility with original relabel config.
if set both sourceLabels and source_labels, sourceLabels has priority.
for details https://github.com/VictoriaMetrics/operator/issues/131 | -| targetLabel#
_string_ | _(Optional)_
Label to which the resulting value is written in a replace action.
It is mandatory for replace actions. Regex capture groups are available. | -| target_label#
_string_ | _(Optional)_
UnderScoreTargetLabel - additional form of target label - target_label
for compatibility with original relabel config.
if set both targetLabel and target_label, targetLabel has priority.
for details https://github.com/VictoriaMetrics/operator/issues/131 | +| sourceLabels _(or source_labels)_ #
_string array_ | _(Optional)_
The source labels select values from existing labels. Their content is concatenated
using the configured separator and matched against the configured regular expression
for the replace, keep, and drop actions. | +| targetLabel _(or target_label)_ #
_string_ | _(Optional)_
Label to which the resulting value is written in a replace action.
It is mandatory for replace actions. Regex capture groups are available. | #### RetentionFilter {#v1beta1-retentionfilter} @@ -3569,30 +3570,31 @@ Appears in: [RocketchatConfig (v1beta1)](#v1beta1-rocketchatconfig) RocketchatConfig configures notifications via Rocketchat. https://prometheus.io/docs/alerting/latest/configuration/#rocketchat_config -Available from v0.28.0 alertmanager version +available from v0.55.0 operator version +and v0.28.0 alertmanager version Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | | actions#
_[RocketchatAttachmentAction (v1beta1)](#v1beta1-rocketchatattachmentaction) array_ | _(Optional)_
| -| api_url#
_string_ | _(Optional)_
| +| api_url _(or apiUrl)_ #
_string_ | _(Optional)_
| | channel#
_string_ | _(Optional)_
RocketChat channel override, (like #other-channel or @username). | | color#
_string_ | _(Optional)_
| | emoji#
_string_ | _(Optional)_
| | fields#
_[RocketchatAttachmentField (v1beta1)](#v1beta1-rocketchatattachmentfield) array_ | _(Optional)_
| -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
| -| icon_url#
_string_ | _(Optional)_
| -| image_url#
_string_ | _(Optional)_
| -| link_names#
_boolean_ | _(Optional)_
| -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | -| short_fields#
_boolean_ | _(Optional)_
| +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
| +| icon_url _(or iconUrl)_ #
_string_ | _(Optional)_
| +| image_url _(or imageUrl)_ #
_string_ | _(Optional)_
| +| link_names _(or linkNames)_ #
_boolean_ | _(Optional)_
| +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| short_fields _(or shortFields)_ #
_boolean_ | _(Optional)_
| | text#
_string_ | _(Optional)_
| -| thumb_url#
_string_ | _(Optional)_
| +| thumb_url _(or thumbUrl)_ #
_string_ | _(Optional)_
| | title#
_string_ | _(Optional)_
| -| title_link#
_string_ | _(Optional)_
| +| title_link _(or titleLink)_ #
_string_ | _(Optional)_
| | token#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
| -| token_id#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The sender token and token_id
See https://docs.rocket.chat/docs/manage-personal-access-tokens | +| token_id _(or tokenId)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The sender token and token_id
See https://docs.rocket.chat/docs/manage-personal-access-tokens | #### Route {#v1beta1-route} @@ -3603,15 +3605,15 @@ Appears in: [VMAlertmanagerConfigSpec (v1beta1)](#v1beta1-vmalertmanagerconfigsp | Field | Description | | --- | --- | -| active_time_intervals#
_string array_ | _(Optional)_
ActiveTimeIntervals Times when the route should be active
These must match the name at time_intervals | +| active_time_intervals _(or activeTimeIntervals)_ #
_string array_ | _(Optional)_
ActiveTimeIntervals Times when the route should be active
These must match the name at time_intervals | | continue#
_boolean_ | _(Optional)_
Continue indicating whether an alert should continue matching subsequent
sibling nodes. It will always be true for the first-level route if disableRouteContinueEnforce for vmalertmanager not set. | -| group_by#
_string array_ | _(Optional)_
List of labels to group by. | -| group_interval#
_string_ | _(Optional)_
How long to wait before sending an updated notification. | -| group_wait#
_string_ | _(Optional)_
How long to wait before sending the initial notification. | +| group_by _(or groupBy)_ #
_string array_ | _(Optional)_
List of labels to group by. | +| group_interval _(or groupInterval)_ #
_string_ | _(Optional)_
How long to wait before sending an updated notification. | +| group_wait _(or groupWait)_ #
_string_ | _(Optional)_
How long to wait before sending the initial notification. | | matchers#
_string array_ | _(Optional)_
List of matchers that the alert’s labels should match. For the first
level route, the operator adds a namespace: "CRD_NS" matcher.
https://prometheus.io/docs/alerting/latest/configuration/#matcher | -| mute_time_intervals#
_string array_ | _(Optional)_
MuteTimeIntervals is a list of interval names that will mute matched alert | +| mute_time_intervals _(or muteTimeIntervals)_ #
_string array_ | _(Optional)_
MuteTimeIntervals is a list of interval names that will mute matched alert | | receiver#
_string_ | _(Required)_
Name of the receiver for this route. | -| repeat_interval#
_string_ | _(Optional)_
How long to wait before repeating the last notification. | +| repeat_interval _(or repeatInterval)_ #
_string_ | _(Optional)_
How long to wait before repeating the last notification. | | routes#
_[JSON (v1)](#v1-json) array_ | _(Optional)_
Child routes.
https://prometheus.io/docs/alerting/latest/configuration/#route | #### Rule {#v1beta1-rule} @@ -3664,16 +3666,16 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| api_url#
_string_ | _(Optional)_
The api URL | +| api_url _(or apiUrl)_ #
_string_ | _(Optional)_
The api URL | | attributes#
_object (keys:string, values:string)_ | _(Optional)_
SNS message attributes | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | | message#
_string_ | _(Optional)_
The message content of the SNS notification. | -| phone_number#
_string_ | _(Required)_
Phone number if message is delivered via SMS
Specify this, topic_arn or target_arn | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| phone_number _(or phoneNumber)_ #
_string_ | _(Required)_
Phone number if message is delivered via SMS
Specify this, topic_arn or target_arn | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | sigv4#
_[Sigv4Config (v1beta1)](#v1beta1-sigv4config)_ | _(Required)_
Configure the AWS Signature Verification 4 signing process | | subject#
_string_ | _(Optional)_
The subject line if message is delivered to an email endpoint. | -| target_arn#
_string_ | _(Optional)_
Mobile platform endpoint ARN if message is delivered via mobile notifications
Specify this, topic_arn or phone_number | -| topic_arn#
_string_ | _(Optional)_
SNS topic ARN, either specify this, phone_number or target_arn | +| target_arn _(or targetArn)_ #
_string_ | _(Optional)_
Mobile platform endpoint ARN if message is delivered via mobile notifications
Specify this, topic_arn or phone_number | +| topic_arn _(or topicArn)_ #
_string_ | _(Optional)_
SNS topic ARN, either specify this, phone_number or target_arn | #### ScrapeClass {#v1beta1-scrapeclass} @@ -3682,17 +3684,17 @@ Appears in: [CommonScrapeParams (v1beta1)](#v1beta1-commonscrapeparams), [VMAgen | Field | Description | | --- | --- | -| attachMetadata#
_[AttachMetadata (v1beta1)](#v1beta1-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. | +| attachMetadata _(or attach_metadata)_ #
_[AttachMetadata (v1beta1)](#v1beta1-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. | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | | default#
_boolean_ | _(Optional)_
default defines that the scrape applies to all scrape objects that
don't configure an explicit scrape class name.
Only one scrape class can be set as the default. | -| metricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | name#
_string_ | _(Required)_
name of the scrape class. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | -| relabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | #### SecretOrConfigMap {#v1beta1-secretorconfigmap} @@ -3721,12 +3723,12 @@ Appears in: [SNSConfig (v1beta1)](#v1beta1-snsconfig) | Field | Description | | --- | --- | -| access_key#
_string_ | _(Optional)_
The AWS API keys. Both access_key and secret_key must be supplied or both must be blank.
If blank the environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are used. | -| access_key_selector#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
secret key selector to get the keys from a Kubernetes Secret | +| access_key _(or accessKey)_ #
_string_ | _(Optional)_
The AWS API keys. Both access_key and secret_key must be supplied or both must be blank.
If blank the environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are used. | +| access_key_selector _(or accessKeySelector)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
secret key selector to get the keys from a Kubernetes Secret | | profile#
_string_ | _(Optional)_
Named AWS profile used to authenticate | | region#
_string_ | _(Optional)_
AWS region, if blank the region from the default credentials chain is used | -| role_arn#
_string_ | _(Optional)_
AWS Role ARN, an alternative to using AWS API keys | -| secret_key_selector#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
secret key selector to get the keys from a Kubernetes Secret | +| role_arn _(or roleArn)_ #
_string_ | _(Optional)_
AWS Role ARN, an alternative to using AWS API keys | +| secret_key_selector _(or secretKeySelector)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
secret key selector to get the keys from a Kubernetes Secret | #### SlackAction {#v1beta1-slackaction} @@ -3759,27 +3761,27 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | | actions#
_[SlackAction (v1beta1)](#v1beta1-slackaction) array_ | _(Optional)_
A list of Slack actions that are sent with each notification. | -| api_url#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the Slack webhook URL.
It must be at them same namespace as CRD
fallback to global setting if empty | -| callback_id#
_string_ | _(Optional)_
| +| api_url _(or apiUrl)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the Slack webhook URL.
It must be at them same namespace as CRD
fallback to global setting if empty | +| callback_id _(or callbackId)_ #
_string_ | _(Optional)_
| | channel#
_string_ | _(Optional)_
The channel or user to send notifications to. | | color#
_string_ | _(Optional)_
| | fallback#
_string_ | _(Optional)_
| | fields#
_[SlackField (v1beta1)](#v1beta1-slackfield) array_ | _(Optional)_
A list of Slack fields that are sent with each notification. | | footer#
_string_ | _(Optional)_
| -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | -| icon_emoji#
_string_ | _(Optional)_
| -| icon_url#
_string_ | _(Optional)_
| -| image_url#
_string_ | _(Optional)_
| -| link_names#
_boolean_ | _(Optional)_
| -| mrkdwn_in#
_string array_ | _(Optional)_
| +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| icon_emoji _(or iconEmoji)_ #
_string_ | _(Optional)_
| +| icon_url _(or iconUrl)_ #
_string_ | _(Optional)_
| +| image_url _(or imageUrl)_ #
_string_ | _(Optional)_
| +| link_names _(or linkNames)_ #
_boolean_ | _(Optional)_
| +| mrkdwn_in _(or mrkdwnIn)_ #
_string array_ | _(Optional)_
| | pretext#
_string_ | _(Optional)_
| -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | -| short_fields#
_boolean_ | _(Optional)_
| +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| short_fields _(or shortFields)_ #
_boolean_ | _(Optional)_
| | text#
_string_ | _(Optional)_
| -| thumb_url#
_string_ | _(Optional)_
| +| thumb_url _(or thumbUrl)_ #
_string_ | _(Optional)_
| | title#
_string_ | _(Optional)_
| -| title_link#
_string_ | _(Optional)_
| -| update_message#
_boolean_ | _(Optional)_
Whether to update the original message in-place instead of sending a new one.
Requires Slack Bot API and chat:write scope.
Available since alertmanager v0.32.0. | +| title_link _(or titleLink)_ #
_string_ | _(Optional)_
| +| update_message _(or updateMessage)_ #
_boolean_ | _(Optional)_
Whether to update the original message in-place instead of sending a new one.
Requires Slack Bot API and chat:write scope.
Available since alertmanager v0.32.0. | | username#
_string_ | _(Optional)_
| #### SlackConfirmationField {#v1beta1-slackconfirmationfield} @@ -3795,8 +3797,8 @@ Appears in: [SlackAction (v1beta1)](#v1beta1-slackaction) | Field | Description | | --- | --- | -| dismiss_text#
_string_ | _(Optional)_
| -| ok_text#
_string_ | _(Optional)_
| +| dismiss_text _(or dismissText)_ #
_string_ | _(Optional)_
| +| ok_text _(or okText)_ #
_string_ | _(Optional)_
| | text#
_string_ | _(Required)_
| | title#
_string_ | _(Optional)_
| @@ -3985,29 +3987,29 @@ Appears in: [VMStaticScrapeSpec (v1beta1)](#v1beta1-vmstaticscrapespec) | Field | Description | | --- | --- | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | -| follow_redirects#
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | -| honorLabels#
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | -| honorTimestamps#
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| follow_redirects _(or followRedirects)_ #
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | +| honorLabels _(or honor_labels)_ #
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | +| honorTimestamps _(or honor_timestamps)_ #
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | | interval#
_string_ | _(Optional)_
Interval at which metrics should be scraped | | labels#
_object (keys:string, values:string)_ | _(Optional)_
Labels static labels for targets. | -| max_scrape_size#
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | -| metricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| max_scrape_size _(or maxScrapeSize)_ #
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | | params#
_object (keys:string, values:string array)_ | _(Optional)_
Optional HTTP URL parameters | | path#
_string_ | _(Optional)_
HTTP path to scrape for metrics. | -| proxyURL#
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | -| relabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | | scheme#
_string_ | _(Optional)_
HTTP scheme to use for scraping. | -| scrapeTimeout#
_string_ | _(Optional)_
Timeout after which the scrape is ended | -| scrape_interval#
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | -| seriesLimit#
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
Timeout after which the scrape is ended | +| scrape_interval _(or scrapeInterval)_ #
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | +| seriesLimit _(or series_limit)_ #
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | | targets#
_string array_ | _(Required)_
Targets static targets addresses in form of ["192.122.55.55:9100","some-name:9100"]. | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### TargetRef {#v1beta1-targetref} @@ -4021,12 +4023,19 @@ Appears in: [VMAuthSpec (v1beta1)](#v1beta1-vmauthspec), [VMAuthUnauthorizedUser | Field | Description | | --- | --- | -| URLMapCommon#
_[URLMapCommon (v1beta1)](#v1beta1-urlmapcommon)_ | _(Required)_
| | crd#
_[CRDRef (v1beta1)](#v1beta1-crdref)_ | _(Optional)_
CRD describes exist operator's CRD object,
operator generates access url based on CRD params. | +| discover_backend_ips#
_boolean_ | _(Required)_
DiscoverBackendIPs instructs discovering URLPrefix backend IPs via DNS. | +| drop_src_path_prefix_parts#
_integer_ | _(Optional)_
DropSrcPathPrefixParts is the number of `/`-delimited request path prefix parts to drop before proxying the request to backend.
See [here](https://docs.victoriametrics.com/victoriametrics/vmauth/#dropping-request-path-prefix) for more details. | +| headers#
_string array_ | _(Optional)_
RequestHeaders represent additional http headers, that vmauth uses
in form of ["header_key: header_value"]
multiple values for header key:
["header_key: value1,value2"]
it's available since 1.68.0 version of vmauth | | hosts#
_string array_ | _(Required)_
| +| load_balancing_policy#
_string_ | _(Optional)_
LoadBalancingPolicy defines load balancing policy to use for backend urls.
Supported policies: least_loaded, first_available.
See [here](https://docs.victoriametrics.com/victoriametrics/vmauth/#load-balancing) for more details (default "least_loaded") | | name#
_string_ | _(Optional)_
Name references item at VMAuths spec.defaultTargetRefs map, with name set other attributes are skipped | | paths#
_string array_ | _(Optional)_
Paths - matched path to route. | | query_args#
_[QueryArg (v1beta1)](#v1beta1-queryarg) array_ | _(Optional)_
QueryArgs appends list of query arguments to generated URL | +| response_headers#
_string array_ | _(Optional)_
ResponseHeaders represent additional http headers, that vmauth adds for request response
in form of ["header_key: header_value"]
multiple values for header key:
["header_key: value1,value2"]
it's available since 1.93.0 version of vmauth | +| retry_status_codes#
_integer array_ | _(Optional)_
RetryStatusCodes defines http status codes in numeric format for request retries
Can be defined per target or at VMUser.spec level
e.g. [429,503] | +| src_headers#
_string array_ | _(Required)_
SrcHeaders is an optional list of headers, which must match request headers. | +| src_query_args#
_string array_ | _(Required)_
SrcQueryArgs is an optional list of query args, which must match request URL query args. | | static#
_[StaticRef (v1beta1)](#v1beta1-staticref)_ | _(Optional)_
Static - user defined url for traffic forward,
for instance http://vmsingle:8428 | | targetRefBasicAuth#
_[TargetRefBasicAuth (v1beta1)](#v1beta1-targetrefbasicauth)_ | _(Optional)_
TargetRefBasicAuth allow an target endpoint to authenticate over basic authentication | | target_path_suffix#
_string_ | _(Optional)_
TargetPathSuffix allows to add some suffix to the target path
It allows to hide tenant configuration from user with crd as ref.
it also may contain any url encoded params. | @@ -4053,15 +4062,15 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| api_url#
_string_ | _(Optional)_
APIUrl the Telegram API URL i.e. https://api.telegram.org. | -| bot_token#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Required)_
BotToken token for the bot
https://core.telegram.org/bots/api | -| chat_id#
_integer_ | _(Required)_
ChatID is ID of the chat where to send the messages. | -| disable_notifications#
_boolean_ | _(Optional)_
DisableNotifications | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| api_url _(or apiUrl)_ #
_string_ | _(Optional)_
APIUrl the Telegram API URL i.e. https://api.telegram.org. | +| bot_token _(or botToken)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Required)_
BotToken token for the bot
https://core.telegram.org/bots/api | +| chat_id _(or chatId)_ #
_integer_ | _(Required)_
ChatID is ID of the chat where to send the messages. | +| disable_notifications _(or disableNotifications)_ #
_boolean_ | _(Optional)_
DisableNotifications | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | | message#
_string_ | _(Optional)_
Message is templated message | -| message_thread_id#
_integer_ | _(Optional)_
MessageThreadID defines ID of the message thread where to send the messages. | -| parse_mode#
_string_ | _(Optional)_
ParseMode for telegram message,
supported values are MarkdownV2, Markdown, Markdown and empty string for plain text. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| message_thread_id _(or messageThreadId)_ #
_integer_ | _(Optional)_
MessageThreadID defines ID of the message thread where to send the messages. | +| parse_mode _(or parseMode)_ #
_string_ | _(Optional)_
ParseMode for telegram message,
supported values are MarkdownV2, Markdown, Markdown and empty string for plain text. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | #### TimeInterval {#v1beta1-timeinterval} @@ -4072,7 +4081,7 @@ Appears in: [TimeIntervals (v1beta1)](#v1beta1-timeintervals) | Field | Description | | --- | --- | -| days_of_month#
_string array_ | _(Optional)_
DayOfMonth defines list of numerical days in the month. Days begin at 1. Negative values are also accepted.
for example, ['1:5', '-3:-1'] | +| days_of_month _(or daysOfMonth)_ #
_string array_ | _(Optional)_
DayOfMonth defines list of numerical days in the month. Days begin at 1. Negative values are also accepted.
for example, ['1:5', '-3:-1'] | | location#
_string_ | _(Optional)_
Location in golang time location form, e.g. UTC | | months#
_string array_ | _(Optional)_
Months defines list of calendar months identified by a case-insensitive name (e.g. ‘January’) or numeric 1.
For example, ['1:3', 'may:august', 'december'] | | times#
_[TimeRange (v1beta1)](#v1beta1-timerange) array_ | _(Optional)_
Times defines time range for mute | @@ -4089,7 +4098,7 @@ Appears in: [VMAlertmanagerConfigSpec (v1beta1)](#v1beta1-vmalertmanagerconfigsp | Field | Description | | --- | --- | | name#
_string_ | _(Required)_
Name of interval | -| time_intervals#
_[TimeInterval (v1beta1)](#v1beta1-timeinterval) array_ | _(Required)_
TimeIntervals interval configuration | +| time_intervals _(or timeIntervals)_ #
_[TimeInterval (v1beta1)](#v1beta1-timeinterval) array_ | _(Required)_
TimeIntervals interval configuration | #### TimeRange {#v1beta1-timerange} @@ -4100,8 +4109,8 @@ Appears in: [TimeInterval (v1beta1)](#v1beta1-timeinterval) | Field | Description | | --- | --- | -| end_time#
_string_ | _(Required)_
EndTime for example HH:MM | -| start_time#
_string_ | _(Required)_
StartTime for example HH:MM | +| end_time _(or endTime)_ #
_string_ | _(Required)_
EndTime for example HH:MM | +| start_time _(or startTime)_ #
_string_ | _(Required)_
StartTime for example HH:MM | #### URLMapCommon {#v1beta1-urlmapcommon} @@ -4131,9 +4140,16 @@ Appears in: [VMAuthSpec (v1beta1)](#v1beta1-vmauthspec), [VMAuthUnauthorizedUser | Field | Description | | --- | --- | -| URLMapCommon#
_[URLMapCommon (v1beta1)](#v1beta1-urlmapcommon)_ | _(Required)_
| +| discover_backend_ips#
_boolean_ | _(Required)_
DiscoverBackendIPs instructs discovering URLPrefix backend IPs via DNS. | +| drop_src_path_prefix_parts#
_integer_ | _(Optional)_
DropSrcPathPrefixParts is the number of `/`-delimited request path prefix parts to drop before proxying the request to backend.
See [here](https://docs.victoriametrics.com/victoriametrics/vmauth/#dropping-request-path-prefix) for more details. | +| headers#
_string array_ | _(Optional)_
RequestHeaders represent additional http headers, that vmauth uses
in form of ["header_key: header_value"]
multiple values for header key:
["header_key: value1,value2"]
it's available since 1.68.0 version of vmauth | +| load_balancing_policy#
_string_ | _(Optional)_
LoadBalancingPolicy defines load balancing policy to use for backend urls.
Supported policies: least_loaded, first_available.
See [here](https://docs.victoriametrics.com/victoriametrics/vmauth/#load-balancing) for more details (default "least_loaded") | +| response_headers#
_string array_ | _(Optional)_
ResponseHeaders represent additional http headers, that vmauth adds for request response
in form of ["header_key: header_value"]
multiple values for header key:
["header_key: value1,value2"]
it's available since 1.93.0 version of vmauth | +| retry_status_codes#
_integer array_ | _(Optional)_
RetryStatusCodes defines http status codes in numeric format for request retries
Can be defined per target or at VMUser.spec level
e.g. [429,503] | +| src_headers#
_string array_ | _(Required)_
SrcHeaders is an optional list of headers, which must match request headers. | | src_hosts#
_string array_ | _(Required)_
SrcHosts is an optional list of regular expressions, which must match the request hostname. | | src_paths#
_string array_ | _(Required)_
SrcPaths is an optional list of regular expressions, which must match the request path. | +| src_query_args#
_string array_ | _(Required)_
SrcQueryArgs is an optional list of query args, which must match request URL query args. | | url_prefix#
_[StringOrArray (v1beta1)](#v1beta1-stringorarray)_ | _(Required)_
UrlPrefix contains backend url prefixes for the proxied request url.
URLPrefix defines prefix prefix for destination | #### VLogs {#v1beta1-vlogs} @@ -4301,10 +4317,10 @@ Appears in: [VMAgent (v1beta1)](#v1beta1-vmagent) | Field | Description | | --- | --- | -| additionalScrapeConfigs#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AdditionalScrapeConfigs 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade. | +| additionalScrapeConfigs _(or additional_scrape_configs)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AdditionalScrapeConfigs 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade. | | affinity#
_[Affinity (v1)](#v1-affinity)_ | _(Optional)_
Affinity If specified, the pod's scheduling constraints. | | apiServerConfig#
_[APIServerConfig (v1beta1)](#v1beta1-apiserverconfig)_ | _(Optional)_
APIServerConfig allows specifying a host and auth methods to access apiserver.
If left empty, VMAgent is assumed to run inside of the cluster
and will discover API servers automatically and use the pod's CA certificate
and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. | -| arbitraryFSAccessThroughSMs#
_[ArbitraryFSAccessThroughSMsConfig (v1beta1)](#v1beta1-arbitraryfsaccessthroughsmsconfig)_ | _(Optional)_
ArbitraryFSAccessThroughSMs configures whether configuration
based on EndpointAuth can access arbitrary files on the file system
of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs | +| arbitraryFSAccessThroughSMs _(or arbitrary_fs_access_through_s_ms)_ #
_[ArbitraryFSAccessThroughSMsConfig (v1beta1)](#v1beta1-arbitraryfsaccessthroughsmsconfig)_ | _(Optional)_
ArbitraryFSAccessThroughSMs configures whether configuration
based on EndpointAuth can access arbitrary files on the file system
of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs | | claimTemplates#
_[PersistentVolumeClaim (v1)](#v1-persistentvolumeclaim) array_ | _(Required)_
ClaimTemplates allows adding additional VolumeClaimTemplates for VMAgent in StatefulMode | | componentVersion#
_string_ | _(Optional)_
ComponentVersion defines default images tag for all components.
it can be overwritten with component specific image.tag value. | | configMaps#
_string array_ | _(Optional)_
ConfigMaps is a list of ConfigMaps in the same namespace as the Application
object, which shall be mounted into the Application container
at /etc/vm/configs/CONFIGMAP_NAME folder | @@ -4321,56 +4337,56 @@ Appears in: [VMAgent (v1beta1)](#v1beta1-vmagent) | disableSelfServiceScrape#
_boolean_ | _(Optional)_
DisableSelfServiceScrape controls creation of VMServiceScrape by operator
for the application.
Has priority over `VM_DISABLESELFSERVICESCRAPECREATION` operator env variable | | dnsConfig#
_[PodDNSConfig (v1)](#v1-poddnsconfig)_ | _(Optional)_
Specifies the DNS parameters of a pod.
Parameters specified here will be merged to the generated DNS
configuration based on DNSPolicy. | | dnsPolicy#
_[DNSPolicy (v1)](#v1-dnspolicy)_ | _(Optional)_
DNSPolicy sets DNS policy for the pod | -| enableKubernetesAPISelectors#
_boolean_ | _(Optional)_
EnableKubernetesAPISelectors instructs vmagent or vmsingle to use CRD scrape objects spec.selectors for
Kubernetes API list and watch requests.
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#list-and-watch-filtering
It could be useful to reduce Kubernetes API server resource usage for serving less than 100 CRD scrape objects in total. | +| enableKubernetesAPISelectors _(or enable_kubernetes_api_selectors)_ #
_boolean_ | _(Optional)_
EnableKubernetesAPISelectors instructs vmagent or vmsingle to use CRD scrape objects spec.selectors for
Kubernetes API list and watch requests.
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#list-and-watch-filtering
It could be useful to reduce Kubernetes API server resource usage for serving less than 100 CRD scrape objects in total. | | enableServiceLinks#
_boolean_ | _(Optional)_
EnableServiceLinks indicates whether information about services should be injected into pod's
environment variables, matching the syntax of Docker links.
Optional: Defaults to true. | -| enforcedNamespaceLabel#
_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. | -| externalLabelName#
_string_ | _(Optional)_
ExternalLabelName Name of external label used to denote scraping agent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`). | -| externalLabels#
_object (keys:string, values:string)_ | _(Optional)_
ExternalLabels The labels to add to any time series scraped by vmagent or vmsingle.
it doesn't affect metrics ingested directly by push API's | +| enforcedNamespaceLabel _(or enforced_namespace_label)_ #
_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. | +| externalLabelName _(or external_label_name)_ #
_string_ | _(Optional)_
ExternalLabelName Name of external label used to denote scraping agent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`). | +| externalLabels _(or external_labels)_ #
_object (keys:string, values:string)_ | _(Optional)_
ExternalLabels The labels to add to any time series scraped by vmagent or vmsingle.
it doesn't affect metrics ingested directly by push API's | | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar (v1)](#v1-envvar) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource (v1)](#v1-envfromsource) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| globalScrapeMetricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | -| globalScrapeRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | +| globalScrapeMetricRelabelConfigs _(or global_scrape_metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | +| globalScrapeRelabelConfigs _(or global_scrape_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | | hostAliases#
_[HostAlias (v1)](#v1-hostalias) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | | hostNetwork#
_boolean_ | _(Optional)_
HostNetwork controls whether the pod may use the node network namespace | | host_aliases#
_[HostAlias (v1)](#v1-hostalias) array_ | _(Optional)_
HostAliasesUnderScore provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork.
Has Priority over hostAliases field | | hpa#
_[EmbeddedHPA (v1beta1)](#v1beta1-embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling. | -| ignoreNamespaceSelectors#
_boolean_ | _(Optional)_
IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from
scrape objects, and they will only discover endpoints
within their current namespace. Defaults to false. | +| ignoreNamespaceSelectors _(or ignore_namespace_selectors)_ #
_boolean_ | _(Optional)_
IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from
scrape objects, and they will only discover endpoints
within their current namespace. Defaults to false. | | image#
_[Image (v1beta1)](#v1beta1-image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference (v1)](#v1-localobjectreference) array_ | _(Optional)_
ImagePullSecrets An optional list of references to secrets in the same namespace
to use for pulling images from registries
see https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | -| ingestOnlyMode#
_boolean_ | _(Optional)_
IngestOnlyMode switches vmagent or vmsingle into unmanaged mode
it disables any config generation for scraping
Currently it prevents vmagent or vmsingle from managing tls and auth options for remote write | +| ingestOnlyMode _(or ingest_only_mode)_ #
_boolean_ | _(Optional)_
IngestOnlyMode switches vmagent or vmsingle into unmanaged mode
it disables any config generation for scraping
Currently it prevents vmagent or vmsingle from managing tls and auth options for remote write | | initContainers#
_[Container (v1)](#v1-container) array_ | _(Optional)_
InitContainers allows adding initContainers to the pod definition.
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/ | | inlineRelabelConfig#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
InlineRelabelConfig - defines GlobalRelabelConfig for vmagent, can be defined directly at CRD. | -| inlineScrapeConfig#
_string_ | _(Optional)_
InlineScrapeConfig 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade.
it should be defined as single yaml file.
inlineScrapeConfig: \|
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"] | +| inlineScrapeConfig _(or inline_scrape_config)_ #
_string_ | _(Optional)_
InlineScrapeConfig 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade.
it should be defined as single yaml file.
inlineScrapeConfig: \|
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"] | | insertPorts#
_[InsertPorts (v1beta1)](#v1beta1-insertports)_ | _(Required)_
InsertPorts - additional listen ports for data ingestion. | | license#
_[License (v1beta1)](#v1beta1-license)_ | _(Optional)_
License allows to configure license key to be used for enterprise features.
Using license key is supported starting from VictoriaMetrics v1.94.0.
See [here](https://docs.victoriametrics.com/victoriametrics/enterprise/) | | livenessProbe#
_[Probe (v1)](#v1-probe)_ | _(Optional)_
LivenessProbe that will be added to CR pod | | logFormat#
_string_ | _(Optional)_
LogFormat for VMAgent to be configured with. | | logLevel#
_string_ | _(Optional)_
LogLevel for VMAgent to be configured with.
INFO, WARN, ERROR, FATAL, PANIC | | managedMetadata#
_[ManagedObjectsMetadata (v1beta1)](#v1beta1-managedobjectsmetadata)_ | _(Required)_
ManagedMetadata defines metadata that will be added to the all objects
created by operator for the given CustomResource | -| maxScrapeInterval#
_string_ | _(Required)_
MaxScrapeInterval allows limiting maximum scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is higher than defined limit, `maxScrapeInterval` will be used. | +| maxScrapeInterval _(or max_scrape_interval)_ #
_string_ | _(Required)_
MaxScrapeInterval allows limiting maximum scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is higher than defined limit, `maxScrapeInterval` will be used. | | minReadySeconds#
_integer_ | _(Optional)_
MinReadySeconds defines a minimum number of seconds to wait before starting update next pod
if previous in healthy state
Has no effect for VLogs and VMSingle | -| minScrapeInterval#
_string_ | _(Required)_
MinScrapeInterval allows limiting minimal scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is lower than defined limit, `minScrapeInterval` will be used. | +| minScrapeInterval _(or min_scrape_interval)_ #
_string_ | _(Required)_
MinScrapeInterval allows limiting minimal scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is lower than defined limit, `minScrapeInterval` will be used. | | networkPolicy#
_[EmbeddedNetworkPolicy (v1beta1)](#v1beta1-embeddednetworkpolicy)_ | _(Optional)_
NetworkPolicy defines network access rules for pods created by this CR. | -| nodeScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeNamespaceSelector defines Namespaces to be selected for VMNodeScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| nodeScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
NodeScrapeRelabelTemplate defines relabel config, that will be added to each VMNodeScrape.
it's useful for adding specific labels to all targets | -| nodeScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeSelector defines VMNodeScrape to be selected for scraping.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| nodeScrapeNamespaceSelector _(or node_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeNamespaceSelector defines Namespaces to be selected for VMNodeScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| nodeScrapeRelabelTemplate _(or node_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
NodeScrapeRelabelTemplate defines relabel config, that will be added to each VMNodeScrape.
it's useful for adding specific labels to all targets | +| nodeScrapeSelector _(or node_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeSelector defines VMNodeScrape to be selected for scraping.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | | nodeSelector#
_object (keys:string, values:string)_ | _(Optional)_
NodeSelector Define which Nodes the Pods are scheduled on. | -| overrideHonorLabels#
_boolean_ | _(Optional)_
OverrideHonorLabels if set to true overrides all user configured honor_labels.
If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. | -| overrideHonorTimestamps#
_boolean_ | _(Optional)_
OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | +| overrideHonorLabels _(or override_honor_labels)_ #
_boolean_ | _(Optional)_
OverrideHonorLabels if set to true overrides all user configured honor_labels.
If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. | +| overrideHonorTimestamps _(or override_honor_timestamps)_ #
_boolean_ | _(Optional)_
OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | | paused#
_boolean_ | _(Optional)_
Paused If set to true all actions on the underlying managed objects are not
going to be performed, except for delete actions. | | persistentVolumeClaimRetentionPolicy#
_[StatefulSetPersistentVolumeClaimRetentionPolicy (v1)](#v1-statefulsetpersistentvolumeclaimretentionpolicy)_ | _(Optional)_
PersistentVolumeClaimRetentionPolicy allows configuration of PVC retention policy | | podDisruptionBudget#
_[EmbeddedPodDisruptionBudgetSpec (v1beta1)](#v1beta1-embeddedpoddisruptionbudgetspec)_ | _(Optional)_
PodDisruptionBudget created by operator | | podMetadata#
_[EmbeddedObjectMetadata (v1beta1)](#v1beta1-embeddedobjectmetadata)_ | _(Optional)_
PodMetadata configures Labels and Annotations which are propagated to the vmagent pods. | -| podScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeNamespaceSelector defines Namespaces to be selected for VMPodScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| podScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
PodScrapeRelabelTemplate defines relabel config, that will be added to each VMPodScrape.
it's useful for adding specific labels to all targets | -| podScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeSelector defines PodScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| podScrapeNamespaceSelector _(or pod_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeNamespaceSelector defines Namespaces to be selected for VMPodScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| podScrapeRelabelTemplate _(or pod_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
PodScrapeRelabelTemplate defines relabel config, that will be added to each VMPodScrape.
it's useful for adding specific labels to all targets | +| podScrapeSelector _(or pod_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeSelector defines PodScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | | port#
_string_ | _(Optional)_
Port listen address | | preStopSleepSeconds#
_integer_ | _(Optional)_
PreStopSleepSeconds defines the number of seconds to sleep in the preStop lifecycle hook.
It gives time for load balancers to remove the pod from rotation before the pod is terminated.
Defaults to 15 for applicable components. Set to 0 to disable. | | priorityClassName#
_string_ | _(Optional)_
PriorityClassName class assigned to the Pods | -| probeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeNamespaceSelector defines Namespaces to be selected for VMProbe discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| probeScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ProbeScrapeRelabelTemplate defines relabel config, that will be added to each VMProbeScrape.
it's useful for adding specific labels to all targets | -| probeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeSelector defines VMProbe to be selected for target probing.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| probeNamespaceSelector _(or probe_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeNamespaceSelector defines Namespaces to be selected for VMProbe discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| probeScrapeRelabelTemplate _(or probe_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ProbeScrapeRelabelTemplate defines relabel config, that will be added to each VMProbeScrape.
it's useful for adding specific labels to all targets | +| probeSelector _(or probe_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeSelector defines VMProbe to be selected for target probing.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | | readinessGates#
_[PodReadinessGate (v1)](#v1-podreadinessgate) array_ | _(Required)_
ReadinessGates defines pod readiness gates | | readinessProbe#
_[Probe (v1)](#v1-probe)_ | _(Optional)_
ReadinessProbe that will be added to CR pod | | relabelConfig#
_[ConfigMapKeySelector (v1)](#v1-configmapkeyselector)_ | _(Optional)_
RelabelConfig ConfigMap with global relabel config -remoteWrite.relabelConfig
This relabeling is applied to all the collected metrics before sending them to remote storage. | @@ -4381,21 +4397,21 @@ Appears in: [VMAgent (v1beta1)](#v1beta1-vmagent) | revisionHistoryLimitCount#
_integer_ | _(Optional)_
The number of old ReplicaSets to retain to allow rollback in deployment or
maximum number of revisions that will be maintained in the Deployment revision history.
Has no effect at StatefulSets
Defaults to 10. | | rollingUpdate#
_[RollingUpdateDeployment (v1)](#v1-rollingupdatedeployment)_ | _(Optional)_
RollingUpdate - overrides deployment update params. | | runtimeClassName#
_string_ | _(Optional)_
RuntimeClassName - defines runtime class for kubernetes pod.
https://kubernetes.io/docs/concepts/containers/runtime-class/ | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines global per target limit of scraped samples | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines global per target limit of scraped samples | | schedulerName#
_string_ | _(Optional)_
SchedulerName - defines kubernetes scheduler name | -| scrapeClasses#
_[ScrapeClass (v1beta1)](#v1beta1-scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | -| scrapeConfigNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigNamespaceSelector defines Namespaces to be selected for VMScrapeConfig discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| scrapeConfigRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ScrapeConfigRelabelTemplate defines relabel config, that will be added to each VMScrapeConfig.
it's useful for adding specific labels to all targets | -| scrapeConfigSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigSelector defines VMScrapeConfig to be selected for target discovery.
Works in combination with NamespaceSelector. | -| scrapeInterval#
_string_ | _(Optional)_
ScrapeInterval defines how often scrape targets by default | -| scrapeTimeout#
_string_ | _(Optional)_
ScrapeTimeout defines global timeout for targets scrape | +| scrapeClasses _(or scrape_classes)_ #
_[ScrapeClass (v1beta1)](#v1beta1-scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | +| scrapeConfigNamespaceSelector _(or scrape_config_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigNamespaceSelector defines Namespaces to be selected for VMScrapeConfig discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| scrapeConfigRelabelTemplate _(or scrape_config_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ScrapeConfigRelabelTemplate defines relabel config, that will be added to each VMScrapeConfig.
it's useful for adding specific labels to all targets | +| scrapeConfigSelector _(or scrape_config_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigSelector defines VMScrapeConfig to be selected for target discovery.
Works in combination with NamespaceSelector. | +| scrapeInterval _(or scrape_interval)_ #
_string_ | _(Optional)_
ScrapeInterval defines how often scrape targets by default | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
ScrapeTimeout defines global timeout for targets scrape | | secrets#
_string array_ | _(Optional)_
Secrets is a list of Secrets in the same namespace as the Application
object, which shall be mounted into the Application container
at /etc/vm/secrets/SECRET_NAME folder | | securityContext#
_[SecurityContext (v1beta1)](#v1beta1-securitycontext)_ | _(Optional)_
SecurityContext holds pod-level security attributes and common container settings.
This defaults to the default PodSecurityContext. | -| selectAllByDefault#
_boolean_ | _(Optional)_
SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector.
with selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector
Operator selects all exist serviceScrapes
with selectAllByDefault: false - selects nothing | +| selectAllByDefault _(or select_all_by_default)_ #
_boolean_ | _(Optional)_
SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector.
with selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector
Operator selects all exist serviceScrapes
with selectAllByDefault: false - selects nothing | | serviceAccountName#
_string_ | _(Optional)_
ServiceAccountName is the name of the ServiceAccount to use to run the pods | -| serviceScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeNamespaceSelector Namespaces to be selected for VMServiceScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| serviceScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ServiceScrapeRelabelTemplate defines relabel config, that will be added to each VMServiceScrape.
it's useful for adding specific labels to all targets | -| serviceScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeSelector defines ServiceScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| serviceScrapeNamespaceSelector _(or service_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeNamespaceSelector Namespaces to be selected for VMServiceScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| serviceScrapeRelabelTemplate _(or service_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ServiceScrapeRelabelTemplate defines relabel config, that will be added to each VMServiceScrape.
it's useful for adding specific labels to all targets | +| serviceScrapeSelector _(or service_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeSelector defines ServiceScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | | serviceScrapeSpec#
_[VMServiceScrapeSpec (v1beta1)](#v1beta1-vmservicescrapespec)_ | _(Optional)_
ServiceScrapeSpec that will be added to vmagent VMServiceScrape spec | | serviceSpec#
_[AdditionalServiceSpec (v1beta1)](#v1beta1-additionalservicespec)_ | _(Optional)_
ServiceSpec that will be added to vmagent service spec | | shardCount#
_integer_ | _(Optional)_
ShardCount - numbers of shards of VMAgent
in this case operator will use 1 deployment/sts per shard with
replicas count according to spec.replicas,
see [here](https://docs.victoriametrics.com/victoriametrics/vmagent/#scraping-big-number-of-targets) | @@ -4404,9 +4420,9 @@ Appears in: [VMAgent (v1beta1)](#v1beta1-vmagent) | statefulRollingUpdateStrategy#
_[StatefulSetUpdateStrategyType (v1)](#v1-statefulsetupdatestrategytype)_ | _(Optional)_
StatefulRollingUpdateStrategy allows configuration for strategyType
set it to RollingUpdate for disabling operator statefulSet rollingUpdate | | statefulRollingUpdateStrategyBehavior#
_[StatefulSetUpdateStrategyBehavior (v1beta1)](#v1beta1-statefulsetupdatestrategybehavior)_ | _(Optional)_
StatefulRollingUpdateStrategyBehavior defines customized behavior for rolling updates.
It applies if the RollingUpdateStrategy is set to OnDelete, which is the default. | | statefulStorage#
_[StorageSpec (v1beta1)](#v1beta1-storagespec)_ | _(Optional)_
StatefulStorage configures storage for StatefulSet | -| staticScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeNamespaceSelector defines Namespaces to be selected for VMStaticScrape discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| staticScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
StaticScrapeRelabelTemplate defines relabel config, that will be added to each VMStaticScrape.
it's useful for adding specific labels to all targets | -| staticScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeSelector defines VMStaticScrape to be selected for target discovery.
Works in combination with NamespaceSelector.
If both nil - match everything.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces. | +| staticScrapeNamespaceSelector _(or static_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeNamespaceSelector defines Namespaces to be selected for VMStaticScrape discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| staticScrapeRelabelTemplate _(or static_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
StaticScrapeRelabelTemplate defines relabel config, that will be added to each VMStaticScrape.
it's useful for adding specific labels to all targets | +| staticScrapeSelector _(or static_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeSelector defines VMStaticScrape to be selected for target discovery.
Works in combination with NamespaceSelector.
If both nil - match everything.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces. | | streamAggrConfig#
_[StreamAggrConfig (v1beta1)](#v1beta1-streamaggrconfig)_ | _(Optional)_
StreamAggrConfig defines global stream aggregation configuration for VMAgent | | terminationGracePeriodSeconds#
_integer_ | _(Optional)_
TerminationGracePeriodSeconds period for container graceful termination | | tolerations#
_[Toleration (v1)](#v1-toleration) array_ | _(Optional)_
Tolerations If specified, the pod's tolerations. | @@ -4416,7 +4432,7 @@ Appears in: [VMAgent (v1beta1)](#v1beta1-vmagent) | useLegacyNaming#
_boolean_ | _(Optional)_
UseLegacyNaming uses standalone Helm chart naming for managed resources:
the CR name is used directly instead of the default "-" convention.
Available from: v0.73.0 | | useStrictSecurity#
_boolean_ | _(Optional)_
UseStrictSecurity enables strict security mode for component
it restricts disk writes access
uses non-root user out of the box
drops not needed security permissions | | useVMConfigReloader#
_boolean_ | _(Optional)_
UseVMConfigReloader replaces prometheus-like config-reloader
with vm one. It uses secrets watch instead of file watch
which greatly increases speed of config updates
Deprecated: will be removed in v0.67.0
| -| vmAgentExternalLabelName#
_string_ | _(Optional)_
VMAgentExternalLabelName Name of vmAgent external label used to denote vmAgent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`).
Deprecated: since version v0.67.0 will be removed in v0.69.0 use externalLabelName instead
| +| vmAgentExternalLabelName _(or vm_agent_external_label_name)_ #
_string_ | _(Optional)_
VMAgentExternalLabelName Name of vmAgent external label used to denote vmAgent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`).
Deprecated: since version v0.67.0 will be removed in v0.69.0 use externalLabelName instead
| | volumeMounts#
_[VolumeMount (v1)](#v1-volumemount) array_ | _(Optional)_
VolumeMounts allows configuration of additional VolumeMounts on the output Deployment/StatefulSet definition.
VolumeMounts specified will be appended to other VolumeMounts in the Application container | | volumes#
_[Volume (v1)](#v1-volume) array_ | _(Optional)_
Volumes allows configuration of additional volumes on the output Deployment/StatefulSet definition.
Volumes specified will be appended to other volumes that are generated. | | vpa#
_[EmbeddedVPA (v1beta1)](#v1beta1-embeddedvpa)_ | _(Optional)_
Configures vertical pod autoscaling. | @@ -4618,10 +4634,10 @@ Appears in: [VMAlertmanagerConfig (v1beta1)](#v1beta1-vmalertmanagerconfig) | Field | Description | | --- | --- | -| inhibit_rules#
_[InhibitRule (v1beta1)](#v1beta1-inhibitrule) array_ | _(Optional)_
InhibitRules will only apply for alerts matching
the resource's namespace. | +| inhibit_rules _(or inhibitRules)_ #
_[InhibitRule (v1beta1)](#v1beta1-inhibitrule) array_ | _(Optional)_
InhibitRules will only apply for alerts matching
the resource's namespace. | | receivers#
_[Receiver (v1beta1)](#v1beta1-receiver) array_ | _(Optional)_
Receivers defines alert receivers | | route#
_[Route (v1beta1)](#v1beta1-route)_ | _(Optional)_
Route definition for alertmanager, may include nested routes. | -| time_intervals#
_[TimeIntervals (v1beta1)](#v1beta1-timeintervals) array_ | _(Optional)_
TimeIntervals defines named interval for active/mute notifications interval
See https://prometheus.io/docs/alerting/latest/configuration/#time_interval | +| time_intervals _(or timeIntervals)_ #
_[TimeIntervals (v1beta1)](#v1beta1-timeintervals) array_ | _(Optional)_
TimeIntervals defines named interval for active/mute notifications interval
See https://prometheus.io/docs/alerting/latest/configuration/#time_interval | #### VMAlertmanagerGossipConfig {#v1beta1-vmalertmanagergossipconfig} @@ -5162,32 +5178,32 @@ Appears in: [VMNodeScrape (v1beta1)](#v1beta1-vmnodescrape) | Field | Description | | --- | --- | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | -| follow_redirects#
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | -| honorLabels#
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | -| honorTimestamps#
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| follow_redirects _(or followRedirects)_ #
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | +| honorLabels _(or honor_labels)_ #
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | +| honorTimestamps _(or honor_timestamps)_ #
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | | interval#
_string_ | _(Optional)_
Interval at which metrics should be scraped | | jobLabel#
_string_ | _(Optional)_
The label to use to retrieve the job name from. | -| max_scrape_size#
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | -| metricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| max_scrape_size _(or maxScrapeSize)_ #
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | | params#
_object (keys:string, values:string array)_ | _(Optional)_
Optional HTTP URL parameters | | path#
_string_ | _(Optional)_
HTTP path to scrape for metrics. | | port#
_string_ | _(Optional)_
Name of the port exposed at Node. | -| proxyURL#
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | -| relabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | | scheme#
_string_ | _(Optional)_
HTTP scheme to use for scraping. | | scrapeClass#
_string_ | _(Optional)_
ScrapeClass defined scrape class to apply | -| scrapeTimeout#
_string_ | _(Optional)_
Timeout after which the scrape is ended | -| scrape_interval#
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
Timeout after which the scrape is ended | +| scrape_interval _(or scrapeInterval)_ #
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | | selector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
Selector to select kubernetes Nodes. | -| seriesLimit#
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | +| seriesLimit _(or series_limit)_ #
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | | targetLabels#
_string array_ | _(Optional)_
TargetLabels transfers labels on the Kubernetes Node onto the target. | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### VMPodScrape {#v1beta1-vmpodscrape} @@ -5246,31 +5262,31 @@ Appears in: [VMProbe (v1beta1)](#v1beta1-vmprobe) | Field | Description | | --- | --- | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | -| follow_redirects#
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | -| honorLabels#
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | -| honorTimestamps#
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| follow_redirects _(or followRedirects)_ #
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | +| honorLabels _(or honor_labels)_ #
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | +| honorTimestamps _(or honor_timestamps)_ #
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | | interval#
_string_ | _(Optional)_
Interval at which metrics should be scraped | | jobName#
_string_ | _(Required)_
The job name assigned to scraped metrics by default. | -| max_scrape_size#
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | +| max_scrape_size _(or maxScrapeSize)_ #
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | | metricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | module#
_string_ | _(Required)_
The 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 | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | | params#
_object (keys:string, values:string array)_ | _(Optional)_
Optional HTTP URL parameters | | path#
_string_ | _(Optional)_
HTTP path to scrape for metrics. | -| proxyURL#
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | | scheme#
_string_ | _(Optional)_
HTTP scheme to use for scraping. | | scrapeClass#
_string_ | _(Optional)_
ScrapeClass defined scrape class to apply | -| scrapeTimeout#
_string_ | _(Optional)_
Timeout after which the scrape is ended | -| scrape_interval#
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | -| seriesLimit#
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
Timeout after which the scrape is ended | +| scrape_interval _(or scrapeInterval)_ #
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | +| seriesLimit _(or series_limit)_ #
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | | targets#
_[VMProbeTargets (v1beta1)](#v1beta1-vmprobetargets)_ | _(Required)_
Targets defines a set of static and/or dynamically discovered targets to be probed using the prober. | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | | vmProberSpec#
_[VMProberSpec (v1beta1)](#v1beta1-vmproberspec)_ | _(Required)_
Specification for the prober to use for probing targets.
The prober.URL parameter is required. Targets cannot be probed if left empty. | -| vm_scrape_params#
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### VMProbeTargetKubernetes {#v1beta1-vmprobetargetkubernetes} @@ -5394,9 +5410,9 @@ Appears in: [VMScrapeConfig (v1beta1)](#v1beta1-vmscrapeconfig) | --- | --- | | authorization#
_[Authorization (v1beta1)](#v1beta1-authorization)_ | _(Optional)_
Authorization with http header Authorization | | azureSDConfigs#
_[AzureSDConfig (v1beta1)](#v1beta1-azuresdconfig) array_ | _(Optional)_
AzureSDConfigs defines a list of Azure service discovery configurations. | -| basicAuth#
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | +| basicAuth _(or basic_auth)_ #
_[BasicAuth (v1beta1)](#v1beta1-basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | +| bearerTokenFile _(or bearer_token_file)_ #
_string_ | _(Optional)_
File to read bearer token for scraping targets. | +| bearerTokenSecret _(or bearer_token_secret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
Secret to mount to read bearer token for scraping targets. The secret
needs to be in the same namespace as the scrape object and accessible by
the victoria-metrics operator. | | consulAgentSDConfigs#
_[ConsulAgentSDConfig (v1beta1)](#v1beta1-consulagentsdconfig) array_ | _(Optional)_
ConsulAgentSDConfigs defines a list of Consul Agent service discovery configurations. | | consulSDConfigs#
_[ConsulSDConfig (v1beta1)](#v1beta1-consulsdconfig) array_ | _(Optional)_
ConsulSDConfigs defines a list of Consul service discovery configurations. | | digitalOceanSDConfigs#
_[DigitalOceanSDConfig (v1beta1)](#v1beta1-digitaloceansdconfig) array_ | _(Optional)_
DigitalOceanSDConfigs defines a list of DigitalOcean service discovery configurations. | @@ -5406,36 +5422,36 @@ Appears in: [VMScrapeConfig (v1beta1)](#v1beta1-vmscrapeconfig) | ec2SDConfigs#
_[EC2SDConfig (v1beta1)](#v1beta1-ec2sdconfig) array_ | _(Optional)_
EC2SDConfigs defines a list of EC2 service discovery configurations. | | eurekaSDConfigs#
_[EurekaSDConfig (v1beta1)](#v1beta1-eurekasdconfig) array_ | _(Optional)_
EurekaSDConfigs defines a list of Eureka service discovery configurations. | | fileSDConfigs#
_[FileSDConfig (v1beta1)](#v1beta1-filesdconfig) array_ | _(Optional)_
FileSDConfigs defines a list of file service discovery configurations. | -| follow_redirects#
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | +| follow_redirects _(or followRedirects)_ #
_boolean_ | _(Optional)_
FollowRedirects controls redirects for scraping. | | gceSDConfigs#
_[GCESDConfig (v1beta1)](#v1beta1-gcesdconfig) array_ | _(Optional)_
GCESDConfigs defines a list of GCE service discovery configurations. | | hetznerSDConfigs#
_[HetznerSDConfig (v1beta1)](#v1beta1-hetznersdconfig) array_ | _(Optional)_
HetznerSDConfigs defines a list of Hetzner service discovery configurations. | -| honorLabels#
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | -| honorTimestamps#
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | +| honorLabels _(or honor_labels)_ #
_boolean_ | _(Optional)_
HonorLabels chooses the metric's labels on collisions with target labels. | +| honorTimestamps _(or honor_timestamps)_ #
_boolean_ | _(Optional)_
HonorTimestamps controls whether vmagent or vmsingle respects the timestamps present in scraped data. | | httpSDConfigs#
_[HTTPSDConfig (v1beta1)](#v1beta1-httpsdconfig) array_ | _(Optional)_
HTTPSDConfigs defines a list of HTTP service discovery configurations. | | interval#
_string_ | _(Optional)_
Interval at which metrics should be scraped | | kubernetesSDConfigs#
_[KubernetesSDConfig (v1beta1)](#v1beta1-kubernetessdconfig) array_ | _(Optional)_
KubernetesSDConfigs defines a list of Kubernetes service discovery configurations. | | kumaSDConfigs#
_[KumaSDConfig (v1beta1)](#v1beta1-kumasdconfig) array_ | _(Optional)_
KumaSDConfigs defines a list of Kuma service discovery configurations. | | marathonSDConfigs#
_[MarathonSDConfig (v1beta1)](#v1beta1-marathonsdconfig) array_ | _(Optional)_
MarathonSDConfigs defines a list of Marathon service discovery configurations. | -| max_scrape_size#
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | -| metricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| max_scrape_size _(or maxScrapeSize)_ #
_string_ | _(Optional)_
MaxScrapeSize defines a maximum size of scraped data for a job | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | nomadSDConfigs#
_[NomadSDConfig (v1beta1)](#v1beta1-nomadsdconfig) array_ | _(Optional)_
NomadSDConfigs defines a list of Nomad service discovery configurations. | | oauth2#
_[OAuth2 (v1beta1)](#v1beta1-oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | | openstackSDConfigs#
_[OpenStackSDConfig (v1beta1)](#v1beta1-openstacksdconfig) array_ | _(Optional)_
OpenStackSDConfigs defines a list of OpenStack service discovery configurations. | | ovhcloudSDConfigs#
_[OVHCloudSDConfig (v1beta1)](#v1beta1-ovhcloudsdconfig) array_ | _(Optional)_
OVHCloudSDConfigs defines a list of OVH Cloud service discovery configurations. | | params#
_object (keys:string, values:string array)_ | _(Optional)_
Optional HTTP URL parameters | | path#
_string_ | _(Optional)_
HTTP path to scrape for metrics. | -| proxyURL#
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | +| proxyURL _(or proxy_url)_ #
_string_ | _(Optional)_
ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. | | puppetDBSDConfigs#
_[PuppetDBSDConfig (v1beta1)](#v1beta1-puppetdbsdconfig) array_ | _(Optional)_
PuppetDBSDConfigs defines a list of PuppetDB service discovery configurations. | -| relabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. | | scheme#
_string_ | _(Optional)_
HTTP scheme to use for scraping. | | scrapeClass#
_string_ | _(Optional)_
ScrapeClass defined scrape class to apply | -| scrapeTimeout#
_string_ | _(Optional)_
Timeout after which the scrape is ended | -| scrape_interval#
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | -| seriesLimit#
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
Timeout after which the scrape is ended | +| scrape_interval _(or scrapeInterval)_ #
_string_ | _(Optional)_
ScrapeInterval is the same as Interval and has priority over it.
one of scrape_interval or interval can be used | +| seriesLimit _(or series_limit)_ #
_integer_ | _(Optional)_
SeriesLimit defines per-scrape limit on number of unique time series
a single target can expose during all the scrapes on the time window of 24h. | | staticConfigs#
_[StaticConfig (v1beta1)](#v1beta1-staticconfig) array_ | _(Optional)_
StaticConfigs defines a list of static targets with a common label set. | -| tlsConfig#
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig (v1beta1)](#v1beta1-tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams (v1beta1)](#v1beta1-vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | | vultrSDConfigs#
_[VultrSDConfig (v1beta1)](#v1beta1-vultrsdconfig) array_ | _(Optional)_
VultrSDConfigs defines a list of Vultr service discovery configurations. | | yandexCloudSDConfigs#
_[YandexCloudSDConfig (v1beta1)](#v1beta1-yandexcloudsdconfig) array_ | _(Optional)_
YandexCloudSDConfigs defines a list of Yandex Cloud service discovery configurations. | @@ -5449,14 +5465,14 @@ Appears in: [Endpoint (v1beta1)](#v1beta1-endpoint), [EndpointScrapeParams (v1be | Field | Description | | --- | --- | -| disable_compression#
_boolean_ | _(Optional)_
DisableCompression | -| disable_keep_alive#
_boolean_ | _(Optional)_
disable_keepalive allows disabling HTTP keep-alive when scraping targets.
By default, HTTP keep-alive is enabled, so TCP connections to scrape targets
could be reused.
See https://docs.victoriametrics.com/victoriametrics/vmagent/#scrape_config-enhancements | +| disable_compression _(or disableCompression)_ #
_boolean_ | _(Optional)_
DisableCompression | +| disable_keep_alive _(or disableKeepAlive)_ #
_boolean_ | _(Optional)_
disable_keepalive allows disabling HTTP keep-alive when scraping targets.
By default, HTTP keep-alive is enabled, so TCP connections to scrape targets
could be reused.
See https://docs.victoriametrics.com/victoriametrics/vmagent/#scrape_config-enhancements | | headers#
_string array_ | _(Optional)_
Headers allows sending custom headers to scrape targets
must be in of semicolon separated header with it's value
eg:
headerName: headerValue
vmagent and vmsingle support since 1.79.0 version | -| no_stale_markers#
_boolean_ | _(Optional)_
| -| proxy_client_config#
_[ProxyClientConfig (v1beta1)](#v1beta1-proxyclientconfig)_ | _(Optional)_
ProxyClientConfig configures proxy auth settings for scraping
See feature description https://docs.victoriametrics.com/victoriametrics/vmagent/#scraping-targets-via-a-proxy | -| scrape_align_interval#
_string_ | _(Optional)_
| -| scrape_offset#
_string_ | _(Optional)_
| -| stream_parse#
_boolean_ | _(Optional)_
| +| no_stale_markers _(or noStaleMarkers)_ #
_boolean_ | _(Optional)_
| +| proxy_client_config _(or proxyClientConfig)_ #
_[ProxyClientConfig (v1beta1)](#v1beta1-proxyclientconfig)_ | _(Optional)_
ProxyClientConfig configures proxy auth settings for scraping
See feature description https://docs.victoriametrics.com/victoriametrics/vmagent/#scraping-targets-via-a-proxy | +| scrape_align_interval _(or scrapeAlignInterval)_ #
_string_ | _(Optional)_
| +| scrape_offset _(or scrapeOffset)_ #
_string_ | _(Optional)_
| +| stream_parse _(or streamParse)_ #
_boolean_ | _(Optional)_
| #### VMSelect {#v1beta1-vmselect} @@ -5585,10 +5601,10 @@ Appears in: [VMDistributedZoneSingle (v1alpha1)](#v1alpha1-vmdistributedzonesing | Field | Description | | --- | --- | -| additionalScrapeConfigs#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AdditionalScrapeConfigs 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade. | +| additionalScrapeConfigs _(or additional_scrape_configs)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
AdditionalScrapeConfigs 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade. | | affinity#
_[Affinity (v1)](#v1-affinity)_ | _(Optional)_
Affinity If specified, the pod's scheduling constraints. | | apiServerConfig#
_[APIServerConfig (v1beta1)](#v1beta1-apiserverconfig)_ | _(Optional)_
APIServerConfig allows specifying a host and auth methods to access apiserver.
If left empty, VMSingle is assumed to run inside of the cluster
and will discover API servers automatically and use the pod's CA certificate
and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. | -| arbitraryFSAccessThroughSMs#
_[ArbitraryFSAccessThroughSMsConfig (v1beta1)](#v1beta1-arbitraryfsaccessthroughsmsconfig)_ | _(Optional)_
ArbitraryFSAccessThroughSMs configures whether configuration
based on EndpointAuth can access arbitrary files on the file system
of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs | +| arbitraryFSAccessThroughSMs _(or arbitrary_fs_access_through_s_ms)_ #
_[ArbitraryFSAccessThroughSMsConfig (v1beta1)](#v1beta1-arbitraryfsaccessthroughsmsconfig)_ | _(Optional)_
ArbitraryFSAccessThroughSMs configures whether configuration
based on EndpointAuth can access arbitrary files on the file system
of the VMAgent or VMSingle container e.g. bearer token files, basic auth, tls certs | | componentVersion#
_string_ | _(Optional)_
ComponentVersion defines default images tag for all components.
it can be overwritten with component specific image.tag value. | | configMaps#
_string array_ | _(Optional)_
ConfigMaps is a list of ConfigMaps in the same namespace as the Application
object, which shall be mounted into the Application container
at /etc/vm/configs/CONFIGMAP_NAME folder | | configReloadAuthKeySecret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
ConfigReloadAuthKeySecret defines optional secret reference authKey for /-/reload API requests.
Given secret reference will be added to the application and vm-config-reloader as volume
Available from: v0.57.0 | @@ -5602,53 +5618,53 @@ Appears in: [VMDistributedZoneSingle (v1alpha1)](#v1alpha1-vmdistributedzonesing | dnsConfig#
_[PodDNSConfig (v1)](#v1-poddnsconfig)_ | _(Optional)_
Specifies the DNS parameters of a pod.
Parameters specified here will be merged to the generated DNS
configuration based on DNSPolicy. | | dnsPolicy#
_[DNSPolicy (v1)](#v1-dnspolicy)_ | _(Optional)_
DNSPolicy sets DNS policy for the pod | | downsampling#
_[DownsamplingConfig (v1beta1)](#v1beta1-downsamplingconfig)_ | _(Optional)_
Downsampling defines downsampling rules for VMSingle.
Requires enterprise license. See https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#downsampling | -| enableKubernetesAPISelectors#
_boolean_ | _(Optional)_
EnableKubernetesAPISelectors instructs vmagent or vmsingle to use CRD scrape objects spec.selectors for
Kubernetes API list and watch requests.
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#list-and-watch-filtering
It could be useful to reduce Kubernetes API server resource usage for serving less than 100 CRD scrape objects in total. | +| enableKubernetesAPISelectors _(or enable_kubernetes_api_selectors)_ #
_boolean_ | _(Optional)_
EnableKubernetesAPISelectors instructs vmagent or vmsingle to use CRD scrape objects spec.selectors for
Kubernetes API list and watch requests.
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#list-and-watch-filtering
It could be useful to reduce Kubernetes API server resource usage for serving less than 100 CRD scrape objects in total. | | enableServiceLinks#
_boolean_ | _(Optional)_
EnableServiceLinks indicates whether information about services should be injected into pod's
environment variables, matching the syntax of Docker links.
Optional: Defaults to true. | -| enforcedNamespaceLabel#
_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. | -| externalLabelName#
_string_ | _(Optional)_
ExternalLabelName Name of external label used to denote scraping agent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`). | -| externalLabels#
_object (keys:string, values:string)_ | _(Optional)_
ExternalLabels The labels to add to any time series scraped by vmagent or vmsingle.
it doesn't affect metrics ingested directly by push API's | +| enforcedNamespaceLabel _(or enforced_namespace_label)_ #
_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. | +| externalLabelName _(or external_label_name)_ #
_string_ | _(Optional)_
ExternalLabelName Name of external label used to denote scraping agent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`). | +| externalLabels _(or external_labels)_ #
_object (keys:string, values:string)_ | _(Optional)_
ExternalLabels The labels to add to any time series scraped by vmagent or vmsingle.
it doesn't affect metrics ingested directly by push API's | | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar (v1)](#v1-envvar) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource (v1)](#v1-envfromsource) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| globalScrapeMetricRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | -| globalScrapeRelabelConfigs#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | +| globalScrapeMetricRelabelConfigs _(or global_scrape_metric_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | +| globalScrapeRelabelConfigs _(or global_scrape_relabel_configs)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | | hostAliases#
_[HostAlias (v1)](#v1-hostalias) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | | hostNetwork#
_boolean_ | _(Optional)_
HostNetwork controls whether the pod may use the node network namespace | | host_aliases#
_[HostAlias (v1)](#v1-hostalias) array_ | _(Optional)_
HostAliasesUnderScore provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork.
Has Priority over hostAliases field | -| ignoreNamespaceSelectors#
_boolean_ | _(Optional)_
IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from
scrape objects, and they will only discover endpoints
within their current namespace. Defaults to false. | +| ignoreNamespaceSelectors _(or ignore_namespace_selectors)_ #
_boolean_ | _(Optional)_
IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from
scrape objects, and they will only discover endpoints
within their current namespace. Defaults to false. | | image#
_[Image (v1beta1)](#v1beta1-image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference (v1)](#v1-localobjectreference) array_ | _(Optional)_
ImagePullSecrets An optional list of references to secrets in the same namespace
to use for pulling images from registries
see https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | -| ingestOnlyMode#
_boolean_ | _(Optional)_
IngestOnlyMode switches vmagent or vmsingle into unmanaged mode
it disables any config generation for scraping
Currently it prevents vmagent or vmsingle from managing tls and auth options for remote write | +| ingestOnlyMode _(or ingest_only_mode)_ #
_boolean_ | _(Optional)_
IngestOnlyMode switches vmagent or vmsingle into unmanaged mode
it disables any config generation for scraping
Currently it prevents vmagent or vmsingle from managing tls and auth options for remote write | | initContainers#
_[Container (v1)](#v1-container) array_ | _(Optional)_
InitContainers allows adding initContainers to the pod definition.
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/ | | inlineRelabelConfig#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
InlineRelabelConfig - defines GlobalRelabelConfig for vmagent, can be defined directly at CRD. | -| inlineScrapeConfig#
_string_ | _(Optional)_
InlineScrapeConfig 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade.
it should be defined as single yaml file.
inlineScrapeConfig: \|
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"] | +| inlineScrapeConfig _(or inline_scrape_config)_ #
_string_ | _(Optional)_
InlineScrapeConfig 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 VMAgent or VMSingle. It is advised to review VMAgent or VMSingle release
notes to ensure that no incompatible scrape configs are going to break
VMAgent or VMSingle after the upgrade.
it should be defined as single yaml file.
inlineScrapeConfig: \|
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"] | | insertPorts#
_[InsertPorts (v1beta1)](#v1beta1-insertports)_ | _(Required)_
InsertPorts - additional listen ports for data ingestion. | | license#
_[License (v1beta1)](#v1beta1-license)_ | _(Optional)_
License allows to configure license key to be used for enterprise features.
Using license key is supported starting from VictoriaMetrics v1.94.0.
See [here](https://docs.victoriametrics.com/victoriametrics/enterprise/) | | livenessProbe#
_[Probe (v1)](#v1-probe)_ | _(Optional)_
LivenessProbe that will be added to CR pod | | logFormat#
_string_ | _(Optional)_
LogFormat for VMSingle to be configured with. | | logLevel#
_string_ | _(Optional)_
LogLevel for victoria metrics single to be configured with. | | managedMetadata#
_[ManagedObjectsMetadata (v1beta1)](#v1beta1-managedobjectsmetadata)_ | _(Required)_
ManagedMetadata defines metadata that will be added to the all objects
created by operator for the given CustomResource | -| maxScrapeInterval#
_string_ | _(Required)_
MaxScrapeInterval allows limiting maximum scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is higher than defined limit, `maxScrapeInterval` will be used. | +| maxScrapeInterval _(or max_scrape_interval)_ #
_string_ | _(Required)_
MaxScrapeInterval allows limiting maximum scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is higher than defined limit, `maxScrapeInterval` will be used. | | minReadySeconds#
_integer_ | _(Optional)_
MinReadySeconds defines a minimum number of seconds to wait before starting update next pod
if previous in healthy state
Has no effect for VLogs and VMSingle | -| minScrapeInterval#
_string_ | _(Required)_
MinScrapeInterval allows limiting minimal scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is lower than defined limit, `minScrapeInterval` will be used. | +| minScrapeInterval _(or min_scrape_interval)_ #
_string_ | _(Required)_
MinScrapeInterval allows limiting minimal scrape interval for VMServiceScrape, VMPodScrape and other scrapes
If interval is lower than defined limit, `minScrapeInterval` will be used. | | networkPolicy#
_[EmbeddedNetworkPolicy (v1beta1)](#v1beta1-embeddednetworkpolicy)_ | _(Optional)_
NetworkPolicy defines network access rules for pods created by this CR. | -| nodeScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeNamespaceSelector defines Namespaces to be selected for VMNodeScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| nodeScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
NodeScrapeRelabelTemplate defines relabel config, that will be added to each VMNodeScrape.
it's useful for adding specific labels to all targets | -| nodeScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeSelector defines VMNodeScrape to be selected for scraping.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| nodeScrapeNamespaceSelector _(or node_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeNamespaceSelector defines Namespaces to be selected for VMNodeScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| nodeScrapeRelabelTemplate _(or node_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
NodeScrapeRelabelTemplate defines relabel config, that will be added to each VMNodeScrape.
it's useful for adding specific labels to all targets | +| nodeScrapeSelector _(or node_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
NodeScrapeSelector defines VMNodeScrape to be selected for scraping.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | | nodeSelector#
_object (keys:string, values:string)_ | _(Optional)_
NodeSelector Define which Nodes the Pods are scheduled on. | -| overrideHonorLabels#
_boolean_ | _(Optional)_
OverrideHonorLabels if set to true overrides all user configured honor_labels.
If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. | -| overrideHonorTimestamps#
_boolean_ | _(Optional)_
OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | +| overrideHonorLabels _(or override_honor_labels)_ #
_boolean_ | _(Optional)_
OverrideHonorLabels if set to true overrides all user configured honor_labels.
If HonorLabels is set in scrape objects to true, this overrides honor_labels to false. | +| overrideHonorTimestamps _(or override_honor_timestamps)_ #
_boolean_ | _(Optional)_
OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. | | paused#
_boolean_ | _(Optional)_
Paused If set to true all actions on the underlying managed objects are not
going to be performed, except for delete actions. | | podMetadata#
_[EmbeddedObjectMetadata (v1beta1)](#v1beta1-embeddedobjectmetadata)_ | _(Optional)_
PodMetadata configures Labels and Annotations which are propagated to the VMSingle pods. | -| podScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeNamespaceSelector defines Namespaces to be selected for VMPodScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| podScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
PodScrapeRelabelTemplate defines relabel config, that will be added to each VMPodScrape.
it's useful for adding specific labels to all targets | -| podScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeSelector defines PodScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| podScrapeNamespaceSelector _(or pod_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeNamespaceSelector defines Namespaces to be selected for VMPodScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| podScrapeRelabelTemplate _(or pod_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
PodScrapeRelabelTemplate defines relabel config, that will be added to each VMPodScrape.
it's useful for adding specific labels to all targets | +| podScrapeSelector _(or pod_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
PodScrapeSelector defines PodScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | | port#
_string_ | _(Optional)_
Port listen address | | preStopSleepSeconds#
_integer_ | _(Optional)_
PreStopSleepSeconds defines the number of seconds to sleep in the preStop lifecycle hook.
It gives time for load balancers to remove the pod from rotation before the pod is terminated.
Defaults to 15 for applicable components. Set to 0 to disable. | | priorityClassName#
_string_ | _(Optional)_
PriorityClassName class assigned to the Pods | -| probeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeNamespaceSelector defines Namespaces to be selected for VMProbe discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| probeScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ProbeScrapeRelabelTemplate defines relabel config, that will be added to each VMProbeScrape.
it's useful for adding specific labels to all targets | -| probeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeSelector defines VMProbe to be selected for target probing.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| probeNamespaceSelector _(or probe_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeNamespaceSelector defines Namespaces to be selected for VMProbe discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| probeScrapeRelabelTemplate _(or probe_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ProbeScrapeRelabelTemplate defines relabel config, that will be added to each VMProbeScrape.
it's useful for adding specific labels to all targets | +| probeSelector _(or probe_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ProbeSelector defines VMProbe to be selected for target probing.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | | readinessGates#
_[PodReadinessGate (v1)](#v1-podreadinessgate) array_ | _(Required)_
ReadinessGates defines pod readiness gates | | readinessProbe#
_[Probe (v1)](#v1-probe)_ | _(Optional)_
ReadinessProbe that will be added to CR pod | | relabelConfig#
_[ConfigMapKeySelector (v1)](#v1-configmapkeyselector)_ | _(Optional)_
RelabelConfig ConfigMap with global relabel config -remoteWrite.relabelConfig
This relabeling is applied to all the collected metrics before sending them to remote storage. | @@ -5659,27 +5675,27 @@ Appears in: [VMDistributedZoneSingle (v1alpha1)](#v1alpha1-vmdistributedzonesing | retentionPeriod#
_string_ | _(Optional)_
RetentionPeriod defines how long to retain stored metrics, specified as a duration (e.g., "1d", "1w", "1m").
Data with timestamps outside the RetentionPeriod is automatically deleted. The minimum allowed value is 1d, or 24h.
The default value is 1 (one month).
See [retention](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#retention) docs for details. | | revisionHistoryLimitCount#
_integer_ | _(Optional)_
The number of old ReplicaSets to retain to allow rollback in deployment or
maximum number of revisions that will be maintained in the Deployment revision history.
Has no effect at StatefulSets
Defaults to 10. | | runtimeClassName#
_string_ | _(Optional)_
RuntimeClassName - defines runtime class for kubernetes pod.
https://kubernetes.io/docs/concepts/containers/runtime-class/ | -| sampleLimit#
_integer_ | _(Optional)_
SampleLimit defines global per target limit of scraped samples | +| sampleLimit _(or sample_limit)_ #
_integer_ | _(Optional)_
SampleLimit defines global per target limit of scraped samples | | schedulerName#
_string_ | _(Optional)_
SchedulerName - defines kubernetes scheduler name | -| scrapeClasses#
_[ScrapeClass (v1beta1)](#v1beta1-scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | -| scrapeConfigNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigNamespaceSelector defines Namespaces to be selected for VMScrapeConfig discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| scrapeConfigRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ScrapeConfigRelabelTemplate defines relabel config, that will be added to each VMScrapeConfig.
it's useful for adding specific labels to all targets | -| scrapeConfigSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigSelector defines VMScrapeConfig to be selected for target discovery.
Works in combination with NamespaceSelector. | -| scrapeInterval#
_string_ | _(Optional)_
ScrapeInterval defines how often scrape targets by default | -| scrapeTimeout#
_string_ | _(Optional)_
ScrapeTimeout defines global timeout for targets scrape | +| scrapeClasses _(or scrape_classes)_ #
_[ScrapeClass (v1beta1)](#v1beta1-scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | +| scrapeConfigNamespaceSelector _(or scrape_config_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigNamespaceSelector defines Namespaces to be selected for VMScrapeConfig discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| scrapeConfigRelabelTemplate _(or scrape_config_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ScrapeConfigRelabelTemplate defines relabel config, that will be added to each VMScrapeConfig.
it's useful for adding specific labels to all targets | +| scrapeConfigSelector _(or scrape_config_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ScrapeConfigSelector defines VMScrapeConfig to be selected for target discovery.
Works in combination with NamespaceSelector. | +| scrapeInterval _(or scrape_interval)_ #
_string_ | _(Optional)_
ScrapeInterval defines how often scrape targets by default | +| scrapeTimeout _(or scrape_timeout)_ #
_string_ | _(Optional)_
ScrapeTimeout defines global timeout for targets scrape | | secrets#
_string array_ | _(Optional)_
Secrets is a list of Secrets in the same namespace as the Application
object, which shall be mounted into the Application container
at /etc/vm/secrets/SECRET_NAME folder | | securityContext#
_[SecurityContext (v1beta1)](#v1beta1-securitycontext)_ | _(Optional)_
SecurityContext holds pod-level security attributes and common container settings.
This defaults to the default PodSecurityContext. | -| selectAllByDefault#
_boolean_ | _(Optional)_
SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector.
with selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector
Operator selects all exist serviceScrapes
with selectAllByDefault: false - selects nothing | +| selectAllByDefault _(or select_all_by_default)_ #
_boolean_ | _(Optional)_
SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector.
with selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector
Operator selects all exist serviceScrapes
with selectAllByDefault: false - selects nothing | | serviceAccountName#
_string_ | _(Optional)_
ServiceAccountName is the name of the ServiceAccount to use to run the pods | -| serviceScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeNamespaceSelector Namespaces to be selected for VMServiceScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| serviceScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ServiceScrapeRelabelTemplate defines relabel config, that will be added to each VMServiceScrape.
it's useful for adding specific labels to all targets | -| serviceScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeSelector defines ServiceScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| serviceScrapeNamespaceSelector _(or service_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeNamespaceSelector Namespaces to be selected for VMServiceScrape discovery.
Works in combination with Selector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| serviceScrapeRelabelTemplate _(or service_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
ServiceScrapeRelabelTemplate defines relabel config, that will be added to each VMServiceScrape.
it's useful for adding specific labels to all targets | +| serviceScrapeSelector _(or service_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
ServiceScrapeSelector defines ServiceScrapes to be selected for target discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | | serviceScrapeSpec#
_[VMServiceScrapeSpec (v1beta1)](#v1beta1-vmservicescrapespec)_ | _(Optional)_
ServiceScrapeSpec that will be added to vmsingle VMServiceScrape spec | | serviceSpec#
_[AdditionalServiceSpec (v1beta1)](#v1beta1-additionalservicespec)_ | _(Optional)_
ServiceSpec that will be added to vmsingle service spec | | startupProbe#
_[Probe (v1)](#v1-probe)_ | _(Optional)_
StartupProbe that will be added to CR pod | -| staticScrapeNamespaceSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeNamespaceSelector defines Namespaces to be selected for VMStaticScrape discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | -| staticScrapeRelabelTemplate#
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
StaticScrapeRelabelTemplate defines relabel config, that will be added to each VMStaticScrape.
it's useful for adding specific labels to all targets | -| staticScrapeSelector#
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeSelector defines VMStaticScrape to be selected for target discovery.
Works in combination with NamespaceSelector.
If both nil - match everything.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces. | +| staticScrapeNamespaceSelector _(or static_scrape_namespace_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeNamespaceSelector defines Namespaces to be selected for VMStaticScrape discovery.
Works in combination with NamespaceSelector.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces.
If both nil - behaviour controlled by selectAllByDefault | +| staticScrapeRelabelTemplate _(or static_scrape_relabel_template)_ #
_[RelabelConfig (v1beta1)](#v1beta1-relabelconfig) array_ | _(Optional)_
StaticScrapeRelabelTemplate defines relabel config, that will be added to each VMStaticScrape.
it's useful for adding specific labels to all targets | +| staticScrapeSelector _(or static_scrape_selector)_ #
_[LabelSelector (v1)](#v1-labelselector)_ | _(Optional)_
StaticScrapeSelector defines VMStaticScrape to be selected for target discovery.
Works in combination with NamespaceSelector.
If both nil - match everything.
NamespaceSelector nil - only objects at VMAgent or VMSingle namespace.
Selector nil - only objects at NamespaceSelector namespaces. | | storage#
_[PersistentVolumeClaimSpec (v1)](#v1-persistentvolumeclaimspec)_ | _(Optional)_
Storage is the definition of how storage will be used by the VMSingle
by default it`s empty dir
this option is ignored if storageDataPath is set | | storageDataPath#
_string_ | _(Optional)_
StorageDataPath disables spec.storage option and overrides arg for victoria-metrics binary --storageDataPath,
its users responsibility to mount proper device into given path.
It requires to provide spec.volumes and spec.volumeMounts with at least 1 value | | storageMetadata#
_[EmbeddedObjectMetadata (v1beta1)](#v1beta1-embeddedobjectmetadata)_ | _(Optional)_
StorageMeta defines annotations and labels attached to PVC for given vmsingle CR | @@ -5691,7 +5707,7 @@ Appears in: [VMDistributedZoneSingle (v1alpha1)](#v1alpha1-vmdistributedzonesing | useLegacyNaming#
_boolean_ | _(Optional)_
UseLegacyNaming uses standalone Helm chart naming for managed resources:
the CR name is used directly instead of the default "-" convention.
Available from: v0.73.0 | | useStrictSecurity#
_boolean_ | _(Optional)_
UseStrictSecurity enables strict security mode for component
it restricts disk writes access
uses non-root user out of the box
drops not needed security permissions | | useVMConfigReloader#
_boolean_ | _(Optional)_
UseVMConfigReloader replaces prometheus-like config-reloader
with vm one. It uses secrets watch instead of file watch
which greatly increases speed of config updates
Deprecated: will be removed in v0.67.0
| -| vmAgentExternalLabelName#
_string_ | _(Optional)_
VMAgentExternalLabelName Name of vmAgent external label used to denote vmAgent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`).
Deprecated: since version v0.67.0 will be removed in v0.69.0 use externalLabelName instead
| +| vmAgentExternalLabelName _(or vm_agent_external_label_name)_ #
_string_ | _(Optional)_
VMAgentExternalLabelName Name of vmAgent external label used to denote vmAgent instance
name. Defaults to the value of `prometheus`. External label will
_not_ be added when value is set to empty string (`""`).
Deprecated: since version v0.67.0 will be removed in v0.69.0 use externalLabelName instead
| | vmBackup#
_[VMBackup (v1beta1)](#v1beta1-vmbackup)_ | _(Optional)_
VMBackup configuration for backup | | volumeMounts#
_[VolumeMount (v1)](#v1-volumemount) array_ | _(Optional)_
VolumeMounts allows configuration of additional VolumeMounts on the output Deployment/StatefulSet definition.
VolumeMounts specified will be appended to other VolumeMounts in the Application container | | volumes#
_[Volume (v1)](#v1-volume) array_ | _(Optional)_
Volumes allows configuration of additional volumes on the output Deployment/StatefulSet definition.
Volumes specified will be appended to other volumes that are generated. | @@ -5947,16 +5963,16 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| api_key#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the API key to use when talking to the VictorOps API.
It must be at them same namespace as CRD
fallback to global setting if empty | -| api_url#
_string_ | _(Optional)_
The VictorOps API URL. | -| custom_fields#
_object (keys:string, values:string)_ | _(Optional)_
Adds optional custom fields
https://github.com/prometheus/alertmanager/blob/v0.24.0/config/notifiers.go#L537 | -| entity_display_name#
_string_ | _(Optional)_
Contains summary of the alerted problem. | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
The HTTP client's configuration. | -| message_type#
_string_ | _(Optional)_
Describes the behavior of the alert (CRITICAL, WARNING, INFO). | -| monitoring_tool#
_string_ | _(Optional)_
The monitoring tool the state message is from. | -| routing_key#
_string_ | _(Required)_
A key used to map the alert to a team. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | -| state_message#
_string_ | _(Optional)_
Contains long explanation of the alerted problem. | +| api_key _(or apiKey)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the API key to use when talking to the VictorOps API.
It must be at them same namespace as CRD
fallback to global setting if empty | +| api_url _(or apiUrl)_ #
_string_ | _(Optional)_
The VictorOps API URL. | +| custom_fields _(or customFields)_ #
_object (keys:string, values:string)_ | _(Optional)_
Adds optional custom fields
https://github.com/prometheus/alertmanager/blob/v0.24.0/config/notifiers.go#L537 | +| entity_display_name _(or entityDisplayName)_ #
_string_ | _(Optional)_
Contains summary of the alerted problem. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
The HTTP client's configuration. | +| message_type _(or messageType)_ #
_string_ | _(Optional)_
Describes the behavior of the alert (CRITICAL, WARNING, INFO). | +| monitoring_tool _(or monitoringTool)_ #
_string_ | _(Optional)_
The monitoring tool the state message is from. | +| routing_key _(or routingKey)_ #
_string_ | _(Required)_
A key used to map the alert to a team. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| state_message _(or stateMessage)_ #
_string_ | _(Optional)_
Contains long explanation of the alerted problem. | #### VultrSDConfig {#v1beta1-vultrsdconfig} @@ -5989,11 +6005,11 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| api_url#
_string_ | _(Optional)_
The Webex Teams API URL, i.e. https://webexapis.com/v1/messages | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. You must use this configuration to supply the bot token as part of the HTTP `Authorization` header. | +| api_url _(or apiUrl)_ #
_string_ | _(Optional)_
The Webex Teams API URL, i.e. https://webexapis.com/v1/messages | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. You must use this configuration to supply the bot token as part of the HTTP `Authorization` header. | | message#
_string_ | _(Optional)_
The message body template | -| room_id#
_string_ | _(Required)_
The ID of the Webex Teams room where to send the messages | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| room_id _(or roomId)_ #
_string_ | _(Required)_
The ID of the Webex Teams room where to send the messages | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | #### WebhookConfig {#v1beta1-webhookconfig} @@ -6005,12 +6021,12 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | -| max_alerts#
_integer_ | _(Optional)_
Maximum number of alerts to be sent per webhook message. When 0, all alerts are included. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| max_alerts _(or maxAlerts)_ #
_integer_ | _(Optional)_
Maximum number of alerts to be sent per webhook message. When 0, all alerts are included. | +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | | timeout#
_string_ | _(Optional)_
Timeout is the maximum time allowed to invoke the webhook
available since v0.28.0 alertmanager version | | url#
_string_ | _(Optional)_
URL to send requests to,
one of `urlSecret` and `url` must be defined. | -| url_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the webhook URL.
one of `urlSecret` and `url` must be defined. | +| url_secret _(or urlSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
URLSecret defines secret name and key at the CRD namespace.
It must contain the webhook URL.
one of `urlSecret` and `url` must be defined. | #### WechatConfig {#v1beta1-wechatconfig} @@ -6022,17 +6038,17 @@ Appears in: [Receiver (v1beta1)](#v1beta1-receiver) | Field | Description | | --- | --- | -| agent_id#
_string_ | _(Optional)_
| -| api_secret#
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the WeChat API key.
The secret needs to be in the same namespace as the AlertmanagerConfig
fallback to global alertmanager setting if empty | -| api_url#
_string_ | _(Optional)_
The WeChat API URL.
fallback to global alertmanager setting if empty | -| corp_id#
_string_ | _(Optional)_
The corp id for authentication.
fallback to global alertmanager setting if empty | -| http_config#
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | +| agent_id _(or agentId)_ #
_string_ | _(Optional)_
| +| api_secret _(or apiSecret)_ #
_[SecretKeySelector (v1)](#v1-secretkeyselector)_ | _(Optional)_
The secret's key that contains the WeChat API key.
The secret needs to be in the same namespace as the AlertmanagerConfig
fallback to global alertmanager setting if empty | +| api_url _(or apiUrl)_ #
_string_ | _(Optional)_
The WeChat API URL.
fallback to global alertmanager setting if empty | +| corp_id _(or corpId)_ #
_string_ | _(Optional)_
The corp id for authentication.
fallback to global alertmanager setting if empty | +| http_config _(or httpConfig)_ #
_[HTTPConfig (v1beta1)](#v1beta1-httpconfig)_ | _(Optional)_
HTTP client configuration. | | message#
_string_ | _(Required)_
API request data as defined by the WeChat API. | -| message_type#
_string_ | _(Optional)_
| -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | -| to_party#
_string_ | _(Optional)_
| -| to_tag#
_string_ | _(Optional)_
| -| to_user#
_string_ | _(Optional)_
| +| message_type _(or messageType)_ #
_string_ | _(Optional)_
| +| send_resolved _(or sendResolved)_ #
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| to_party _(or toParty)_ #
_string_ | _(Optional)_
| +| to_tag _(or toTag)_ #
_string_ | _(Optional)_
| +| to_user _(or toUser)_ #
_string_ | _(Optional)_
| #### YandexCloudSDConfig {#v1beta1-yandexcloudsdconfig} diff --git a/docs/config.yaml b/docs/config.yaml index e2ebde8f03..3f8f5b638f 100644 --- a/docs/config.yaml +++ b/docs/config.yaml @@ -12,6 +12,9 @@ render: link: https://pkg.go.dev/net/url#Values processor: + caseIgnoreAliases: + - snake_case + - camelCase ignoreTypes: - ".*List$" - ".*Status$" diff --git a/docs/templates/api/type.tpl b/docs/templates/api/type.tpl index 257002e78d..fb91052455 100644 --- a/docs/templates/api/type.tpl +++ b/docs/templates/api/type.tpl @@ -109,7 +109,7 @@ Appears in: {{ range $i, $ref := $type.SortedReferences }}{{ if $i }}, {{ end }} {{- $member := index $members . }} {{- $id := lower (printf "%s-%s-%s" $version $type.Name $member.Name) }} {{- $oldId := lower (printf "%s-%s" $type.Name $member.Name) }} -| {{ $member.Name }}#{{- if $isAliasOwner }}{{- end }}
_{{ template "memberType" $member.Type }}_ | {{ if $member.Markers.optional }}_(Optional)_
{{else}}_(Required)_
{{ end }}{{ template "type_members" $member }}{{ template "notes" (dict "member" $member "type" $type.Name) }} | +| {{ $member.Name }}{{ if $member.Aliases }} _(or {{ range $i, $a := $member.Aliases }}{{ if $i }}, {{ end }}{{ $a }}{{ end }})_ {{ end }}#{{- if $isAliasOwner }}{{- end }}
_{{ template "memberType" $member.Type }}_ | {{ if $member.Markers.optional }}_(Optional)_
{{else}}_(Required)_
{{ end }}{{ template "type_members" $member }}{{ template "notes" (dict "member" $member "type" $type.Name) }} | {{- end }} {{- end }} {{- end }} diff --git a/internal/controller/operator/factory/build/podtemplate_test.go b/internal/controller/operator/factory/build/podtemplate_test.go index b27d227dcb..16f709f749 100644 --- a/internal/controller/operator/factory/build/podtemplate_test.go +++ b/internal/controller/operator/factory/build/podtemplate_test.go @@ -58,11 +58,25 @@ func TestPodTemplateParams(t *testing.T) { }, ) - // HostAliasesUnderScore takes precedence over HostAliases + // HostAliasesUnderScore (host_aliases) alone is used when hostAliases is unset + f( + &vmv1beta1.CommonAppsParams{ + HostAliasesUnderScore: []corev1.HostAlias{ + {IP: "5.6.7.8", Hostnames: []string{"new.host"}}, + }, + }, + corev1.PodSpec{ + HostAliases: []corev1.HostAlias{ + {IP: "5.6.7.8", Hostnames: []string{"new.host"}}, + }, + }, + ) + + // HostAliasesUnderScore (host_aliases) takes priority over hostAliases when both are set f( &vmv1beta1.CommonAppsParams{ HostAliases: []corev1.HostAlias{ - {IP: "1.2.3.4", Hostnames: []string{"old.host"}}, + {IP: "1.1.1.1", Hostnames: []string{"old.host"}}, }, HostAliasesUnderScore: []corev1.HostAlias{ {IP: "5.6.7.8", Hostnames: []string{"new.host"}}, diff --git a/internal/controller/operator/factory/build/vmscrape.go b/internal/controller/operator/factory/build/vmscrape.go index 39d83db92c..829fc8068f 100644 --- a/internal/controller/operator/factory/build/vmscrape.go +++ b/internal/controller/operator/factory/build/vmscrape.go @@ -235,7 +235,7 @@ func VMPodScrape(b podScrapeBuilder, portName string, additionalPortNames ...str func addVictoriaMetricsAppRelabelConfig(relabelings *vmv1beta1.EndpointRelabelings) { for _, rc := range relabelings.RelabelConfigs { - if rc != nil && (rc.TargetLabel == "victoriametrics_app" || rc.UnderScoreTargetLabel == "victoriametrics_app") { + if rc != nil && rc.TargetLabel == "victoriametrics_app" { return } } diff --git a/internal/controller/operator/factory/vmagent/scrapes_test.go b/internal/controller/operator/factory/vmagent/scrapes_test.go index a29ead4764..047d36717c 100644 --- a/internal/controller/operator/factory/vmagent/scrapes_test.go +++ b/internal/controller/operator/factory/vmagent/scrapes_test.go @@ -862,12 +862,12 @@ scrape_configs: }, GlobalScrapeRelabelConfigs: []*vmv1beta1.RelabelConfig{ { - UnderScoreSourceLabels: []string{"test2"}, + SourceLabels: []string{"test2"}, }, }, GlobalScrapeMetricRelabelConfigs: []*vmv1beta1.RelabelConfig{ { - UnderScoreSourceLabels: []string{"test1"}, + SourceLabels: []string{"test1"}, }, }, }, diff --git a/internal/controller/operator/factory/vmagent/vmagent_test.go b/internal/controller/operator/factory/vmagent/vmagent_test.go index 022c72dfed..3569e1593d 100644 --- a/internal/controller/operator/factory/vmagent/vmagent_test.go +++ b/internal/controller/operator/factory/vmagent/vmagent_test.go @@ -2372,7 +2372,10 @@ func TestCreateOrUpdateStreamAggrConfig(t *testing.T) { without: - pod output_relabel_configs: - - regex: (.+):.+ + - source_labels: + - __name__ + target_label: metric + regex: (.+):.+ ` assert.Equal(t, wantRemote, remoteData) }, @@ -2427,7 +2430,10 @@ func TestCreateOrUpdateStreamAggrConfig(t *testing.T) { - pod ignore_first_sample_interval: 20m output_relabel_configs: - - regex: + - source_labels: + - __name__ + target_label: metric + regex: - vmagent - vmalert - vmauth diff --git a/internal/controller/operator/factory/vmscrapes/vmscrapes_test.go b/internal/controller/operator/factory/vmscrapes/vmscrapes_test.go index e46f1a78e9..e36afb1b1d 100644 --- a/internal/controller/operator/factory/vmscrapes/vmscrapes_test.go +++ b/internal/controller/operator/factory/vmscrapes/vmscrapes_test.go @@ -38,12 +38,10 @@ target_label: address action: replace `) - // ok base with underscore - f(&vmv1beta1.RelabelConfig{ - UnderScoreTargetLabel: "address", - UnderScoreSourceLabels: []string{"__address__"}, - Action: "replace", - }, `source_labels: + // ok base with snake_case JSON keys (source_labels / target_label accepted via case:ignore) + var rcSnake vmv1beta1.RelabelConfig + assert.NoError(t, json.Unmarshal([]byte(`{"source_labels":["__address__"],"target_label":"address","action":"replace"}`), &rcSnake)) + f(&rcSnake, `source_labels: - __address__ target_label: address action: replace @@ -51,11 +49,11 @@ action: replace // ok base with graphite match labels f(&vmv1beta1.RelabelConfig{ - UnderScoreTargetLabel: "address", - UnderScoreSourceLabels: []string{"__address__"}, - Action: "graphite", - Labels: map[string]string{"job": "$1", "instance": "${2}:8080"}, - Match: `foo.*.*.bar`, + TargetLabel: "address", + SourceLabels: []string{"__address__"}, + Action: "graphite", + Labels: map[string]string{"job": "$1", "instance": "${2}:8080"}, + Match: `foo.*.*.bar`, }, `source_labels: - __address__ target_label: address @@ -68,13 +66,13 @@ labels: // with empty replacement and separator f(&vmv1beta1.RelabelConfig{ - UnderScoreTargetLabel: "address", - UnderScoreSourceLabels: []string{"__address__"}, - Action: "graphite", - Labels: map[string]string{"job": "$1", "instance": "${2}:8080"}, - Match: `foo.*.*.bar`, - Separator: ptr.To(""), - Replacement: ptr.To(""), + TargetLabel: "address", + SourceLabels: []string{"__address__"}, + Action: "graphite", + Labels: map[string]string{"job": "$1", "instance": "${2}:8080"}, + Match: `foo.*.*.bar`, + Separator: ptr.To(""), + Replacement: ptr.To(""), }, `source_labels: - __address__ separator: "" diff --git a/internal/controller/operator/factory/vmsingle/scrapes_test.go b/internal/controller/operator/factory/vmsingle/scrapes_test.go index e9733c0931..57ecc1e848 100644 --- a/internal/controller/operator/factory/vmsingle/scrapes_test.go +++ b/internal/controller/operator/factory/vmsingle/scrapes_test.go @@ -866,12 +866,12 @@ scrape_configs: }, GlobalScrapeRelabelConfigs: []*vmv1beta1.RelabelConfig{ { - UnderScoreSourceLabels: []string{"test2"}, + SourceLabels: []string{"test2"}, }, }, GlobalScrapeMetricRelabelConfigs: []*vmv1beta1.RelabelConfig{ { - UnderScoreSourceLabels: []string{"test1"}, + SourceLabels: []string{"test1"}, }, }, },