{ "$schema": "http://json-schema.org/draft-07/schema", "title": "alertmanager", "description": "The Alertmanager handles alerts sent by client applications such as the Prometheus server.", "type": "object", "required": [ "replicaCount", "image", "serviceAccount", "service", "persistence", "config" ], "definitions": { "image": { "description": "Container image parameters.", "type": "object", "required": ["repository"], "additionalProperties": false, "properties": { "repository": { "description": "Image repository. Path to the image with registry(quay.io) or without(prometheus/alertmanager) for docker.io.", "type": "string" }, "pullPolicy": { "description": "Image pull policy. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.", "type": "string", "enum": [ "Never", "IfNotPresent", "Always" ], "default": "IfNotPresent" }, "tag": { "description": "Use chart appVersion by default.", "type": "string", "default": "" } } }, "resources": { "description": "Resource limits and requests for the Container.", "type": "object", "properties": { "limits": { "description": "Resource limits for the Container.", "type": "object", "properties": { "cpu": { "description": "CPU request for the Container.", "type": "string" }, "memory": { "description": "Memory request for the Container.", "type": "string" } } }, "requests": { "description": "Resource requests for the Container.", "type": "object", "properties": { "cpu": { "description": "CPU request for the Container.", "type": "string" }, "memory": { "description": "Memory request for the Container.", "type": "string" } } } } }, "securityContext": { "description": "Security context for the container.", "type": "object", "properties": { "capabilities": { "description": "Specifies the capabilities to be dropped by the container.", "type": "object", "properties": { "drop": { "description": "List of capabilities to be dropped.", "type": "array", "items": { "type": "string" } } } }, "readOnlyRootFilesystem": { "description": "Specifies whether the root file system should be mounted as read-only.", "type": "boolean" }, "runAsUser": { "description": "Specifies the UID (User ID) to run the container as.", "type": "integer" }, "runAsNonRoot": { "description": "Specifies whether to run the container as a non-root user.", "type": "boolean" }, "runAsGroup": { "description": "Specifies the GID (Group ID) to run the container as.", "type": "integer" } } }, "volumeMounts": { "description": "List of volume mounts for the Container.", "type": "array", "items": { "description": "Volume mounts for the Container.", "type": "object", "required": ["name", "mountPath"], "properties": { "name": { "description": "The name of the volume to mount.", "type": "string" }, "mountPath": { "description": "The mount path for the volume.", "type": "string" }, "readOnly": { "description": "Specifies if the volume should be mounted in read-only mode.", "type": "boolean" } } } }, "env": { "description": "List of environment variables for the Container.", "type": "array", "items": { "description": "Environment variables for the Container.", "type": "object", "required": ["name"], "properties": { "name": { "description": "The name of the environment variable.", "type": "string" }, "value": { "description": "The value of the environment variable.", "type": "string" } } } }, "config": { "description": "https://prometheus.io/docs/alerting/latest/configuration/", "duration": { "type": "string", "pattern": "^((([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?|0)$" }, "labelname": { "type": "string", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$|^...$" }, "route": { "description": "Alert routing configuration.", "type": "object", "properties": { "receiver": { "description": "The default receiver to send alerts to.", "type": "string" }, "group_by": { "description": "The labels by which incoming alerts are grouped together.", "type": "array", "items": { "type": "string", "$ref": "#/definitions/config/labelname" } }, "continue": { "description": "Whether an alert should continue matching subsequent sibling nodes.", "type": "boolean", "default": false }, "matchers": { "description": "A list of matchers that an alert has to fulfill to match the node.", "type": "array", "items": { "type": "string" } }, "group_wait": { "description": "How long to initially wait to send a notification for a group of alerts.", "$ref": "#/definitions/config/duration" }, "group_interval": { "description": "How long to wait before sending a notification about new alerts that are added to a group of alerts for which an initial notification has already been sent.", "$ref": "#/definitions/config/duration" }, "repeat_interval": { "description": "How long to wait before sending a notification again if it has already been sent successfully for an alert.", "$ref": "#/definitions/config/duration" }, "mute_time_intervals": { "description": "Times when the route should be muted.", "type": "array", "items": { "type": "string" } }, "active_time_intervals": { "description": "Times when the route should be active.", "type": "array", "items": { "type": "string" } }, "routes": { "description": "Zero or more child routes.", "type": "array", "items": { "type": "object", "$ref": "#/definitions/config/route" } } } } } }, "properties": { "replicaCount": { "description": "Number of desired pods.", "type": "integer", "default": 1, "minimum": 0 }, "image": { "description": "Container image parameters.", "$ref": "#/definitions/image" }, "baseURL": { "description": "External URL where alertmanager is reachable.", "type": "string", "default": "", "examples": [ "https://alertmanager.example.com" ] }, "extraArgs": { "description": "Additional alertmanager container arguments. Use args without '--', only 'key: value' syntax.", "type": "object", "default": {} }, "extraSecretMounts": { "description": "Additional Alertmanager Secret mounts.", "type": "array", "default": [], "items": { "type": "object", "required": ["name", "mountPath", "secretName"], "properties": { "name": { "type": "string" }, "mountPath": { "type": "string" }, "subPath": { "type": "string", "default": "" }, "secretName": { "type": "string" }, "readOnly": { "type": "boolean", "default": false } } } }, "imagePullSecrets": { "description": "The property allows you to configure multiple image pull secrets.", "type": "array", "default": [], "items": { "type": "object", "required": ["name"], "properties": { "name": { "description": "Specifies the Secret name of the image pull secret.", "type": "string" } } } }, "nameOverride": { "description": "Override value for the name of the Helm chart.", "type": "string", "default": "" }, "fullnameOverride": { "description": "Override value for the fully qualified app name.", "type": "string", "default": "" }, "namespaceOverride": { "description": "Override deployment namespace.", "type": "string", "default": "" }, "automountServiceAccountToken": { "description": "Specifies whether to automatically mount the ServiceAccount token into the Pod's filesystem.", "type": "boolean", "default": true }, "serviceAccount": { "description": "Contains properties related to the service account configuration.", "type": "object", "required": ["create"], "properties": { "create": { "description": "Specifies whether a service account should be created.", "type": "boolean", "default": true }, "annotations": { "description": "Annotations to add to the service account.", "type": "object", "default": {} }, "name": { "description": "The name of the service account to use. If not set and create is true, a name is generated using the fullname template.", "type": "string", "default": "" } } }, "schedulerName": { "description": "Sets the schedulerName in the alertmanager pod.", "type": "string", "default": "" }, "priorityClassName": { "description": "Sets the priorityClassName in the alertmanager pod.", "type": "string", "default": "" }, "podSecurityContext": { "description": "Pod security context configuration.", "type": "object", "properties": { "fsGroup": { "description": "The fsGroup value for the pod's security context.", "type": "integer", "default": 65534 }, "runAsUser": { "description": "The UID to run the pod's containers as.", "type": "integer" }, "runAsGroup": { "description": "The GID to run the pod's containers as.", "type": "integer" } } }, "dnsConfig": { "description": "DNS configuration for the pod.", "type": "object", "properties": { "nameservers": { "description": "List of DNS server IP addresses.", "type": "array", "items": { "type": "string" } }, "searches": { "description": "List of DNS search domains.", "type": "array", "items": { "type": "string" } }, "options": { "description": "List of DNS options.", "type": "array", "items": { "description": "DNS options.", "type": "object", "required": ["name"], "properties": { "name": { "description": "The name of the DNS option.", "type": "string" }, "value": { "description": "The value of the DNS option.", "type": "string" } } } } } }, "hostAliases": { "description": "List of host aliases.", "type": "array", "items": { "description": "Host aliases configuration.", "type": "object", "required": ["ip", "hostnames"], "properties": { "ip": { "description": "IP address associated with the host alias.", "type": "string" }, "hostnames": { "description": "List of hostnames associated with the IP address.", "type": "array", "items": { "type": "string" } } } } }, "securityContext": { "description": "Security context for the container.", "$ref": "#/definitions/securityContext" }, "additionalPeers": { "description": "Additional peers for a alertmanager.", "type": "array", "items": { "type": "string" } }, "extraInitContainers": { "description": "Additional InitContainers to initialize the pod.", "type": "array", "default": [], "items": { "required": ["name", "image"], "properties": { "name": { "description": "The name of the InitContainer.", "type": "string" }, "image": { "description": "The container image to use for the InitContainer.", "type": "string" }, "pullPolicy": { "description": "Image pull policy. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.", "type": "string", "enum": [ "Never", "IfNotPresent", "Always" ], "default": "IfNotPresent" }, "command": { "description": "The command to run in the InitContainer.", "type": "array", "items": { "type": "string" } }, "args": { "description": "Additional command arguments for the InitContainer.", "type": "array", "items": { "type": "string" } }, "ports": { "description": "List of ports to expose from the container.", "type": "array", "items": { "type": "object" } }, "env": { "description": "List of environment variables for the InitContainer.", "$ref": "#/definitions/env" }, "envFrom": { "description": "List of sources to populate environment variables in the container.", "type": "array", "items": { "type": "object" } }, "volumeMounts": { "description": "List of volume mounts for the InitContainer.", "$ref": "#/definitions/volumeMounts" }, "resources": { "description": "Resource requirements for the InitContainer.", "$ref": "#/definitions/resources" }, "securityContext": { "$ref": "#/definitions/securityContext", "description": "The security context for the InitContainer." } } } }, "extraContainers": { "description": "Additional containers to add to the stateful set.", "type": "array", "default": [], "items": { "required": ["name", "image"], "properties": { "name": { "description": "The name of the InitContainer.", "type": "string" }, "image": { "description": "The container image to use for the InitContainer.", "type": "string" }, "pullPolicy": { "description": "Image pull policy. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.", "type": "string", "enum": [ "Never", "IfNotPresent", "Always" ], "default": "IfNotPresent" }, "command": { "description": "The command to run in the InitContainer.", "type": "array", "items": { "type": "string" } }, "args": { "description": "Additional command arguments for the InitContainer.", "type": "array", "items": { "type": "string" } }, "ports": { "description": "List of ports to expose from the container.", "type": "array", "items": { "type": "object" } }, "env": { "description": "List of environment variables for the InitContainer.", "$ref": "#/definitions/env" }, "envFrom": { "description": "List of sources to populate environment variables in the container.", "type": "array", "items": { "type": "object" } }, "volumeMounts": { "description": "List of volume mounts for the InitContainer.", "$ref": "#/definitions/volumeMounts" }, "resources": { "description": "Resource requirements for the InitContainer.", "$ref": "#/definitions/resources" }, "securityContext": { "$ref": "#/definitions/securityContext", "description": "The security context for the InitContainer." } } } }, "resources": { "description": "Resource limits and requests for the pod.", "$ref": "#/definitions/resources" }, "livenessProbe": { "description": "Liveness probe configuration.", "type": "object" }, "readinessProbe": { "description": "Readiness probe configuration.", "type": "object" }, "service": { "description": "Service configuration.", "type": "object", "required": ["type", "port"], "properties": { "annotations": { "description": "Annotations to add to the service.", "type": "object" }, "type": { "description": "Service type.", "type": "string" }, "port": { "description": "Port number for the service.", "type": "integer" }, "clusterPort": { "description": "Port number for the cluster.", "type": "integer" }, "loadBalancerIP": { "description": "External IP to assign when the service type is LoadBalancer.", "type": "string" }, "loadBalancerSourceRanges": { "description": "IP ranges to allow access to the loadBalancerIP.", "type": "array", "items": { "type": "string" } }, "nodePort": { "description": "Specific nodePort to force when service type is NodePort.", "type": "integer" } } }, "ingress": { "description": "Ingress configuration.", "type": "object", "properties": { "enabled": { "description": "Indicates if Ingress is enabled.", "type": "boolean" }, "className": { "description": "Ingress class name.", "type": "string" }, "annotations": { "description": "Annotations to add to the Ingress.", "type": "object" }, "hosts": { "description": "Host and path configuration for the Ingress.", "type": "array", "items": { "type": "object", "properties": { "host": { "description": "Host name for the Ingress.", "type": "string" }, "paths": { "description": "Path configuration for the Ingress.", "type": "array", "items": { "type": "object", "properties": { "path": { "description": "Path for the Ingress.", "type": "string" }, "pathType": { "description": "Path type for the Ingress.", "type": "string" } } } } } } }, "tls": { "description": "TLS configuration for the Ingress.", "type": "array", "items": { "type": "object", "properties": { "secretName": { "description": "Name of the secret for TLS.", "type": "string" }, "hosts": { "description": "Host names for the TLS configuration.", "type": "array", "items": { "type": "string" } } } } } } }, "nodeSelector": { "description": "Node selector for pod assignment.", "type": "object" }, "tolerations": { "description": "Tolerations for pod assignment.", "type": "array" }, "affinity": { "description": "Affinity rules for pod assignment.", "type": "object" }, "podAntiAffinity": { "description": "Pod anti-affinity configuration.", "type": "string", "enum": ["", "soft", "hard"], "default": "" }, "podAntiAffinityTopologyKey": { "description": "Topology key to use for pod anti-affinity.", "type": "string" }, "topologySpreadConstraints": { "description": "Topology spread constraints for pod assignment.", "type": "array", "items": { "type": "object", "required": ["maxSkew", "topologyKey", "whenUnsatisfiable", "labelSelector"], "properties": { "maxSkew": { "type": "integer" }, "topologyKey": { "type": "string" }, "whenUnsatisfiable": { "type": "string", "enum": ["DoNotSchedule", "ScheduleAnyway"] }, "labelSelector": { "type": "object", "required": ["matchLabels"], "properties": { "matchLabels": { "type": "object" } } } } } }, "statefulSet": { "description": "StatefulSet configuration for managing pods.", "type": "object", "properties": { "annotations": { "type": "object" } } }, "podAnnotations": { "description": "Annotations to add to the pods.", "type": "object" }, "podLabels": { "description": "Labels to add to the pods.", "type": "object" }, "podDisruptionBudget": { "description": "Pod disruption budget configuration.", "type": "object", "properties": { "maxUnavailable": { "type": "integer" }, "minAvailable": { "type": "integer" } } }, "command": { "description": "The command to be executed in the container.", "type": "array", "items": { "type": "string" } }, "persistence": { "description": "Persistence configuration for storing data.", "type": "object", "required": ["enabled", "size"], "properties": { "enabled": { "type": "boolean" }, "storageClass": { "type": "string" }, "accessModes": { "type": "array", "items": { "type": "string" } }, "size": { "type": "string" } } }, "configAnnotations": { "description": "Annotations to be added to the Alertmanager configuration.", "type": "object" }, "config": { "description": "Alertmanager configuration.", "type": "object", "properties": { "enabled": { "description": "Whether to create alermanager configmap or not.", "type": "boolean" }, "global": { "description": "Global configuration options.", "type": "object" }, "templates": { "description": "Alertmanager template files.", "type": "array", "items": { "type": "string" } }, "receivers": { "description": "Alert receivers configuration.", "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "description": "The unique name of the receiver.", "type": "string" } } } }, "route": { "description": "Alert routing configuration.", "type": "object", "$ref": "#/definitions/config/route" } } }, "configmapReload": { "description": "Monitors ConfigMap changes and POSTs to a URL.", "type": "object", "properties": { "enabled": { "description": "Specifies whether the configmap-reload container should be deployed.", "type": "boolean", "default": false }, "name": { "description": "The name of the configmap-reload container.", "type": "string" }, "image": { "description": "The container image for the configmap-reload container.", "$ref": "#/definitions/image" }, "containerPort": { "description": "Port number for the configmap-reload container.", "type": "integer" }, "resources": { "description": "Resource requests and limits for the configmap-reload container.", "$ref": "#/definitions/resources" } } }, "templates": { "description": "Custom templates used by Alertmanager.", "type": "object" }, "extraVolumeMounts": { "description": "List of volume mounts for the Container.", "$ref": "#/definitions/volumeMounts" }, "extraVolumes": { "description": "Additional volumes to be mounted in the Alertmanager pod.", "type": "array", "default": [], "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" } } } }, "extraEnv": { "description": "List of environment variables for the Container.", "$ref": "#/definitions/env" }, "testFramework": { "description": "Configuration for the test Pod.", "type": "object", "properties": { "enabled": { "description": "Specifies whether the test Pod is enabled.", "type": "boolean", "default": false }, "annotations": { "description": "Annotations to be added to the test Pod.", "type": "object" } } }, "verticalPodAutoscaler": { "description": "Vertical Pod Autoscaling configuration.", "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "recommenders": { "type": "array" }, "updatePolicy": { "type": "object" }, "resourcePolicy": { "type": "object" } } }, "extraPodConfigs": { "description": "Object to allow users to add additional Pod configuration like dnsPolicy or hostNetwork", "type": "object" } } }