{ "title": "Chart Values", "type": "object", "properties": { "global": { "type": "object", "properties": { "imageRegistry": { "type": "string", "description": "Global Docker image registry", "default": "" }, "imagePullSecrets": { "type": "array", "description": "Global Docker registry secret names as an array", "default": [], "items": {} }, "storageClass": { "type": "string", "description": "Global StorageClass for Persistent Volume(s)", "default": "" } } }, "kubeVersion": { "type": "string", "description": "Override Kubernetes version", "default": "" }, "nameOverride": { "type": "string", "description": "String to partially override common.names.fullname", "default": "" }, "fullnameOverride": { "type": "string", "description": "String to fully override common.names.fullname", "default": "" }, "commonLabels": { "type": "object", "description": "Labels to add to all deployed objects", "default": {} }, "commonAnnotations": { "type": "object", "description": "Annotations to add to all deployed objects", "default": {} }, "clusterDomain": { "type": "string", "description": "Kubernetes cluster domain name", "default": "cluster.local" }, "extraDeploy": { "type": "array", "description": "Array of extra objects to deploy with the release", "default": [], "items": {} }, "diagnosticMode": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable diagnostic mode (all probes will be disabled and the command will be overridden)", "default": false }, "command": { "type": "array", "description": "Command to override all containers in the deployment", "default": [ "sleep" ], "items": { "type": "string" } }, "args": { "type": "array", "description": "Args to override all containers in the deployment", "default": [ "infinity" ], "items": { "type": "string" } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "haproxy service type", "default": "LoadBalancer" }, "ports": { "type": "array", "description": "", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "" }, "protocol": { "type": "string", "description": "" }, "port": { "type": "number", "description": "" }, "targetPort": { "type": "string", "description": "" } } } }, "clusterIP": { "type": "string", "description": "haproxy service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "haproxy service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "haproxy service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "haproxy service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for haproxy service", "default": {} }, "sessionAffinity": { "type": "string", "description": "Session Affinity for Kubernetes service, can be \"None\" or \"ClientIP\"", "default": "None" }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "labels": { "type": "object", "description": "Additional custom labels for haproxy service", "default": {} } } }, "ingress": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable ingress record generation for haproxy", "default": false }, "pathType": { "type": "string", "description": "Ingress path type", "default": "ImplementationSpecific" }, "apiVersion": { "type": "string", "description": "Force Ingress API version (automatically detected if not set)", "default": "" }, "hostname": { "type": "string", "description": "Default host for the ingress record", "default": "haproxy.local" }, "path": { "type": "string", "description": "Default path for the ingress record", "default": "/" }, "annotations": { "type": "object", "description": "Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.", "default": {} }, "tls": { "type": "boolean", "description": "Enable TLS configuration for the host defined at `ingress.hostname` parameter", "default": false }, "selfSigned": { "type": "boolean", "description": "Create a TLS secret for this ingress record using self-signed certificates generated by Helm", "default": false }, "extraHosts": { "type": "array", "description": "An array with additional hostname(s) to be covered with the ingress record", "default": [], "items": {} }, "extraPaths": { "type": "array", "description": "An array with additional arbitrary paths that may need to be added to the ingress under the main host", "default": [], "items": {} }, "extraTls": { "type": "array", "description": "TLS configuration for additional hostname(s) to be covered with this ingress record", "default": [], "items": {} }, "secrets": { "type": "array", "description": "Custom TLS certificates as secrets", "default": [], "items": {} }, "ingressClassName": { "type": "string", "description": "IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)", "default": "" }, "extraRules": { "type": "array", "description": "Additional rules to be covered with this ingress record", "default": [], "items": {} } } }, "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "HAProxy image registry", "default": "docker.io" }, "repository": { "type": "string", "description": "HAProxy image repository", "default": "bitnami/haproxy" }, "tag": { "type": "string", "description": "HAProxy image tag (immutable tags are recommended)", "default": "2.8.3-debian-11-r0" }, "digest": { "type": "string", "description": "HAProxy image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "HAProxy image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "HAProxy image pull secrets", "default": [], "items": {} } } }, "replicaCount": { "type": "number", "description": "Number of haproxy replicas to deploy", "default": 1 }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on haproxy nodes", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 15 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on haproxy nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 15 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on haproxy nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 15 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "resources": { "type": "object", "properties": { "limits": { "type": "object", "description": "The resources limits for the haproxy containers", "default": {} }, "requests": { "type": "object", "description": "The requested resources for the haproxy containers", "default": {} } } }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled haproxy pods' Security Context", "default": true }, "fsGroup": { "type": "number", "description": "Set haproxy pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled haproxy containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set haproxy containers' Security Context runAsUser", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set haproxy container's Security Context runAsNonRoot", "default": true } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable a Pod Disruption Budget creation", "default": false }, "minAvailable": { "type": "number", "description": "Minimum number/percentage of pods that should remain scheduled", "default": 1 }, "maxUnavailable": { "type": "string", "description": "Maximum number/percentage of pods that may be made unavailable", "default": "" } } }, "autoscaling": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Horizontal POD autoscaling for HAProxy", "default": false }, "minReplicas": { "type": "number", "description": "Minimum number of HAProxy replicas", "default": 1 }, "maxReplicas": { "type": "number", "description": "Maximum number of HAProxy replicas", "default": 11 }, "targetCPU": { "type": "number", "description": "Target CPU utilization percentage", "default": 50 }, "targetMemory": { "type": "number", "description": "Target Memory utilization percentage", "default": 50 } } }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "hostAliases": { "type": "array", "description": "haproxy pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for haproxy pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for haproxy pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `affinity` is set", "default": [], "items": {} } } }, "configuration": { "type": "string", "description": "haproxy configuration", "default": "global\n log stdout format raw local0\n maxconn 1024\ndefaults\n log global\n timeout client 60s\n timeout connect 60s\n timeout server 60s\nfrontend fe_main\n bind :8080\n default_backend be_main\nbackend be_main\n server web1 10.0.0.1:8080 check\n" }, "containerPorts": { "type": "array", "description": "", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "" }, "containerPort": { "type": "number", "description": "" } } } }, "existingConfigmap": { "type": "string", "description": "configmap with HAProxy configuration", "default": "" }, "affinity": { "type": "object", "description": "Affinity for haproxy pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for haproxy pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for haproxy pods assignment", "default": [], "items": {} }, "schedulerName": { "type": "string", "description": "Name of the k8s scheduler (other than default)", "default": "" }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment", "default": [], "items": {} }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "haproxy statefulset strategy type", "default": "RollingUpdate" } } }, "priorityClassName": { "type": "string", "description": "haproxy pods' priorityClassName", "default": "" }, "lifecycleHooks": { "type": "object", "description": "for the haproxy container(s) to automate configuration before or after startup", "default": {} }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to haproxy nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for haproxy nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for haproxy nodes", "default": "" }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the haproxy pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the haproxy container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the haproxy pod(s)", "default": [], "items": {} }, "initContainers": { "type": "array", "description": "Add additional init containers to the haproxy pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Specifies whether a ServiceAccount should be created", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use.", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Automount service account token for the server service account", "default": true }, "annotations": { "type": "object", "description": "Annotations for service account. Evaluated as a template. Only used if `create` is `true`.", "default": {} } } } } }