From 7dc25898af5a5533925e1fe7e2e2e3c2a5448438 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 | 2 +- api/go.mod | 1 + api/go.sum | 2 + api/operator/v1/vlagent_types.go | 9 +- api/operator/v1/vlcluster_types.go | 7 +- api/operator/v1/vlsingle_types.go | 9 +- api/operator/v1/vmanomaly_types.go | 11 +- api/operator/v1/vtcluster_types.go | 7 +- api/operator/v1/vtsingle_types.go | 9 +- api/operator/v1alpha1/vmdistributed_types.go | 9 +- api/operator/v1beta1/common_scrapeparams.go | 192 +-- api/operator/v1beta1/vlogs_types.go | 9 +- api/operator/v1beta1/vmagent_types.go | 15 +- api/operator/v1beta1/vmalert_types.go | 19 +- api/operator/v1beta1/vmalertmanager_types.go | 11 +- .../v1beta1/vmalertmanagerconfig_test.go | 143 ++ .../v1beta1/vmalertmanagerconfig_types.go | 409 ++--- .../vmalertmanagerconfig_types_test.go | 266 +++- api/operator/v1beta1/vmauth_types.go | 13 +- api/operator/v1beta1/vmcluster_types.go | 7 +- api/operator/v1beta1/vmextra_types.go | 34 +- api/operator/v1beta1/vmnodescrape_types.go | 7 +- api/operator/v1beta1/vmpodscrape_types.go | 7 +- api/operator/v1beta1/vmprobe_types.go | 7 +- api/operator/v1beta1/vmrule_types.go | 7 +- api/operator/v1beta1/vmscrapeconfig_types.go | 7 +- api/operator/v1beta1/vmservicescrape_types.go | 7 +- api/operator/v1beta1/vmsingle_types.go | 13 +- api/operator/v1beta1/vmstaticscrape_types.go | 7 +- api/operator/v1beta1/vmuser_types.go | 9 +- api/operator/v1beta1/zz_generated.deepcopy.go | 12 - config/crd/overlay/crd.descriptionless.yaml | 679 ++------- config/crd/overlay/crd.yaml | 1349 ++--------------- docs/CHANGELOG.md | 2 + docs/api.md | 968 ++++++------ docs/config.yaml | 3 + docs/templates/api/type.tpl | 2 +- go.mod | 1 + go.sum | 2 + .../operator/factory/build/podtemplate.go | 3 - .../factory/build/podtemplate_test.go | 5 +- .../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 +- 46 files changed, 1571 insertions(+), 2764 deletions(-) diff --git a/Makefile b/Makefile index f111c50b1..ab4dd4c6a 100644 --- a/Makefile +++ b/Makefile @@ -362,7 +362,7 @@ OPM_VERSION ?= v1.72.0 YQ_VERSION ?= v4.53.3 COSIGN_VERSION ?= v3.1.1 -CRD_REF_DOCS_VERSION ?= 4deb8b1eb0169ac22ac5d777feaeb26a00e38a33 +CRD_REF_DOCS_VERSION ?= 8ca59a877136c43d351ced8c5bfa8672bbb8679f .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. diff --git a/api/go.mod b/api/go.mod index 44cb2242f..6e8d9b51f 100644 --- a/api/go.mod +++ b/api/go.mod @@ -7,6 +7,7 @@ go 1.26.4 require ( github.com/VictoriaMetrics/VictoriaMetrics v1.145.0 github.com/VictoriaMetrics/metricsql v0.87.1 + github.com/go-json-experiment/json v0.0.0-20260520185125-572e7c383686 github.com/prometheus/alertmanager v0.33.0 github.com/stretchr/testify v1.11.1 gopkg.in/yaml.v2 v2.4.0 diff --git a/api/go.sum b/api/go.sum index 396f96f30..ea56f2c70 100644 --- a/api/go.sum +++ b/api/go.sum @@ -80,6 +80,8 @@ github.com/fsnotify/fsnotify v1.10.0 h1:Xx/5Ydg9CeBDX/wi4VJqStNtohYjitZhhlHt4h3S github.com/fsnotify/fsnotify v1.10.0/go.mod h1:TLheqan6HD6GBK6PrDWyDPBaEV8LspOxvPSjC+bVfgo= github.com/fxamacker/cbor/v2 v2.9.2 h1:X4Ksno9+x3cz0TZv69ec1hxP/+tymuR8PXQJyDwfh78= github.com/fxamacker/cbor/v2 v2.9.2/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= +github.com/go-json-experiment/json v0.0.0-20260520185125-572e7c383686 h1:NZBJxCpbHS1gzS6xAmyxbJznosZIIPk9IB42v62UvKA= +github.com/go-json-experiment/json v0.0.0-20260520185125-572e7c383686/go.mod h1:tphK2c80bpPhMOI4v6bIc2xWywPfbqi1Z06+RcrMkDg= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= diff --git a/api/operator/v1/vlagent_types.go b/api/operator/v1/vlagent_types.go index 1407a4240..9cd319d59 100644 --- a/api/operator/v1/vlagent_types.go +++ b/api/operator/v1/vlagent_types.go @@ -1,10 +1,11 @@ package v1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" @@ -93,7 +94,7 @@ type VLAgentSpec struct { // ServiceAccountName is the name of the ServiceAccount to use to run the pods // +optional ServiceAccountName string `json:"serviceAccountName,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` } type VLAgentK8sCollector struct { @@ -352,14 +353,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := vmv1beta1.UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VLAgentSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1/vlcluster_types.go b/api/operator/v1/vlcluster_types.go index 6cf483472..2f7732625 100644 --- a/api/operator/v1/vlcluster_types.go +++ b/api/operator/v1/vlcluster_types.go @@ -17,10 +17,11 @@ limitations under the License. package v1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" @@ -671,14 +672,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := vmv1beta1.UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VLClusterSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1/vlsingle_types.go b/api/operator/v1/vlsingle_types.go index 97dcb325d..1624d4555 100644 --- a/api/operator/v1/vlsingle_types.go +++ b/api/operator/v1/vlsingle_types.go @@ -17,10 +17,11 @@ limitations under the License. package v1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -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 @@ -163,14 +164,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := vmv1beta1.UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VLSingleSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1/vmanomaly_types.go b/api/operator/v1/vmanomaly_types.go index 32316f188..34997fad4 100644 --- a/api/operator/v1/vmanomaly_types.go +++ b/api/operator/v1/vmanomaly_types.go @@ -17,11 +17,12 @@ limitations under the License. package v1 import ( - "encoding/json" "fmt" "path" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" @@ -119,7 +120,7 @@ type VMAnomalySpec struct { // ServiceAccountName is the name of the ServiceAccount to use to run the pods // +optional ServiceAccountName string `json:"serviceAccountName,omitempty"` - vmv1beta1.CommonAppsParams `json:",inline,omitempty"` + vmv1beta1.CommonAppsParams `json:",inline"` } // VMAnomalyWritersSpec defines writer configuration for VMAnomaly @@ -136,7 +137,7 @@ type VMAnomalyWritersSpec struct { // +kubebuilder:validation:Minimum=1 ConnectionRetryAttempts int `json:"connectionRetryAttempts,omitempty" yaml:"connection_retry_attempts,omitempty"` // +optional - VMAnomalyHTTPClientSpec `json:",inline,omitempty" yaml:",inline,omitempty"` + VMAnomalyHTTPClientSpec `json:",inline" yaml:",inline,omitempty"` } // VMAnomalyVMWriterMetricFormatSpec defines the desired state of VMAnomalyVMWriterMetricFormat @@ -333,14 +334,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := vmv1beta1.UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMAnomalySpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1/vtcluster_types.go b/api/operator/v1/vtcluster_types.go index dbb4daa8a..f0939c74c 100644 --- a/api/operator/v1/vtcluster_types.go +++ b/api/operator/v1/vtcluster_types.go @@ -17,10 +17,11 @@ limitations under the License. package v1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" @@ -581,14 +582,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := vmv1beta1.UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VTClusterSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1/vtsingle_types.go b/api/operator/v1/vtsingle_types.go index d312e6342..0a6390d03 100644 --- a/api/operator/v1/vtsingle_types.go +++ b/api/operator/v1/vtsingle_types.go @@ -17,10 +17,11 @@ limitations under the License. package v1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -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 @@ -153,14 +154,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := vmv1beta1.UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VTSingleSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1alpha1/vmdistributed_types.go b/api/operator/v1alpha1/vmdistributed_types.go index 61cd2c1d9..52f002c16 100644 --- a/api/operator/v1alpha1/vmdistributed_types.go +++ b/api/operator/v1alpha1/vmdistributed_types.go @@ -17,10 +17,11 @@ limitations under the License. package v1alpha1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" @@ -231,7 +232,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) { @@ -438,14 +439,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := vmv1beta1.UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMDistributedSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/common_scrapeparams.go b/api/operator/v1beta1/common_scrapeparams.go index aa9f87bfa..32e7893a8 100644 --- a/api/operator/v1beta1/common_scrapeparams.go +++ b/api/operator/v1beta1/common_scrapeparams.go @@ -1,11 +1,11 @@ package v1beta1 import ( - "encoding/json" "fmt" "reflect" "strings" + jsonv2 "github.com/go-json-experiment/json" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/utils/ptr" @@ -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 @@ -54,25 +54,25 @@ type AttachMetadata struct { 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: @@ -89,21 +89,21 @@ type ProxyClientConfig struct { 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"` @@ -137,36 +137,36 @@ func (c *ProxyClientConfig) validateArbitraryFSAccess() error { 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 // ( available from v0.55.0). // Is only supported by Scrape objects family // +optional - ProxyURL string `json:"proxy_url,omitempty"` + ProxyURL string `json:"proxy_url,omitempty,case:ignore"` // TLSConfig for token_url connection // ( available from v0.55.0). // Is only supported by Scrape objects family // +optional // +kubebuilder:validation:Schemaless // +kubebuilder:pruning:PreserveUnknownFields - TLSConfig *TLSConfig `json:"tls_config,omitempty"` + TLSConfig *TLSConfig `json:"tls_config,omitempty,case:ignore"` } func (o *OAuth2) validate() error { @@ -201,7 +201,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 +222,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 +266,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 := jsonv2.Unmarshal(src, (*rcfg)(rc), jsonv2.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 } @@ -323,39 +299,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"` } @@ -378,19 +354,19 @@ type EndpointAuth struct { 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"` @@ -435,10 +411,10 @@ func (a *EndpointAuth) validateArbitraryFSAccess() error { 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 { @@ -456,132 +432,132 @@ 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"` } 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 +569,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 (`""`). // +deprecated={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 b0fd97786..d1e4a0e0e 100644 --- a/api/operator/v1beta1/vlogs_types.go +++ b/api/operator/v1beta1/vlogs_types.go @@ -17,10 +17,11 @@ limitations under the License. package v1beta1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -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 @@ -175,14 +176,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VLogsSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmagent_types.go b/api/operator/v1beta1/vmagent_types.go index 7eecbd56f..e6f569101 100644 --- a/api/operator/v1beta1/vmagent_types.go +++ b/api/operator/v1beta1/vmagent_types.go @@ -1,10 +1,11 @@ package v1beta1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" "gopkg.in/yaml.v2" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -133,10 +134,10 @@ type VMAgentSpec struct { // +optional HPA *EmbeddedHPA `json:"hpa,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 { @@ -274,14 +275,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMAgentSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmalert_types.go b/api/operator/v1beta1/vmalert_types.go index 0b9076c2e..db37047c4 100644 --- a/api/operator/v1beta1/vmalert_types.go +++ b/api/operator/v1beta1/vmalert_types.go @@ -1,11 +1,12 @@ package v1beta1 import ( - "encoding/json" "fmt" "net/url" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" @@ -150,8 +151,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 @@ -179,14 +180,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMAlertSpec: %s, err: %s", string(s.Spec), err) } } @@ -199,7 +200,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 @@ -214,7 +215,7 @@ type VMAlertNotifierSpec struct { // +optional Selector *DiscoverySelector `json:"selector,omitempty"` - HTTPAuth `json:",inline,omitempty"` + HTTPAuth `json:",inline"` } func (ns *VMAlertNotifierSpec) validate() error { @@ -241,7 +242,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 @@ -263,7 +264,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 7e6750020..92135a11f 100644 --- a/api/operator/v1beta1/vmalertmanager_types.go +++ b/api/operator/v1beta1/vmalertmanager_types.go @@ -1,12 +1,13 @@ package v1beta1 import ( - "encoding/json" "fmt" "net/url" "path" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" amparse "github.com/prometheus/alertmanager/matcher/parse" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -215,8 +216,8 @@ type VMAlertmanagerSpec 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 @@ -285,14 +286,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMAlertmanagerSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmalertmanagerconfig_test.go b/api/operator/v1beta1/vmalertmanagerconfig_test.go index d540e8940..f6047c3f9 100644 --- a/api/operator/v1beta1/vmalertmanagerconfig_test.go +++ b/api/operator/v1beta1/vmalertmanagerconfig_test.go @@ -1 +1,144 @@ package v1beta1 + +import ( + "encoding/json" + "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) + }) +} + +// TestCommonAppsParamsCaseIgnore verifies that snake_case alternatives for fields +// in CommonAppsParams (e.g. host_aliases for hostAliases) are accepted. +func TestCommonAppsParamsCaseIgnore(t *testing.T) { + t.Run("host_aliases accepted for hostAliases", 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.Len(t, vs.Spec.HostAliases, 1) + assert.Equal(t, "1.2.3.4", vs.Spec.CommonAppsParams.HostAliases[0].IP) + assert.Equal(t, []string{"my.host"}, vs.Spec.CommonAppsParams.HostAliases[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) + }) +} diff --git a/api/operator/v1beta1/vmalertmanagerconfig_types.go b/api/operator/v1beta1/vmalertmanagerconfig_types.go index 8f6dbca4e..e7612aaf5 100644 --- a/api/operator/v1beta1/vmalertmanagerconfig_types.go +++ b/api/operator/v1beta1/vmalertmanagerconfig_types.go @@ -17,9 +17,7 @@ limitations under the License. package v1beta1 import ( - "bytes" "context" - "encoding/json" "fmt" "html/template" "log/slog" @@ -29,6 +27,8 @@ import ( "strconv" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" amcfg "github.com/prometheus/alertmanager/config" "github.com/prometheus/alertmanager/matcher/compat" amparse "github.com/prometheus/alertmanager/matcher/parse" @@ -39,6 +39,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 { @@ -51,13 +52,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 @@ -65,9 +67,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 @@ -79,7 +82,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 @@ -93,14 +96,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 @@ -266,7 +270,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:"-"` } @@ -296,6 +300,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. @@ -303,19 +308,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 @@ -336,11 +341,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 @@ -361,9 +366,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 := json.Unmarshal(nestedRoute.Raw, &subRoute, json.RejectUnknownMembers(true), json.MatchCaseInsensitiveNames(true)); err != nil { return fmt.Errorf("cannot parse json value=%s for nested route: %w", string(nestedRoute.Raw), err) } if err := parseNestedRoutes(&subRoute); err != nil { @@ -380,14 +383,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMAlertmanagerConfigSpec: %s, err: %s", string(s.Spec), err) } } @@ -399,6 +402,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. @@ -407,11 +411,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. @@ -419,6 +423,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. @@ -427,82 +432,83 @@ 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 - JiraConfigs []JiraConfig `json:"jira_configs,omitempty" yaml:"jira_configs,omitempty"` + JiraConfigs []JiraConfig `json:"jira_configs,omitempty,case:ignore" yaml:"jira_configs,omitempty"` // +optional - IncidentioConfigs []IncidentioConfig `json:"incidentio_configs,omitempty" yaml:"incidentio_configs,omitempty"` + IncidentioConfigs []IncidentioConfig `json:"incidentio_configs,omitempty,case:ignore" yaml:"incidentio_configs,omitempty"` // +optional - RocketchatConfigs []RocketchatConfig `json:"rocketchat_configs,omitempty" yaml:"rocketchat_configs,omitempty"` + RocketchatConfigs []RocketchatConfig `json:"rocketchat_configs,omitempty,case:ignore" yaml:"rocketchat_configs,omitempty"` // +optional - 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 { @@ -524,12 +530,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 @@ -538,14 +545,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)?)$" @@ -571,40 +578,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 { @@ -619,11 +627,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"` @@ -640,17 +649,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"` @@ -663,10 +672,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 { @@ -710,41 +719,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 { @@ -777,15 +787,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"` @@ -800,7 +811,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"` @@ -820,7 +831,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 { @@ -836,17 +847,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"` @@ -857,7 +869,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 @@ -866,25 +878,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"` @@ -892,10 +904,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 { @@ -927,6 +939,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://api.slack.com/docs/message-attachments#fields for more information. type SlackField struct { @@ -944,6 +957,7 @@ type SlackField struct { // notification. // See https://api.slack.com/docs/message-attachments#action_fields and // https://api.slack.com/docs/message-buttons for more information. +// +kubebuilder:pruning:PreserveUnknownFields type SlackAction struct { // +kubebuilder:validation:MinLength=1 // +required @@ -968,6 +982,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 @@ -975,25 +990,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"` @@ -1024,10 +1040,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 { @@ -1054,6 +1070,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 @@ -1070,23 +1087,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"` @@ -1095,7 +1113,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"` @@ -1122,7 +1140,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 { @@ -1146,6 +1164,7 @@ func (c *PagerDutyConfig) validate() error { // ImageConfig is used to attach images to the incident. // See https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-send-an-alert-event#the-images-property // for more information. +// +kubebuilder:pruning:PreserveUnknownFields type ImageConfig struct { // +optional Href string `json:"href,omitempty"` @@ -1157,24 +1176,26 @@ type ImageConfig struct { // LinkConfig is used to attach text links to the incident. // See https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-send-an-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"` @@ -1183,7 +1204,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 { @@ -1204,19 +1225,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"` @@ -1225,7 +1247,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 operator v0.55.0 and alertmanager v0.28.0 // +kubebuilder:validation:MaxLength:=2000 @@ -1238,7 +1260,7 @@ type DiscordConfig struct { // AvatarURL defines message avatar URL // Available from operator v0.55.0 and alertmanager v0.28.0 // +optional - 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 { @@ -1259,28 +1281,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"` @@ -1289,7 +1312,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 { @@ -1302,6 +1325,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 @@ -1309,37 +1333,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 { @@ -1364,15 +1389,16 @@ func (c *WebexConfig) validate() error { // https://prometheus.io/docs/alerting/latest/configuration/#jira_config // 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"` @@ -1388,29 +1414,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. @@ -1418,7 +1444,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 { @@ -1443,10 +1469,11 @@ func (c *JiraConfig) validate() error { // https://prometheus.io/docs/alerting/latest/configuration/#incidentio_config // 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. @@ -1459,21 +1486,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 { @@ -1505,17 +1532,18 @@ func (c *IncidentioConfig) validateArbitraryFSAccess() error { // https://prometheus.io/docs/alerting/latest/configuration/#rocketchat_config // 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/use-rocket.chat/user-guides/user-panel/my-account#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"` @@ -1527,29 +1555,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 { @@ -1566,6 +1594,7 @@ func (c *RocketchatConfig) validate() error { // RocketchatAttachmentField defines API fields // https://developer.rocket.chat/reference/api/rest-api/endpoints/messaging/chat-endpoints/postmessage#attachment-field-objects +// +kubebuilder:pruning:PreserveUnknownFields type RocketchatAttachmentField struct { // +optional Short *bool `json:"short"` @@ -1577,6 +1606,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"` @@ -1592,20 +1622,21 @@ type RocketchatAttachmentAction struct { // https://support.microsoft.com/en-gb/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498 // 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 @@ -1617,7 +1648,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 { @@ -1639,10 +1670,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"` @@ -1653,10 +1685,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 @@ -1665,7 +1697,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"` @@ -1676,7 +1708,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 { @@ -1692,55 +1724,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 @@ -1750,7 +1787,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"` // +optional ProxyConfig `json:",inline"` } @@ -1776,35 +1813,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 json.Unmarshal(data, (*pc)(c), json.RejectUnknownMembers(true), json.MatchCaseInsensitiveNames(true)) } func (c *HTTPConfig) validate() error { diff --git a/api/operator/v1beta1/vmalertmanagerconfig_types_test.go b/api/operator/v1beta1/vmalertmanagerconfig_types_test.go index e47778b19..c1859e3e9 100644 --- a/api/operator/v1beta1/vmalertmanagerconfig_types_test.go +++ b/api/operator/v1beta1/vmalertmanagerconfig_types_test.go @@ -6,6 +6,7 @@ import ( "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) { @@ -988,3 +989,262 @@ func TestValidateVMAlertmanagerConfigOk(t *testing.T) { } }`) } + +// 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, + "tls_config": { + "insecure_skip_verify": true, + "server_name": "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 f7a661f97..2c1ee8a95 100644 --- a/api/operator/v1beta1/vmauth_types.go +++ b/api/operator/v1beta1/vmauth_types.go @@ -1,12 +1,13 @@ package v1beta1 import ( - "encoding/json" "fmt" "net/url" "regexp" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" appsv1 "k8s.io/api/apps/v1" networkingv1 "k8s.io/api/networking/v1" "k8s.io/apimachinery/pkg/api/equality" @@ -122,8 +123,8 @@ type VMAuthSpec struct { // +optional ServiceAccountName string `json:"serviceAccountName,omitempty" yaml:"serviceAccountName,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 v0.56.0 operator // and v1.111.0 vmauth version @@ -228,7 +229,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 @@ -581,14 +582,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMAuthSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmcluster_types.go b/api/operator/v1beta1/vmcluster_types.go index e72a19374..cd491bbcc 100644 --- a/api/operator/v1beta1/vmcluster_types.go +++ b/api/operator/v1beta1/vmcluster_types.go @@ -1,12 +1,13 @@ package v1beta1 import ( - "encoding/json" "fmt" "regexp" "strings" "time" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" @@ -272,14 +273,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMClusterSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmextra_types.go b/api/operator/v1beta1/vmextra_types.go index 2b84efb84..c3af2819c 100644 --- a/api/operator/v1beta1/vmextra_types.go +++ b/api/operator/v1beta1/vmextra_types.go @@ -1,8 +1,6 @@ package v1beta1 import ( - "bytes" - "encoding/json" "fmt" "net/url" "path" @@ -14,6 +12,8 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/lib/flagutil" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promrelabel" "github.com/VictoriaMetrics/metricsql" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" "gopkg.in/yaml.v2" appsv1 "k8s.io/api/apps/v1" autoscalingv2 "k8s.io/api/autoscaling/v2" @@ -303,7 +303,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. @@ -978,7 +978,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} } } @@ -1096,18 +1096,6 @@ 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. @@ -1117,11 +1105,8 @@ func HasUnknownFields(parsingSpecErr string) bool { // 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 := json.Unmarshal(data, (*pc)(c), json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { return err } @@ -1376,6 +1361,7 @@ type CommonConfigReloaderParams struct { // CommonAppsParams defines common params // for deployment and statefulset specifications +// +kubebuilder:pruning:PreserveUnknownFields type CommonAppsParams struct { // Affinity If specified, the pod's scheduling constraints. // +optional @@ -1394,13 +1380,7 @@ type CommonAppsParams struct { // that would be propagated to pod, // cannot be used with HostNetwork. // +optional - HostAliases []corev1.HostAlias `json:"hostAliases,omitempty"` - // HostAliasesUnderScore provides mapping for ip and hostname, - // that would be propagated to pod, - // cannot be used with HostNetwork. - // Has Priority over hostAliases field - // +optional - HostAliasesUnderScore []corev1.HostAlias `json:"host_aliases,omitempty"` + HostAliases []corev1.HostAlias `json:"hostAliases,omitempty,case:ignore"` // PriorityClassName class assigned to the Pods // +optional PriorityClassName string `json:"priorityClassName,omitempty"` diff --git a/api/operator/v1beta1/vmnodescrape_types.go b/api/operator/v1beta1/vmnodescrape_types.go index bfa253aac..284ca4986 100644 --- a/api/operator/v1beta1/vmnodescrape_types.go +++ b/api/operator/v1beta1/vmnodescrape_types.go @@ -1,9 +1,10 @@ package v1beta1 import ( - "encoding/json" "fmt" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -87,14 +88,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMNodeScrapeSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmpodscrape_types.go b/api/operator/v1beta1/vmpodscrape_types.go index 3ff05f8b1..f289f3b33 100644 --- a/api/operator/v1beta1/vmpodscrape_types.go +++ b/api/operator/v1beta1/vmpodscrape_types.go @@ -1,9 +1,10 @@ package v1beta1 import ( - "encoding/json" "fmt" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" ) @@ -152,14 +153,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMPodScrapeSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmprobe_types.go b/api/operator/v1beta1/vmprobe_types.go index 9f3bf3265..8c5a2247b 100644 --- a/api/operator/v1beta1/vmprobe_types.go +++ b/api/operator/v1beta1/vmprobe_types.go @@ -17,9 +17,10 @@ limitations under the License. package v1beta1 import ( - "encoding/json" "fmt" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -167,14 +168,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMProbeSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmrule_types.go b/api/operator/v1beta1/vmrule_types.go index 16e5f2e29..b52bd98c6 100644 --- a/api/operator/v1beta1/vmrule_types.go +++ b/api/operator/v1beta1/vmrule_types.go @@ -1,7 +1,6 @@ package v1beta1 import ( - "encoding/json" "fmt" "net/url" "strconv" @@ -11,6 +10,8 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/config" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/notifier" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/templates" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" "gopkg.in/yaml.v2" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" @@ -242,14 +243,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMRuleSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmscrapeconfig_types.go b/api/operator/v1beta1/vmscrapeconfig_types.go index 51417dfb0..498de24d5 100644 --- a/api/operator/v1beta1/vmscrapeconfig_types.go +++ b/api/operator/v1beta1/vmscrapeconfig_types.go @@ -16,9 +16,10 @@ limitations under the License. package v1beta1 import ( - "encoding/json" "fmt" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -790,14 +791,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMScrapeConfigSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmservicescrape_types.go b/api/operator/v1beta1/vmservicescrape_types.go index 39f00a5b3..b888dd9d0 100644 --- a/api/operator/v1beta1/vmservicescrape_types.go +++ b/api/operator/v1beta1/vmservicescrape_types.go @@ -1,9 +1,10 @@ package v1beta1 import ( - "encoding/json" "fmt" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" ) @@ -174,14 +175,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMServiceScrapeSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmsingle_types.go b/api/operator/v1beta1/vmsingle_types.go index d78356e8b..31ec0e27b 100644 --- a/api/operator/v1beta1/vmsingle_types.go +++ b/api/operator/v1beta1/vmsingle_types.go @@ -1,10 +1,11 @@ package v1beta1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -101,9 +102,9 @@ type VMSingleSpec struct { // +optional ComponentVersion string `json:"componentVersion,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"` } @@ -219,14 +220,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMSingleSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmstaticscrape_types.go b/api/operator/v1beta1/vmstaticscrape_types.go index 7ee0be648..79bf772e8 100644 --- a/api/operator/v1beta1/vmstaticscrape_types.go +++ b/api/operator/v1beta1/vmstaticscrape_types.go @@ -1,9 +1,10 @@ package v1beta1 import ( - "encoding/json" "fmt" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -93,14 +94,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMStaticScrapeSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/vmuser_types.go b/api/operator/v1beta1/vmuser_types.go index 6d56696e5..5d30b5990 100644 --- a/api/operator/v1beta1/vmuser_types.go +++ b/api/operator/v1beta1/vmuser_types.go @@ -1,10 +1,11 @@ package v1beta1 import ( - "encoding/json" "fmt" "strings" + "github.com/go-json-experiment/json" + "github.com/go-json-experiment/json/jsontext" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" @@ -97,7 +98,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. @@ -340,14 +341,14 @@ 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 { return err } if len(s.Spec) > 0 { - if err := UnmarshalSpecStrict(s.Spec, &cr.Spec); err != nil { + if err := json.Unmarshal(s.Spec, &cr.Spec, json.MatchCaseInsensitiveNames(true), json.RejectUnknownMembers(true)); err != nil { cr.Status.ParsingSpecError = fmt.Sprintf("cannot parse VMUserSpec: %s, err: %s", string(s.Spec), err) } } diff --git a/api/operator/v1beta1/zz_generated.deepcopy.go b/api/operator/v1beta1/zz_generated.deepcopy.go index 90854863a..e606b0f4e 100644 --- a/api/operator/v1beta1/zz_generated.deepcopy.go +++ b/api/operator/v1beta1/zz_generated.deepcopy.go @@ -317,13 +317,6 @@ func (in *CommonAppsParams) DeepCopyInto(out *CommonAppsParams) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.HostAliasesUnderScore != nil { - in, out := &in.HostAliasesUnderScore, &out.HostAliasesUnderScore - *out = make([]v1.HostAlias, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.DNSConfig != nil { in, out := &in.DNSConfig, &out.DNSConfig *out = new(v1.PodDNSConfig) @@ -3163,11 +3156,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/config/crd/overlay/crd.descriptionless.yaml b/config/crd/overlay/crd.descriptionless.yaml index f8a096e51..0297f6217 100644 --- a/config/crd/overlay/crd.descriptionless.yaml +++ b/config/crd/overlay/crd.descriptionless.yaml @@ -294,20 +294,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -1079,6 +1065,7 @@ spec: required: - remoteWrite type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -1349,20 +1336,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -1865,6 +1838,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true vlselect: properties: affinity: @@ -1966,20 +1940,6 @@ spec: - addr type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -2404,6 +2364,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true vlstorage: properties: affinity: @@ -2504,20 +2465,6 @@ spec: futureRetention: pattern: ^[0-9]+(h|d|w|y)?$ type: string - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -3320,6 +3267,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true type: object status: properties: @@ -3603,20 +3551,6 @@ spec: futureRetention: pattern: ^[0-9]+(h|d|y)?$ type: string - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -4083,6 +4017,7 @@ spec: x-kubernetes-preserve-unknown-fields: true type: array type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -4708,19 +4643,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: @@ -4744,33 +4674,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 - type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object + x-kubernetes-preserve-unknown-fields: true type: array hostAliases: items: @@ -5183,19 +5094,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 @@ -5314,19 +5220,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: @@ -5454,19 +5355,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: @@ -5549,19 +5445,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: @@ -5704,19 +5595,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 @@ -5871,19 +5757,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 @@ -5915,19 +5796,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: @@ -6231,19 +6107,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 @@ -6335,19 +6206,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: @@ -6488,19 +6354,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: @@ -6593,19 +6454,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: @@ -6916,19 +6772,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: @@ -7034,19 +6885,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 @@ -7078,19 +6924,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: @@ -7181,6 +7022,7 @@ spec: required: - remoteWrite type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -7304,6 +7146,7 @@ spec: type: string type: array type: object + x-kubernetes-preserve-unknown-fields: true type: array receivers: items: @@ -7560,6 +7403,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: type: string send_resolved: @@ -7584,6 +7428,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array email_configs: items: @@ -7723,6 +7568,7 @@ spec: to: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array incidentio_configs: items: @@ -7755,6 +7601,7 @@ spec: url_file: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array jira_configs: items: @@ -7796,6 +7643,7 @@ spec: - issue_type - project type: object + x-kubernetes-preserve-unknown-fields: true type: array mattermost_configs: items: @@ -7823,6 +7671,7 @@ spec: value: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array footer: type: string @@ -7841,6 +7690,7 @@ spec: title_link: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array channel: type: string @@ -7859,11 +7709,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: @@ -7888,6 +7740,7 @@ spec: required: - text type: object + x-kubernetes-preserve-unknown-fields: true type: array msteams_configs: items: @@ -8136,6 +7989,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true send_resolved: type: boolean text: @@ -8158,6 +8012,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array msteamsv2_configs: items: @@ -8186,6 +8041,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array name: minLength: 1 @@ -8242,6 +8098,7 @@ spec: required: - type type: object + x-kubernetes-preserve-unknown-fields: true type: array send_resolved: type: boolean @@ -8252,6 +8109,7 @@ spec: update_alerts: type: boolean type: object + x-kubernetes-preserve-unknown-fields: true type: array pagerduty_configs: items: @@ -8287,6 +8145,7 @@ spec: required: - source type: object + x-kubernetes-preserve-unknown-fields: true type: array links: items: @@ -8298,6 +8157,7 @@ spec: required: - href type: object + x-kubernetes-preserve-unknown-fields: true type: array routing_key: properties: @@ -8332,6 +8192,7 @@ spec: url: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array pushover_configs: items: @@ -8386,6 +8247,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array rocketchat_configs: items: @@ -8402,6 +8264,7 @@ spec: url: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array api_url: type: string @@ -8421,6 +8284,7 @@ spec: value: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array http_config: x-kubernetes-preserve-unknown-fields: true @@ -8469,6 +8333,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array slack_configs: items: @@ -8490,6 +8355,7 @@ spec: required: - text type: object + x-kubernetes-preserve-unknown-fields: true name: type: string style: @@ -8508,6 +8374,7 @@ spec: - text - type type: object + x-kubernetes-preserve-unknown-fields: true type: array api_url: properties: @@ -8545,6 +8412,7 @@ spec: - title - value type: object + x-kubernetes-preserve-unknown-fields: true type: array footer: type: string @@ -8582,6 +8450,7 @@ spec: username: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sns_configs: items: @@ -8836,6 +8705,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: type: string phone_number: @@ -8879,6 +8749,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true subject: type: string target_arn: @@ -8886,6 +8757,7 @@ spec: topic_arn: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array telegram_configs: items: @@ -8924,6 +8796,7 @@ spec: - bot_token - chat_id type: object + x-kubernetes-preserve-unknown-fields: true type: array victorops_configs: items: @@ -9193,6 +9066,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message_type: type: string monitoring_tool: @@ -9206,6 +9080,7 @@ spec: required: - routing_key type: object + x-kubernetes-preserve-unknown-fields: true type: array webex_configs: items: @@ -9456,6 +9331,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: type: string room_id: @@ -9465,6 +9341,7 @@ spec: required: - room_id type: object + x-kubernetes-preserve-unknown-fields: true type: array webhook_configs: items: @@ -9497,6 +9374,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array wechat_configs: items: @@ -9764,6 +9642,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: type: string message_type: @@ -9777,10 +9656,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: @@ -9820,6 +9701,7 @@ spec: required: - receiver type: object + x-kubernetes-preserve-unknown-fields: true time_intervals: items: properties: @@ -9849,6 +9731,7 @@ spec: - end_time - start_time type: object + x-kubernetes-preserve-unknown-fields: true type: array weekdays: items: @@ -9859,13 +9742,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: @@ -10489,20 +10375,6 @@ spec: type: boolean type: object type: object - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -11175,6 +11047,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -11493,20 +11366,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -12250,6 +12109,7 @@ spec: required: - datasource type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -12671,20 +12531,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -13671,6 +13517,7 @@ spec: - reader - writer type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -14176,20 +14023,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -15854,20 +15687,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -16303,6 +16122,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true vmselect: properties: affinity: @@ -16415,20 +16235,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -17041,6 +16847,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true vmstorage: properties: affinity: @@ -17138,20 +16945,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -18199,6 +17992,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true type: object status: properties: @@ -19865,20 +19659,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -21697,19 +21477,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: @@ -21810,19 +21585,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 @@ -25254,20 +25024,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -28020,6 +27776,7 @@ spec: type: object type: array type: object + x-kubernetes-preserve-unknown-fields: true type: object vmcluster: properties: @@ -29523,20 +29280,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -32289,6 +32032,7 @@ spec: type: object type: array type: object + x-kubernetes-preserve-unknown-fields: true type: object vmcluster: properties: @@ -32500,19 +32244,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: @@ -32613,19 +32352,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 @@ -33137,19 +32871,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: @@ -33255,19 +32984,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 @@ -33764,19 +33488,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 @@ -33907,19 +33626,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: @@ -33989,19 +33703,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: @@ -34066,19 +33775,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: @@ -34115,19 +33819,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: @@ -39282,19 +38981,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: @@ -40659,19 +40353,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 @@ -41636,19 +41325,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: @@ -41749,19 +41433,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 @@ -42538,19 +42217,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: @@ -42574,33 +42248,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 - type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object + x-kubernetes-preserve-unknown-fields: true type: array hostAliases: items: @@ -42669,19 +42324,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 @@ -42800,19 +42450,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: @@ -42911,19 +42556,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: @@ -43006,19 +42646,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: @@ -43234,19 +42869,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 @@ -43338,19 +42968,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: @@ -43491,19 +43116,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: @@ -43596,19 +43216,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: @@ -43715,19 +43330,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: @@ -43936,19 +43546,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 @@ -43980,19 +43585,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: @@ -44314,6 +43914,7 @@ spec: x-kubernetes-preserve-unknown-fields: true type: array type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: @@ -44523,19 +44124,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: @@ -44634,19 +44230,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 @@ -45577,20 +45168,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -46015,6 +45592,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true managedMetadata: properties: annotations: @@ -46141,20 +45719,6 @@ spec: - addr type: object type: array - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -46579,6 +46143,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true serviceAccountName: type: string storage: @@ -46681,20 +46246,6 @@ spec: futureRetention: pattern: ^[0-9]+(h|d|w|y)?$ type: string - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -47497,6 +47048,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true useStrictSecurity: type: boolean type: object @@ -47686,20 +47238,6 @@ spec: futureRetention: pattern: ^[0-9]+(h|d|y)?$ type: string - host_aliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array hostAliases: items: properties: @@ -48066,6 +47604,7 @@ spec: x-kubernetes-preserve-unknown-fields: true type: array type: object + x-kubernetes-preserve-unknown-fields: true status: properties: conditions: diff --git a/config/crd/overlay/crd.yaml b/config/crd/overlay/crd.yaml index ce6476d46..4fb2ed081 100644 --- a/config/crd/overlay/crd.yaml +++ b/config/crd/overlay/crd.yaml @@ -641,30 +641,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -2264,6 +2240,7 @@ spec: required: - remoteWrite type: object + x-kubernetes-preserve-unknown-fields: true status: description: VLAgentStatus defines the observed state of VLAgent properties: @@ -2746,30 +2723,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -3744,6 +3697,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true vlselect: description: VLSelect defines vlselect component configuration at victoria-logs cluster @@ -3947,30 +3901,6 @@ spec: - addr type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -4792,6 +4722,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true vlstorage: description: VLStorage defines vlstorage component configuration at victoria-logs cluster @@ -4996,30 +4927,6 @@ spec: Log entries with timestamps bigger than now+futureRetention are rejected during data ingestion; see https://docs.victoriametrics.com/victorialogs/#retention pattern: ^[0-9]+(h|d|w|y)?$ type: string - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -6543,6 +6450,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true type: object status: description: VLClusterStatus defines the observed state of VLCluster @@ -7013,30 +6921,6 @@ spec: Log entries with timestamps bigger than now+futureRetention are rejected during data ingestion; see https://docs.victoriametrics.com/victorialogs/#retention pattern: ^[0-9]+(h|d|y)?$ type: string - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -8000,6 +7884,7 @@ spec: x-kubernetes-preserve-unknown-fields: true type: array type: object + x-kubernetes-preserve-unknown-fields: true status: description: VLSingleStatus defines the observed state of VLSingle properties: @@ -9277,15 +9162,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 @@ -9294,19 +9170,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, @@ -9355,15 +9225,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 @@ -9372,43 +9233,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 - type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object + x-kubernetes-preserve-unknown-fields: true type: array hostAliases: description: |- @@ -10173,15 +10004,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 @@ -10190,19 +10012,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: |- @@ -10436,15 +10252,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 @@ -10453,19 +10260,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: |- @@ -10731,15 +10532,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 @@ -10748,19 +10540,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: |- @@ -10924,15 +10710,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 @@ -10941,19 +10718,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: |- @@ -11237,15 +11008,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 @@ -11254,19 +11016,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: |- @@ -11560,15 +11316,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 @@ -11577,19 +11324,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. @@ -11657,15 +11398,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 @@ -11674,19 +11406,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: |- @@ -12290,15 +12016,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 @@ -12307,19 +12024,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. @@ -12485,15 +12196,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 @@ -12502,19 +12204,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 @@ -12775,15 +12471,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 @@ -12792,19 +12479,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: |- @@ -12985,15 +12666,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 @@ -13002,19 +12674,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: |- @@ -13717,15 +13383,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 @@ -13734,19 +13391,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: |- @@ -13954,15 +13605,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 @@ -13971,19 +13613,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. @@ -14050,15 +13686,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 @@ -14067,19 +13694,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: |- @@ -14305,6 +13926,7 @@ spec: required: - remoteWrite type: object + x-kubernetes-preserve-unknown-fields: true status: description: VMAgentStatus defines the observed state of VMAgent properties: @@ -14494,6 +14116,7 @@ spec: type: string type: array type: object + x-kubernetes-preserve-unknown-fields: true type: array receivers: description: Receivers defines alert receivers @@ -14975,6 +14598,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: description: The message body template type: string @@ -15023,6 +14647,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. @@ -15280,6 +14905,7 @@ spec: description: The email address to send notifications to. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array incidentio_configs: items: @@ -15346,6 +14972,7 @@ spec: Mutually exclusive with URL. type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array jira_configs: items: @@ -15423,6 +15050,7 @@ spec: - issue_type - project type: object + x-kubernetes-preserve-unknown-fields: true type: array mattermost_configs: description: MattermostConfigs defines Mattermost notification @@ -15455,6 +15083,7 @@ spec: value: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array footer: type: string @@ -15473,6 +15102,7 @@ spec: title_link: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array channel: description: Channel overrides the channel the message @@ -15497,11 +15127,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. @@ -15549,6 +15181,7 @@ spec: required: - text type: object + x-kubernetes-preserve-unknown-fields: true type: array msteams_configs: items: @@ -16014,6 +15647,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true send_resolved: description: SendResolved controls notify about resolved alerts. @@ -16057,6 +15691,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array msteamsv2_configs: items: @@ -16111,6 +15746,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 @@ -16209,6 +15845,7 @@ spec: required: - type type: object + x-kubernetes-preserve-unknown-fields: true type: array send_resolved: description: SendResolved controls notify about resolved @@ -16227,6 +15864,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 @@ -16282,6 +15920,7 @@ spec: required: - source type: object + x-kubernetes-preserve-unknown-fields: true type: array links: description: Links to attach to the incident. @@ -16298,6 +15937,7 @@ spec: required: - href type: object + x-kubernetes-preserve-unknown-fields: true type: array routing_key: description: |- @@ -16365,6 +16005,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 @@ -16470,6 +16111,7 @@ spec: type: object x-kubernetes-map-type: atomic type: object + x-kubernetes-preserve-unknown-fields: true type: array rocketchat_configs: items: @@ -16494,6 +16136,7 @@ spec: url: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array api_url: type: string @@ -16518,6 +16161,7 @@ spec: value: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array http_config: x-kubernetes-preserve-unknown-fields: true @@ -16592,6 +16236,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. @@ -16630,6 +16275,7 @@ spec: required: - text type: object + x-kubernetes-preserve-unknown-fields: true name: type: string style: @@ -16648,6 +16294,7 @@ spec: - text - type type: object + x-kubernetes-preserve-unknown-fields: true type: array api_url: description: |- @@ -16706,6 +16353,7 @@ spec: - title - value type: object + x-kubernetes-preserve-unknown-fields: true type: array footer: type: string @@ -16750,6 +16398,7 @@ spec: username: type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array sns_configs: items: @@ -17223,6 +16872,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 @@ -17306,6 +16956,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. @@ -17320,6 +16971,7 @@ spec: or target_arn type: string type: object + x-kubernetes-preserve-unknown-fields: true type: array telegram_configs: items: @@ -17387,6 +17039,7 @@ spec: - bot_token - chat_id type: object + x-kubernetes-preserve-unknown-fields: true type: array victorops_configs: description: VictorOpsConfigs defines victor ops notification @@ -17897,6 +17550,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). @@ -17919,6 +17573,7 @@ spec: required: - routing_key type: object + x-kubernetes-preserve-unknown-fields: true type: array webex_configs: items: @@ -18389,6 +18044,7 @@ spec: type: string type: object type: object + x-kubernetes-preserve-unknown-fields: true message: description: The message body template type: string @@ -18403,6 +18059,7 @@ spec: required: - room_id type: object + x-kubernetes-preserve-unknown-fields: true type: array webhook_configs: description: WebhookConfigs defines webhook notification configurations. @@ -18464,6 +18121,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. @@ -18972,6 +18630,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. @@ -18989,10 +18648,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 @@ -19054,6 +18715,7 @@ spec: required: - receiver type: object + x-kubernetes-preserve-unknown-fields: true time_intervals: description: |- TimeIntervals defines named interval for active/mute notifications interval @@ -19103,6 +18765,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, @@ -19118,13 +18781,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 @@ -20389,30 +20055,6 @@ spec: type: boolean type: object type: object - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -21834,6 +21476,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true status: description: |- Most recent observed status of the VMAlertmanager cluster. @@ -22403,30 +22046,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -23887,6 +23506,7 @@ spec: required: - datasource type: object + x-kubernetes-preserve-unknown-fields: true status: description: VMAlertStatus defines the observed state of VMAlert properties: @@ -24744,30 +24364,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -26751,6 +26347,7 @@ spec: - reader - writer type: object + x-kubernetes-preserve-unknown-fields: true status: description: VMAnomalyStatus defines the observed state of VMAnomaly. properties: @@ -27609,30 +27206,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -30903,30 +30476,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -31765,6 +31314,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true vmselect: description: VMSelect defines configuration section for vmselect components of the victoria-metrics cluster @@ -31997,30 +31547,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -33318,6 +32844,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true vmstorage: properties: affinity: @@ -33514,30 +33041,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -35536,6 +35039,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true type: object status: description: VMClusterStatus defines the observed state of VMCluster @@ -38907,30 +38411,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -42833,15 +42313,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 @@ -42850,19 +42321,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 @@ -43046,15 +42511,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 @@ -43063,19 +42519,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 @@ -50613,30 +50063,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -56815,6 +56241,7 @@ spec: type: object type: array type: object + x-kubernetes-preserve-unknown-fields: true type: object vmcluster: description: VMCluster defines VictoriaMetrics cluster database @@ -60088,30 +59515,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -66318,6 +65721,7 @@ spec: type: object type: array type: object + x-kubernetes-preserve-unknown-fields: true type: object vmcluster: description: VMCluster defines a new inline or referencing existing @@ -66671,15 +66075,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 @@ -66688,19 +66083,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 @@ -66876,15 +66265,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 @@ -66893,19 +66273,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 @@ -67811,15 +67185,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 @@ -67828,19 +67193,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 @@ -68026,15 +67385,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 @@ -68043,19 +67393,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 @@ -68931,15 +68275,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 @@ -68948,19 +68283,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: |- @@ -69190,15 +68519,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 @@ -69207,19 +68527,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 @@ -69343,15 +68657,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 @@ -69360,19 +68665,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 @@ -69486,15 +68785,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 @@ -69503,19 +68793,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 @@ -69582,15 +68866,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 @@ -69599,19 +68874,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 @@ -78919,15 +78188,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 @@ -78936,19 +78196,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 @@ -81429,15 +80683,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 @@ -81446,19 +80691,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 @@ -83189,15 +82428,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 @@ -83206,19 +82436,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 @@ -83397,15 +82621,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 @@ -83414,19 +82629,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 @@ -84850,15 +84059,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 @@ -84867,19 +84067,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, @@ -84928,15 +84122,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 @@ -84945,43 +84130,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 - type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object + x-kubernetes-preserve-unknown-fields: true type: array hostAliases: description: |- @@ -85119,15 +84274,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 @@ -85136,19 +84282,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: |- @@ -85381,15 +84521,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 @@ -85398,19 +84529,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: |- @@ -85613,15 +84738,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 @@ -85630,19 +84746,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: |- @@ -85806,15 +84916,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 @@ -85823,19 +84924,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: |- @@ -86258,15 +85353,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 @@ -86275,19 +85361,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. @@ -86453,15 +85533,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 @@ -86470,19 +85541,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 @@ -86743,15 +85808,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 @@ -86760,19 +85816,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: |- @@ -86953,15 +86003,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 @@ -86970,19 +86011,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: |- @@ -87193,15 +86228,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 @@ -87210,19 +86236,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: |- @@ -87666,15 +86686,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 @@ -87683,19 +86694,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. @@ -87762,15 +86767,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 @@ -87779,19 +86775,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: |- @@ -88466,6 +87456,7 @@ spec: x-kubernetes-preserve-unknown-fields: true type: array type: object + x-kubernetes-preserve-unknown-fields: true status: description: VMSingleStatus defines the observed state of VMSingle properties: @@ -88819,15 +87810,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 @@ -88836,19 +87818,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 @@ -89024,15 +88000,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 @@ -89041,19 +88008,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 @@ -90668,30 +89629,6 @@ spec: x-kubernetes-map-type: atomic type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -91513,6 +90450,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true managedMetadata: description: |- ManagedMetadata defines metadata that will be added to the all objects @@ -91763,30 +90701,6 @@ spec: - addr type: object type: array - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -92608,6 +91522,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true serviceAccountName: description: |- ServiceAccountName is the name of the ServiceAccount to use to run the @@ -92818,30 +91733,6 @@ spec: see https://docs.victoriametrics.com/victoriatraces/#configure-and-run-victoriatraces pattern: ^[0-9]+(h|d|w|y)?$ type: string - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -94366,6 +93257,7 @@ spec: type: object type: object type: object + x-kubernetes-preserve-unknown-fields: true useStrictSecurity: description: |- UseStrictSecurity enables strict security mode for component @@ -94702,30 +93594,6 @@ spec: see https://docs.victoriametrics.com/victoriatraces/#configure-and-run-victoriatraces pattern: ^[0-9]+(h|d|y)?$ type: string - host_aliases: - description: |- - HostAliasesUnderScore provides mapping for ip and hostname, - that would be propagated to pod, - cannot be used with HostNetwork. - Has Priority over hostAliases field - items: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - description: IP address of the host file entry. - type: string - required: - - ip - type: object - type: array hostAliases: description: |- HostAliases provides mapping for ip and hostname, @@ -95496,6 +94364,7 @@ spec: x-kubernetes-preserve-unknown-fields: true type: array type: object + x-kubernetes-preserve-unknown-fields: true status: description: VTSingleStatus defines the observed state of VTSingle properties: diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 7a6ff24b0..c958afc85 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -13,6 +13,8 @@ aliases: ## tip +* 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). + ## [v0.72.0](https://github.com/VictoriaMetrics/operator/releases/tag/v0.72.0) **Release date:** 15 June 2026 diff --git a/docs/api.md b/docs/api.md index 2d7dbf43c..3009428e0 100644 --- a/docs/api.md +++ b/docs/api.md @@ -220,9 +220,8 @@ Appears in: [VLAgent](#vlagent) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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 | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | | initContainers#
_[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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/ | @@ -320,9 +319,8 @@ Appears in: [VLClusterSpec](#vlclusterspec) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -383,9 +381,8 @@ Appears in: [VLClusterSpec](#vlclusterspec) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | extraStorageNodes#
_[VLStorageNode](#vlstoragenode) array_ | _(Required)_
ExtraStorageNodes - defines additional storage nodes to VLSelect | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -457,9 +454,8 @@ Appears in: [VLSingle](#vlsingle) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | futureRetention#
_string_ | _(Optional)_
FutureRetention for the stored logs
Log entries with timestamps bigger than now+futureRetention are rejected during data ingestion; see https://docs.victoriametrics.com/victorialogs/#retention | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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 | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | | initContainers#
_[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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/ | @@ -526,9 +522,8 @@ Appears in: [VLClusterSpec](#vlclusterspec) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | futureRetention#
_string_ | _(Optional)_
FutureRetention for the stored logs
Log entries with timestamps bigger than now+futureRetention are rejected during data ingestion; see https://docs.victoriametrics.com/victorialogs/#retention | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling.
Note, downscaling is not supported. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -732,9 +727,8 @@ Appears in: [VMAnomaly](#vmanomaly) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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 | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | | initContainers#
_[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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/ | @@ -860,9 +854,8 @@ Appears in: [VTClusterSpec](#vtclusterspec) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -922,9 +915,8 @@ Appears in: [VTClusterSpec](#vtclusterspec) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | extraStorageNodes#
_[VTStorageNode](#vtstoragenode) array_ | _(Required)_
ExtraStorageNodes - defines additional storage nodes to VTSelect | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -996,9 +988,8 @@ Appears in: [VTSingle](#vtsingle) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | futureRetention#
_string_ | _(Optional)_
FutureRetention for the stored traces
Log entries with timestamps bigger than now+futureRetention are rejected during data ingestion;
see https://docs.victoriametrics.com/victoriatraces/#configure-and-run-victoriatraces | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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 | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | | initContainers#
_[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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/ | @@ -1063,9 +1054,8 @@ Appears in: [VTClusterSpec](#vtclusterspec) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | futureRetention#
_string_ | _(Optional)_
FutureRetention for the stored traces
Log entries with timestamps bigger than now+futureRetention are rejected during data ingestion
see https://docs.victoriametrics.com/victoriatraces/#configure-and-run-victoriatraces | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling.
Note, downscaling is not supported. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -1220,9 +1210,8 @@ Appears in: [VMDistributedZoneAgent](#vmdistributedzoneagent) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -1417,7 +1406,7 @@ Appears in: [APIServerConfig](#apiserverconfig), [AzureSDConfig](#azuresdconfig) | Field | Description | | --- | --- | | credentials#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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 @@ -1523,9 +1512,8 @@ Appears in: [VLAgentSpec](#vlagentspec), [VLInsert](#vlinsert), [VLSelect](#vlse | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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 | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | | initContainers#
_[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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/ | @@ -1584,45 +1572,45 @@ Appears in: [VMAgentSpec](#vmagentspec), [VMSingleSpec](#vmsinglespec) | Field | Description | | --- | --- | -| additionalScrapeConfigs#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | -| globalScrapeRelabelConfigs#
_[RelabelConfig](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | -| scrapeConfigNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | +| globalScrapeRelabelConfigs _(or global_scrape_relabel_configs)_ #
_[RelabelConfig](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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 @@ -1632,11 +1620,11 @@ Appears in: [CommonScrapeParams](#commonscrapeparams), [VMAgentSpec](#vmagentspe | Field | Description | | --- | --- | -| arbitraryFSAccessThroughSMs#
_[ArbitraryFSAccessThroughSMsConfig](#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](#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 @@ -1757,15 +1745,15 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| avatar_url#
_string_ | _(Optional)_
AvatarURL defines message avatar URL
Available from operator v0.55.0 and alertmanager v0.28.0 | +| avatar_url _(or avatarUrl)_ #
_string_ | _(Optional)_
AvatarURL defines message avatar URL
Available from operator v0.55.0 and alertmanager v0.28.0 | | content#
_string_ | _(Optional)_
Content defines message content template
Available from operator v0.55.0 and alertmanager v0.28.0 | -| http_config#
_[HTTPConfig](#httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig](#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 operator v0.55.0 and alertmanager v0.28.0 | -| webhook_url#
_string_ | _(Optional)_
The discord webhook URL
one of `urlSecret` and `url` must be defined. | -| webhook_url_secret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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 @@ -1905,19 +1893,19 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| auth_identity#
_string_ | _(Optional)_
The identity to use for authentication. | -| auth_password#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(Optional)_
AuthPassword defines secret name and key at CRD namespace. | -| auth_secret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(Optional)_
AuthPassword defines secret name and key at CRD namespace. | +| auth_secret _(or authSecret)_ #
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#tlsconfig)_ | _(Optional)_
TLS configuration | +| tls_config _(or tlsConfig)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLS configuration | | to#
_string_ | _(Optional)_
The email address to send notifications to. | #### EmbeddedHPA @@ -2030,29 +2018,29 @@ Appears in: [VMServiceScrapeSpec](#vmservicescrapespec) | --- | --- | | attach_metadata#
_[AttachMetadata](#attachmetadata)_ | _(Optional)_
AttachMetadata configures metadata attaching from service discovery | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | oauth2#
_[OAuth2](#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](#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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#intorstring-intstr-util)_ | _(Optional)_
TargetPort
Name or number of the pod port this endpoint refers to. Mutually exclusive with port. | -| tlsConfig#
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### EndpointAuth @@ -2063,11 +2051,11 @@ Appears in: [Endpoint](#endpoint), [EndpointScrapeParams](#endpointscrapeparams) | Field | Description | | --- | --- | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | -| tlsConfig#
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| tlsConfig _(or tls_config)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | #### EndpointRelabelings @@ -2077,8 +2065,8 @@ Appears in: [Endpoint](#endpoint), [PodMetricsEndpoint](#podmetricsendpoint), [S | Field | Description | | --- | --- | -| metricRelabelConfigs#
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | -| relabelConfigs#
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | #### EndpointScrapeParams @@ -2089,25 +2077,25 @@ Appears in: [Endpoint](#endpoint), [PodMetricsEndpoint](#podmetricsendpoint), [T | Field | Description | | --- | --- | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams](#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](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### EurekaSDConfig @@ -2193,16 +2181,16 @@ Appears in: [DiscordConfig](#discordconfig), [IncidentioConfig](#incidentioconfi | Field | Description | | --- | --- | | authorization#
_[Authorization](#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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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. | -| 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. | +| basic_auth _(or basicAuth)_ #
_[BasicAuth](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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. | +| 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](#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](#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](#tlsconfig)_ | _(Optional)_
TLS configuration for the client. | #### HTTPSDConfig @@ -2295,11 +2283,11 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| alert_source_token#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(Optional)_
AlertSourceToken is used to authenticate with incident.io.
Mutually exclusive with AlertSourceTokenFile. | +| alert_source_token _(or alertSourceToken)_ #
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#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. | @@ -2316,8 +2304,8 @@ Appears in: [VMAlertmanagerConfigSpec](#vmalertmanagerconfigspec) | 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 @@ -2341,20 +2329,20 @@ Appears in: [Receiver](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#json-v1-apiextensions-k8s-io))_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#json-v1-apiextensions-k8s-io))_ | _(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](#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](#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 @@ -2443,12 +2431,12 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| http_config#
_[HTTPConfig](#httpconfig)_ | _(Optional)_
HTTP client configuration. | -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| http_config _(or httpConfig)_ #
_[HTTPConfig](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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 @@ -2461,12 +2449,12 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| http_config#
_[HTTPConfig](#httpconfig)_ | _(Optional)_
| -| send_resolved#
_boolean_ | _(Optional)_
SendResolved controls notify about resolved alerts. | +| http_config _(or httpConfig)_ #
_[HTTPConfig](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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 @@ -2503,20 +2491,20 @@ Appears in: [MattermostConfig](#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](#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 @@ -2528,15 +2516,15 @@ Appears in: [Receiver](#receiver) | --- | --- | | attachments#
_[MattermostAttachment](#mattermostattachment) array_ | _(Optional)_
Attachments defines richer formatting options | | channel#
_string_ | _(Optional)_
Channel overrides the channel the message posts in. | -| http_config#
_[HTTPConfig](#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](#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](#mattermostpriority)_ | _(Optional)_
| | props#
_[MattermostProps](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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 @@ -2555,9 +2543,9 @@ Appears in: [MattermostConfig](#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 @@ -2632,14 +2620,14 @@ Appears in: [AzureSDConfig](#azuresdconfig), [ConsulAgentSDConfig](#consulagents | Field | Description | | --- | --- | -| client_id#
_[SecretOrConfigMap](#secretorconfigmap)_ | _(Required)_
The secret or configmap containing the OAuth2 client id | -| client_secret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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
( available from v0.55.0).
Is only supported by Scrape objects family | +| client_id _(or clientId)_ #
_[SecretOrConfigMap](#secretorconfigmap)_ | _(Required)_
The secret or configmap containing the OAuth2 client id | +| client_secret _(or clientSecret)_ #
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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
( available from v0.55.0).
Is only supported by Scrape objects family | | scopes#
_string array_ | _(Optional)_
OAuth2 scopes used for the token request | -| tls_config#
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig for token_url connection
( available from v0.55.0).
Is only supported by Scrape objects family | -| token_url#
_string_ | _(Required)_
The URL to fetch the token from | +| tls_config _(or tlsConfig)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig for token_url connection
( available from v0.55.0).
Is only supported by Scrape objects family | +| token_url _(or tokenUrl)_ #
_string_ | _(Required)_
The URL to fetch the token from | #### OVHCloudSDConfig @@ -2700,20 +2688,20 @@ Appears in: [Receiver](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig](#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](#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 @@ -2740,17 +2728,17 @@ Appears in: [Receiver](#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](#httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig](#httpconfig)_ | _(Optional)_
HTTP client configuration. | | images#
_[ImageConfig](#imageconfig) array_ | _(Optional)_
Images to attach to the incident. | | links#
_[LinkConfig](#linkconfig) array_ | _(Optional)_
Links to attach to the incident. | -| routing_key#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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. | @@ -2764,31 +2752,31 @@ Appears in: [VMPodScrapeSpec](#vmpodscrapespec) | --- | --- | | attach_metadata#
_[AttachMetadata](#attachmetadata)_ | _(Optional)_
AttachMetadata configures metadata attaching from service discovery | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | oauth2#
_[OAuth2](#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](#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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#intorstring-intstr-util)_ | _(Optional)_
TargetPort defines name or number of the pod port this endpoint refers to.
Mutually exclusive with Port and PortNumber. | -| tlsConfig#
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### ProxyClientConfig @@ -2799,11 +2787,11 @@ Appears in: [AzureSDConfig](#azuresdconfig), [ConsulAgentSDConfig](#consulagents | Field | Description | | --- | --- | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basic_auth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allows proxy to authenticate over basic authentication | -| bearer_token#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#basicauth)_ | _(Optional)_
BasicAuth allows proxy to authenticate over basic authentication | +| bearer_token _(or bearerToken)_ #
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | -| tls_config#
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| tls_config _(or tlsConfig)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | #### ProxyConfig @@ -2813,10 +2801,10 @@ Appears in: [HTTPConfig](#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 @@ -2850,17 +2838,17 @@ Appears in: [Receiver](#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](#httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(Required)_
The secret's key that contains the recipient user’s user key.
It must be at them same namespace as CRD | #### QueryArg @@ -2881,25 +2869,25 @@ Appears in: [VMAlertmanagerConfigSpec](#vmalertmanagerconfigspec) | Field | Description | | --- | --- | -| discord_configs#
_[DiscordConfig](#discordconfig) array_ | _(Optional)_
| -| email_configs#
_[EmailConfig](#emailconfig) array_ | _(Optional)_
EmailConfigs defines email notification configurations. | -| incidentio_configs#
_[IncidentioConfig](#incidentioconfig) array_ | _(Optional)_
| -| jira_configs#
_[JiraConfig](#jiraconfig) array_ | _(Optional)_
| -| mattermost_configs#
_[MattermostConfig](#mattermostconfig) array_ | _(Optional)_
MattermostConfigs defines Mattermost notification configurations. | -| msteams_configs#
_[MSTeamsConfig](#msteamsconfig) array_ | _(Optional)_
| -| msteamsv2_configs#
_[MSTeamsV2Config](#msteamsv2config) array_ | _(Optional)_
| +| discord_configs _(or discordConfigs)_ #
_[DiscordConfig](#discordconfig) array_ | _(Optional)_
| +| email_configs _(or emailConfigs)_ #
_[EmailConfig](#emailconfig) array_ | _(Optional)_
EmailConfigs defines email notification configurations. | +| incidentio_configs _(or incidentioConfigs)_ #
_[IncidentioConfig](#incidentioconfig) array_ | _(Optional)_
| +| jira_configs _(or jiraConfigs)_ #
_[JiraConfig](#jiraconfig) array_ | _(Optional)_
| +| mattermost_configs _(or mattermostConfigs)_ #
_[MattermostConfig](#mattermostconfig) array_ | _(Optional)_
MattermostConfigs defines Mattermost notification configurations. | +| msteams_configs _(or msteamsConfigs)_ #
_[MSTeamsConfig](#msteamsconfig) array_ | _(Optional)_
| +| msteamsv2_configs _(or msteamsv2Configs)_ #
_[MSTeamsV2Config](#msteamsv2config) array_ | _(Optional)_
| | name#
_string_ | _(Required)_
Name of the receiver. Must be unique across all items from the list. | -| opsgenie_configs#
_[OpsGenieConfig](#opsgenieconfig) array_ | _(Optional)_
OpsGenieConfigs defines ops genie notification configurations. | -| pagerduty_configs#
_[PagerDutyConfig](#pagerdutyconfig) array_ | _(Optional)_
PagerDutyConfigs defines pager duty notification configurations. | -| pushover_configs#
_[PushoverConfig](#pushoverconfig) array_ | _(Optional)_
PushoverConfigs defines push over notification configurations. | -| rocketchat_configs#
_[RocketchatConfig](#rocketchatconfig) array_ | _(Optional)_
| -| slack_configs#
_[SlackConfig](#slackconfig) array_ | _(Optional)_
SlackConfigs defines slack notification configurations. | -| sns_configs#
_[SNSConfig](#snsconfig) array_ | _(Optional)_
| -| telegram_configs#
_[TelegramConfig](#telegramconfig) array_ | _(Optional)_
| -| victorops_configs#
_[VictorOpsConfig](#victoropsconfig) array_ | _(Optional)_
VictorOpsConfigs defines victor ops notification configurations. | -| webex_configs#
_[WebexConfig](#webexconfig) array_ | _(Optional)_
| -| webhook_configs#
_[WebhookConfig](#webhookconfig) array_ | _(Optional)_
WebhookConfigs defines webhook notification configurations. | -| wechat_configs#
_[WechatConfig](#wechatconfig) array_ | _(Optional)_
WechatConfigs defines wechat notification configurations. | +| opsgenie_configs _(or opsgenieConfigs)_ #
_[OpsGenieConfig](#opsgenieconfig) array_ | _(Optional)_
OpsGenieConfigs defines ops genie notification configurations. | +| pagerduty_configs _(or pagerdutyConfigs)_ #
_[PagerDutyConfig](#pagerdutyconfig) array_ | _(Optional)_
PagerDutyConfigs defines pager duty notification configurations. | +| pushover_configs _(or pushoverConfigs)_ #
_[PushoverConfig](#pushoverconfig) array_ | _(Optional)_
PushoverConfigs defines push over notification configurations. | +| rocketchat_configs _(or rocketchatConfigs)_ #
_[RocketchatConfig](#rocketchatconfig) array_ | _(Optional)_
| +| slack_configs _(or slackConfigs)_ #
_[SlackConfig](#slackconfig) array_ | _(Optional)_
SlackConfigs defines slack notification configurations. | +| sns_configs _(or snsConfigs)_ #
_[SNSConfig](#snsconfig) array_ | _(Optional)_
| +| telegram_configs _(or telegramConfigs)_ #
_[TelegramConfig](#telegramconfig) array_ | _(Optional)_
| +| victorops_configs _(or victoropsConfigs)_ #
_[VictorOpsConfig](#victoropsconfig) array_ | _(Optional)_
VictorOpsConfigs defines victor ops notification configurations. | +| webex_configs _(or webexConfigs)_ #
_[WebexConfig](#webexconfig) array_ | _(Optional)_
| +| webhook_configs _(or webhookConfigs)_ #
_[WebhookConfig](#webhookconfig) array_ | _(Optional)_
WebhookConfigs defines webhook notification configurations. | +| wechat_configs _(or wechatConfigs)_ #
_[WechatConfig](#wechatconfig) array_ | _(Optional)_
WechatConfigs defines wechat notification configurations. | #### RelabelConfig @@ -2918,10 +2906,8 @@ Appears in: [CommonRelabelParams](#commonrelabelparams), [CommonScrapeParams](#c | regex#
_[StringOrArray](#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 @@ -2990,23 +2976,23 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | | actions#
_[RocketchatAttachmentAction](#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](#rocketchatattachmentfield) array_ | _(Optional)_
| -| http_config#
_[HTTPConfig](#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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(Optional)_
| -| token_id#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(Optional)_
The sender token and token_id
See https://docs.rocket.chat/use-rocket.chat/user-guides/user-panel/my-account#personal-access-tokens | +| token_id _(or tokenId)_ #
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(Optional)_
The sender token and token_id
See https://docs.rocket.chat/use-rocket.chat/user-guides/user-panel/my-account#personal-access-tokens | #### Route @@ -3016,15 +3002,15 @@ Appears in: [SubRoute](#subroute), [VMAlertmanagerConfigSpec](#vmalertmanagercon | 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#json-v1-apiextensions-k8s-io) array_ | _(Optional)_
Child routes.
https://prometheus.io/docs/alerting/latest/configuration/#route | #### Rule @@ -3074,16 +3060,16 @@ Appears in: [Receiver](#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](#httpconfig)_ | _(Optional)_
HTTP client configuration. | +| http_config _(or httpConfig)_ #
_[HTTPConfig](#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](#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 @@ -3091,17 +3077,17 @@ Appears in: [CommonScrapeParams](#commonscrapeparams), [VMAgentSpec](#vmagentspe | Field | Description | | --- | --- | -| attachMetadata#
_[AttachMetadata](#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](#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](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | +| metricRelabelConfigs _(or metric_relabel_configs)_ #
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | name#
_string_ | _(Required)_
name of the scrape class. | | oauth2#
_[OAuth2](#oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | -| relabelConfigs#
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | -| tlsConfig#
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| relabelConfigs _(or relabel_configs)_ #
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
RelabelConfigs to apply to samples during service discovery. | +| tlsConfig _(or tls_config)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | #### SecretOrConfigMap @@ -3127,12 +3113,12 @@ Appears in: [SNSConfig](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(Optional)_
secret key selector to get the keys from a Kubernetes Secret | #### SlackAction @@ -3163,27 +3149,27 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | | actions#
_[SlackAction](#slackaction) array_ | _(Optional)_
A list of Slack actions that are sent with each notification. | -| api_url#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#slackfield) array_ | _(Optional)_
A list of Slack fields that are sent with each notification. | | footer#
_string_ | _(Optional)_
| -| http_config#
_[HTTPConfig](#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](#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 @@ -3198,8 +3184,8 @@ Appears in: [SlackAction](#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)_
| @@ -3378,29 +3364,29 @@ Appears in: [VMStaticScrapeSpec](#vmstaticscrapespec) | Field | Description | | --- | --- | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | oauth2#
_[OAuth2](#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](#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](#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](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### TargetRef @@ -3413,12 +3399,19 @@ Appears in: [VMAuthSpec](#vmauthspec), [VMAuthUnauthorizedUserAccessSpec](#vmaut | Field | Description | | --- | --- | -| URLMapCommon#
_[URLMapCommon](#urlmapcommon)_ | _(Required)_
| | crd#
_[CRDRef](#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](#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](#staticref)_ | _(Optional)_
Static - user defined url for traffic forward,
for instance http://vmsingle:8428 | | targetRefBasicAuth#
_[TargetRefBasicAuth](#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. | @@ -3443,15 +3436,15 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| api_url#
_string_ | _(Optional)_
APIUrl the Telegram API URL i.e. https://api.telegram.org. | -| bot_token#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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 @@ -3461,7 +3454,7 @@ Appears in: [TimeIntervals](#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](#timerange) array_ | _(Optional)_
Times defines time range for mute | @@ -3477,7 +3470,7 @@ Appears in: [VMAlertmanagerConfigSpec](#vmalertmanagerconfigspec) | Field | Description | | --- | --- | | name#
_string_ | _(Required)_
Name of interval | -| time_intervals#
_[TimeInterval](#timeinterval) array_ | _(Required)_
TimeIntervals interval configuration | +| time_intervals _(or timeIntervals)_ #
_[TimeInterval](#timeinterval) array_ | _(Required)_
TimeIntervals interval configuration | #### TimeRange @@ -3487,8 +3480,8 @@ Appears in: [TimeInterval](#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 @@ -3516,9 +3509,16 @@ Appears in: [VMAuthSpec](#vmauthspec), [VMAuthUnauthorizedUserAccessSpec](#vmaut | Field | Description | | --- | --- | -| URLMapCommon#
_[URLMapCommon](#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](#stringorarray)_ | _(Required)_
UrlPrefix contains backend url prefixes for the proxied request url.
URLPrefix defines prefix prefix for destination | #### VLogs @@ -3555,9 +3555,8 @@ Appears in: [VLogs](#vlogs) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | futureRetention#
_string_ | _(Required)_
FutureRetention for the stored logs
Log entries with timestamps bigger than now+futureRetention are rejected during data ingestion; see https://docs.victoriametrics.com/victorialogs/#retention | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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 | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | | initContainers#
_[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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/ | @@ -3661,10 +3660,10 @@ Appears in: [VMAgent](#vmagent) | Field | Description | | --- | --- | -| additionalScrapeConfigs#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#affinity-v1-core)_ | _(Optional)_
Affinity If specified, the pod's scheduling constraints. | | apiServerConfig#
_[APIServerConfig](#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](#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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#persistentvolumeclaim-v1-core) 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 | @@ -3681,55 +3680,54 @@ Appears in: [VMAgent](#vmagent) | disableSelfServiceScrape#
_boolean_ | _(Optional)_
DisableSelfServiceScrape controls creation of VMServiceScrape by operator
for the application.
Has priority over `VM_DISABLESELFSERVICESCRAPECREATION` operator env variable | | dnsConfig#
_[PodDNSConfig](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#poddnsconfig-v1-core)_ | _(Optional)_
Specifies the DNS parameters of a pod.
Parameters specified here will be merged to the generated DNS
configuration based on DNSPolicy. | | dnsPolicy#
_[DNSPolicy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#dnspolicy-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| globalScrapeMetricRelabelConfigs#
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | -| globalScrapeRelabelConfigs#
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| globalScrapeMetricRelabelConfigs _(or global_scrape_metric_relabel_configs)_ #
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | +| globalScrapeRelabelConfigs _(or global_scrape_relabel_configs)_ #
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#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](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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](#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](#insertports)_ | _(Required)_
InsertPorts - additional listen ports for data ingestion. | | license#
_[License](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#probe-v1-core)_ | _(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](#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. | -| nodeScrapeNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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 | +| 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#statefulsetpersistentvolumeclaimretentionpolicy-v1-apps)_ | _(Optional)_
PersistentVolumeClaimRetentionPolicy allows configuration of PVC retention policy | | podDisruptionBudget#
_[EmbeddedPodDisruptionBudgetSpec](#embeddedpoddisruptionbudgetspec)_ | _(Optional)_
PodDisruptionBudget created by operator | | podMetadata#
_[EmbeddedObjectMetadata](#embeddedobjectmetadata)_ | _(Optional)_
PodMetadata configures Labels and Annotations which are propagated to the vmagent pods. | -| podScrapeNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#podreadinessgate-v1-core) array_ | _(Required)_
ReadinessGates defines pod readiness gates | | readinessProbe#
_[Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#probe-v1-core)_ | _(Optional)_
ReadinessProbe that will be added to CR pod | | relabelConfig#
_[ConfigMapKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#configmapkeyselector-v1-core)_ | _(Optional)_
RelabelConfig ConfigMap with global relabel config -remoteWrite.relabelConfig
This relabeling is applied to all the collected metrics before sending them to remote storage. | @@ -3740,21 +3738,21 @@ Appears in: [VMAgent](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#rollingupdatedeployment-v1-apps)_ | _(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](#scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | -| scrapeConfigNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#vmservicescrapespec)_ | _(Optional)_
ServiceScrapeSpec that will be added to vmagent VMServiceScrape spec | | serviceSpec#
_[AdditionalServiceSpec](#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) | @@ -3763,9 +3761,9 @@ Appears in: [VMAgent](#vmagent) | statefulRollingUpdateStrategy#
_[StatefulSetUpdateStrategyType](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#statefulsetupdatestrategytype-v1-apps)_ | _(Optional)_
StatefulRollingUpdateStrategy allows configuration for strategyType
set it to RollingUpdate for disabling operator statefulSet rollingUpdate | | statefulRollingUpdateStrategyBehavior#
_[StatefulSetUpdateStrategyBehavior](#statefulsetupdatestrategybehavior)_ | _(Optional)_
StatefulRollingUpdateStrategyBehavior defines customized behavior for rolling updates.
It applies if the RollingUpdateStrategy is set to OnDelete, which is the default. | | statefulStorage#
_[StorageSpec](#storagespec)_ | _(Optional)_
StatefulStorage configures storage for StatefulSet | -| staticScrapeNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#streamaggrconfig)_ | _(Optional)_
StreamAggrConfig defines global stream aggregation configuration for VMAgent | | terminationGracePeriodSeconds#
_integer_ | _(Optional)_
TerminationGracePeriodSeconds period for container graceful termination | | tolerations#
_[Toleration](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#toleration-v1-core) array_ | _(Optional)_
Tolerations If specified, the pod's tolerations. | @@ -3774,7 +3772,7 @@ Appears in: [VMAgent](#vmagent) | useDefaultResources#
_boolean_ | _(Optional)_
UseDefaultResources controls resource settings
By default, operator sets built-in resource requirements | | 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
Removed since v0.67.0: this property is ignored and no longer needed | -| 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#volumemount-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#volume-v1-core) array_ | _(Required)_
Volumes allows configuration of additional volumes on the output Deployment/StatefulSet definition.
Volumes specified will be appended to other volumes that are generated.
/ +optional | @@ -3880,9 +3878,8 @@ Appears in: [VMAlert](#vmalert) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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 | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | | initContainers#
_[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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/ | @@ -3963,10 +3960,10 @@ Appears in: [VMAlertmanagerConfig](#vmalertmanagerconfig) | Field | Description | | --- | --- | -| inhibit_rules#
_[InhibitRule](#inhibitrule) array_ | _(Optional)_
InhibitRules will only apply for alerts matching
the resource's namespace. | +| inhibit_rules _(or inhibitRules)_ #
_[InhibitRule](#inhibitrule) array_ | _(Optional)_
InhibitRules will only apply for alerts matching
the resource's namespace. | | receivers#
_[Receiver](#receiver) array_ | _(Optional)_
Receivers defines alert receivers | | route#
_[Route](#route)_ | _(Optional)_
Route definition for alertmanager, may include nested routes. | -| time_intervals#
_[TimeIntervals](#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](#timeintervals) array_ | _(Optional)_
TimeIntervals defines named interval for active/mute notifications interval
See https://prometheus.io/docs/alerting/latest/configuration/#time_interval | #### VMAlertmanagerGossipConfig @@ -4031,9 +4028,8 @@ Appears in: [VMAlertmanager](#vmalertmanager) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | gossipConfig#
_[VMAlertmanagerGossipConfig](#vmalertmanagergossipconfig)_ | _(Optional)_
GossipConfig defines gossip TLS configuration for Alertmanager cluster | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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 | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | | initContainers#
_[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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/ | @@ -4157,9 +4153,8 @@ Appears in: [VMAuthLoadBalancer](#vmauthloadbalancer) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
HPA defines HorizontalPodAutoscaler configuration for vmauth lb deployment | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -4232,9 +4227,8 @@ Appears in: [VMAuth](#vmauth), [VMDistributedAuth](#vmdistributedauth) | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | | headers#
_string array_ | _(Optional)_
Headers 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 | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling. | | httpRoute#
_[EmbeddedHTTPRoute](#embeddedhttproute)_ | _(Required)_
HTTPRoute enables httproute configuration for VMAuth. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | @@ -4415,9 +4409,8 @@ Appears in: [VMClusterSpec](#vmclusterspec) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Required)_
HPA defines kubernetes PodAutoScaling configuration version 2. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -4479,32 +4472,32 @@ Appears in: [VMNodeScrape](#vmnodescrape) | Field | Description | | --- | --- | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | oauth2#
_[OAuth2](#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](#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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### VMPodScrape @@ -4559,31 +4552,31 @@ Appears in: [VMProbe](#vmprobe) | Field | Description | | --- | --- | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](#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](#vmprobetargets)_ | _(Required)_
Targets defines a set of static and/or dynamically discovered targets to be probed using the prober. | -| tlsConfig#
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| tlsConfig _(or tls_config)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | | vmProberSpec#
_[VMProberSpec](#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](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | #### VMProbeTargetKubernetes @@ -4697,9 +4690,9 @@ Appears in: [VMScrapeConfig](#vmscrapeconfig) | --- | --- | | authorization#
_[Authorization](#authorization)_ | _(Optional)_
Authorization with http header Authorization | | azureSDConfigs#
_[AzureSDConfig](#azuresdconfig) array_ | _(Optional)_
AzureSDConfigs defines a list of Azure service discovery configurations. | -| basicAuth#
_[BasicAuth](#basicauth)_ | _(Optional)_
BasicAuth allow an endpoint to authenticate over basic authentication | -| bearerTokenFile#
_string_ | _(Optional)_
File to read bearer token for scraping targets. | -| bearerTokenSecret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#consulagentsdconfig) array_ | _(Optional)_
ConsulAgentSDConfigs defines a list of Consul Agent service discovery configurations. | | consulSDConfigs#
_[ConsulSDConfig](#consulsdconfig) array_ | _(Optional)_
ConsulSDConfigs defines a list of Consul service discovery configurations. | | digitalOceanSDConfigs#
_[DigitalOceanSDConfig](#digitaloceansdconfig) array_ | _(Optional)_
DigitalOceanSDConfigs defines a list of DigitalOcean service discovery configurations. | @@ -4709,36 +4702,36 @@ Appears in: [VMScrapeConfig](#vmscrapeconfig) | ec2SDConfigs#
_[EC2SDConfig](#ec2sdconfig) array_ | _(Optional)_
EC2SDConfigs defines a list of EC2 service discovery configurations. | | eurekaSDConfigs#
_[EurekaSDConfig](#eurekasdconfig) array_ | _(Optional)_
EurekaSDConfigs defines a list of Eureka service discovery configurations. | | fileSDConfigs#
_[FileSDConfig](#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](#gcesdconfig) array_ | _(Optional)_
GCESDConfigs defines a list of GCE service discovery configurations. | | hetznerSDConfigs#
_[HetznerSDConfig](#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](#httpsdconfig) array_ | _(Optional)_
HTTPSDConfigs defines a list of HTTP service discovery configurations. | | interval#
_string_ | _(Optional)_
Interval at which metrics should be scraped | | kubernetesSDConfigs#
_[KubernetesSDConfig](#kubernetessdconfig) array_ | _(Optional)_
KubernetesSDConfigs defines a list of Kubernetes service discovery configurations. | | kumaSDConfigs#
_[KumaSDConfig](#kumasdconfig) array_ | _(Optional)_
KumaSDConfigs defines a list of Kuma service discovery configurations. | | marathonSDConfigs#
_[MarathonSDConfig](#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](#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](#relabelconfig) array_ | _(Optional)_
MetricRelabelConfigs to apply to samples after scrapping. | | nomadSDConfigs#
_[NomadSDConfig](#nomadsdconfig) array_ | _(Optional)_
NomadSDConfigs defines a list of Nomad service discovery configurations. | | oauth2#
_[OAuth2](#oauth2)_ | _(Optional)_
OAuth2 defines auth configuration | | openstackSDConfigs#
_[OpenStackSDConfig](#openstacksdconfig) array_ | _(Optional)_
OpenStackSDConfigs defines a list of OpenStack service discovery configurations. | | ovhcloudSDConfigs#
_[OVHCloudSDConfig](#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](#puppetdbsdconfig) array_ | _(Optional)_
PuppetDBSDConfigs defines a list of PuppetDB service discovery configurations. | -| relabelConfigs#
_[RelabelConfig](#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](#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](#staticconfig) array_ | _(Optional)_
StaticConfigs defines a list of static targets with a common label set. | -| tlsConfig#
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | -| vm_scrape_params#
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | +| tlsConfig _(or tls_config)_ #
_[TLSConfig](#tlsconfig)_ | _(Optional)_
TLSConfig configuration to use when scraping the endpoint | +| vm_scrape_params _(or vmScrapeParams)_ #
_[VMScrapeParams](#vmscrapeparams)_ | _(Optional)_
VMScrapeParams defines VictoriaMetrics specific scrape parameters | | vultrSDConfigs#
_[VultrSDConfig](#vultrsdconfig) array_ | _(Optional)_
VultrSDConfigs defines a list of Vultr service discovery configurations. | | yandexCloudSDConfigs#
_[YandexCloudSDConfig](#yandexcloudsdconfig) array_ | _(Optional)_
YandexCloudSDConfigs defines a list of Yandex Cloud service discovery configurations. | @@ -4751,14 +4744,14 @@ Appears in: [Endpoint](#endpoint), [EndpointScrapeParams](#endpointscrapeparams) | 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](#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](#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 @@ -4784,9 +4777,8 @@ Appears in: [VMClusterSpec](#vmclusterspec) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling.
Note, enabling this option disables vmselect to vmselect communication. In most cases it's not an issue. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -4880,10 +4872,10 @@ Appears in: [VMSingle](#vmsingle) | Field | Description | | --- | --- | -| additionalScrapeConfigs#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#affinity-v1-core)_ | _(Optional)_
Affinity If specified, the pod's scheduling constraints. | | apiServerConfig#
_[APIServerConfig](#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](#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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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 since v0.57.0 version | @@ -4897,52 +4889,51 @@ Appears in: [VMSingle](#vmsingle) | dnsConfig#
_[PodDNSConfig](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#poddnsconfig-v1-core)_ | _(Optional)_
Specifies the DNS parameters of a pod.
Parameters specified here will be merged to the generated DNS
configuration based on DNSPolicy. | | dnsPolicy#
_[DNSPolicy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#dnspolicy-v1-core)_ | _(Optional)_
DNSPolicy sets DNS policy for the pod | | downsampling#
_[DownsamplingConfig](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| globalScrapeMetricRelabelConfigs#
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | -| globalScrapeRelabelConfigs#
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| globalScrapeMetricRelabelConfigs _(or global_scrape_metric_relabel_configs)_ #
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
GlobalScrapeMetricRelabelConfigs is a global metric relabel configuration, which is applied to each scrape job. | +| globalScrapeRelabelConfigs _(or global_scrape_relabel_configs)_ #
_[RelabelConfig](#relabelconfig) array_ | _(Optional)_
GlobalScrapeRelabelConfigs is a global relabel configuration, which is applied to each samples of each scrape job during service discovery. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#container-v1-core) 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](#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](#insertports)_ | _(Required)_
InsertPorts - additional listen ports for data ingestion. | | license#
_[License](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#probe-v1-core)_ | _(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](#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. | -| nodeScrapeNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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 | +| 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#embeddedobjectmetadata)_ | _(Optional)_
PodMetadata configures Labels and Annotations which are propagated to the VMSingle pods. | -| podScrapeNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#podreadinessgate-v1-core) array_ | _(Required)_
ReadinessGates defines pod readiness gates | | readinessProbe#
_[Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#probe-v1-core)_ | _(Optional)_
ReadinessProbe that will be added to CR pod | | relabelConfig#
_[ConfigMapKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#configmapkeyselector-v1-core)_ | _(Optional)_
RelabelConfig ConfigMap with global relabel config -remoteWrite.relabelConfig
This relabeling is applied to all the collected metrics before sending them to remote storage. | @@ -4953,27 +4944,27 @@ Appears in: [VMSingle](#vmsingle) | 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](#scrapeclass) array_ | _(Optional)_
ScrapeClasses defines the list of scrape classes to expose to scraping objects such as
PodScrapes, ServiceScrapes, Probes and ScrapeConfigs. | -| scrapeConfigNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#vmservicescrapespec)_ | _(Optional)_
ServiceScrapeSpec that will be added to vmsingle VMServiceScrape spec | | serviceSpec#
_[AdditionalServiceSpec](#additionalservicespec)_ | _(Optional)_
ServiceSpec that will be added to vmsingle service spec | | startupProbe#
_[Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#probe-v1-core)_ | _(Optional)_
StartupProbe that will be added to CR pod | -| staticScrapeNamespaceSelector#
_[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#labelselector-v1-meta)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#persistentvolumeclaimspec-v1-core)_ | _(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](#embeddedobjectmetadata)_ | _(Optional)_
StorageMeta defines annotations and labels attached to PVC for given vmsingle CR | @@ -4984,7 +4975,7 @@ Appears in: [VMSingle](#vmsingle) | useDefaultResources#
_boolean_ | _(Optional)_
UseDefaultResources controls resource settings
By default, operator sets built-in resource requirements | | 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
Removed since v0.67.0: this property is ignored and no longer needed | -| 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](#vmbackup)_ | _(Optional)_
VMBackup configuration for backup | | volumeMounts#
_[VolumeMount](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#volumemount-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#volume-v1-core) array_ | _(Required)_
Volumes allows configuration of additional volumes on the output Deployment/StatefulSet definition.
Volumes specified will be appended to other volumes that are generated.
/ +optional | @@ -5033,9 +5024,8 @@ Appears in: [VMClusterSpec](#vmclusterspec) | extraArgs#
_object (keys:string, values:string)_ | _(Optional)_
ExtraArgs that will be passed to the application container
for example remoteWrite.tmpDataPath: /tmp | | extraEnvs#
_[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envvar-v1-core) array_ | _(Optional)_
ExtraEnvs that will be passed to the application container | | extraEnvsFrom#
_[EnvFromSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#envfromsource-v1-core) array_ | _(Optional)_
ExtraEnvsFrom defines source of env variables for the application container
could either be secret or configmap | -| hostAliases#
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) array_ | _(Optional)_
HostAliases provides mapping for ip and hostname,
that would be propagated to pod,
cannot be used with HostNetwork. | +| hostAliases _(or host_aliases)_ #
_[HostAlias](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#hostalias-v1-core) 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](#embeddedhpa)_ | _(Optional)_
Configures horizontal pod autoscaling.
Note, downscaling is not supported. | | image#
_[Image](#image)_ | _(Optional)_
Image - docker image settings
if no specified operator uses default version from operator config | | imagePullSecrets#
_[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core) 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/#referring-to-an-imagepullsecrets-on-a-pod | @@ -5191,16 +5181,16 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| api_key#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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 @@ -5231,11 +5221,11 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| api_url#
_string_ | _(Optional)_
The Webex Teams API URL, i.e. https://webexapis.com/v1/messages | -| http_config#
_[HTTPConfig](#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](#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 @@ -5246,12 +5236,12 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| http_config#
_[HTTPConfig](#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](#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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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 @@ -5262,17 +5252,17 @@ Appears in: [Receiver](#receiver) | Field | Description | | --- | --- | -| agent_id#
_string_ | _(Optional)_
| -| api_secret#
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#httpconfig)_ | _(Optional)_
HTTP client configuration. | +| agent_id _(or agentId)_ #
_string_ | _(Optional)_
| +| api_secret _(or apiSecret)_ #
_[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#secretkeyselector-v1-core)_ | _(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](#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 diff --git a/docs/config.yaml b/docs/config.yaml index 8b894c9f0..2fa2078aa 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 421072fd3..c7372f934 100644 --- a/docs/templates/api/type.tpl +++ b/docs/templates/api/type.tpl @@ -66,7 +66,7 @@ Appears in: {{ range $i, $ref := $type.SortedReferences }}{{ if $i }}, {{ end }} {{- range $memberKeys }} {{- $member := index $members . }} {{- $id := lower (printf "%s-%s" $type.Name $member.Name) }} -| {{ $member.Name }}#
_{{ markdownRenderType $member.Type }}_ | {{ if $member.Markers.optional }}_(Optional)_
{{else}}_(Required)_
{{ end }}{{ template "type_members" $member }}{{ template "deprecated" (dict "member" $member "type" $type.Name) }} | +| {{ $member.Name }}{{ if $member.Aliases }} _(or {{ range $i, $a := $member.Aliases }}{{ if $i }}, {{ end }}{{ $a }}{{ end }})_ {{ end }}#
_{{ markdownRenderType $member.Type }}_ | {{ if $member.Markers.optional }}_(Optional)_
{{else}}_(Required)_
{{ end }}{{ template "type_members" $member }}{{ template "deprecated" (dict "member" $member "type" $type.Name) }} | {{- end }} {{- end }} {{- end }} diff --git a/go.mod b/go.mod index cde5fff8b..463674063 100644 --- a/go.mod +++ b/go.mod @@ -64,6 +64,7 @@ require ( github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fxamacker/cbor/v2 v2.9.2 // indirect + github.com/go-json-experiment/json v0.0.0-20260520185125-572e7c383686 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/zapr v1.3.0 // indirect github.com/go-openapi/jsonpointer v0.23.1 // indirect diff --git a/go.sum b/go.sum index 08e1a23e3..4bbf28aeb 100644 --- a/go.sum +++ b/go.sum @@ -96,6 +96,8 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-json-experiment/json v0.0.0-20260520185125-572e7c383686 h1:NZBJxCpbHS1gzS6xAmyxbJznosZIIPk9IB42v62UvKA= +github.com/go-json-experiment/json v0.0.0-20260520185125-572e7c383686/go.mod h1:tphK2c80bpPhMOI4v6bIc2xWywPfbqi1Z06+RcrMkDg= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= diff --git a/internal/controller/operator/factory/build/podtemplate.go b/internal/controller/operator/factory/build/podtemplate.go index c0a0dd3c3..0f4fe19e8 100644 --- a/internal/controller/operator/factory/build/podtemplate.go +++ b/internal/controller/operator/factory/build/podtemplate.go @@ -16,9 +16,6 @@ func PodTemplateAddCommonParams(dst *corev1.PodTemplateSpec, params *vmv1beta1.C dst.Spec.SchedulerName = params.SchedulerName dst.Spec.RuntimeClassName = params.RuntimeClassName dst.Spec.HostAliases = params.HostAliases - if len(params.HostAliasesUnderScore) > 0 { - dst.Spec.HostAliases = params.HostAliasesUnderScore - } dst.Spec.PriorityClassName = params.PriorityClassName dst.Spec.HostNetwork = params.HostNetwork dst.Spec.DNSPolicy = params.DNSPolicy diff --git a/internal/controller/operator/factory/build/podtemplate_test.go b/internal/controller/operator/factory/build/podtemplate_test.go index b27d227dc..95ca08ddd 100644 --- a/internal/controller/operator/factory/build/podtemplate_test.go +++ b/internal/controller/operator/factory/build/podtemplate_test.go @@ -58,13 +58,10 @@ func TestPodTemplateParams(t *testing.T) { }, ) - // HostAliasesUnderScore takes precedence over HostAliases + // host_aliases (snake_case) accepted alongside hostAliases via case:ignore f( &vmv1beta1.CommonAppsParams{ HostAliases: []corev1.HostAlias{ - {IP: "1.2.3.4", 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 164f5a47e..c59175e6c 100644 --- a/internal/controller/operator/factory/build/vmscrape.go +++ b/internal/controller/operator/factory/build/vmscrape.go @@ -200,7 +200,7 @@ func VMPodScrape(b podScrapeBuilder, portName string) *vmv1beta1.VMPodScrape { 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 938a92ad2..47c390034 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 4125ddf53..3198ed958 100644 --- a/internal/controller/operator/factory/vmagent/vmagent_test.go +++ b/internal/controller/operator/factory/vmagent/vmagent_test.go @@ -2266,7 +2266,10 @@ func TestCreateOrUpdateStreamAggrConfig(t *testing.T) { without: - pod output_relabel_configs: - - regex: (.+):.+ + - source_labels: + - __name__ + target_label: metric + regex: (.+):.+ ` assert.Equal(t, wantRemote, remoteData) }, @@ -2321,7 +2324,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 e46f1a78e..e36afb1b1 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 cdbeb54c5..ac3798eec 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"}, }, }, },