1# This file has been modified by Chainguard, Inc.
3# Copyright Chainguard, Inc. All Rights Reserved.
4# Chainguard, Inc. modifications are subject to the license
5# available at: https://www.chainguard.dev/legal/software-license-agreement
7# Copyright Broadcom, Inc. All Rights Reserved.
8# SPDX-License-Identifier: APACHE-2.0
10## @section Global parameters
11## Global Docker image parameters
12## Please, note that this will override the image parameters, including dependencies, configured to use the global value
13## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
15## @param global.imageRegistry Global Docker image registry
16## @param global.useImageTags Pull every image by tag and ignore all image digests, including digests set in values. Use this when your registry mirror does not have the chart's default image digests.
17## @param global.imagePullSecrets Global Docker registry secret names as an array
24 ## - myRegistryKeySecretName
27 ## Security parameters
30 ## @param global.security.allowInsecureImages Allows skipping image verification
31 allowInsecureImages: false
32 ## Compatibility adaptations for Kubernetes platforms
35 ## Compatibility adaptations for Openshift
38 ## @param global.compatibility.openshift.adaptSecurityContext Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation)
40 adaptSecurityContext: auto
42## @section Common parameters
44## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
47## @param nameOverride String to partially override common.names.fullname
50## @param fullnameOverride String to fully override common.names.fullname
53## @param namespaceOverride String to fully override common.names.namespace
56## @param commonLabels Add labels to all the deployed resources
59## @param commonAnnotations Add annotations to all the deployed resources
62## @param extraDeploy Array of extra objects to deploy with the release
65## @param clusterDomain Kubernetes cluster domain name
67clusterDomain: cluster.local
68## @section Nginx Ingress Controller parameters
70## Iamguarded NGINX Ingress controller image version
71## @param image.registry [default: REGISTRY_NAME] Nginx Ingress Controller image registry
72## @param image.repository [default: REPOSITORY_NAME/nginx-ingress-controller] Nginx Ingress Controller image repository
73## @skip image.tag Nginx Ingress Controller image tag (immutable tags are recommended)
74## @param image.digest Nginx Ingress Controller image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
75## @param image.pullPolicy Nginx Ingress Controller image pull policy
76## @param image.pullSecrets Specify docker-registry secret names as an array
80 repository: chainguard-private/ingress-nginx-controller-iamguarded
83 ## Specify a imagePullPolicy
84 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
86 pullPolicy: IfNotPresent
87 ## Optionally specify an array of imagePullSecrets.
88 ## Secrets must be manually created in the namespace.
89 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
92 ## - myRegistryKeySecretName
95## @param containerPorts.http Nginx Ingress Controller HTTP port
96## @param containerPorts.https Nginx Ingress Controller HTTPS port
97## @param containerPorts.defaultServer Nginx Ingress Controller default server port
98## @param containerPorts.metrics Nginx Ingress Controller metrics port
99## @param containerPorts.profiler Nginx Ingress Controller profiler port
100## @param containerPorts.status Nginx Ingress Controller status port
101## @param containerPorts.stream Nginx Ingress Controller stream port
111## @param automountServiceAccountToken Mount Service Account token in pod
113automountServiceAccountToken: true
114## @param hostAliases Deployment pod host aliases
115## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
118## @param config Custom configuration options for NGINX
119## ref: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
122## @param proxySetHeaders Custom headers before sending traffic to backends
123## ref: https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/customization/custom-headers
126## @param addHeaders Custom headers before sending response traffic to the client
127## ref: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#add-headers
130## @param defaultBackendService Default 404 backend service; required only if `defaultBackend.enabled = false`
131## Must be <namespace>/<service_name>
133defaultBackendService: ""
134## @param electionID Election ID to use for status update
136electionID: ingress-controller-leader
137## @param allowSnippetAnnotations Allow users to set snippet annotations
139allowSnippetAnnotations: false
140## @param reportNodeInternalIp If using `hostNetwork=true`, setting `reportNodeInternalIp=true`, will pass the flag `report-node-internal-ip-address` to Nginx Ingress Controller
141## Bare-metal considerations via the host network
142## ref: https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#via-the-host-network
144reportNodeInternalIp: false
145## @param watchIngressWithoutClass Process Ingress objects without ingressClass annotation/ingressClassName field
147watchIngressWithoutClass: false
148## Configuring this doesn't affect `kubernetes.io/ingress.class` annotation. See `extraArgs` below how to configure processing of custom annotation.
149## @param ingressClassResource.name Name of the IngressClass resource
150## @param ingressClassResource.enabled Create the IngressClass resource
151## @param ingressClassResource.default Set the created IngressClass resource as default class
152## @param ingressClassResource.controllerClass IngressClass identifier for the controller
153## @param ingressClassResource.parameters Optional parameters for the controller
159 controllerClass: "k8s.io/ingress-nginx"
161## Allows customization of the external service
162## the ingress will be bound to via DNS
165 ## @param publishService.enabled Set the endpoint records on the Ingress objects to reflect those on the service
168 ## @param publishService.pathOverride Allows overriding of the publish service to bind to
169 ## Must be <namespace>/<service_name>
172## @param scope.enabled Limit the scope of the controller.
173## @param scope.namespace Scope namespace. Defaults to `.Release.Namespace`
178## @param configMapNamespace Allows customization of the configmap / nginx-configmap namespace
179## Defaults to .Release.Namespace
181configMapNamespace: ""
182## @param tcpConfigMapNamespace Allows customization of the tcp-services-configmap namespace
183## Defaults to .Release.Namespace
185tcpConfigMapNamespace: ""
186## @param udpConfigMapNamespace Allows customization of the udp-services-configmap namespace
187## Defaults to .Release.Namespace
189udpConfigMapNamespace: ""
190## @param maxmindLicenseKey License key used to download Geolite2 database
193## @param dhParam A base64ed Diffie-Hellman parameter
194## This can be generated with: openssl dhparam 4096 2> /
195## Ref: https://github.com/krmichel/ingress-nginx/blob/master/docs/examples/customization/ssl-dh-param
197## @param tcp TCP service key:value pairs
198## ref: https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx/examples/tcp
201## 8080: "default/example-tcp-svc:9000"
204## @param udp UDP service key:value pairs
205## ref: https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx/examples/udp
208## 53: "kube-system/kube-dns:53"
211## @param svcPortNamesPrefix Prefix for TCP and UDP ports names in ingress controller service
212## Some cloud providers, like Yandex Cloud may have a requirements for a port name regex to support cloud load balancer integration
214svcPortNamesPrefix: ""
215## @param command Override default container command (useful when using custom images)
218## @param args Override default container args (useful when using custom images)
221## @param lifecycleHooks for the %%MAIN_CONTAINER_NAME%% container(s) to automate configuration before or after startup
224## @param extraArgs Additional command line arguments to pass to nginx-ingress-controller
225## E.g. to specify the default SSL certificate you can use
227## default-ssl-certificate: "<namespace>/<secret_name>"
228## ingress-class: nginx
231## @param extraEnvVars Extra environment variables to be set on Nginx Ingress container
238## name: secret-resource
241## @param extraEnvVarsCM Name of a existing ConfigMap containing extra environment variables
244## @param extraEnvVarsSecret Name of a existing Secret containing extra environment variables
246extraEnvVarsSecret: ""
247## @section Nginx Ingress deployment / daemonset parameters
249## @param kind Install as Deployment or DaemonSet
252## Daemonset configuration
255 ## @param daemonset.useHostPort If `kind` is `DaemonSet`, this will enable `hostPort` for `TCP/80` and `TCP/443`
258 ## @param daemonset.hostPorts [object] HTTP and HTTPS ports
263## @param replicaCount Desired number of Controller pods
266## @param updateStrategy Strategy to use to update Pods
267## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
270## @param revisionHistoryLimit The number of old history to retain to allow rollback
272revisionHistoryLimit: 10
273## Controller pods' Security Context
274## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
275## @param podSecurityContext.enabled Enable Controller pods' Security Context
276## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
277## @param podSecurityContext.sysctls Set kernel settings using the sysctl interface
278## @param podSecurityContext.supplementalGroups Set filesystem extra groups
279## @param podSecurityContext.fsGroup Group ID for the container filesystem
283 fsGroupChangePolicy: Always
285 supplementalGroups: []
287## Controller containers' Security Context (only main container)
288## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
289## @param containerSecurityContext.enabled Enable Controller containers' Security Context
290## @param containerSecurityContext.allowPrivilegeEscalation Switch to allow priviledge escalation on the Controller container
291## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
292## @param containerSecurityContext.runAsUser User ID for the Controller container
293## @param containerSecurityContext.runAsGroup Group ID for the Controller container
294## @param containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
295## @param containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities that should be dropped
296## @param containerSecurityContext.capabilities.add [array] Linux Kernel capabilities that should be added
297## @param containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot
298## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
300containerSecurityContext:
302 allowPrivilegeEscalation: false
306 readOnlyRootFilesystem: true
309 add: ["NET_BIND_SERVICE"]
312 type: "RuntimeDefault"
313## @param minReadySeconds How many seconds a pod needs to be ready before killing the next, during update
316## Controller containers' resource requests and limits
317## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
318## We usually recommend not to specify default resources and to leave this as a conscious
319## choice for the user. This also increases chances charts run on environments with little
320## resources, such as Minikube. If you do want to specify resources, uncomment the following
321## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
322## @param resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
324resourcesPreset: "nano"
325## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
336## Controller containers' liveness probe. Evaluated as a template.
337## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
338## @param livenessProbe.enabled Enable livenessProbe
339## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
340## @param livenessProbe.periodSeconds Period seconds for livenessProbe
341## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
342## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
343## @param livenessProbe.successThreshold Success threshold for livenessProbe
348 initialDelaySeconds: 10
352## Controller containers' readiness probe. Evaluated as a template.
353## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
354## @param readinessProbe.enabled Enable readinessProbe
355## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
356## @param readinessProbe.periodSeconds Period seconds for readinessProbe
357## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
358## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
359## @param readinessProbe.successThreshold Success threshold for readinessProbe
364 initialDelaySeconds: 10
368## Controller containers' startup probe. Evaluated as a template.
369## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
370## @param startupProbe.enabled Enable startupProbe
371## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
372## @param startupProbe.periodSeconds Period seconds for startupProbe
373## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
374## @param startupProbe.failureThreshold Failure threshold for startupProbe
375## @param startupProbe.successThreshold Success threshold for startupProbe
380 initialDelaySeconds: 10
384## @param customLivenessProbe Override default liveness probe
386customLivenessProbe: {}
387## @param customReadinessProbe Override default readiness probe
389customReadinessProbe: {}
390## @param customStartupProbe Custom liveness probe for the Web component
392customStartupProbe: {}
393## @param lifecycle LifecycleHooks to set additional configuration at startup
396## @param podLabels Extra labels for Controller pods
397## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
400## @param podAnnotations Annotations for Controller pods
401## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
404## @param priorityClassName Controller priorityClassName
405## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass
408## @param schedulerName Name of the k8s scheduler (other than default)
409## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
412## @param hostNetwork If the Nginx deployment / daemonset should run on the host's network namespace
413## Required on CNI based K8s installations, since CNI and hostport don't mix yet
414## Can be deprecated once https://github.com/kubernetes/kubernetes/issues/23920 is merged
417## @param dnsPolicy By default, while using host network, name resolution uses the host's DNS
418## Optionally, change this to ClusterFirstWithHostNet in case you have 'hostNetwork: true' if you wish nginx-controller
419## to keep resolving names inside the Kubernetes network
421dnsPolicy: ClusterFirst
422## @param dnsConfig is an object with optional parameters to pass to the DNS resolver
423## The dnsConfig field is optional and it can work with any dnsPolicy settings.
424## However, when a Pod's dnsPolicy is set to "None", the dnsConfig field has to be specified.
427## @param terminationGracePeriodSeconds How many seconds to wait before terminating a pod
429terminationGracePeriodSeconds: 60
430## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
431## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
434## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
435## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
437podAntiAffinityPreset: soft
438## Node affinity preset
439## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
442 ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
445 ## @param nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set.
447 ## key: "kubernetes.io/e2e-az-name"
450 ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
457## @param affinity Affinity for pod assignment. Evaluated as a template.
458## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
459## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
462## @param nodeSelector Node labels for pod assignment. Evaluated as a template.
463## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
466## @param tolerations Tolerations for pod assignment. Evaluated as a template.
467## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
470## @param extraVolumes Optionally specify extra list of additional volumes for Controller pods
473## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for Controller container(s)
476## @param initContainers Add init containers to the controller pods
479## - name: your-image-name
481## imagePullPolicy: Always
484## containerPort: 1234
487## @param sidecars Add sidecars to the controller pods.
490## - name: your-image-name
492## imagePullPolicy: Always
495## containerPort: 1234
498## @param customTemplate [object] Override NGINX template
503## @param topologySpreadConstraints Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in
504## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
506## topologySpreadConstraints:
508## topologyKey: failure-domain.beta.kubernetes.io/zone
509## whenUnsatisfiable: DoNotSchedule
512## app.kubernetes.io/instance: ingress-nginx-internal
514topologySpreadConstraints: []
515## @param podSecurityPolicy.enabled Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later
516## https://kubernetes.io/docs/concepts/policy/pod-security-policy/
520## @section Default backend parameters
522## Default 404 backend
525 ## @param defaultBackend.enabled Enable a default backend based on NGINX
528 ## @param defaultBackend.automountServiceAccountToken Mount Service Account token in pod
530 automountServiceAccountToken: true
531 ## @param defaultBackend.hostAliases Add deployment host aliases
532 ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
535 ## Iamguarded NGINX image
536 ## @param defaultBackend.image.registry [default: REGISTRY_NAME] Default backend image registry
537 ## @param defaultBackend.image.repository [default: REPOSITORY_NAME/nginx] Default backend image repository
538 ## @skip defaultBackend.image.tag Default backend image tag (immutable tags are recommended)
539 ## @param defaultBackend.image.digest Default backend image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
540 ## @param defaultBackend.image.pullPolicy Image pull policy
541 ## @param defaultBackend.image.pullSecrets Specify docker-registry secret names as an array
545 repository: chainguard-private/nginx-iamguarded
548 ## Specify a imagePullPolicy
549 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
551 pullPolicy: IfNotPresent
552 ## Optionally specify an array of imagePullSecrets.
553 ## Secrets must be manually created in the namespace.
554 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
557 ## - myRegistryKeySecretName
560 ## @param defaultBackend.extraArgs Additional command line arguments to pass to Nginx container
563 ## @param defaultBackend.containerPort HTTP container port number
566 ## @param defaultBackend.serverBlockConfig [string] NGINX backend default server block configuration
567 ## Should be compliant with: https://kubernetes.github.io/ingress-nginx/user-guide/default-backend/
569 serverBlockConfig: |-
577 ## @param defaultBackend.replicaCount Desired number of default backend pods
580 ## Default backend pods' Security Context
581 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
582 ## @param defaultBackend.podSecurityContext.enabled Enable Default backend pods' Security Context
583 ## @param defaultBackend.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
584 ## @param defaultBackend.podSecurityContext.sysctls Set kernel settings using the sysctl interface
585 ## @param defaultBackend.podSecurityContext.supplementalGroups Set filesystem extra groups
586 ## @param defaultBackend.podSecurityContext.fsGroup Group ID for the container filesystem
590 fsGroupChangePolicy: Always
592 supplementalGroups: []
594 ## Default backend containers' Security Context (only main container)
595 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
596 ## @param defaultBackend.containerSecurityContext.enabled Enable Default backend containers' Security Context
597 ## @param defaultBackend.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities that should be dropped
598 ## @param defaultBackend.containerSecurityContext.allowPrivilegeEscalation Switch to allow priviledge escalation on the container
599 ## @param defaultBackend.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
600 ## @param defaultBackend.containerSecurityContext.runAsUser User ID for the Default backend container
601 ## @param defaultBackend.containerSecurityContext.runAsGroup Group ID for the Default backend container
602 ## @param defaultBackend.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
603 ## @param defaultBackend.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot
604 ## @param defaultBackend.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
606 containerSecurityContext:
608 allowPrivilegeEscalation: false
612 readOnlyRootFilesystem: true
617 type: "RuntimeDefault"
618 ## Default backend containers' resource requests and limits
619 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
620 ## We usually recommend not to specify default resources and to leave this as a conscious
621 ## choice for the user. This also increases chances charts run on environments with little
622 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
623 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
624 ## @param defaultBackend.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if defaultBackend.resources is set (defaultBackend.resources is recommended for production).
626 resourcesPreset: "nano"
627 ## @param defaultBackend.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
638 ## Default backend containers' liveness probe. Evaluated as a template.
639 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
640 ## @param defaultBackend.livenessProbe.enabled Enable livenessProbe
641 ## @param defaultBackend.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
642 ## @param defaultBackend.livenessProbe.periodSeconds Period seconds for livenessProbe
643 ## @param defaultBackend.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
644 ## @param defaultBackend.livenessProbe.failureThreshold Failure threshold for livenessProbe
645 ## @param defaultBackend.livenessProbe.successThreshold Success threshold for livenessProbe
650 initialDelaySeconds: 30
654 ## Default backend containers' readiness probe. Evaluated as a template.
655 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
656 ## @param defaultBackend.readinessProbe.enabled Enable readinessProbe
657 ## @param defaultBackend.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
658 ## @param defaultBackend.readinessProbe.periodSeconds Period seconds for readinessProbe
659 ## @param defaultBackend.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
660 ## @param defaultBackend.readinessProbe.failureThreshold Failure threshold for readinessProbe
661 ## @param defaultBackend.readinessProbe.successThreshold Success threshold for readinessProbe
666 initialDelaySeconds: 0
670 ## Default backend containers' startup probe. Evaluated as a template.
671 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
672 ## @param defaultBackend.startupProbe.enabled Enable startupProbe
673 ## @param defaultBackend.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
674 ## @param defaultBackend.startupProbe.periodSeconds Period seconds for startupProbe
675 ## @param defaultBackend.startupProbe.timeoutSeconds Timeout seconds for startupProbe
676 ## @param defaultBackend.startupProbe.failureThreshold Failure threshold for startupProbe
677 ## @param defaultBackend.startupProbe.successThreshold Success threshold for startupProbe
682 initialDelaySeconds: 0
686 ## @param defaultBackend.customStartupProbe Custom liveness probe for the Web component
688 customStartupProbe: {}
689 ## @param defaultBackend.customLivenessProbe Custom liveness probe for the Web component
691 customLivenessProbe: {}
692 ## @param defaultBackend.customReadinessProbe Custom readiness probe for the Web component
694 customReadinessProbe: {}
695 ## @param defaultBackend.podLabels Extra labels for Controller pods
696 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
699 ## @param defaultBackend.podAnnotations Annotations for Controller pods
700 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
703 ## @param defaultBackend.priorityClassName priorityClassName
704 ## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass
706 priorityClassName: ""
707 ## @param defaultBackend.schedulerName Name of the k8s scheduler (other than default)
708 ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
711 ## @param defaultBackend.terminationGracePeriodSeconds In seconds, time the given to the pod to terminate gracefully
712 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
714 terminationGracePeriodSeconds: 60
715 ## @param defaultBackend.topologySpreadConstraints Topology Spread Constraints for pod assignment
716 ## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
717 ## The value is evaluated as a template
719 topologySpreadConstraints: []
720 ## @param defaultBackend.podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
721 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
723 podAffinityPreset: ""
724 ## @param defaultBackend.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
725 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
727 podAntiAffinityPreset: soft
728 ## Node affinity preset
729 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
732 ## @param defaultBackend.nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
735 ## @param defaultBackend.nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set.
737 ## key: "kubernetes.io/e2e-az-name"
740 ## @param defaultBackend.nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
747 ## @param defaultBackend.command Override default container command (useful when using custom images)
750 ## @param defaultBackend.args Override default container args (useful when using custom images)
753 ## @param defaultBackend.lifecycleHooks for the %%MAIN_CONTAINER_NAME%% container(s) to automate configuration before or after startup
756 ## @param defaultBackend.extraEnvVars Array with extra environment variables to add to %%MAIN_CONTAINER_NAME%% nodes
763 ## @param defaultBackend.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for %%MAIN_CONTAINER_NAME%% nodes
766 ## @param defaultBackend.extraEnvVarsSecret Name of existing Secret containing extra env vars for %%MAIN_CONTAINER_NAME%% nodes
768 extraEnvVarsSecret: ""
769 ## @param defaultBackend.extraVolumes Optionally specify extra list of additional volumes for the %%MAIN_CONTAINER_NAME%% pod(s)
772 ## @param defaultBackend.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the %%MAIN_CONTAINER_NAME%% container(s)
774 extraVolumeMounts: []
775 ## @param defaultBackend.sidecars Add additional sidecar containers to the %%MAIN_CONTAINER_NAME%% pod(s)
778 ## - name: your-image-name
780 ## imagePullPolicy: Always
783 ## containerPort: 1234
786 ## @param defaultBackend.initContainers Add additional init containers to the %%MAIN_CONTAINER_NAME%% pod(s)
787 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
790 ## - name: your-image-name
792 ## imagePullPolicy: Always
793 ## command: ['sh', '-c', 'echo "hello world"']
796 ## @param defaultBackend.affinity Affinity for pod assignment
797 ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
798 ## Note: defaultBackend.podAffinityPreset, defaultBackend.podAntiAffinityPreset, and defaultBackend.nodeAffinityPreset will be ignored when it's set
801 ## @param defaultBackend.nodeSelector Node labels for pod assignment
802 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
805 ## @param defaultBackend.tolerations Tolerations for pod assignment
806 ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
809 ## Default backend Service parameters
812 ## @param defaultBackend.service.type Kubernetes Service type for default backend
815 ## @param defaultBackend.service.ports.http Default backend service HTTP port
819 ## @param defaultBackend.service.annotations Annotations for the default backend service
823 ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
826 ## @param defaultBackend.networkPolicy.enabled Specifies whether a NetworkPolicy should be created
829 ## @param defaultBackend.networkPolicy.allowExternal Don't require server label for connections
830 ## The Policy model to apply. When set to false, only pods with the correct
831 ## server label will have network access to the ports server is listening
832 ## on. When true, server will accept connections from any source
833 ## (with the correct destination port).
836 ## @param defaultBackend.networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
838 allowExternalEgress: true
839 ## @param defaultBackend.networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
849 ## - matchExpressions:
855 ## @param defaultBackend.networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy
865 ## - matchExpressions:
872 ## @param defaultBackend.networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
873 ## @param defaultBackend.networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
875 ingressNSMatchLabels: {}
876 ingressNSPodMatchLabels: {}
877 ## Default backend Pod Disruption Budget configuration
878 ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
881 ## @param defaultBackend.pdb.create Enable/disable a Pod Disruption Budget creation for Default backend
884 ## @param defaultBackend.pdb.minAvailable Minimum number/percentage of Default backend pods that should remain scheduled
887 ## @param defaultBackend.pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `defaultBackend.pdb.minAvailable` and `defaultBackend.pdb.maxUnavailable` are empty.
890## @section Traffic exposure parameters
895 ## @param service.type Kubernetes Service type for Controller
898 ## @param service.ports [object] Service ports
903 ## @param service.targetPorts [object] Map the controller service HTTP/HTTPS port
908 ## @param service.nodePorts [object] Specify the nodePort value(s) for the LoadBalancer and NodePort service types.
909 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
916 ## @param service.annotations Annotations for controller service
917 ## This can be used to set the LoadBalancer service type to internal only.
918 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
921 ## @param service.labels Labels for controller service
924 ## @param service.clusterIP Controller Internal Cluster Service IP (optional)
927 ## @param service.externalIPs Controller Service external IP addresses
928 ## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
931 ## @param service.ipFamilyPolicy Controller Service ipFamilyPolicy (optional, cloud specific)
932 ## This can be either SingleStack, PreferDualStack or RequireDualStack
933 ## ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
936 ## @param service.ipFamilies Controller Service ipFamilies (optional, cloud specific)
937 ## This can be either ["IPv4"], ["IPv6"], ["IPv4", "IPv6"] or ["IPv6", "IPv4"]
938 ## ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
941 ## @param service.loadBalancerClass Load balancer class if service type is `LoadBalancer`
942 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-class
944 loadBalancerClass: ""
945 ## @param service.loadBalancerIP Kubernetes LoadBalancerIP to request for Controller (optional, cloud specific)
946 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
949 ## @param service.loadBalancerSourceRanges List of IP CIDRs allowed access to load balancer (if supported)
950 ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
952 loadBalancerSourceRanges: []
953 ## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
956 ## @param service.externalTrafficPolicy Set external traffic policy to: "Local" to preserve source IP on providers supporting it
957 ## Enable client source IP preservation
958 ## Ref: https://kubernetes.io/docs/tutorials/services/source-ip/#source-ip-for-services-with-typeloadbalancer
960 externalTrafficPolicy: ""
961 ## @param service.healthCheckNodePort Set this to the managed health-check port the kube-proxy will expose. If blank, a random port in the `NodePort` range will be assigned
963 healthCheckNodePort: 0
964 ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
965 ## If "ClientIP", consecutive client requests will be directed to the same Pod
966 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
968 sessionAffinity: None
969 ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
970 ## sessionAffinityConfig:
972 ## timeoutSeconds: 300
974 sessionAffinityConfig: {}
976## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
979 ## @param networkPolicy.enabled Specifies whether a NetworkPolicy should be created
982 ## @param networkPolicy.allowExternal Don't require server label for connections
983 ## The Policy model to apply. When set to false, only pods with the correct
984 ## server label will have network access to the ports server is listening
985 ## on. When true, server will accept connections from any source
986 ## (with the correct destination port).
989 ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
991 allowExternalEgress: true
992 ## @param networkPolicy.kubeAPIServerPorts [array] List of possible endpoints to kube-apiserver (limit to your cluster settings to increase security)
994 kubeAPIServerPorts: [443, 6443, 8443]
995 ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
1005 ## - matchExpressions:
1011 ## @param networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy
1021 ## - matchExpressions:
1028 ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
1029 ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
1031 ingressNSMatchLabels: {}
1032 ingressNSPodMatchLabels: {}
1033## @section RBAC parameters
1035## Pods Service Account
1036## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
1039 ## @param serviceAccount.create Enable the creation of a ServiceAccount for Controller pods
1042 ## @param serviceAccount.name Name of the created ServiceAccount
1043 ## If not set and create is true, a name is generated using the metrics-server.fullname template
1045 ## @param serviceAccount.annotations Annotations for service account.
1046 ## Only used if `create` is `true`.
1049 ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account
1051 automountServiceAccountToken: false
1053## Ref: https://kubernetes.io/docs/admin/authorization/rbac/
1056 ## @param rbac.create Specifies whether RBAC rules should be created
1059 ## @param rbac.rules Custom RBAC rules
1071## @section Other parameters
1073## Controller Pod Disruption Budget configuration
1074## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
1077 ## @param pdb.create Enable/disable a Pod Disruption Budget creation for Controller
1080 ## @param pdb.minAvailable Minimum number/percentage of Controller pods that should remain scheduled
1083 ## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `pdb.minAvailable` and `pdb.maxUnavailable` are empty.
1086## Controller Autoscaling configuration
1087## @param autoscaling.enabled Enable autoscaling for Controller
1088## @param autoscaling.minReplicas Minimum number of Controller replicas
1089## @param autoscaling.maxReplicas Maximum number of Controller replicas
1090## @param autoscaling.targetCPU Target CPU utilization percentage
1091## @param autoscaling.targetMemory Target Memory utilization percentage
1099## @section Metrics parameters
1101## Prometheus exporter parameters
1104 ## @param metrics.enabled Enable exposing Controller statistics
1107 ## Prometheus exporter service parameters
1110 ## @param metrics.service.type Type of Prometheus metrics service to create
1113 ## @param metrics.service.ports.metrics Service HTTP management port
1117 ## @param metrics.service.annotations [object] Annotations for the Prometheus exporter service
1120 prometheus.io/scrape: "true"
1121 prometheus.io/port: "{{ coalesce .Values.metrics.service.ports.metrics .Values.metrics.service.port }}"
1122 ## @param metrics.service.labels Labels for the Prometheus exporter service
1125 ## Prometheus Operator ServiceMonitor configuration
1128 ## @param metrics.serviceMonitor.enabled Create ServiceMonitor resource for scraping metrics using PrometheusOperator
1131 ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
1134 ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
1137 ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped
1138 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1141 ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended
1142 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1144 ## scrapeTimeout: 10s
1147 ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
1148 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
1151 ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
1152 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
1154 metricRelabelings: []
1155 ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels
1158 ## prometheus: my-prometheus
1161 ## @param metrics.serviceMonitor.annotations Extra annotations for the ServiceMonitor
1164 ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor
1167 ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
1170 ## @param metrics.prometheusRule.enabled Create PrometheusRules resource for scraping metrics using PrometheusOperator
1171 ## @param metrics.prometheusRule.additionalLabels Used to pass Labels that are required by the Installed Prometheus Operator
1172 ## @param metrics.prometheusRule.namespace Namespace which Prometheus is running in
1173 ## @param metrics.prometheusRule.rules Rules to be prometheus in YAML format, check values for an example
1177 additionalLabels: {}