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## ref: https://hub.docker.com/r/iamguarded/nginx/tags/
85## @param image.registry [default: REGISTRY_NAME] NGINX image registry
86## @param image.repository [default: REPOSITORY_NAME/nginx] NGINX image repository
87## @skip image.tag NGINX image tag (immutable tags are recommended)
88## @param image.digest NGINX image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
89## @param image.pullPolicy NGINX image pull policy
90## @param image.pullSecrets Specify docker-registry secret names as an array
91## @param image.debug Set to true if you would like to see extra information on logs
95 repository: chainguard-private/nginx-iamguarded
98 ## Specify a imagePullPolicy
99 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
101 pullPolicy: IfNotPresent
102 ## Optionally specify an array of imagePullSecrets.
103 ## Secrets must be manually created in the namespace.
104 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
107 ## - myRegistryKeySecretName
110 ## Set to true if you would like to see extra information on logs
113## @param enableDefaultInitContainers If set to false, disable all init containers except user-defined at `initContainer`.
115enableDefaultInitContainers: true
116## @param automountServiceAccountToken Mount Service Account token in pod
118automountServiceAccountToken: false
119## @param hostAliases Deployment pod host aliases
120## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
123## Command and args for running the container (set to default if not set). Use array form
124## @param command Override default container command (useful when using custom images)
125## @param args Override default container args (useful when using custom images)
129## @param extraEnvVars Extra environment variables to be set on NGINX containers
136## @param extraEnvVarsCM ConfigMap with extra environment variables
139## @param extraEnvVarsSecret Secret with extra environment variables
141extraEnvVarsSecret: ""
142## @section NGINX deployment parameters
144## @param replicaCount Number of NGINX replicas to deploy
147## @param revisionHistoryLimit The number of old history to retain to allow rollback
149revisionHistoryLimit: 10
150## @param updateStrategy.type NGINX deployment strategy type
151## @param updateStrategy.rollingUpdate NGINX deployment rolling update configuration parameters
152## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
157## @param podLabels Additional labels for NGINX pods
158## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
161## @param podAnnotations Annotations for NGINX pods
162## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
165## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
166## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
169## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
170## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
172podAntiAffinityPreset: soft
173## Node affinity preset
174## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
177 ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
180 ## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.
182 ## key: "kubernetes.io/e2e-az-name"
185 ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
192## @param affinity Affinity for pod assignment
193## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
194## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
197## @param hostNetwork Specify if host network should be enabled for NGINX pod
200## @param hostIPC Specify if host IPC should be enabled for NGINX pod
204## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
205## @param dnsPolicy Specifies the DNS policy for the NGINX pod
206## DNS policies can be set on a per-Pod basis. Currently Kubernetes supports the following Pod-specific DNS policies.
207## Available options: Default, ClusterFirst, ClusterFirstWithHostNet, None
208## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
210## @param dnsConfig Allows users more control on the DNS settings for a Pod. Required if `dnsPolicy` is set to `None`
211## The dnsConfig field is optional and it can work with any dnsPolicy settings.
212## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
216## - 192.0.2.1 # this is an example
218## - ns1.svc.cluster-domain.example
219## - my.dns.search.suffix
225## @param nodeSelector Node labels for pod assignment. Evaluated as a template.
226## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
229## @param tolerations Tolerations for pod assignment. Evaluated as a template.
230## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
233## @param priorityClassName NGINX pods' priorityClassName
236## @param schedulerName Name of the k8s scheduler (other than default)
237## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
240## @param terminationGracePeriodSeconds In seconds, time the given to the NGINX pod needs to terminate gracefully
241## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
243terminationGracePeriodSeconds: ""
244## @param topologySpreadConstraints Topology Spread Constraints for pod assignment
245## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
246## The value is evaluated as a template
248topologySpreadConstraints: []
252 ## @param tls.enabled Enable TLS transport
255 ## @param tls.autoGenerated Auto-generate self-signed certificates
258 ## @param tls.existingSecret Name of a secret containing the certificates
261 ## @param tls.certFilename Path of the certificate file when mounted as a secret
263 certFilename: tls.crt
264 ## @param tls.certKeyFilename Path of the certificate key file when mounted as a secret
266 certKeyFilename: tls.key
267 ## @param tls.certCAFilename Path of the certificate CA file when mounted as a secret
269 certCAFilename: ca.crt
270 ## @param tls.cert Content of the certificate to be added to the secret
273 ## @param tls.key Content of the certificate key to be added to the secret
276 ## @param tls.ca Content of the certificate CA to be added to the secret
279## NGINX pods' Security Context.
280## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
281## @param podSecurityContext.enabled Enabled NGINX pods' Security Context
282## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
283## @param podSecurityContext.supplementalGroups Set filesystem extra groups
284## @param podSecurityContext.fsGroup Set NGINX pod's Security Context fsGroup
285## @param podSecurityContext.sysctls sysctl settings of the NGINX pods
289 fsGroupChangePolicy: Always
290 supplementalGroups: []
295 ## - name: net.core.somaxconn
299## NGINX containers' Security Context.
300## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
301## @param containerSecurityContext.enabled Enabled containers' Security Context
302## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
303## @param containerSecurityContext.runAsUser Set containers' Security Context runAsUser
304## @param containerSecurityContext.runAsGroup Set containers' Security Context runAsGroup
305## @param containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot
306## @param containerSecurityContext.privileged Set container's Security Context privileged
307## @param containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
308## @param containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation
309## @param containerSecurityContext.capabilities.drop List of capabilities to be dropped
310## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
312containerSecurityContext:
319 readOnlyRootFilesystem: true
320 allowPrivilegeEscalation: false
324 type: "RuntimeDefault"
325## Configures the ports NGINX listens on
326## @param containerPorts.http Sets http port inside NGINX container
327## @param containerPorts.https Sets https port inside NGINX container
332## @param extraContainerPorts Array of additional container ports for the Nginx container
334## extraContainerPorts:
336## containerPort: 4317
338extraContainerPorts: []
339## NGINX containers' resource requests and limits
340## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
341## We usually recommend not to specify default resources and to leave this as a conscious
342## choice for the user. This also increases chances charts run on environments with little
343## resources, such as Minikube. If you do want to specify resources, uncomment the following
344## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
345## @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).
346## More information: https://github.com/iamguarded/charts/blob/main/iamguarded/common/templates/_resources.tpl#L15
348resourcesPreset: "nano"
349## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
360## NGINX containers' lifecycleHooks
361## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
362## ref: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/
363## If you do want to specify lifecycleHooks, uncomment the following
364## lines, adjust them as necessary, and remove the curly braces on 'lifecycle:{}'.
365## @param lifecycleHooks Optional lifecycleHooks for the NGINX container
370## command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
374## command: ["/bin/sleep", "20"]
375## command: ["/bin/sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]
377## NGINX containers' startup probe.
378## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
379## @param startupProbe.enabled Enable startupProbe
380## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
381## @param startupProbe.periodSeconds Period seconds for startupProbe
382## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
383## @param startupProbe.failureThreshold Failure threshold for startupProbe
384## @param startupProbe.successThreshold Success threshold for startupProbe
388 initialDelaySeconds: 30
393## NGINX containers' liveness probe.
394## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
395## @param livenessProbe.enabled Enable livenessProbe
396## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
397## @param livenessProbe.periodSeconds Period seconds for livenessProbe
398## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
399## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
400## @param livenessProbe.successThreshold Success threshold for livenessProbe
404 initialDelaySeconds: 30
409## NGINX containers' readiness probe.
410## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
411## @param readinessProbe.enabled Enable readinessProbe
412## @param readinessProbe.path Request path for livenessProbe
413## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
414## @param readinessProbe.periodSeconds Period seconds for readinessProbe
415## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
416## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
417## @param readinessProbe.successThreshold Success threshold for readinessProbe
422 initialDelaySeconds: 5
427## @param customStartupProbe Custom liveness probe for the Web component
429customStartupProbe: {}
430## @param customLivenessProbe Override default liveness probe
432customLivenessProbe: {}
433## @param customReadinessProbe Override default readiness probe
435customReadinessProbe: {}
436## Autoscaling parameters
437## @param autoscaling.enabled Enable autoscaling for NGINX deployment
438## @param autoscaling.minReplicas Minimum number of replicas to scale back
439## @param autoscaling.maxReplicas Maximum number of replicas to scale out
440## @param autoscaling.targetCPU Target CPU utilization percentage
441## @param autoscaling.targetMemory Target Memory utilization percentage
449## @param extraVolumes Array to add extra volumes
452## @param extraVolumeMounts Array to add extra mount
455## Pods Service Account
456## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
459 ## @param serviceAccount.create Enable creation of ServiceAccount for nginx pod
462 ## @param serviceAccount.name The name of the ServiceAccount to use.
463 ## If not set and create is true, a name is generated using the `common.names.fullname` template
465 ## @param serviceAccount.annotations Annotations for service account. Evaluated as a template.
466 ## Only used if `create` is `true`.
469 ## @param serviceAccount.automountServiceAccountToken Auto-mount the service account token in the pod
471 automountServiceAccountToken: false
472## @param sidecars Sidecar parameters
475## - name: your-image-name
477## imagePullPolicy: Always
480## containerPort: 1234
483## @param sidecarSingleProcessNamespace Enable sharing the process namespace with sidecars
484## This will switch pod.spec.shareProcessNamespace parameter
486sidecarSingleProcessNamespace: false
487## @param initContainers Extra init containers
490## Pod Disruption Budget configuration
491## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
494 ## @param pdb.create Created a PodDisruptionBudget
497 ## @param pdb.minAvailable Min number of pods that must still be available after the eviction.
498 ## 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
501 ## @param pdb.maxUnavailable Max number of pods that can be unavailable after the eviction.
502 ## 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.
505## @section Custom NGINX application parameters
507## Get the server static content from a git repository
508## NOTE: This will override staticSiteConfigmap and staticSitePVC
510cloneStaticSiteFromGit:
511 ## @param cloneStaticSiteFromGit.enabled Get the server static content from a Git repository
514 ## Iamguarded Git image version
515 ## ref: https://hub.docker.com/r/iamguarded/git/tags/
516 ## @param cloneStaticSiteFromGit.image.registry [default: REGISTRY_NAME] Git image registry
517 ## @param cloneStaticSiteFromGit.image.repository [default: REPOSITORY_NAME/git] Git image repository
518 ## @skip cloneStaticSiteFromGit.image.tag Git image tag (immutable tags are recommended)
519 ## @param cloneStaticSiteFromGit.image.digest Git image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
520 ## @param cloneStaticSiteFromGit.image.pullPolicy Git image pull policy
521 ## @param cloneStaticSiteFromGit.image.pullSecrets Specify docker-registry secret names as an array
525 repository: chainguard-private/git-iamguarded
528 ## Specify a imagePullPolicy
529 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
531 pullPolicy: IfNotPresent
532 ## Optionally specify an array of imagePullSecrets.
533 ## Secrets must be manually created in the namespace.
534 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
537 ## - myRegistryKeySecretName
540 ## @param cloneStaticSiteFromGit.repository Git Repository to clone static content from
543 ## @param cloneStaticSiteFromGit.branch Git branch to checkout
546 ## @param cloneStaticSiteFromGit.interval Interval for sidecar container pull from the Git repository
549 ## Additional configuration for git-clone-repository initContainer
552 ## @param cloneStaticSiteFromGit.gitClone.command Override default container command for git-clone-repository
555 ## @param cloneStaticSiteFromGit.gitClone.args Override default container args for git-clone-repository
558 ## Additional configuration for the git-repo-syncer container
561 ## @param cloneStaticSiteFromGit.gitSync.command Override default container command for git-repo-syncer
564 ## @param cloneStaticSiteFromGit.gitSync.args Override default container args for git-repo-syncer
567 ## git-repo-syncer resource requests and limits
568 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
569 ## @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).
570 ## More information: https://github.com/iamguarded/charts/blob/main/iamguarded/common/templates/_resources.tpl#L15
572 resourcesPreset: "nano"
573 ## @param cloneStaticSiteFromGit.gitSync.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
584 ## @param cloneStaticSiteFromGit.extraEnvVars Additional environment variables to set for the in the containers that clone static site from git
591 ## @param cloneStaticSiteFromGit.extraEnvVarsSecret Secret with extra environment variables
593 extraEnvVarsSecret: ""
594 ## @param cloneStaticSiteFromGit.extraVolumeMounts Add extra volume mounts for the Git containers
595 ## Useful to mount keys to connect through ssh. (normally used with extraVolumes)
597 ## extraVolumeMounts:
599 ## mountPath: /root/.ssh/
601 extraVolumeMounts: []
602## @param serverBlock Custom server block to be added to NGINX configuration
603## PHP-FPM example server block:
606## listen 0.0.0.0:8080;
609## index index.html index.php;
611## location ~ \.php$ {
612## fastcgi_pass phpfpm-server:9000;
613## fastcgi_index index.php;
614## include fastcgi.conf;
619## @param streamServerBlock Custom stream server block to be added to NGINX configuration
620## streamServerBlock: |-
622## listen 0.0.0.0:8080 udp;
623## proxy_pass localhost:9000;
627## @param existingServerBlockConfigmap ConfigMap with custom server block to be added to NGINX configuration
628## NOTE: This will override serverBlock
630existingServerBlockConfigmap: ""
631## @param existingStreamServerBlockConfigmap ConfigMap with custom stream server block to be added to NGINX configuration
632## NOTE: This will override streamServerBlock
634existingStreamServerBlockConfigmap: ""
635## Collection of NGINX context based includes
639## load_module /opt/iamguarded/nginx/modules/ngx_http_dav_module.so;
642 ## @param contextIncludes.main Custom configuration for the main context
645 ## @param contextIncludes.events Custom configuration for the events context
648 ## @param contextIncludes.http Custom configuration for the http context
651## @param existingContextMainConfigmaps List of existing ConfigMaps with custom main context configuration
652## NOTE: These will be mounted alongside contextIncludes.main
654## existingContextMainConfigmaps:
655## - "my-modules-config"
656## - "my-main-directives-config"
658existingContextMainConfigmaps: []
659## @param existingContextEventsConfigmaps List of existing ConfigMaps with custom events context configuration
660## NOTE: These will be mounted alongside contextIncludes.events
662existingContextEventsConfigmaps: []
663## @param existingContextHttpConfigmaps List of existing ConfigMaps with custom http context configuration
664## NOTE: These will be mounted alongside contextIncludes.http
666existingContextHttpConfigmaps: []
667## @param staticSiteConfigmap Name of existing ConfigMap with the server static site content
669staticSiteConfigmap: ""
670## @param staticSitePVC Name of existing PVC with the server static site content
671## NOTE: This will override staticSiteConfigmap
674## @section Traffic Exposure parameters
676## NGINX Service properties
679 ## @param service.type Service type
682 ## @param service.ports.http Service HTTP port
683 ## @param service.ports.https Service HTTPS port
689 ## @param service.nodePorts [object] Specify the nodePort(s) value(s) for the LoadBalancer and NodePort service types.
690 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
695 ## @param service.targetPort [object] Target port reference value for the Loadbalancer service types can be specified explicitly.
696 ## Listeners for the Loadbalancer can be custom mapped to the http or https service.
697 ## Example: Mapping the https listener to targetPort http [http: https]
702 ## @param service.clusterIP NGINX service Cluster IP
707 ## @param service.loadBalancerIP LoadBalancer service IP address
708 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
711 ## @param service.loadBalancerSourceRanges NGINX service Load Balancer sources
712 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
714 ## loadBalancerSourceRanges:
717 loadBalancerSourceRanges: []
718 ## @param service.loadBalancerClass service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)
719 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
721 loadBalancerClass: ""
722 ## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
725 ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
726 ## If "ClientIP", consecutive client requests will be directed to the same Pod
727 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
729 sessionAffinity: None
730 ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
731 ## sessionAffinityConfig:
733 ## timeoutSeconds: 300
735 sessionAffinityConfig: {}
736 ## @param service.annotations Service annotations
737 ## This can be used to set the LoadBalancer service type to internal only.
738 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
741 ## @param service.externalTrafficPolicy Enable client source IP preservation
742 ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
744 externalTrafficPolicy: Cluster
746## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
749 ## @param networkPolicy.enabled Specifies whether a NetworkPolicy should be created
752 ## @param networkPolicy.allowExternal Don't require server label for connections
753 ## The Policy model to apply. When set to false, only pods with the correct
754 ## server label will have network access to the ports server is listening
755 ## on. When true, server will accept connections from any source
756 ## (with the correct destination port).
759 ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
761 allowExternalEgress: true
762 ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
772 ## - matchExpressions:
778 ## @param networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
788 ## - matchExpressions:
795 ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
796 ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
798 ingressNSMatchLabels: {}
799 ingressNSPodMatchLabels: {}
800## Configure the ingress resource that allows you to access the
801## Nginx installation. Set up the URL
802## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
805 ## @param ingress.enabled Set to true to enable ingress record generation
808 ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
811 ## @param ingress.pathType Ingress path type
813 pathType: ImplementationSpecific
814 ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)
817 ## @param ingress.hostname Default host for the ingress resource
819 hostname: nginx.local
820 ## @param ingress.path The Path to Nginx. You may need to set this to '/*' in order to use this with ALB ingress controllers.
823 ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
824 ## For a full list of possible ingress annotations, please see
825 ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
826 ## Use this parameter to set the required annotations for cert-manager, see
827 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
831 ## kubernetes.io/ingress.class: nginx
832 ## cert-manager.io/cluster-issuer: cluster-issuer-name
835 ## @param ingress.ingressClassName Set the ingerssClassName on the ingress record for k8s 1.18+
836 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
837 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
840 ## @param ingress.tls Create TLS Secret
841 ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.ingress.hostname }}
842 ## You can use the ingress.secrets parameter to create this TLS secret or relay on cert-manager to create it
845 ## @param ingress.tlsWwwPrefix Adds www subdomain to default cert
846 ## Creates tls host with ingress.hostname: {{ print "www.%s" .Values.ingress.hostname }}
847 ## Is enabled if "nginx.ingress.kubernetes.io/from-to-www-redirect" is "true"
849 ## @param ingress.extraHosts The list of additional hostnames to be covered with this ingress record.
850 ## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array
852 ## - name: nginx.local
856 ## @param ingress.extraPaths Any additional arbitrary paths that may need to be added to the ingress under the main host.
857 ## For example: The ALB ingress controller requires a special rule for handling SSL redirection.
861 ## serviceName: ssl-redirect
862 ## servicePort: use-annotation
865 ## @param ingress.extraTls The tls configuration for additional hostnames to be covered with this ingress record.
866 ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
870 ## secretName: nginx.local-tls
873 ## @param ingress.secrets If you're providing your own certificates, please use this to add the certificates as secrets
874 ## key and certificate should start with -----BEGIN CERTIFICATE----- or
875 ## -----BEGIN RSA PRIVATE KEY-----
877 ## name should line up with a tlsSecret set further up
878 ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set
880 ## It is also possible to create and manage the certificates outside of this helm chart
881 ## Please see README.md for more information
883 ## - name: nginx.local-tls
888 ## @param ingress.extraRules The list of additional rules to be added to this ingress record. Evaluated as a template
889 ## Useful when looking for additional customization, such as using different backend
892## Health Ingress parameters
895 ## @param healthIngress.enabled Set to true to enable health ingress record generation
898 ## @param healthIngress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
901 ## @param healthIngress.pathType Ingress path type
903 pathType: ImplementationSpecific
904 ## @param healthIngress.hostname When the health ingress is enabled, a host pointing to this will be created
906 hostname: example.local
907 ## @param healthIngress.path Default path for the ingress record
908 ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
911 ## @param healthIngress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
912 ## For a full list of possible ingress annotations, please see
913 ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
914 ## Use this parameter to set the required annotations for cert-manager, see
915 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
919 ## kubernetes.io/ingress.class: nginx
920 ## cert-manager.io/cluster-issuer: cluster-issuer-name
923 ## @param healthIngress.tls Enable TLS configuration for the hostname defined at `healthIngress.hostname` parameter
924 ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.healthIngress.hostname }}
925 ## You can use the healthIngress.secrets parameter to create this TLS secret, relay on cert-manager to create it, or
926 ## let the chart create self-signed certificates for you
929 ## @param healthIngress.extraHosts An array with additional hostname(s) to be covered with the ingress record
932 ## - name: example.local
936 ## @param healthIngress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
941 ## serviceName: ssl-redirect
942 ## servicePort: use-annotation
945 ## @param healthIngress.extraTls TLS configuration for additional hostnames to be covered
946 ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
951 ## secretName: example.local-tls
954 ## @param healthIngress.secrets TLS Secret configuration
955 ## If you're providing your own certificates, please use this to add the certificates as secrets
956 ## key and certificate should start with -----BEGIN CERTIFICATE----- or -----BEGIN RSA PRIVATE KEY-----
957 ## name should line up with a secretName set further up
958 ## If it is not set and you're using cert-manager, this is unneeded, as it will create the secret for you
959 ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created
960 ## It is also possible to create and manage the certificates outside of this helm chart
961 ## Please see README.md for more information
965 ## - name: example.local-tls
970 ## @param healthIngress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
971 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
972 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
975 ## @param healthIngress.extraRules The list of additional rules to be added to this ingress record. Evaluated as a template
976 ## Useful when looking for additional customization, such as using different backend
979## @section Metrics parameters
981## Prometheus Exporter / Metrics
984 ## @param metrics.enabled Start a Prometheus exporter sidecar container
987 ## Iamguarded NGINX Prometheus Exporter image
988 ## ref: https://hub.docker.com/r/iamguarded/nginx-exporter/tags/
989 ## @param metrics.image.registry [default: REGISTRY_NAME] NGINX Prometheus exporter image registry
990 ## @param metrics.image.repository [default: REPOSITORY_NAME/nginx-exporter] NGINX Prometheus exporter image repository
991 ## @skip metrics.image.tag NGINX Prometheus exporter image tag (immutable tags are recommended)
992 ## @param metrics.image.digest NGINX Prometheus exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
993 ## @param metrics.image.pullPolicy NGINX Prometheus exporter image pull policy
994 ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array
998 repository: chainguard-private/nginx-prometheus-exporter-iamguarded
1001 pullPolicy: IfNotPresent
1002 ## Optionally specify an array of imagePullSecrets.
1003 ## Secrets must be manually created in the namespace.
1004 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
1007 ## - myRegistryKeySecretName
1010 ## @param metrics.port NGINX Container Status Port scraped by Prometheus Exporter
1011 ## Defaults to specified http port
1014 ## @param metrics.extraArgs Extra arguments for Prometheus exporter
1017 ## - --nginx.timeout
1021 ## @param metrics.containerPorts.metrics Prometheus exporter container port
1025 ## @param metrics.podAnnotations Additional annotations for NGINX Prometheus exporter pod(s)
1026 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
1029 ## Container Security Context
1030 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
1031 ## @param metrics.securityContext.enabled Enabled NGINX Exporter containers' Security Context
1032 ## @param metrics.securityContext.seLinuxOptions [object,nullable] Set SELinux options in container
1033 ## @param metrics.securityContext.runAsUser Set NGINX Exporter container's Security Context runAsUser
1039 ## Prometheus exporter service parameters
1042 ## @param metrics.service.port NGINX Prometheus exporter service port
1045 ## @param metrics.service.annotations [object] Annotations for the Prometheus exporter service
1048 prometheus.io/scrape: "true"
1049 prometheus.io/port: "{{ .Values.metrics.service.port }}"
1050 ## NGINX Prometheus exporter resource requests and limits
1051 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1052 ## We usually recommend not to specify default resources and to leave this as a conscious
1053 ## choice for the user. This also increases chances charts run on environments with little
1054 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
1055 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
1056 ## @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).
1057 ## More information: https://github.com/iamguarded/charts/blob/main/iamguarded/common/templates/_resources.tpl#L15
1059 resourcesPreset: "nano"
1060 ## @param metrics.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
1071 ## Prometheus Operator ServiceMonitor configuration
1074 ## @param metrics.serviceMonitor.enabled Creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)
1077 ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
1080 ## @param metrics.serviceMonitor.tlsConfig [object] TLS configuration used for scrape endpoints used by Prometheus
1083 ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
1086 ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped.
1087 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1092 ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
1093 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1095 ## scrapeTimeout: 10s
1098 ## @param metrics.serviceMonitor.selector Prometheus instance selector labels
1099 ## ref: https://github.com/iamguarded/charts/tree/main/iamguarded/prometheus-operator#prometheus-configuration
1102 ## prometheus: my-prometheus
1105 ## @param metrics.serviceMonitor.labels Additional labels that can be used so PodMonitor will be discovered by Prometheus
1108 ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
1111 ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
1113 metricRelabelings: []
1114 ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
1117 ## Prometheus Operator PrometheusRule configuration
1120 ## @param metrics.prometheusRule.enabled if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`)
1123 ## @param metrics.prometheusRule.namespace Namespace for the PrometheusRule Resource (defaults to the Release Namespace)
1126 ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so PrometheusRule will be discovered by Prometheus
1128 additionalLabels: {}
1129 ## @param metrics.prometheusRule.rules Prometheus Rule definitions
1130 ## - alert: LowInstance
1131 ## expr: up{service="{{ template "common.names.fullname" . }}"} < 1
1134 ## severity: critical
1136 ## description: Service {{ template "common.names.fullname" . }} Tomcat is down since 1m.
1137 ## summary: Tomcat instance is down.
1140 ## @param metrics.customLivenessProbe Override default metrics liveness probe
1142 customLivenessProbe: {}
1143 ## NGINX metrics containers' liveness probe.
1144 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
1145 ## @param metrics.livenessProbe.enabled Enable livenessProbe
1146 ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
1147 ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
1148 ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe
1149 ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe
1150 ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe
1154 initialDelaySeconds: 30
1159 ## @param metrics.customReadinessProbe Override default metrics readiness probe
1161 customReadinessProbe: {}
1162 ## NGINX metrics containers' readiness probe.
1163 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
1164 ## @param metrics.readinessProbe.enabled Enable readinessProbe
1165 ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
1166 ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
1167 ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe
1168 ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe
1169 ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe
1174 initialDelaySeconds: 5
1179 ## @param metrics.customStartupProbe Override default metrics startup probe
1181 customStartupProbe: {}
1182 ## NGINX metrics containers' startup probe.
1183 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
1184 ## @param metrics.startupProbe.enabled Enable startupProbe
1185 ## @param metrics.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
1186 ## @param metrics.startupProbe.timeoutSeconds Timeout seconds for startupProbe
1187 ## @param metrics.startupProbe.periodSeconds Period seconds for startupProbe
1188 ## @param metrics.startupProbe.failureThreshold Failure threshold for startupProbe
1189 ## @param metrics.startupProbe.successThreshold Success threshold for startupProbe
1194 initialDelaySeconds: 5
1197 failureThreshold: 10