# Default values for victoria-metrics-alert. # This is a YAML-formatted file. # Declare variables to be passed into your templates. global: # -- Image pull secrets, that can be shared across multiple helm charts imagePullSecrets: [] image: # -- Image registry, that can be shared across multiple helm charts registry: "" # -- Openshift security context compatibility configuration compatibility: openshift: adaptSecurityContext: "auto" cluster: # -- K8s cluster domain suffix, uses for building storage pods' FQDN. Details are [here](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/) dnsDomain: cluster.local. serviceAccount: # -- Specifies whether a service account should be created create: true # -- Annotations to add to the service account annotations: {} # -- The name of the service account to use. # If not set and create is true, a name is generated using the fullname template name: # -- Mount API token to pod directly automountToken: true # -- Override chart name nameOverride: "" server: # -- Override default `app` label name name: vmalert # -- VMAlert image configuration image: registry: "" repository: victoriametrics/vmalert tag: "" # rewrites Chart.AppVersion # Variant of the image to use. # e.g. enterprise, scratch variant: "" pullPolicy: IfNotPresent # -- Override vmalert resources fullname fullnameOverride: vmalert-infra-stg-stateful # -- Image pull secrets imagePullSecrets: [] # -- See `kubectl explain poddisruptionbudget.spec` for more. Or check [docs](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) podDisruptionBudget: enabled: false # minAvailable: 1 # maxUnavailable: 1 # Labels should be defined in custom-values.yaml override files if needed # Common labels are already applied via server.labels labels: {} # -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for details. env: [] # - name: VM_remoteWrite_basicAuth_password # valueFrom: # secretKeyRef: # name: auth_secret # key: password # -- Specify alternative source for env variables envFrom: [] #- configMapRef: # name: special-config probe: # -- Readiness probe readiness: httpGet: {} initialDelaySeconds: 5 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 3 # -- Liveness probe liveness: tcpSocket: {} initialDelaySeconds: 5 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 3 # -- Startup probe startup: {} # -- Replica count replicaCount: 2 # -- Pod topologySpreadConstraints topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: type: vmalert - maxSkew: 1 topologyKey: kubernetes.io/hostname whenUnsatisfiable: DoNotSchedule labelSelector: matchLabels: type: vmalert # - maxSkew: 1 # topologyKey: topology.kubernetes.io/zone # whenUnsatisfiable: DoNotSchedule # -- Deployment strategy, set to standard k8s default strategy: type: RollingUpdate rollingUpdate: maxSurge: 25% maxUnavailable: 25% # -- Specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating # 0 is the standard k8s default minReadySeconds: 0 # -- VMAlert reads metrics from source, next section represents its configuration. It can be any service which supports # MetricsQL or PromQL. datasource: url: "http://vmselect-infra-stg.victoriametrics.svc.cluster.local:8481/select/100/prometheus" # -- Basic auth for datasource basicAuth: username: "" password: "" # -- Auth based on Bearer token for datasource bearer: # -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string token: "" # -- Token Auth file with Bearer token. You can use one of token or tokenFile tokenFile: "" remote: write: # -- VMAlert remote write URL url: "http://vminsert-infra-stg.victoriametrics.svc.cluster.local:8480/insert/100/prometheus/" # -- Basic auth for remote write basicAuth: username: "" password: "" # -- Auth based on Bearer token for remote write bearer: # -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string token: "" # -- Token Auth file with Bearer token. You can use one of token or tokenFile tokenFile: "" read: # -- VMAlert remote read URL url: "http://vmselect-infra-stg.victoriametrics.svc.cluster.local:8481/select/100/prometheus" # -- Basic auth for remote read basicAuth: username: "" password: "" # -- Auth based on Bearer token for remote read bearer: # -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string token: "" # -- Token Auth file with Bearer token. You can use one of token or tokenFile tokenFile: "" # -- Notifier to use for alerts. # Multiple notifiers can be enabled by using `notifiers` section notifier: alertmanager: url: "http://alertmanager-infra-stg-0.alertmanager-infra-stg-headless.alertmanager.svc.cluster.local:9093" # -- Basic auth for alertmanager basicAuth: username: "" password: "" # -- Auth based on Bearer token for alertmanager bearer: # -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string token: "" # -- Token Auth file with Bearer token. You can use one of token or tokenFile tokenFile: "" # -- Additional notifiers to use for alerts notifiers: - alertmanager: url: "http://alertmanager-infra-stg-1.alertmanager-infra-stg-headless.alertmanager.svc.cluster.local:9093" basicAuth: username: "" password: "" bearer: token: "" tokenFile: "" # - alertmanager: # url: "" # basicAuth: # username: "" # password: "" # bearer: # token: "" # tokenFile: "" # -- Extra command line arguments for container of component extraArgs: envflag.enable: true envflag.prefix: VM_ loggerFormat: json httpListenAddr: :8880 rule: - /alert-rules/**/*.yaml - /alert-rules/**/*.yml evaluationInterval: 60s configCheckInterval: 10s # -- Additional hostPath mounts extraHostPathMounts: [] # - name: certs-dir # mountPath: /etc/kubernetes/certs # subPath: "" # hostPath: /etc/kubernetes/certs # readOnly: true # -- Extra Volumes for the pod extraVolumes: [] # - name: example # configMap: # name: example # -- Extra Volume Mounts for the container. # Expects a lice of [volume mounts](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#volumemount-v1-core) extraVolumeMounts: [] # - name: example # mountPath: /example # subPath: "" # -- Additional containers to run in the same pod extraContainers: [] #- name: config-reloader # image: reloader-image service: # -- Service annotations annotations: {} # -- Service labels # Labels should be defined in custom-values.yaml override files labels: {} # -- Service ClusterIP clusterIP: "" # -- Service external IPs. Check [here](https://kubernetes.io/docs/concepts/services-networking/service/#external-ips) for details externalIPs: [] # -- Service load balancer IP loadBalancerIP: "" # -- Load balancer source range loadBalancerSourceRanges: [] # -- Service port servicePort: 8880 # nodePort: 30000 # -- Service type type: ClusterIP # -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details externalTrafficPolicy: "" # -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details healthCheckNodePort: "" # -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details. ipFamilyPolicy: "" # -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details. ipFamilies: [] ingress: # -- Enable deployment of ingress for vmalert component enabled: true # -- Ingress annotations annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: 'true' # -- Ingress extra labels extraLabels: {} # -- Array of host objects hosts: - name: vmalert-infra-stg-stateful.meeshogcp.in path: - / port: http # -- Array of TLS objects tls: [] # - secretName: vmselect-ingress-tls # hosts: # - vmselect.local # -- Ingress controller class name ingressClassName: "nginx-internal" # -- Ingress path type pathType: Prefix # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) podSecurityContext: enabled: true # fsGroup: 2000 # -- Security context to be added to server pods securityContext: enabled: true # capabilities: # drop: # - ALL # readOnlyRootFilesystem: true # runAsNonRoot: true # runAsUser: 1000 # -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) resources: # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little # resources, such as Minikube. If you do want to specify resources, uncomment the following # lines, adjust them as necessary, and remove the curly braces after 'resources:'. # limits: # cpu: 100m # memory: 128Mi requests: cpu: 500m memory: 1Gi # -- Annotations to be added to the deployment annotations: prometheus.io/scrape: "true" prometheus.io/port: "8880" # -- Labels to be added to the deployment # Labels should be defined in custom-values.yaml override files labels: {} # -- Annotations to be added to pod podAnnotations: prometheus.io/scrape: "true" prometheus.io/port: "8880" # -- Pod's additional labels # Pod labels should be defined in custom-values.yaml override files if needed # Common labels are already applied via server.labels podLabels: {} # -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) nodeSelector: {} # dedicated: "vminsert" # -- Name of Priority Class priorityClassName: "" # -- Node tolerations for server scheduling to nodes with taints. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/) tolerations: {} # - key: "dedicated" # operator: "Equal" # value: "vminsert" # effect: "NoSchedule" # -- Pod affinity affinity: {} # -- VMAlert alert rules configuration. # Use existing configmap if specified configMap: "" # -- VMAlert configuration config: alerts: groups: [] # -- Persistent Volume configuration for alert rules persistentVolume: # -- Create/use Persistent Volume Claim for alert rules. Empty dir if false enabled: true # -- Override Persistent Volume Claim name name: "" # -- Array of access modes. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) accessModes: - ReadWriteMany # -- Persistent volume annotations annotations: {} # -- PVC extra labels extraLabels: {} # -- StorageClass to use for persistent volume. Requires server.persistentVolume.enabled: true. If defined, PVC created automatically storageClassName: "pulse-nfs-sc-prd" # -- Existing Claim name. If defined, PVC must be created manually before volume will be bound existingClaim: "" # -- Mount path. Alert rules Persistent Volume mount root path. mountPath: /alert-rules # -- Mount subpath subPath: "" # -- Size of the volume. Better to set the same as resource limit memory property. size: 10Gi # -- Vertical Pod Autoscaler verticalPodAutoscaler: # -- Use VPA for vmalert enabled: false # recommenders: # - name: 'alternative' # updatePolicy: # updateMode: "Auto" # minReplicas: 1 # resourcePolicy: # containerPolicies: # - containerName: '*' # minAllowed: # cpu: 100m # memory: 128Mi # maxAllowed: # cpu: 1 # memory: 500Mi # controlledResources: ["cpu", "memory"] # -- Additional initContainers to initialize the pod initContainers: [] serviceMonitor: # -- Enable deployment of Service Monitor for server component. This is Prometheus operator object enabled: false # -- Service Monitor labels extraLabels: {} # -- Service Monitor annotations annotations: {} # -- Service Monitor relabelings relabelings: [] # -- Basic auth params for Service Monitor basicAuth: {} # -- Service Monitor metricRelabelings metricRelabelings: [] # interval: 15s # scrapeTimeout: 5s # -- Commented. HTTP scheme to use for scraping. # scheme: https # -- Commented. TLS configuration to use when scraping the endpoint # tlsConfig: # insecureSkipVerify: true alertmanager: # -- Create alertmanager resources enabled: false # -- Alertmanager Pod labels podLabels: {} # -- Override Alertmanager resources fullname fullnameOverride: "" # -- Alertmanager Pod annotations podAnnotations: {} # -- Alertmanager mode: deployment, statefulSet mode: deployment # -- [K8s Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) specific variables deployment: spec: strategy: # Must be "Recreate" when we have a persistent volume type: Recreate # -- [K8s StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) specific variables statefulSet: spec: # -- Deploy order policy for StatefulSet pods podManagementPolicy: OrderedReady # -- StatefulSet update strategy. Check [here](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies) for details. updateStrategy: {} # type: RollingUpdate # -- Alertmanager image configuration image: registry: "" repository: prom/alertmanager tag: v0.27.0 # -- Alertmanager retention retention: 120h # -- Replica count replicaCount: 1 # -- Cluster configuration for alertmanager cluster: # -- Cluster listen address listenAddress: "0.0.0.0:9094" # -- Cluster push/pull interval pushPullInterval: 60s # -- Cluster gossip interval gossipInterval: 200ms # -- Cluster peer timeout peerTimeout: 15s # -- Cluster settle timeout settleTimeout: 1m # -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) nodeSelector: {} # -- Name of Priority Class priorityClassName: "" # -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) resources: {} # -- Node tolerations for server scheduling to nodes with taints. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/) tolerations: [] # -- Image pull secrets imagePullSecrets: [] probe: # -- Readiness probe readiness: httpGet: path: '{{ ternary "" .app.baseURLPrefix (empty .app.baseURLPrefix) }}/-/ready' port: web # -- Liveness probe liveness: httpGet: path: '{{ ternary "" .app.baseURLPrefix (empty .app.baseURLPrefix) }}/-/healthy' port: web # -- Startup probe startup: httpGet: path: '{{ ternary "" .app.baseURLPrefix (empty .app.baseURLPrefix) }}/-/ready' port: web # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) podSecurityContext: enabled: false # -- Security context to be added to server pods securityContext: enabled: false # -- Pod topologySpreadConstraints topologySpreadConstraints: [] # - maxSkew: 1 # topologyKey: topology.kubernetes.io/zone # whenUnsatisfiable: DoNotSchedule # -- Alertmanager listen address listenAddress: "0.0.0.0:9093" # -- Extra command line arguments for container of component extraArgs: {} # -- Specify alternative source for env variables envFrom: [] # -- External URL, that alertmanager will expose to receivers baseURL: "" # -- External URL Prefix, Prefix for the internal routes of web endpoints baseURLPrefix: "" # -- Use existing configmap if specified # otherwise .config values will be used configMap: "" # -- Alertmanager web configuration webConfig: {} # -- Alertmanager configuration config: global: resolve_timeout: 5m route: # default receiver receiver: devnull # tag to group by group_by: ["alertname"] # How long to initially wait to send a notification for a group of alerts group_wait: 30s # How long to wait before sending a notification about new alerts that are added to a group group_interval: 10s # How long to wait before sending a notification again if it has already been sent successfully for an alert repeat_interval: 24h receivers: - name: devnull # -- Alertmanager extra templates templates: {} # alertmanager.tmpl: |- service: # -- Service annotations annotations: {} # -- Service labels labels: {} # -- Service ClusterIP clusterIP: "" # -- Service external IPs. Check [here](https://kubernetes.io/docs/concepts/services-networking/service/#external-ips) for details externalIPs: [] # -- Service load balancer IP loadBalancerIP: "" # -- Load balancer source range loadBalancerSourceRanges: [] # -- Service port servicePort: 9093 # nodePort: 30000 # -- Service type type: ClusterIP # -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details externalTrafficPolicy: "" # -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details healthCheckNodePort: "" # -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details. ipFamilyPolicy: "" # -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details. ipFamilies: [] ingress: # -- Enable deployment of ingress for alertmanager component enabled: false # -- Ingress annotations annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: 'true' # -- Ingress extra labels extraLabels: {} # -- Array of host objects hosts: - name: alertmanager.local path: - / port: web # -- Array of TLS objects tls: [] # - secretName: alertmanager-ingress-tls # hosts: # - alertmanager.local # -- Ingress controller class name ingressClassName: "" # -- Ingress path type pathType: Prefix # -- Empty dir configuration if persistence is disabled for Alertmanager emptyDir: {} persistentVolume: # -- Create/use Persistent Volume Claim for alertmanager component. Empty dir if false enabled: false # -- Override Persistent Volume Claim name name: "" # -- Array of access modes. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) accessModes: - ReadWriteOnce # -- Persistent volume annotations annotations: {} # -- PVC extra labels extraLabels: {} # -- StorageClass to use for persistent volume. Requires alertmanager.persistentVolume.enabled: true. If defined, PVC created automatically storageClassName: "" # -- Existing Claim name. If defined, PVC must be created manually before volume will be bound existingClaim: "" # -- Mount path. Alertmanager data Persistent Volume mount root path. mountPath: /data # -- Mount subpath subPath: "" # -- Size of the volume. Better to set the same as resource limit memory property. size: 50Mi # -- Additional hostPath mounts extraHostPathMounts: [] # - name: certs-dir # mountPath: /etc/kubernetes/certs # subPath: "" # hostPath: /etc/kubernetes/certs # readOnly: true # -- Extra Volumes for the pod extraVolumes: [] #- name: example # configMap: # name: example # -- Extra Volume Mounts for the container extraVolumeMounts: [] # - name: example # mountPath: /example # -- Extra containers to run in a pod with alertmanager extraContainers: [] #- name: config-reloader # image: reloader-image # -- Additional initContainers to initialize the pod initContainers: [] # -- Add extra specs dynamically to this chart extraObjects: [] # -- Enterprise license key configuration for VictoriaMetrics enterprise. # Required only for VictoriaMetrics enterprise. Check docs [here](https://docs.victoriametrics.com/victoriametrics/enterprise/), # for more information, visit [site](https://victoriametrics.com/products/enterprise/). # Request a trial license [here](https://victoriametrics.com/products/enterprise/trial/) # Supported starting from VictoriaMetrics v1.94.0 license: # -- License key key: "" # -- Use existing secret with license key secret: # -- Existing secret name name: "" # -- Key in secret with license key key: ""