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.imagePullSecrets Global Docker registry secret names as an array
22 ## - myRegistryKeySecretName
25 ## Security parameters
28 ## @param global.security.allowInsecureImages Allows skipping image verification
30 allowInsecureImages: false
31 ## Compatibility adaptations for Kubernetes platforms
34 ## Compatibility adaptations for Openshift
37 ## @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)
39 adaptSecurityContext: auto
41## @section Common parameters
43## @param nameOverride String to partially override nginx.fullname template (will maintain the release name)
46## @param fullnameOverride String to fully override nginx.fullname template
49## @param namespaceOverride String to fully override common.names.namespace
52## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
55## @param clusterDomain Kubernetes Cluster Domain
57clusterDomain: cluster.local
58## @param extraDeploy Extra objects to deploy (value evaluated as a template)
61## @param commonLabels Add labels to all the deployed resources
64## @param commonAnnotations Add annotations to all the deployed resources
67## Enable diagnostic mode in the deployment(s)/statefulset(s)
70 ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
73 ## @param diagnosticMode.command Command to override all containers in the the deployment(s)/statefulset(s)
77 ## @param diagnosticMode.args Args to override all containers in the the deployment(s)/statefulset(s)
81## @section NGINX parameters
83## Iamguarded NGINX image version
84## @param image.registry [default: REGISTRY_NAME] NGINX image registry
85## @param image.repository [default: REPOSITORY_NAME/nginx] NGINX image repository
86## @skip image.tag NGINX image tag (immutable tags are recommended)
87## @param image.digest NGINX image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
88## @param image.pullPolicy NGINX image pull policy
89## @param image.pullSecrets Specify docker-registry secret names as an array
90## @param image.debug Set to true if you would like to see extra information on logs
94 repository: chainguard-private/nginx-iamguarded
97 ## Specify a imagePullPolicy
98 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
100 pullPolicy: IfNotPresent
101 ## Optionally specify an array of imagePullSecrets.
102 ## Secrets must be manually created in the namespace.
103 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
106 ## - myRegistryKeySecretName
109 ## Set to true if you would like to see extra information on logs
112## @param enableDefaultInitContainers If set to false, disable all init containers except user-defined at `initContainer`.
114enableDefaultInitContainers: true
115## @param automountServiceAccountToken Mount Service Account token in pod
117automountServiceAccountToken: false
118## @param hostAliases Deployment pod host aliases
119## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
122## Command and args for running the container (set to default if not set). Use array form
123## @param command Override default container command (useful when using custom images)
124## @param args Override default container args (useful when using custom images)
128## @param extraEnvVars Extra environment variables to be set on NGINX containers
135## @param extraEnvVarsCM ConfigMap with extra environment variables
138## @param extraEnvVarsSecret Secret with extra environment variables
140extraEnvVarsSecret: ""
141## @section NGINX deployment parameters
143## @param replicaCount Number of NGINX replicas to deploy
146## @param revisionHistoryLimit The number of old history to retain to allow rollback
148revisionHistoryLimit: 10
149## @param updateStrategy.type NGINX deployment strategy type
150## @param updateStrategy.rollingUpdate NGINX deployment rolling update configuration parameters
151## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
156## @param podLabels Additional labels for NGINX pods
157## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
160## @param podAnnotations Annotations for NGINX pods
161## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
164## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
165## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
168## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
169## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
171podAntiAffinityPreset: soft
172## Node affinity preset
173## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
176 ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
179 ## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.
181 ## key: "kubernetes.io/e2e-az-name"
184 ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
191## @param affinity Affinity for pod assignment
192## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
193## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
196## @param hostNetwork Specify if host network should be enabled for NGINX pod
199## @param hostIPC Specify if host IPC should be enabled for NGINX pod
203## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
204## @param dnsPolicy Specifies the DNS policy for the NGINX pod
205## DNS policies can be set on a per-Pod basis. Currently Kubernetes supports the following Pod-specific DNS policies.
206## Available options: Default, ClusterFirst, ClusterFirstWithHostNet, None
207## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
209## @param dnsConfig Allows users more control on the DNS settings for a Pod. Required if `dnsPolicy` is set to `None`
210## The dnsConfig field is optional and it can work with any dnsPolicy settings.
211## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
215## - 192.0.2.1 # this is an example
217## - ns1.svc.cluster-domain.example
218## - my.dns.search.suffix
224## @param nodeSelector Node labels for pod assignment. Evaluated as a template.
225## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
228## @param tolerations Tolerations for pod assignment. Evaluated as a template.
229## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
232## @param priorityClassName NGINX pods' priorityClassName
235## @param schedulerName Name of the k8s scheduler (other than default)
236## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
239## @param terminationGracePeriodSeconds In seconds, time the given to the NGINX pod needs to terminate gracefully
240## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
242terminationGracePeriodSeconds: ""
243## @param topologySpreadConstraints Topology Spread Constraints for pod assignment
244## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
245## The value is evaluated as a template
247topologySpreadConstraints: []
251 ## @param tls.enabled Enable TLS transport
254 ## @param tls.autoGenerated Auto-generate self-signed certificates
257 ## @param tls.existingSecret Name of a secret containing the certificates
260 ## @param tls.certFilename Path of the certificate file when mounted as a secret
262 certFilename: tls.crt
263 ## @param tls.certKeyFilename Path of the certificate key file when mounted as a secret
265 certKeyFilename: tls.key
266 ## @param tls.certCAFilename Path of the certificate CA file when mounted as a secret
268 certCAFilename: ca.crt
269 ## @param tls.cert Content of the certificate to be added to the secret
272 ## @param tls.key Content of the certificate key to be added to the secret
275 ## @param tls.ca Content of the certificate CA to be added to the secret
278## NGINX pods' Security Context.
279## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
280## @param podSecurityContext.enabled Enabled NGINX pods' Security Context
281## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
282## @param podSecurityContext.supplementalGroups Set filesystem extra groups
283## @param podSecurityContext.fsGroup Set NGINX pod's Security Context fsGroup
284## @param podSecurityContext.sysctls sysctl settings of the NGINX pods
288 fsGroupChangePolicy: Always
289 supplementalGroups: []
294 ## - name: net.core.somaxconn
298## NGINX containers' Security Context.
299## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
300## @param containerSecurityContext.enabled Enabled containers' Security Context
301## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
302## @param containerSecurityContext.runAsUser Set containers' Security Context runAsUser
303## @param containerSecurityContext.runAsGroup Set containers' Security Context runAsGroup
304## @param containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot
305## @param containerSecurityContext.privileged Set container's Security Context privileged
306## @param containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
307## @param containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation
308## @param containerSecurityContext.capabilities.drop List of capabilities to be dropped
309## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
311containerSecurityContext:
318 readOnlyRootFilesystem: true
319 allowPrivilegeEscalation: false
323 type: "RuntimeDefault"
324## Configures the ports NGINX listens on
325## @param containerPorts.http Sets http port inside NGINX container
326## @param containerPorts.https Sets https port inside NGINX container
331## @param extraContainerPorts Array of additional container ports for the Nginx container
333## extraContainerPorts:
335## containerPort: 4317
337extraContainerPorts: []
338## NGINX containers' resource requests and limits
339## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
340## We usually recommend not to specify default resources and to leave this as a conscious
341## choice for the user. This also increases chances charts run on environments with little
342## resources, such as Minikube. If you do want to specify resources, uncomment the following
343## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
344## @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).
346resourcesPreset: "nano"
347## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
358## NGINX containers' lifecycleHooks
359## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
360## ref: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/
361## If you do want to specify lifecycleHooks, uncomment the following
362## lines, adjust them as necessary, and remove the curly braces on 'lifecycle:{}'.
363## @param lifecycleHooks Optional lifecycleHooks for the NGINX container
368## command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
372## command: ["/bin/sleep", "20"]
373## command: ["/bin/sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]
375## NGINX containers' startup probe.
376## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
377## @param startupProbe.enabled Enable startupProbe
378## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
379## @param startupProbe.periodSeconds Period seconds for startupProbe
380## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
381## @param startupProbe.failureThreshold Failure threshold for startupProbe
382## @param startupProbe.successThreshold Success threshold for startupProbe
386 initialDelaySeconds: 30
391## NGINX containers' liveness probe.
392## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
393## @param livenessProbe.enabled Enable livenessProbe
394## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
395## @param livenessProbe.periodSeconds Period seconds for livenessProbe
396## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
397## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
398## @param livenessProbe.successThreshold Success threshold for livenessProbe
402 initialDelaySeconds: 30
407## NGINX containers' readiness probe.
408## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
409## @param readinessProbe.enabled Enable readinessProbe
410## @param readinessProbe.path Request path for livenessProbe
411## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
412## @param readinessProbe.periodSeconds Period seconds for readinessProbe
413## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
414## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
415## @param readinessProbe.successThreshold Success threshold for readinessProbe
420 initialDelaySeconds: 5
425## @param customStartupProbe Custom liveness probe for the Web component
427customStartupProbe: {}
428## @param customLivenessProbe Override default liveness probe
430customLivenessProbe: {}
431## @param customReadinessProbe Override default readiness probe
433customReadinessProbe: {}
434## Autoscaling parameters
435## @param autoscaling.enabled Enable autoscaling for NGINX deployment
436## @param autoscaling.minReplicas Minimum number of replicas to scale back
437## @param autoscaling.maxReplicas Maximum number of replicas to scale out
438## @param autoscaling.targetCPU Target CPU utilization percentage
439## @param autoscaling.targetMemory Target Memory utilization percentage
447## @param extraVolumes Array to add extra volumes
450## @param extraVolumeMounts Array to add extra mount
453## Pods Service Account
454## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
457 ## @param serviceAccount.create Enable creation of ServiceAccount for nginx pod
460 ## @param serviceAccount.name The name of the ServiceAccount to use.
461 ## If not set and create is true, a name is generated using the `common.names.fullname` template
463 ## @param serviceAccount.annotations Annotations for service account. Evaluated as a template.
464 ## Only used if `create` is `true`.
467 ## @param serviceAccount.automountServiceAccountToken Auto-mount the service account token in the pod
469 automountServiceAccountToken: false
470## @param sidecars Sidecar parameters
473## - name: your-image-name
475## imagePullPolicy: Always
478## containerPort: 1234
481## @param sidecarSingleProcessNamespace Enable sharing the process namespace with sidecars
482## This will switch pod.spec.shareProcessNamespace parameter
484sidecarSingleProcessNamespace: false
485## @param initContainers Extra init containers
488## Pod Disruption Budget configuration
489## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
492 ## @param pdb.create Created a PodDisruptionBudget
495 ## @param pdb.minAvailable Min number of pods that must still be available after the eviction.
496 ## You can specify an integer or a percentage by setting the value to a string representation of a percentage (eg. "50%"). It will be disabled if set to 0
499 ## @param pdb.maxUnavailable Max number of pods that can be unavailable after the eviction.
500 ## You can specify an integer or a percentage by setting the value to a string representation of a percentage (eg. "50%"). It will be disabled if set to 0. Defaults to `1` if both `pdb.minAvailable` and `pdb.maxUnavailable` are empty.
503## @section Custom NGINX application parameters
505## Get the server static content from a git repository
506## NOTE: This will override staticSiteConfigmap and staticSitePVC
508cloneStaticSiteFromGit:
509 ## @param cloneStaticSiteFromGit.enabled Get the server static content from a Git repository
512 ## Iamguarded Git image version
513 ## @param cloneStaticSiteFromGit.image.registry [default: REGISTRY_NAME] Git image registry
514 ## @param cloneStaticSiteFromGit.image.repository [default: REPOSITORY_NAME/git] Git image repository
515 ## @skip cloneStaticSiteFromGit.image.tag Git image tag (immutable tags are recommended)
516 ## @param cloneStaticSiteFromGit.image.digest Git image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
517 ## @param cloneStaticSiteFromGit.image.pullPolicy Git image pull policy
518 ## @param cloneStaticSiteFromGit.image.pullSecrets Specify docker-registry secret names as an array
522 repository: chainguard-private/git-iamguarded
525 ## Specify a imagePullPolicy
526 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
528 pullPolicy: IfNotPresent
529 ## Optionally specify an array of imagePullSecrets.
530 ## Secrets must be manually created in the namespace.
531 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
534 ## - myRegistryKeySecretName
537 ## @param cloneStaticSiteFromGit.repository Git Repository to clone static content from
540 ## @param cloneStaticSiteFromGit.branch Git branch to checkout
543 ## @param cloneStaticSiteFromGit.interval Interval for sidecar container pull from the Git repository
546 ## Additional configuration for git-clone-repository initContainer
549 ## @param cloneStaticSiteFromGit.gitClone.command Override default container command for git-clone-repository
552 ## @param cloneStaticSiteFromGit.gitClone.args Override default container args for git-clone-repository
555 ## Additional configuration for the git-repo-syncer container
558 ## @param cloneStaticSiteFromGit.gitSync.command Override default container command for git-repo-syncer
561 ## @param cloneStaticSiteFromGit.gitSync.args Override default container args for git-repo-syncer
564 ## git-repo-syncer resource requests and limits
565 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
566 ## @param cloneStaticSiteFromGit.gitSync.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if cloneStaticSiteFromGit.gitSync.resources is set (cloneStaticSiteFromGit.gitSync.resources is recommended for production).
568 resourcesPreset: "nano"
569 ## @param cloneStaticSiteFromGit.gitSync.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
580 ## @param cloneStaticSiteFromGit.extraEnvVars Additional environment variables to set for the in the containers that clone static site from git
587 ## @param cloneStaticSiteFromGit.extraEnvVarsSecret Secret with extra environment variables
589 extraEnvVarsSecret: ""
590 ## @param cloneStaticSiteFromGit.extraVolumeMounts Add extra volume mounts for the Git containers
591 ## Useful to mount keys to connect through ssh. (normally used with extraVolumes)
593 ## extraVolumeMounts:
595 ## mountPath: /root/.ssh/
597 extraVolumeMounts: []
598## @param serverBlock Custom server block to be added to NGINX configuration
599## PHP-FPM example server block:
602## listen 0.0.0.0:8080;
605## index index.html index.php;
607## location ~ \.php$ {
608## fastcgi_pass phpfpm-server:9000;
609## fastcgi_index index.php;
610## include fastcgi.conf;
615## @param streamServerBlock Custom stream server block to be added to NGINX configuration
616## streamServerBlock: |-
618## listen 0.0.0.0:8080 udp;
619## proxy_pass localhost:9000;
623## @param existingServerBlockConfigmap ConfigMap with custom server block to be added to NGINX configuration
624## NOTE: This will override serverBlock
626existingServerBlockConfigmap: ""
627## @param existingStreamServerBlockConfigmap ConfigMap with custom stream server block to be added to NGINX configuration
628## NOTE: This will override streamServerBlock
630existingStreamServerBlockConfigmap: ""
631## Collection of NGINX context based includes
635## load_module /opt/iamguarded/nginx/modules/ngx_http_dav_module.so;
638 ## @param contextIncludes.main Custom configuration for the main context
641 ## @param contextIncludes.events Custom configuration for the events context
644 ## @param contextIncludes.http Custom configuration for the http context
647## @param existingContextMainConfigmaps List of existing ConfigMaps with custom main context configuration
648## NOTE: These will be mounted alongside contextIncludes.main
650## existingContextMainConfigmaps:
651## - "my-modules-config"
652## - "my-main-directives-config"
654existingContextMainConfigmaps: []
655## @param existingContextEventsConfigmaps List of existing ConfigMaps with custom events context configuration
656## NOTE: These will be mounted alongside contextIncludes.events
658existingContextEventsConfigmaps: []
659## @param existingContextHttpConfigmaps List of existing ConfigMaps with custom http context configuration
660## NOTE: These will be mounted alongside contextIncludes.http
662existingContextHttpConfigmaps: []
663## @param staticSiteConfigmap Name of existing ConfigMap with the server static site content
665staticSiteConfigmap: ""
666## @param staticSitePVC Name of existing PVC with the server static site content
667## NOTE: This will override staticSiteConfigmap
670## @section Traffic Exposure parameters
672## NGINX Service properties
675 ## @param service.type Service type
678 ## @param service.ports.http Service HTTP port
679 ## @param service.ports.https Service HTTPS port
685 ## @param service.nodePorts [object] Specify the nodePort(s) value(s) for the LoadBalancer and NodePort service types.
686 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
691 ## @param service.targetPort [object] Target port reference value for the Loadbalancer service types can be specified explicitly.
692 ## Listeners for the Loadbalancer can be custom mapped to the http or https service.
693 ## Example: Mapping the https listener to targetPort http [http: https]
698 ## @param service.clusterIP NGINX service Cluster IP
703 ## @param service.loadBalancerIP LoadBalancer service IP address
704 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
707 ## @param service.loadBalancerSourceRanges NGINX service Load Balancer sources
708 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
710 ## loadBalancerSourceRanges:
713 loadBalancerSourceRanges: []
714 ## @param service.loadBalancerClass service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)
715 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
717 loadBalancerClass: ""
718 ## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
721 ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
722 ## If "ClientIP", consecutive client requests will be directed to the same Pod
723 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
725 sessionAffinity: None
726 ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
727 ## sessionAffinityConfig:
729 ## timeoutSeconds: 300
731 sessionAffinityConfig: {}
732 ## @param service.annotations Service annotations
733 ## This can be used to set the LoadBalancer service type to internal only.
734 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
737 ## @param service.externalTrafficPolicy Enable client source IP preservation
738 ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
740 externalTrafficPolicy: Cluster
742## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
745 ## @param networkPolicy.enabled Specifies whether a NetworkPolicy should be created
748 ## @param networkPolicy.allowExternal Don't require server label for connections
749 ## The Policy model to apply. When set to false, only pods with the correct
750 ## server label will have network access to the ports server is listening
751 ## on. When true, server will accept connections from any source
752 ## (with the correct destination port).
755 ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
757 allowExternalEgress: true
758 ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
768 ## - matchExpressions:
774 ## @param networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
784 ## - matchExpressions:
791 ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
792 ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
794 ingressNSMatchLabels: {}
795 ingressNSPodMatchLabels: {}
796## Configure the ingress resource that allows you to access the
797## Nginx installation. Set up the URL
798## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
801 ## @param ingress.enabled Set to true to enable ingress record generation
804 ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
807 ## @param ingress.pathType Ingress path type
809 pathType: ImplementationSpecific
810 ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)
813 ## @param ingress.hostname Default host for the ingress resource
815 hostname: nginx.local
816 ## @param ingress.path The Path to Nginx. You may need to set this to '/*' in order to use this with ALB ingress controllers.
819 ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
820 ## For a full list of possible ingress annotations, please see
821 ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
822 ## Use this parameter to set the required annotations for cert-manager, see
823 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
827 ## kubernetes.io/ingress.class: nginx
828 ## cert-manager.io/cluster-issuer: cluster-issuer-name
831 ## @param ingress.ingressClassName Set the ingerssClassName on the ingress record for k8s 1.18+
832 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
833 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
836 ## @param ingress.tls Create TLS Secret
837 ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.ingress.hostname }}
838 ## You can use the ingress.secrets parameter to create this TLS secret or relay on cert-manager to create it
841 ## @param ingress.tlsWwwPrefix Adds www subdomain to default cert
842 ## Creates tls host with ingress.hostname: {{ print "www.%s" .Values.ingress.hostname }}
843 ## Is enabled if "nginx.ingress.kubernetes.io/from-to-www-redirect" is "true"
845 ## @param ingress.extraHosts The list of additional hostnames to be covered with this ingress record.
846 ## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array
848 ## - name: nginx.local
852 ## @param ingress.extraPaths Any additional arbitrary paths that may need to be added to the ingress under the main host.
853 ## For example: The ALB ingress controller requires a special rule for handling SSL redirection.
857 ## serviceName: ssl-redirect
858 ## servicePort: use-annotation
861 ## @param ingress.extraTls The tls configuration for additional hostnames to be covered with this ingress record.
862 ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
866 ## secretName: nginx.local-tls
869 ## @param ingress.secrets If you're providing your own certificates, please use this to add the certificates as secrets
870 ## key and certificate should start with -----BEGIN CERTIFICATE----- or
871 ## -----BEGIN RSA PRIVATE KEY-----
873 ## name should line up with a tlsSecret set further up
874 ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set
876 ## It is also possible to create and manage the certificates outside of this helm chart
877 ## Please see README.md for more information
879 ## - name: nginx.local-tls
884 ## @param ingress.extraRules The list of additional rules to be added to this ingress record. Evaluated as a template
885 ## Useful when looking for additional customization, such as using different backend
888## Health Ingress parameters
891 ## @param healthIngress.enabled Set to true to enable health ingress record generation
894 ## @param healthIngress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
897 ## @param healthIngress.pathType Ingress path type
899 pathType: ImplementationSpecific
900 ## @param healthIngress.hostname When the health ingress is enabled, a host pointing to this will be created
902 hostname: example.local
903 ## @param healthIngress.path Default path for the ingress record
904 ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
907 ## @param healthIngress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
908 ## For a full list of possible ingress annotations, please see
909 ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
910 ## Use this parameter to set the required annotations for cert-manager, see
911 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
915 ## kubernetes.io/ingress.class: nginx
916 ## cert-manager.io/cluster-issuer: cluster-issuer-name
919 ## @param healthIngress.tls Enable TLS configuration for the hostname defined at `healthIngress.hostname` parameter
920 ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.healthIngress.hostname }}
921 ## You can use the healthIngress.secrets parameter to create this TLS secret, relay on cert-manager to create it, or
922 ## let the chart create self-signed certificates for you
925 ## @param healthIngress.extraHosts An array with additional hostname(s) to be covered with the ingress record
928 ## - name: example.local
932 ## @param healthIngress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
937 ## serviceName: ssl-redirect
938 ## servicePort: use-annotation
941 ## @param healthIngress.extraTls TLS configuration for additional hostnames to be covered
942 ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
947 ## secretName: example.local-tls
950 ## @param healthIngress.secrets TLS Secret configuration
951 ## If you're providing your own certificates, please use this to add the certificates as secrets
952 ## key and certificate should start with -----BEGIN CERTIFICATE----- or -----BEGIN RSA PRIVATE KEY-----
953 ## name should line up with a secretName set further up
954 ## If it is not set and you're using cert-manager, this is unneeded, as it will create the secret for you
955 ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created
956 ## It is also possible to create and manage the certificates outside of this helm chart
957 ## Please see README.md for more information
961 ## - name: example.local-tls
966 ## @param healthIngress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
967 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
968 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
971 ## @param healthIngress.extraRules The list of additional rules to be added to this ingress record. Evaluated as a template
972 ## Useful when looking for additional customization, such as using different backend
975## @section Metrics parameters
977## Prometheus Exporter / Metrics
980 ## @param metrics.enabled Start a Prometheus exporter sidecar container
983 ## Iamguarded NGINX Prometheus Exporter image
984 ## @param metrics.image.registry [default: REGISTRY_NAME] NGINX Prometheus exporter image registry
985 ## @param metrics.image.repository [default: REPOSITORY_NAME/nginx-exporter] NGINX Prometheus exporter image repository
986 ## @skip metrics.image.tag NGINX Prometheus exporter image tag (immutable tags are recommended)
987 ## @param metrics.image.digest NGINX Prometheus exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
988 ## @param metrics.image.pullPolicy NGINX Prometheus exporter image pull policy
989 ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array
993 repository: chainguard-private/nginx-prometheus-exporter-iamguarded
996 pullPolicy: IfNotPresent
997 ## Optionally specify an array of imagePullSecrets.
998 ## Secrets must be manually created in the namespace.
999 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
1002 ## - myRegistryKeySecretName
1005 ## @param metrics.port NGINX Container Status Port scraped by Prometheus Exporter
1006 ## Defaults to specified http port
1009 ## @param metrics.extraArgs Extra arguments for Prometheus exporter
1012 ## - --nginx.timeout
1016 ## @param metrics.containerPorts.metrics Prometheus exporter container port
1020 ## @param metrics.podAnnotations Additional annotations for NGINX Prometheus exporter pod(s)
1021 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
1024 ## Container Security Context
1025 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
1026 ## @param metrics.securityContext.enabled Enabled NGINX Exporter containers' Security Context
1027 ## @param metrics.securityContext.seLinuxOptions [object,nullable] Set SELinux options in container
1028 ## @param metrics.securityContext.runAsUser Set NGINX Exporter container's Security Context runAsUser
1034 ## Prometheus exporter service parameters
1037 ## @param metrics.service.port NGINX Prometheus exporter service port
1040 ## @param metrics.service.annotations [object] Annotations for the Prometheus exporter service
1043 prometheus.io/scrape: "true"
1044 prometheus.io/port: "{{ .Values.metrics.service.port }}"
1045 ## NGINX Prometheus exporter resource requests and limits
1046 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1047 ## We usually recommend not to specify default resources and to leave this as a conscious
1048 ## choice for the user. This also increases chances charts run on environments with little
1049 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
1050 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
1051 ## @param metrics.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production).
1053 resourcesPreset: "nano"
1054 ## @param metrics.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
1065 ## Prometheus Operator ServiceMonitor configuration
1068 ## @param metrics.serviceMonitor.enabled Creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)
1071 ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
1074 ## @param metrics.serviceMonitor.tlsConfig [object] TLS configuration used for scrape endpoints used by Prometheus
1077 ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
1080 ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped.
1081 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1086 ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
1087 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1089 ## scrapeTimeout: 10s
1092 ## @param metrics.serviceMonitor.selector Prometheus instance selector labels
1095 ## prometheus: my-prometheus
1098 ## @param metrics.serviceMonitor.labels Additional labels that can be used so PodMonitor will be discovered by Prometheus
1101 ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
1104 ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
1106 metricRelabelings: []
1107 ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
1110 ## Prometheus Operator PrometheusRule configuration
1113 ## @param metrics.prometheusRule.enabled if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`)
1116 ## @param metrics.prometheusRule.namespace Namespace for the PrometheusRule Resource (defaults to the Release Namespace)
1119 ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so PrometheusRule will be discovered by Prometheus
1121 additionalLabels: {}
1122 ## @param metrics.prometheusRule.rules Prometheus Rule definitions
1123 ## - alert: LowInstance
1124 ## expr: up{service="{{ template "common.names.fullname" . }}"} < 1
1127 ## severity: critical
1129 ## description: Service {{ template "common.names.fullname" . }} Tomcat is down since 1m.
1130 ## summary: Tomcat instance is down.
1133 ## @param metrics.customLivenessProbe Override default metrics liveness probe
1135 customLivenessProbe: {}
1136 ## NGINX metrics containers' liveness probe.
1137 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
1138 ## @param metrics.livenessProbe.enabled Enable livenessProbe
1139 ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
1140 ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
1141 ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe
1142 ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe
1143 ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe
1147 initialDelaySeconds: 30
1152 ## @param metrics.customReadinessProbe Override default metrics readiness probe
1154 customReadinessProbe: {}
1155 ## NGINX metrics containers' readiness probe.
1156 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
1157 ## @param metrics.readinessProbe.enabled Enable readinessProbe
1158 ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
1159 ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
1160 ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe
1161 ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe
1162 ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe
1167 initialDelaySeconds: 5
1172 ## @param metrics.customStartupProbe Override default metrics startup probe
1174 customStartupProbe: {}
1175 ## NGINX metrics containers' startup probe.
1176 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
1177 ## @param metrics.startupProbe.enabled Enable startupProbe
1178 ## @param metrics.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
1179 ## @param metrics.startupProbe.timeoutSeconds Timeout seconds for startupProbe
1180 ## @param metrics.startupProbe.periodSeconds Period seconds for startupProbe
1181 ## @param metrics.startupProbe.failureThreshold Failure threshold for startupProbe
1182 ## @param metrics.startupProbe.successThreshold Success threshold for startupProbe
1187 initialDelaySeconds: 5
1190 failureThreshold: 10