apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.6.2
  name: vmagents.operator.victoriametrics.com
spec:
  group: operator.victoriametrics.com
  names:
    kind: VMAgent
    listKind: VMAgentList
    plural: vmagents
    singular: vmagent
  scope: Namespaced
  versions:
  - name: v1beta1
    schema:
      openAPIV3Schema:
        description: VMAgent - is a tiny but brave agent, which helps you collect
          metrics from various sources and stores them in VictoriaMetrics or any other
          Prometheus-compatible storage system that supports the remote_write protocol.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: VMAgentSpec defines the desired state of VMAgent
            properties:
              aPIServerConfig:
                description: 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/.
                properties:
                  basicAuth:
                    description: BasicAuth allow an endpoint to authenticate over
                      basic authentication
                    properties:
                      password:
                        description: The secret in the service scrape namespace that
                          contains the password for authentication. It must be at
                          them same namespace as CRD
                        properties:
                          key:
                            description: The key of the secret to select from.  Must
                              be a valid secret key.
                            type: string
                          name:
                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              TODO: Add other useful fields. apiVersion, kind, uid?'
                            type: string
                          optional:
                            description: Specify whether the Secret or its key must
                              be defined
                            type: boolean
                        required:
                        - key
                        type: object
                      password_file:
                        description: PasswordFile defines path to password file at
                          disk
                        type: string
                      username:
                        description: The secret in the service scrape namespace that
                          contains the username for authentication. It must be at
                          them same namespace as CRD
                        properties:
                          key:
                            description: The key of the secret to select from.  Must
                              be a valid secret key.
                            type: string
                          name:
                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              TODO: Add other useful fields. apiVersion, kind, uid?'
                            type: string
                          optional:
                            description: Specify whether the Secret or its key must
                              be defined
                            type: boolean
                        required:
                        - key
                        type: object
                    type: object
                  bearerToken:
                    description: Bearer token for accessing apiserver.
                    type: string
                  bearerTokenFile:
                    description: File to read bearer token for accessing apiserver.
                    type: string
                  host:
                    description: Host of apiserver. A valid string consisting of a
                      hostname or IP followed by an optional port number
                    type: string
                  tlsConfig:
                    description: TLSConfig Config to use for accessing apiserver.
                    properties:
                      ca:
                        description: Stuct containing the CA cert to use for the targets.
                        properties:
                          configMap:
                            description: ConfigMap containing data to use for the
                              targets.
                            properties:
                              key:
                                description: The key to select.
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind,
                                  uid?'
                                type: string
                              optional:
                                description: Specify whether the ConfigMap or its
                                  key must be defined
                                type: boolean
                            required:
                            - key
                            type: object
                          secret:
                            description: Secret containing data to use for the targets.
                            properties:
                              key:
                                description: The key of the secret to select from.  Must
                                  be a valid secret key.
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind,
                                  uid?'
                                type: string
                              optional:
                                description: Specify whether the Secret or its key
                                  must be defined
                                type: boolean
                            required:
                            - key
                            type: object
                        type: object
                      caFile:
                        description: Path to the CA cert in the container to use for
                          the targets.
                        type: string
                      cert:
                        description: Struct containing the client cert file for the
                          targets.
                        properties:
                          configMap:
                            description: ConfigMap containing data to use for the
                              targets.
                            properties:
                              key:
                                description: The key to select.
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind,
                                  uid?'
                                type: string
                              optional:
                                description: Specify whether the ConfigMap or its
                                  key must be defined
                                type: boolean
                            required:
                            - key
                            type: object
                          secret:
                            description: Secret containing data to use for the targets.
                            properties:
                              key:
                                description: The key of the secret to select from.  Must
                                  be a valid secret key.
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind,
                                  uid?'
                                type: string
                              optional:
                                description: Specify whether the Secret or its key
                                  must be defined
                                type: boolean
                            required:
                            - key
                            type: object
                        type: object
                      certFile:
                        description: Path to the client cert file in the container
                          for the targets.
                        type: string
                      insecureSkipVerify:
                        description: Disable target certificate validation.
                        type: boolean
                      keyFile:
                        description: Path to the client key file in the container
                          for the targets.
                        type: string
                      keySecret:
                        description: Secret containing the client key file for the
                          targets.
                        properties:
                          key:
                            description: The key of the secret to select from.  Must
                              be a valid secret key.
                            type: string
                          name:
                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              TODO: Add other useful fields. apiVersion, kind, uid?'
                            type: string
                          optional:
                            description: Specify whether the Secret or its key must
                              be defined
                            type: boolean
                        required:
                        - key
                        type: object
                      serverName:
                        description: Used to verify the hostname for the targets.
                        type: string
                    type: object
                required:
                - host
                type: object
              additionalScrapeConfigs:
                description: 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.
                  It is advised to review VMAgent release notes to ensure that no
                  incompatible scrape configs are going to break VMAgent after the
                  upgrade.
                properties:
                  key:
                    description: The key of the secret to select from.  Must be a
                      valid secret key.
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Add other useful fields. apiVersion, kind, uid?'
                    type: string
                  optional:
                    description: Specify whether the Secret or its key must be defined
                    type: boolean
                required:
                - key
                type: object
              affinity:
                description: Affinity If specified, the pod's scheduling constraints.
                type: object
                x-kubernetes-preserve-unknown-fields: true
              arbitraryFSAccessThroughSMs:
                description: ArbitraryFSAccessThroughSMs configures whether configuration
                  based on a service scrape can access arbitrary files on the file
                  system of the VMAgent container e.g. bearer token files.
                properties:
                  deny:
                    type: boolean
                type: object
              configMaps:
                description: ConfigMaps is a list of ConfigMaps in the same namespace
                  as the vmagent object, which shall be mounted into the vmagent Pods.
                  will be mounted at path  /etc/vm/configs
                items:
                  type: string
                type: array
              containers:
                description: Containers property allows to inject additions sidecars
                  or to patch existing containers. It can be useful for proxies, backup,
                  etc.
                items:
                  description: A single application container that you want to run
                    within a pod.
                  required:
                  - name
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              dnsPolicy:
                description: DNSPolicy set DNS policy for the pod
                type: string
              enforcedNamespaceLabel:
                description: 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.
                type: string
              externalLabels:
                additionalProperties:
                  type: string
                description: ExternalLabels The labels to add to any time series scraped
                  by vmagent. it doesn't affect metrics ingested directly by push
                  API's
                type: object
              extraArgs:
                additionalProperties:
                  type: string
                description: 'ExtraArgs that will be passed to  VMAgent pod for example
                  remoteWrite.tmpDataPath: /tmp it would be converted to flag --remoteWrite.tmpDataPath=/tmp'
                type: object
              extraEnvs:
                description: ExtraEnvs that will be added to VMAgent pod
                items:
                  description: EnvVar represents an environment variable present in
                    a Container.
                  properties:
                    name:
                      description: Name of the environment variable. Must be a C_IDENTIFIER.
                      type: string
                    value:
                      description: 'Variable references $(VAR_NAME) are expanded using
                        the previously defined environment variables in the container
                        and any service environment variables. If a variable cannot
                        be resolved, the reference in the input string will be unchanged.
                        Double $$ are reduced to a single $, which allows for escaping
                        the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the
                        string literal "$(VAR_NAME)". Escaped references will never
                        be expanded, regardless of whether the variable exists or
                        not. Defaults to "".'
                      type: string
                  required:
                  - name
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              host_aliases:
                description: HostAliases provides mapping between ip and hostnames,
                  that would be propagated to pod, cannot be used with HostNetwork.
                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
                    ip:
                      description: IP address of the host file entry.
                      type: string
                  type: object
                type: array
              hostNetwork:
                description: HostNetwork controls whether the pod may use the node
                  network namespace
                type: boolean
              ignoreNamespaceSelectors:
                description: IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector
                  settings from the podscrape and vmservicescrape configs, and they
                  will only discover endpoints within their current namespace.  Defaults
                  to false.
                type: boolean
              image:
                description: Image - docker image settings for VMAgent if no specified
                  operator uses default config version
                properties:
                  pullPolicy:
                    description: PullPolicy describes how to pull docker image
                    type: string
                  repository:
                    description: Repository contains name of docker image + it's repository
                      if needed
                    type: string
                  tag:
                    description: Tag contains desired docker image version
                    type: string
                type: object
              imagePullSecrets:
                description: ImagePullSecrets An optional list of references to secrets
                  in the same namespace to use for pulling images from registries
                  see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod
                items:
                  description: LocalObjectReference contains enough information to
                    let you locate the referenced object inside the same namespace.
                  properties:
                    name:
                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        TODO: Add other useful fields. apiVersion, kind, uid?'
                      type: string
                  type: object
                type: array
              initContainers:
                description: 'InitContainers allows adding initContainers to the pod
                  definition. Those can be used to e.g. fetch secrets for injection
                  into the vmagent configuration from external sources. Any errors
                  during the execution of an initContainer will lead to a restart
                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
                  Using initContainers for any use case other then secret fetching
                  is entirely outside the scope of what the maintainers will support
                  and by doing so, you accept that this behaviour may break at any
                  time without notice.'
                items:
                  description: A single application container that you want to run
                    within a pod.
                  required:
                  - name
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              inlineRelabelConfig:
                description: InlineRelabelConfig - defines GlobalRelabelConfig for
                  vmagent, can be defined directly at CRD.
                items:
                  description: 'RelabelConfig allows dynamic rewriting of the label
                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
                    of configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                  properties:
                    action:
                      description: Action to perform based on regex matching. Default
                        is 'replace'
                      type: string
                    modulus:
                      description: Modulus to take of the hash of the source label
                        values.
                      format: int64
                      type: integer
                    regex:
                      description: Regular expression against which the extracted
                        value is matched. Default is '(.*)'
                      type: string
                    replacement:
                      description: Replacement value against which a regex replace
                        is performed if the regular expression matches. Regex capture
                        groups are available. Default is '$1'
                      type: string
                    separator:
                      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 using the configured separator
                        and matched against the configured regular expression for
                        the replace, keep, and drop actions.
                      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
              inlineScrapeConfig:
                description: '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.
                  It is advised to review VMAgent release notes to ensure that no
                  incompatible scrape configs are going to break VMAgent after the
                  upgrade. it should be defined as single yaml file. inlineScrapeConfig:
                  |     - job_name: "prometheus"       static_configs:       - targets:
                  ["localhost:9090"]'
                type: string
              insertPorts:
                description: InsertPorts - additional listen ports for data ingestion.
                properties:
                  graphitePort:
                    description: GraphitePort listen port
                    type: string
                  influxPort:
                    description: InfluxPort listen port
                    type: string
                  openTSDBHTTPPort:
                    description: OpenTSDBHTTPPort for http connections.
                    type: string
                  openTSDBPort:
                    description: OpenTSDBPort for tcp and udp listen
                    type: string
                type: object
              livenessProbe:
                description: LivenessProbe that will be added CRD pod
                type: object
                x-kubernetes-preserve-unknown-fields: true
              logFormat:
                description: LogFormat for VMAgent to be configured with.
                enum:
                - default
                - json
                type: string
              logLevel:
                description: LogLevel for VMAgent to be configured with. INFO, WARN,
                  ERROR, FATAL, PANIC
                enum:
                - INFO
                - WARN
                - ERROR
                - FATAL
                - PANIC
                type: string
              nodeScrapeNamespaceSelector:
                description: NodeScrapeNamespaceSelector defines Namespaces to be
                  selected for VMNodeScrape discovery. Works in combination with Selector.
                  NamespaceSelector nil - only objects at VMAgent namespace. Selector
                  nil - only objects at NamespaceSelector namespaces. If both nil
                  - behaviour controlled by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              nodeScrapeRelabelTemplate:
                description: NodeScrapeRelabelTemplate defines relabel config, that
                  will be added to each VMNodeScrape. it's useful for adding specific
                  labels to all targets
                items:
                  description: 'RelabelConfig allows dynamic rewriting of the label
                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
                    of configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                  properties:
                    action:
                      description: Action to perform based on regex matching. Default
                        is 'replace'
                      type: string
                    modulus:
                      description: Modulus to take of the hash of the source label
                        values.
                      format: int64
                      type: integer
                    regex:
                      description: Regular expression against which the extracted
                        value is matched. Default is '(.*)'
                      type: string
                    replacement:
                      description: Replacement value against which a regex replace
                        is performed if the regular expression matches. Regex capture
                        groups are available. Default is '$1'
                      type: string
                    separator:
                      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 using the configured separator
                        and matched against the configured regular expression for
                        the replace, keep, and drop actions.
                      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
              nodeScrapeSelector:
                description: NodeScrapeSelector defines VMNodeScrape to be selected
                  for scraping. Works in combination with NamespaceSelector. NamespaceSelector
                  nil - only objects at VMAgent namespace. Selector nil - only objects
                  at NamespaceSelector namespaces. If both nil - behaviour controlled
                  by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              nodeSelector:
                additionalProperties:
                  type: string
                description: NodeSelector Define which Nodes the Pods are scheduled
                  on.
                type: object
              overrideHonorLabels:
                description: OverrideHonorLabels if set to true overrides all user
                  configured honor_labels. If HonorLabels is set in ServiceScrape
                  or PodScrape to true, this overrides honor_labels to false.
                type: boolean
              overrideHonorTimestamps:
                description: OverrideHonorTimestamps allows to globally enforce honoring
                  timestamps in all scrape configs.
                type: boolean
              podDisruptionBudget:
                description: PodDisruptionBudget created by operator
                properties:
                  maxUnavailable:
                    anyOf:
                    - type: integer
                    - type: string
                    description: An eviction is allowed if at most "maxUnavailable"
                      pods selected by "selector" are unavailable after the eviction,
                      i.e. even in absence of the evicted pod. For example, one can
                      prevent all voluntary evictions by specifying 0. This is a mutually
                      exclusive setting with "minAvailable".
                    x-kubernetes-int-or-string: true
                  minAvailable:
                    anyOf:
                    - type: integer
                    - type: string
                    description: An eviction is allowed if at least "minAvailable"
                      pods selected by "selector" will still be available after the
                      eviction, i.e. even in the absence of the evicted pod.  So for
                      example you can prevent all voluntary evictions by specifying
                      "100%".
                    x-kubernetes-int-or-string: true
                type: object
              podMetadata:
                description: PodMetadata configures Labels and Annotations which are
                  propagated to the vmagent pods.
                properties:
                  annotations:
                    additionalProperties:
                      type: string
                    description: 'Annotations is an unstructured key value map stored
                      with a resource that may be set by external tools to store and
                      retrieve arbitrary metadata. They are not queryable and should
                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
                    type: object
                  labels:
                    additionalProperties:
                      type: string
                    description: 'Labels Map of string keys and values that can be
                      used to organize and categorize (scope and select) objects.
                      May match selectors of replication controllers and services.
                      More info: http://kubernetes.io/docs/user-guide/labels'
                    type: object
                  name:
                    description: 'Name must be unique within a namespace. Is required
                      when creating resources, although some resources may allow a
                      client to request the generation of an appropriate name automatically.
                      Name is primarily intended for creation idempotence and configuration
                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
                    type: string
                type: object
              podScrapeNamespaceSelector:
                description: PodScrapeNamespaceSelector defines Namespaces to be selected
                  for VMPodScrape discovery. Works in combination with Selector. NamespaceSelector
                  nil - only objects at VMAgent namespace. Selector nil - only objects
                  at NamespaceSelector namespaces. If both nil - behaviour controlled
                  by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              podScrapeRelabelTemplate:
                description: PodScrapeRelabelTemplate defines relabel config, that
                  will be added to each VMPodScrape. it's useful for adding specific
                  labels to all targets
                items:
                  description: 'RelabelConfig allows dynamic rewriting of the label
                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
                    of configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                  properties:
                    action:
                      description: Action to perform based on regex matching. Default
                        is 'replace'
                      type: string
                    modulus:
                      description: Modulus to take of the hash of the source label
                        values.
                      format: int64
                      type: integer
                    regex:
                      description: Regular expression against which the extracted
                        value is matched. Default is '(.*)'
                      type: string
                    replacement:
                      description: Replacement value against which a regex replace
                        is performed if the regular expression matches. Regex capture
                        groups are available. Default is '$1'
                      type: string
                    separator:
                      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 using the configured separator
                        and matched against the configured regular expression for
                        the replace, keep, and drop actions.
                      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
              podScrapeSelector:
                description: PodScrapeSelector defines PodScrapes to be selected for
                  target discovery. Works in combination with NamespaceSelector. NamespaceSelector
                  nil - only objects at VMAgent namespace. Selector nil - only objects
                  at NamespaceSelector namespaces. If both nil - behaviour controlled
                  by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              podSecurityPolicyName:
                description: PodSecurityPolicyName - defines name for podSecurityPolicy
                  in case of empty value, prefixedName will be used.
                type: string
              port:
                description: Port listen address
                type: string
              priorityClassName:
                description: PriorityClassName assigned to the Pods
                type: string
              probeNamespaceSelector:
                description: ProbeNamespaceSelector defines Namespaces to be selected
                  for VMProbe discovery. Works in combination with Selector. NamespaceSelector
                  nil - only objects at VMAgent namespace. Selector nil - only objects
                  at NamespaceSelector namespaces. If both nil - behaviour controlled
                  by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              probeScrapeRelabelTemplate:
                description: ProbeScrapeRelabelTemplate defines relabel config, that
                  will be added to each VMProbeScrape. it's useful for adding specific
                  labels to all targets
                items:
                  description: 'RelabelConfig allows dynamic rewriting of the label
                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
                    of configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                  properties:
                    action:
                      description: Action to perform based on regex matching. Default
                        is 'replace'
                      type: string
                    modulus:
                      description: Modulus to take of the hash of the source label
                        values.
                      format: int64
                      type: integer
                    regex:
                      description: Regular expression against which the extracted
                        value is matched. Default is '(.*)'
                      type: string
                    replacement:
                      description: Replacement value against which a regex replace
                        is performed if the regular expression matches. Regex capture
                        groups are available. Default is '$1'
                      type: string
                    separator:
                      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 using the configured separator
                        and matched against the configured regular expression for
                        the replace, keep, and drop actions.
                      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
              probeSelector:
                description: ProbeSelector defines VMProbe to be selected for target
                  probing. Works in combination with NamespaceSelector. NamespaceSelector
                  nil - only objects at VMAgent namespace. Selector nil - only objects
                  at NamespaceSelector namespaces. If both nil - behaviour controlled
                  by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              readinessProbe:
                description: ReadinessProbe that will be added CRD pod
                type: object
                x-kubernetes-preserve-unknown-fields: true
              relabelConfig:
                description: RelabelConfig ConfigMap with global relabel config -remoteWrite.relabelConfig
                  This relabeling is applied to all the collected metrics before sending
                  them to remote storage.
                properties:
                  key:
                    description: The key to select.
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Add other useful fields. apiVersion, kind, uid?'
                    type: string
                  optional:
                    description: Specify whether the ConfigMap or its key must be
                      defined
                    type: boolean
                required:
                - key
                type: object
              remoteWrite:
                description: 'RemoteWrite list of victoria metrics /some other remote
                  write system for vm it must looks like: http://victoria-metrics-single:8429/api/v1/write
                  or for cluster different url https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#splitting-data-streams-among-multiple-systems'
                items:
                  description: VMAgentRemoteWriteSpec defines the remote storage configuration
                    for VmAgent
                  properties:
                    basicAuth:
                      description: BasicAuth allow an endpoint to authenticate over
                        basic authentication
                      properties:
                        password:
                          description: The secret in the service scrape namespace
                            that contains the password for authentication. It must
                            be at them same namespace as CRD
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                        password_file:
                          description: PasswordFile defines path to password file
                            at disk
                          type: string
                        username:
                          description: The secret in the service scrape namespace
                            that contains the username for authentication. It must
                            be at them same namespace as CRD
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                      type: object
                    bearerTokenSecret:
                      description: Optional bearer auth token to use for -remoteWrite.url
                      properties:
                        key:
                          description: The key of the secret to select from.  Must
                            be a valid secret key.
                          type: string
                        name:
                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            TODO: Add other useful fields. apiVersion, kind, uid?'
                          type: string
                        optional:
                          description: Specify whether the Secret or its key must
                            be defined
                          type: boolean
                      required:
                      - key
                      type: object
                    inlineUrlRelabelConfig:
                      description: InlineUrlRelabelConfig defines relabeling config
                        for remoteWriteURL, it can be defined at crd spec.
                      items:
                        description: 'RelabelConfig allows dynamic rewriting of the
                          label set, being applied to samples before ingestion. It
                          defines `<metric_relabel_configs>`-section of configuration.
                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                        properties:
                          action:
                            description: Action to perform based on regex matching.
                              Default is 'replace'
                            type: string
                          modulus:
                            description: Modulus to take of the hash of the source
                              label values.
                            format: int64
                            type: integer
                          regex:
                            description: Regular expression against which the extracted
                              value is matched. Default is '(.*)'
                            type: string
                          replacement:
                            description: Replacement value against which a regex replace
                              is performed if the regular expression matches. Regex
                              capture groups are available. Default is '$1'
                            type: string
                          separator:
                            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 using the configured
                              separator and matched against the configured regular
                              expression for the replace, keep, and drop actions.
                            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
                    oauth2:
                      description: OAuth2 defines auth configuration
                      properties:
                        client_id:
                          description: The secret or configmap containing the OAuth2
                            client id
                          properties:
                            configMap:
                              description: ConfigMap containing data to use for the
                                targets.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                            secret:
                              description: Secret containing data to use for the targets.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                          type: object
                        client_secret:
                          description: The secret containing the OAuth2 client secret
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                        client_secret_file:
                          description: ClientSecretFile defines path for client secret
                            file.
                          type: string
                        endpoint_params:
                          additionalProperties:
                            type: string
                          description: Parameters to append to the token URL
                          type: object
                        scopes:
                          description: OAuth2 scopes used for the token request
                          items:
                            type: string
                          type: array
                        token_url:
                          description: The URL to fetch the token from
                          minLength: 1
                          type: string
                      required:
                      - client_id
                      - token_url
                      type: object
                    sendTimeout:
                      description: Timeout for sending a single block of data to -remoteWrite.url
                        (default 1m0s)
                      pattern: '[0-9]+(ms|s|m|h)'
                      type: string
                    tlsConfig:
                      description: TLSConfig describes tls configuration for remote
                        write target
                      properties:
                        ca:
                          description: Stuct containing the CA cert to use for the
                            targets.
                          properties:
                            configMap:
                              description: ConfigMap containing data to use for the
                                targets.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                            secret:
                              description: Secret containing data to use for the targets.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                          type: object
                        caFile:
                          description: Path to the CA cert in the container to use
                            for the targets.
                          type: string
                        cert:
                          description: Struct containing the client cert file for
                            the targets.
                          properties:
                            configMap:
                              description: ConfigMap containing data to use for the
                                targets.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                            secret:
                              description: Secret containing data to use for the targets.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                          type: object
                        certFile:
                          description: Path to the client cert file in the container
                            for the targets.
                          type: string
                        insecureSkipVerify:
                          description: Disable target certificate validation.
                          type: boolean
                        keyFile:
                          description: Path to the client key file in the container
                            for the targets.
                          type: string
                        keySecret:
                          description: Secret containing the client key file for the
                            targets.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                        serverName:
                          description: Used to verify the hostname for the targets.
                          type: string
                      type: object
                    url:
                      description: URL of the endpoint to send samples to.
                      type: string
                    urlRelabelConfig:
                      description: ConfigMap with relabeling config which is applied
                        to metrics before sending them to the corresponding -remoteWrite.url
                      properties:
                        key:
                          description: The key to select.
                          type: string
                        name:
                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            TODO: Add other useful fields. apiVersion, kind, uid?'
                          type: string
                        optional:
                          description: Specify whether the ConfigMap or its key must
                            be defined
                          type: boolean
                      required:
                      - key
                      type: object
                  required:
                  - url
                  type: object
                type: array
              remoteWriteSettings:
                description: RemoteWriteSettings defines global settings for all remoteWrite
                  urls.
                properties:
                  flushInterval:
                    description: Interval for flushing the data to remote storage.
                      (default 1s)
                    pattern: '[0-9]+(ms|s|m|h)'
                    type: string
                  label:
                    additionalProperties:
                      type: string
                    description: Optional labels in the form 'name=value' to add to
                      all the metrics before sending them
                    type: object
                  maxBlockSize:
                    description: The maximum size in bytes of unpacked request to
                      send to remote storage
                    format: int32
                    type: integer
                  maxDiskUsagePerURL:
                    description: The maximum file-based buffer size in bytes at -remoteWrite.tmpDataPath
                    format: int32
                    type: integer
                  queues:
                    description: The number of concurrent queues
                    format: int32
                    type: integer
                  showURL:
                    description: Whether to show -remoteWrite.url in the exported
                      metrics. It is hidden by default, since it can contain sensitive
                      auth info
                    type: boolean
                  tmpDataPath:
                    description: Path to directory where temporary data for remote
                      write component is stored (default vmagent-remotewrite-data)
                    type: string
                type: object
              replicaCount:
                description: ReplicaCount is the expected size of the VMAgent cluster.
                  The controller will eventually make the size of the running cluster
                  equal to the expected size. NOTE enable VMSingle deduplication for
                  replica usage
                format: int32
                type: integer
              resources:
                description: Resources container resource request and limits, https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                  if not specified - default setting will be used
                properties:
                  limits:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: 'Limits describes the maximum amount of compute resources
                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                    type: object
                  requests:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: 'Requests describes the minimum amount of compute
                      resources required. If Requests is omitted for a container,
                      it defaults to Limits if that is explicitly specified, otherwise
                      to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                    type: object
                type: object
              rollingUpdate:
                description: RollingUpdate - overrides deployment update params.
                properties:
                  maxSurge:
                    anyOf:
                    - type: integer
                    - type: string
                    description: 'The maximum number of pods that can be scheduled
                      above the desired number of pods. Value can be an absolute number
                      (ex: 5) or a percentage of desired pods (ex: 10%). This can
                      not be 0 if MaxUnavailable is 0. Absolute number is calculated
                      from percentage by rounding up. Defaults to 25%. Example: when
                      this is set to 30%, the new ReplicaSet can be scaled up immediately
                      when the rolling update starts, such that the total number of
                      old and new pods do not exceed 130% of desired pods. Once old
                      pods have been killed, new ReplicaSet can be scaled up further,
                      ensuring that total number of pods running at any time during
                      the update is at most 130% of desired pods.'
                    x-kubernetes-int-or-string: true
                  maxUnavailable:
                    anyOf:
                    - type: integer
                    - type: string
                    description: 'The maximum number of pods that can be unavailable
                      during the update. Value can be an absolute number (ex: 5) or
                      a percentage of desired pods (ex: 10%). Absolute number is calculated
                      from percentage by rounding down. This can not be 0 if MaxSurge
                      is 0. Defaults to 25%. Example: when this is set to 30%, the
                      old ReplicaSet can be scaled down to 70% of desired pods immediately
                      when the rolling update starts. Once new pods are ready, old
                      ReplicaSet can be scaled down further, followed by scaling up
                      the new ReplicaSet, ensuring that the total number of pods available
                      at all times during the update is at least 70% of desired pods.'
                    x-kubernetes-int-or-string: true
                type: object
              runtimeClassName:
                description: RuntimeClassName - defines runtime class for kubernetes
                  pod. https://kubernetes.io/docs/concepts/containers/runtime-class/
                type: string
              schedulerName:
                description: SchedulerName - defines kubernetes scheduler name
                type: string
              scrapeInterval:
                description: ScrapeInterval defines how often scrape targets by default
                pattern: '[0-9]+(ms|s|m|h)'
                type: string
              secrets:
                description: Secrets is a list of Secrets in the same namespace as
                  the vmagent object, which shall be mounted into the vmagent Pods.
                  will be mounted at path /etc/vm/secrets
                items:
                  type: string
                type: array
              securityContext:
                description: SecurityContext holds pod-level security attributes and
                  common container settings. This defaults to the default PodSecurityContext.
                type: object
                x-kubernetes-preserve-unknown-fields: true
              selectAllByDefault:
                description: 'SelectAllByDefault changes default behavior for empty
                  CRD selectors, such ServiceScrapeSelector. with selectAllScrapes:
                  true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector
                  Operator selects all exist serviceScrapes with selectAllScrapes:
                  false - selects nothing'
                type: boolean
              serviceAccountName:
                description: ServiceAccountName is the name of the ServiceAccount
                  to use to run the VMAgent Pods.
                type: string
              serviceScrapeNamespaceSelector:
                description: ServiceScrapeNamespaceSelector Namespaces to be selected
                  for VMServiceScrape discovery. Works in combination with Selector.
                  NamespaceSelector nil - only objects at VMAgent namespace. Selector
                  nil - only objects at NamespaceSelector namespaces. If both nil
                  - behaviour controlled by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              serviceScrapeRelabelTemplate:
                description: ServiceScrapeRelabelTemplate defines relabel config,
                  that will be added to each VMServiceScrape. it's useful for adding
                  specific labels to all targets
                items:
                  description: 'RelabelConfig allows dynamic rewriting of the label
                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
                    of configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                  properties:
                    action:
                      description: Action to perform based on regex matching. Default
                        is 'replace'
                      type: string
                    modulus:
                      description: Modulus to take of the hash of the source label
                        values.
                      format: int64
                      type: integer
                    regex:
                      description: Regular expression against which the extracted
                        value is matched. Default is '(.*)'
                      type: string
                    replacement:
                      description: Replacement value against which a regex replace
                        is performed if the regular expression matches. Regex capture
                        groups are available. Default is '$1'
                      type: string
                    separator:
                      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 using the configured separator
                        and matched against the configured regular expression for
                        the replace, keep, and drop actions.
                      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
              serviceScrapeSelector:
                description: ServiceScrapeSelector defines ServiceScrapes to be selected
                  for target discovery. Works in combination with NamespaceSelector.
                  NamespaceSelector nil - only objects at VMAgent namespace. Selector
                  nil - only objects at NamespaceSelector namespaces. If both nil
                  - behaviour controlled by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              serviceSpec:
                description: ServiceSpec that will be added to vmagent service spec
                properties:
                  metadata:
                    description: EmbeddedObjectMetadata defines objectMeta for additional
                      service.
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: 'Annotations is an unstructured key value map
                          stored with a resource that may be set by external tools
                          to store and retrieve arbitrary metadata. They are not queryable
                          and should be preserved when modifying objects. More info:
                          http://kubernetes.io/docs/user-guide/annotations'
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: 'Labels Map of string keys and values that can
                          be used to organize and categorize (scope and select) objects.
                          May match selectors of replication controllers and services.
                          More info: http://kubernetes.io/docs/user-guide/labels'
                        type: object
                      name:
                        description: 'Name must be unique within a namespace. Is required
                          when creating resources, although some resources may allow
                          a client to request the generation of an appropriate name
                          automatically. Name is primarily intended for creation idempotence
                          and configuration definition. Cannot be updated. More info:
                          http://kubernetes.io/docs/user-guide/identifiers#names'
                        type: string
                    type: object
                  spec:
                    description: 'ServiceSpec describes the attributes that a user
                      creates on a service. More info: https://kubernetes.io/docs/concepts/services-networking/service/'
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                required:
                - spec
                type: object
              shardCount:
                description: ShardCount - numbers of shards of VMAgent in this case
                  operator will use 1 deployment/sts per shard with replicas count
                  according to spec.replicas https://victoriametrics.github.io/vmagent.html#scraping-big-number-of-targets
                type: integer
              startupProbe:
                description: StartupProbe that will be added to CRD pod
                type: object
                x-kubernetes-preserve-unknown-fields: true
              staticScrapeNamespaceSelector:
                description: StaticScrapeNamespaceSelector defines Namespaces to be
                  selected for VMStaticScrape discovery. Works in combination with
                  NamespaceSelector. NamespaceSelector nil - only objects at VMAgent
                  namespace. Selector nil - only objects at NamespaceSelector namespaces.
                  If both nil - behaviour controlled by selectAllByDefault
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              staticScrapeRelabelTemplate:
                description: StaticScrapeRelabelTemplate defines relabel config, that
                  will be added to each VMStaticScrape. it's useful for adding specific
                  labels to all targets
                items:
                  description: 'RelabelConfig allows dynamic rewriting of the label
                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
                    of configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                  properties:
                    action:
                      description: Action to perform based on regex matching. Default
                        is 'replace'
                      type: string
                    modulus:
                      description: Modulus to take of the hash of the source label
                        values.
                      format: int64
                      type: integer
                    regex:
                      description: Regular expression against which the extracted
                        value is matched. Default is '(.*)'
                      type: string
                    replacement:
                      description: Replacement value against which a regex replace
                        is performed if the regular expression matches. Regex capture
                        groups are available. Default is '$1'
                      type: string
                    separator:
                      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 using the configured separator
                        and matched against the configured regular expression for
                        the replace, keep, and drop actions.
                      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
              staticScrapeSelector:
                description: StaticScrapeSelector defines PodScrapes to be selected
                  for target discovery. Works in combination with NamespaceSelector.
                  If both nil - match everything. NamespaceSelector nil - only objects
                  at VMAgent namespace. Selector nil - only objects at NamespaceSelector
                  namespaces.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
              tolerations:
                description: Tolerations If specified, the pod's tolerations.
                items:
                  description: The pod this Toleration is attached to tolerates any
                    taint that matches the triple <key,value,effect> using the matching
                    operator <operator>.
                  properties:
                    effect:
                      description: Effect indicates the taint effect to match. Empty
                        means match all taint effects. When specified, allowed values
                        are NoSchedule, PreferNoSchedule and NoExecute.
                      type: string
                    key:
                      description: Key is the taint key that the toleration applies
                        to. Empty means match all taint keys. If the key is empty,
                        operator must be Exists; this combination means to match all
                        values and all keys.
                      type: string
                    operator:
                      description: Operator represents a key's relationship to the
                        value. Valid operators are Exists and Equal. Defaults to Equal.
                        Exists is equivalent to wildcard for value, so that a pod
                        can tolerate all taints of a particular category.
                      type: string
                    tolerationSeconds:
                      description: TolerationSeconds represents the period of time
                        the toleration (which must be of effect NoExecute, otherwise
                        this field is ignored) tolerates the taint. By default, it
                        is not set, which means tolerate the taint forever (do not
                        evict). Zero and negative values will be treated as 0 (evict
                        immediately) by the system.
                      format: int64
                      type: integer
                    value:
                      description: Value is the taint value the toleration matches
                        to. If the operator is Exists, the value should be empty,
                        otherwise just a regular string.
                      type: string
                  type: object
                type: array
              topologySpreadConstraints:
                description: TopologySpreadConstraints embedded kubernetes pod configuration
                  option, controls how pods are spread across your cluster among failure-domains
                  such as regions, zones, nodes, and other user-defined topology domains
                  https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
                items:
                  description: TopologySpreadConstraint specifies how to spread matching
                    pods among the given topology.
                  required:
                  - maxSkew
                  - topologyKey
                  - whenUnsatisfiable
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              updateStrategy:
                description: UpdateStrategy - overrides default update strategy. works
                  only for deployments, statefulset always use OnDelete.
                enum:
                - Recreate
                - RollingUpdate
                type: string
              vmAgentExternalLabelName:
                description: 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
                  (`""`).
                type: string
              volumeMounts:
                description: VolumeMounts allows configuration of additional VolumeMounts
                  on the output deploy definition. VolumeMounts specified will be
                  appended to other VolumeMounts in the vmagent container, that are
                  generated as a result of StorageSpec objects.
                items:
                  description: VolumeMount describes a mounting of a Volume within
                    a container.
                  properties:
                    mountPath:
                      description: Path within the container at which the volume should
                        be mounted.  Must not contain ':'.
                      type: string
                    mountPropagation:
                      description: mountPropagation determines how mounts are propagated
                        from the host to container and the other way around. When
                        not set, MountPropagationNone is used. This field is beta
                        in 1.10.
                      type: string
                    name:
                      description: This must match the Name of a Volume.
                      type: string
                    readOnly:
                      description: Mounted read-only if true, read-write otherwise
                        (false or unspecified). Defaults to false.
                      type: boolean
                    subPath:
                      description: Path within the volume from which the container's
                        volume should be mounted. Defaults to "" (volume's root).
                      type: string
                    subPathExpr:
                      description: Expanded path within the volume from which the
                        container's volume should be mounted. Behaves similarly to
                        SubPath but environment variable references $(VAR_NAME) are
                        expanded using the container's environment. Defaults to ""
                        (volume's root). SubPathExpr and SubPath are mutually exclusive.
                      type: string
                  required:
                  - mountPath
                  - name
                  type: object
                type: array
              volumes:
                description: Volumes allows configuration of additional volumes on
                  the output deploy definition. Volumes specified will be appended
                  to other volumes that are generated as a result of StorageSpec objects.
                items:
                  description: Volume represents a named volume in a pod that may
                    be accessed by any container in the pod.
                  required:
                  - name
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
            type: object
          status:
            description: VmAgentStatus defines the observed state of VmAgent
            properties:
              availableReplicas:
                description: AvailableReplicas Total number of available pods (ready
                  for at least minReadySeconds) targeted by this VMAlert cluster.
                format: int32
                type: integer
              replicas:
                description: ReplicaCount Total number of non-terminated pods targeted
                  by this VMAlert cluster (their labels match the selector).
                format: int32
                type: integer
              unavailableReplicas:
                description: UnavailableReplicas Total number of unavailable pods
                  targeted by this VMAlert cluster.
                format: int32
                type: integer
              updatedReplicas:
                description: UpdatedReplicas Total number of non-terminated pods targeted
                  by this VMAlert cluster that have the desired version spec.
                format: int32
                type: integer
            required:
            - availableReplicas
            - replicas
            - unavailableReplicas
            - updatedReplicas
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
