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
16## @param global.imageRegistry Global Docker image registry
17## @param global.imagePullSecrets Global Docker registry secret names as an array
18## @param global.defaultStorageClass Global default StorageClass for Persistent Volume(s)
24 ## - myRegistryKeySecretName
27 defaultStorageClass: ""
28 ## Security parameters
31 ## @param global.security.allowInsecureImages Allows skipping image verification
32 allowInsecureImages: false
33 ## Compatibility adaptations for Kubernetes platforms
36 ## Compatibility adaptations for Openshift
39 ## @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)
41 adaptSecurityContext: auto
43## @section Common parameters
46## @param kubeVersion Override Kubernetes version
49## @param apiVersions Override Kubernetes API versions reported by .Capabilities
52## @param nameOverride String to partially override common.names.name
55## @param fullnameOverride String to fully override common.names.fullname
58## @param namespaceOverride String to fully override common.names.namespace
61## @param commonLabels Labels to add to all deployed objects
64## @param commonAnnotations Annotations to add to all deployed objects
67## @param clusterDomain Kubernetes cluster domain name
69clusterDomain: cluster.local
70## @param extraDeploy Array of extra objects to deploy with the release
73## @param usePasswordFiles Mount credentials as files instead of using environment variables
76## Enable diagnostic mode in the deployment
79 ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
82 ## @param diagnosticMode.command Command to override all containers in the deployment
86 ## @param diagnosticMode.args Args to override all containers in the deployment
90## Iamguarded APISIX image
91## @param image.registry [default: REGISTRY_NAME] APISIX image registry
92## @param image.repository [default: REPOSITORY_NAME/apisix] APISIX image repository
93## @skip image.tag APISIX image tag (immutable tags are recommended)
94## @param image.digest APISIX image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag image tag (immutable tags are recommended)
95## @param image.pullPolicy APISIX image pull policy
96## @param image.pullSecrets APISIX image pull secrets
97## @param image.debug Enable APISIX image debug mode
101 repository: chainguard-private/apache-apisix-iamguarded
104 ## Specify a imagePullPolicy
105 ## ref: http://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
107 pullPolicy: IfNotPresent
108 ## Optionally specify an array of imagePullSecrets.
109 ## Secrets must be manually created in the namespace.
110 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
113 ## - myRegistryKeySecretName
119## @section APISIX Data Plane parameters
122 ## @param dataPlane.enabled Enable APISIX Data Plane
125 ## @param dataPlane.useDaemonSet Deploy Data Plane as DaemonSet
128 ## @param dataPlane.replicaCount Number of APISIX Data Plane replicas to deploy
131 ## @param dataPlane.hostNetwork Use hostNetwork in APISIX Data Plane
134 ## @param dataPlane.dnsPolicy DNS policy for APISIX Data Plane pods
135 ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-policies
136 ## NOTE: If you set hostNetwork=true, you must set dnsPolicy=ClusterFirstWithHostNet
138 dnsPolicy: ClusterFirst
139 ## @param dataPlane.containerPorts.http APISIX Data Plane HTTP container port
140 ## @param dataPlane.containerPorts.https APISIX Data Plane HTTPS container port
141 ## @param dataPlane.containerPorts.control APISIX Data Plane control container port
142 ## @param dataPlane.containerPorts.metrics APISIX Data Plane metrics container port
149 ## Configure extra options for APISIX Data Plane containers' liveness and readiness probes
150 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
151 ## @param dataPlane.livenessProbe.enabled Enable livenessProbe on APISIX Data Plane containers
152 ## @param dataPlane.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
153 ## @param dataPlane.livenessProbe.periodSeconds Period seconds for livenessProbe
154 ## @param dataPlane.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
155 ## @param dataPlane.livenessProbe.failureThreshold Failure threshold for livenessProbe
156 ## @param dataPlane.livenessProbe.successThreshold Success threshold for livenessProbe
160 initialDelaySeconds: 5
165 ## @param dataPlane.readinessProbe.enabled Enable readinessProbe on APISIX Data Plane containers
166 ## @param dataPlane.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
167 ## @param dataPlane.readinessProbe.periodSeconds Period seconds for readinessProbe
168 ## @param dataPlane.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
169 ## @param dataPlane.readinessProbe.failureThreshold Failure threshold for readinessProbe
170 ## @param dataPlane.readinessProbe.successThreshold Success threshold for readinessProbe
174 initialDelaySeconds: 5
179 ## @param dataPlane.startupProbe.enabled Enable startupProbe on APISIX Data Plane containers
180 ## @param dataPlane.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
181 ## @param dataPlane.startupProbe.periodSeconds Period seconds for startupProbe
182 ## @param dataPlane.startupProbe.timeoutSeconds Timeout seconds for startupProbe
183 ## @param dataPlane.startupProbe.failureThreshold Failure threshold for startupProbe
184 ## @param dataPlane.startupProbe.successThreshold Success threshold for startupProbe
188 initialDelaySeconds: 5
193 ## @param dataPlane.customLivenessProbe Custom livenessProbe that overrides the default one
195 customLivenessProbe: {}
196 ## @param dataPlane.customReadinessProbe Custom readinessProbe that overrides the default one
198 customReadinessProbe: {}
199 ## @param dataPlane.customStartupProbe Custom startupProbe that overrides the default one
201 customStartupProbe: {}
202 ## APISIX Data Plane resource requests and limits
203 ## ref: http://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
204 ## @param dataPlane.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if dataPlane.resources is set (dataPlane.resources is recommended for production).
206 resourcesPreset: "nano"
207 ## @param dataPlane.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
218 ## Configure Pods Security Context
219 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
220 ## @param dataPlane.podSecurityContext.enabled Enabled APISIX Data Plane pods' Security Context
221 ## @param dataPlane.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
222 ## @param dataPlane.podSecurityContext.sysctls Set kernel settings using the sysctl interface
223 ## @param dataPlane.podSecurityContext.supplementalGroups Set filesystem extra groups
224 ## @param dataPlane.podSecurityContext.fsGroup Set APISIX Data Plane pod's Security Context fsGroup
228 fsGroupChangePolicy: Always
230 supplementalGroups: []
232 ## Configure Container Security Context
233 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
234 ## @param dataPlane.containerSecurityContext.enabled Enabled APISIX Data Plane containers' Security Context
235 ## @param dataPlane.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
236 ## @param dataPlane.containerSecurityContext.runAsUser Set APISIX Data Plane containers' Security Context runAsUser
237 ## @param dataPlane.containerSecurityContext.runAsGroup Set APISIX Data Plane containers' Security Context runAsGroup
238 ## @param dataPlane.containerSecurityContext.runAsNonRoot Set APISIX Data Plane containers' Security Context runAsNonRoot
239 ## @param dataPlane.containerSecurityContext.privileged Set APISIX Data Plane containers' Security Context privileged
240 ## @param dataPlane.containerSecurityContext.readOnlyRootFilesystem Set APISIX Data Plane containers' Security Context runAsNonRoot
241 ## @param dataPlane.containerSecurityContext.allowPrivilegeEscalation Set APISIX Data Plane container's privilege escalation
242 ## @param dataPlane.containerSecurityContext.capabilities.drop Set APISIX Data Plane container's Security Context runAsNonRoot
243 ## @param dataPlane.containerSecurityContext.seccompProfile.type Set APISIX Data Plane container's Security Context seccomp profile
245 containerSecurityContext:
252 readOnlyRootFilesystem: true
253 allowPrivilegeEscalation: false
258 ## @param dataPlane.command Override default container command (useful when using custom images)
261 ## @param dataPlane.args Override default container args (useful when using custom images)
264 ## @param dataPlane.automountServiceAccountToken Mount Service Account token in pod
266 automountServiceAccountToken: true
267 ## @param dataPlane.hostAliases APISIX Data Plane pods host aliases
268 ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
271 ## @param dataPlane.defaultConfig [string] APISIX Data Plane configuration (evaluated as a template)
274 {{- if .Values.dataPlane.metrics.enabled }}
277 export_uri: /apisix/prometheus/metrics
278 metric_prefix: apisix_
279 enable_export_server: true
282 port: {{ .Values.dataPlane.containerPorts.metrics }}
285 node_listen: {{ .Values.dataPlane.containerPorts.http }}
287 {{- if .Values.dataPlane.tls.enabled }}
291 - port: {{ .Values.dataPlane.containerPorts.https }}
292 ssl_trusted_certificate: /iamguarded/certs/{{ .Values.dataPlane.tls.certCAFilename }}
297 port: {{ .Values.dataPlane.containerPorts.control }}
299 error_log: /dev/stderr
301 access_log: /dev/stdout
303 access_log: /dev/stdout
304 http_configuration_snippet: |
309 config_provider: etcd
310 {{- if .Values.controlPlane.enabled }}
313 - {{ ternary "https" "http" .Values.controlPlane.tls.enabled }}://{{ include "apisix.control-plane.fullname" . }}:{{ .Values.controlPlane.service.ports.configServer }}
317 {{- if or .Values.etcd.enabled .Values.externalEtcd.servers }}
320 {{- if .Values.etcd.enabled }}
321 {{- $replicas := $.Values.etcd.replicaCount | int }}
322 {{- range $i, $_e := until $replicas }}
323 - {{ printf "%s://%s-%d.%s:%v" (ternary "https" "http" $.Values.etcd.auth.client.secureTransport) (include "apisix.etcd.fullname" $ ) $i (include "apisix.etcd.headlessServiceName" $) ( include "apisix.etcd.port" $ ) }}
326 {{- range $node := .Values.externalEtcd.servers }}
327 - {{ ternary "https" "http" $.Values.externalEtcd.secureTransport }}://{{ printf "%s:%v" $node (include "apisix.etcd.port" $) }}
334 {{- if (include "apisix.etcd.authEnabled" .) }}
335 user: "{{ print "{{APISIX_ETCD_USER}}" }}"
336 password: "{{ print "{{APISIX_ETCD_PASSWORD}}" }}"
339 {{- if .Values.dataPlane.tls.enabled }}
341 {{- if .Values.dataPlane.tls.enabled }}
342 cert: /iamguarded/certs/{{ .Values.dataPlane.tls.certFilename }}
343 cert_key: /iamguarded/certs/{{ .Values.dataPlane.tls.certKeyFilename }}
344 {{- if .Values.dataPlane.tls.certCAFilename }}
345 client_ca_cert: /iamguarded/certs/{{ .Values.dataPlane.tls.certCAFilename }}
352 # apiserver schema, options [http, https]
353 schema: https #default https
355 # apiserver host, options [ipv4, ipv6, domain, environment variable]
356 host: ${KUBERNETES_SERVICE_HOST} #default ${KUBERNETES_SERVICE_HOST}
358 # apiserver port, options [port number, environment variable]
359 port: ${KUBERNETES_SERVICE_PORT} #default ${KUBERNETES_SERVICE_PORT}
362 # serviceaccount token or token_file
363 token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
365 default_weight: 50 # weight assigned to each discovered endpoint. default 50, minimum 0
366 ## @param dataPlane.extraConfig [object] extra configuration parameters to add to the config.yaml file in APISIX Data Plane
369 ## @param dataPlane.existingConfigMap name of a ConfigMap with existing configuration for APISIX Data Plane
371 existingConfigMap: ""
372 ## @param dataPlane.extraConfigExistingConfigMap name of a ConfigMap with existing configuration for APISIX Data Plane
374 extraConfigExistingConfigMap: ""
376 ## @param dataPlane.tls.enabled Enable TLS transport in APISIX Data Plane
379 ## @param dataPlane.tls.autoGenerated Auto-generate self-signed certificates
382 ## @param dataPlane.tls.existingSecret Name of a secret containing the certificates
385 ## @param dataPlane.tls.certFilename Path of the certificate file when mounted as a secret
387 certFilename: tls.crt
388 ## @param dataPlane.tls.certKeyFilename Path of the certificate key file when mounted as a secret
390 certKeyFilename: tls.key
391 ## @param dataPlane.tls.certCAFilename Path of the certificate CA file when mounted as a secret
393 certCAFilename: ca.crt
394 ## @param dataPlane.tls.cert Content of the certificate to be added to the secret
397 ## @param dataPlane.tls.key Content of the certificate key to be added to the secret
400 ## @param dataPlane.tls.ca Content of the certificate CA to be added to the secret
403 ## @param dataPlane.podLabels Extra labels for APISIX Data Plane pods
404 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
407 ## @param dataPlane.podAnnotations Annotations for APISIX Data Plane pods
408 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
411 ## @param dataPlane.podAffinityPreset Pod affinity preset. Ignored if `apisix.affinity` is set. Allowed values: `soft` or `hard`
412 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
414 podAffinityPreset: ""
415 ## @param dataPlane.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `apisix.affinity` is set. Allowed values: `soft` or `hard`
416 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
418 podAntiAffinityPreset: soft
419 ## Pod Disruption Budget configuration
420 ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb
421 ## @param dataPlane.pdb.create Enable/disable a Pod Disruption Budget creation
422 ## @param dataPlane.pdb.minAvailable Minimum number/percentage of pods that should remain scheduled
423 ## @param dataPlane.pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable
429 ## Node apisix.affinity preset
430 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
433 ## @param dataPlane.nodeAffinityPreset.type Node affinity preset type. Ignored if `apisix.affinity` is set. Allowed values: `soft` or `hard`
436 ## @param dataPlane.nodeAffinityPreset.key Node label key to match. Ignored if `apisix.affinity` is set
439 ## @param dataPlane.nodeAffinityPreset.values Node label values to match. Ignored if `apisix.affinity` is set
446 ## @param dataPlane.affinity Affinity for APISIX Data Plane pods assignment
447 ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
448 ## NOTE: `apisix.podAffinityPreset`, `apisix.podAntiAffinityPreset`, and `apisix.nodeAffinityPreset` will be ignored when it's set
451 ## @param dataPlane.nodeSelector Node labels for APISIX Data Plane pods assignment
452 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
455 ## @param dataPlane.tolerations Tolerations for APISIX Data Plane pods assignment
456 ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
459 ## @param dataPlane.updateStrategy.type APISIX Data Plane statefulset strategy type
460 ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
464 ## Can be set to RollingUpdate or OnDelete
467 ## @param dataPlane.priorityClassName APISIX Data Plane pods' priorityClassName
469 priorityClassName: ""
470 ## @param dataPlane.topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template
471 ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods
473 topologySpreadConstraints: []
474 ## @param dataPlane.schedulerName Name of the k8s scheduler (other than default) for APISIX Data Plane pods
475 ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
478 ## @param dataPlane.terminationGracePeriodSeconds Seconds Redmine pod needs to terminate gracefully
479 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
481 terminationGracePeriodSeconds: ""
482 ## @param dataPlane.lifecycleHooks for the APISIX Data Plane container(s) to automate configuration before or after startup
485 ## @param dataPlane.extraEnvVars Array with extra environment variables to add to APISIX Data Plane nodes
492 ## @param dataPlane.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for APISIX Data Plane nodes
495 ## @param dataPlane.extraEnvVarsSecret Name of existing Secret containing extra env vars for APISIX Data Plane nodes
497 extraEnvVarsSecret: ""
498 ## @param dataPlane.extraVolumes Optionally specify extra list of additional volumes for the APISIX Data Plane pod(s)
501 ## @param dataPlane.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the APISIX Data Plane container(s)
503 extraVolumeMounts: []
504 ## @param dataPlane.sidecars Add additional sidecar containers to the APISIX Data Plane pod(s)
507 ## - name: your-image-name
509 ## imagePullPolicy: Always
512 ## containerPort: 1234
515 ## @param dataPlane.initContainers Add additional init containers to the APISIX Data Plane pod(s)
516 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
519 ## - name: your-image-name
521 ## imagePullPolicy: Always
522 ## command: ['sh', '-c', 'echo "hello world"']
525 ## @section APISIX Data Plane Traffic Exposure Parameters
528 ## @param dataPlane.service.type APISIX Data Plane service type
531 ## @param dataPlane.service.ports.http APISIX Data Plane service HTTP port
532 ## @param dataPlane.service.ports.https APISIX Data Plane service HTTPS port
533 ## @param dataPlane.service.ports.metrics APISIX Data Plane service HTTPS port
539 ## Node ports to expose
540 ## @param dataPlane.service.nodePorts.http Node port for HTTP
541 ## @param dataPlane.service.nodePorts.https Node port for HTTPS
542 ## @param dataPlane.service.nodePorts.metrics Node port for metrics
543 ## NOTE: choose port between <30000-32767>
549 ## @param dataPlane.service.clusterIP APISIX Data Plane service Cluster IP
554 ## @param dataPlane.service.loadBalancerIP APISIX Data Plane service Load Balancer IP
555 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
558 ## @param dataPlane.service.loadBalancerSourceRanges APISIX Data Plane service Load Balancer sources
559 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
561 ## loadBalancerSourceRanges:
564 loadBalancerSourceRanges: []
565 ## @param dataPlane.service.externalIPs APISIX Data Plane service External IPs
566 ## https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
573 ## @param dataPlane.service.externalTrafficPolicy APISIX Data Plane service external traffic policy
574 ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-web-source-ip
576 externalTrafficPolicy: Cluster
577 ## @param dataPlane.service.annotations Additional custom annotations for APISIX Data Plane service
580 ## @param dataPlane.service.extraPorts Extra ports to expose in APISIX Data Plane service (normally used with the `sidecars` value)
583 ## @param dataPlane.service.sessionAffinity Control where web requests go, to the same pod or round-robin
584 ## Values: WebIP or None
585 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/
587 sessionAffinity: None
588 ## @param dataPlane.service.sessionAffinityConfig Additional settings for the sessionAffinity
589 ## sessionAffinityConfig:
591 ## timeoutSeconds: 300
593 sessionAffinityConfig: {}
595 ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
598 ## @param dataPlane.networkPolicy.enabled Specifies whether a NetworkPolicy should be created
601 ## @param dataPlane.networkPolicy.allowExternal Don't require server label for connections
602 ## The Policy model to apply. When set to false, only pods with the correct
603 ## server label will have network access to the ports server is listening
604 ## on. When true, server will accept connections from any source
605 ## (with the correct destination port).
608 ## @param dataPlane.networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
610 allowExternalEgress: true
611 ## @param dataPlane.networkPolicy.kubeAPIServerPorts [array] List of possible endpoints to kube-apiserver (limit to your cluster settings to increase security)
613 kubeAPIServerPorts: [443, 6443, 8443]
614 ## @param dataPlane.networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
624 ## - matchExpressions:
630 ## @param dataPlane.networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
640 ## - matchExpressions:
647 ## @param dataPlane.networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
648 ## @param dataPlane.networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
650 ingressNSMatchLabels: {}
651 ingressNSPodMatchLabels: {}
652 ## ref: http://kubernetes.io/docs/concepts/services-networking/ingress/
655 ## @param dataPlane.ingress.enabled Enable ingress record generation for APISIX Data Plane
658 ## @param dataPlane.ingress.pathType Ingress path type
660 pathType: ImplementationSpecific
661 ## @param dataPlane.ingress.apiVersion Force Ingress API version (automatically detected if not set)
664 ## @param dataPlane.ingress.hostname Default host for the ingress record
666 hostname: apisix-data-plane.local
667 ## @param dataPlane.ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
668 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
669 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
672 ## @param dataPlane.ingress.path Default path for the ingress record
673 ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
676 ## @param dataPlane.ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
677 ## Use this parameter to set the required annotations for cert-manager, see
678 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
681 ## kubernetes.io/ingress.class: nginx
682 ## cert-manager.io/cluster-issuer: cluster-issuer-name
685 ## @param dataPlane.ingress.tls Enable TLS configuration for the host defined at `dataPlane.ingress.hostname` parameter
686 ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf "%s-tls" .Values.ingress.hostname }}`
688 ## - Use the `dataPlane.ingress.secrets` parameter to create this TLS secret
689 ## - Rely on cert-manager to create it by setting the corresponding annotations
690 ## - Rely on Helm to create self-signed certificates by setting `dataPlane.ingress.selfSigned=true`
693 ## @param dataPlane.ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
696 ## @param dataPlane.ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record
699 ## - name: apisix.local
703 ## @param dataPlane.ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
708 ## serviceName: ssl-redirect
709 ## servicePort: use-annotation
712 ## @param dataPlane.ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record
713 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
718 ## secretName: apisix.local-tls
721 ## @param dataPlane.ingress.secrets Custom TLS certificates as secrets
722 ## NOTE: 'key' and 'certificate' are expected in PEM format
723 ## NOTE: 'name' should line up with a 'secretName' set further up
724 ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates
725 ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days
726 ## It is also possible to create and manage the certificates outside of this helm chart
727 ## Please see README.md for more information
730 ## - name: apisix.local-tls
732 ## -----BEGIN RSA PRIVATE KEY-----
734 ## -----END RSA PRIVATE KEY-----
736 ## -----BEGIN CERTIFICATE-----
738 ## -----END CERTIFICATE-----
741 ## @param dataPlane.ingress.extraRules Additional rules to be covered with this ingress record
742 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules
745 ## - host: example.local
755 ## @section APISIX Data Plane Autoscaling configuration
756 ## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
760 ## @param dataPlane.autoscaling.vpa.enabled Enable VPA
763 ## @param dataPlane.autoscaling.vpa.annotations Annotations for VPA resource
766 ## @param dataPlane.autoscaling.vpa.controlledResources VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
768 controlledResources: []
769 ## @param dataPlane.autoscaling.vpa.maxAllowed VPA Max allowed resources for the pod
773 ## @param dataPlane.autoscaling.vpa.minAllowed VPA Min allowed resources for the pod
778 ## @param dataPlane.autoscaling.vpa.updatePolicy.updateMode Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod
779 ## Possible values are "Off", "Initial", "Recreate", and "Auto".
783 ## @param dataPlane.autoscaling.hpa.enabled Enable HPA for APISIX Data Plane
786 ## @param dataPlane.autoscaling.hpa.minReplicas Minimum number of APISIX Data Plane replicas
789 ## @param dataPlane.autoscaling.hpa.maxReplicas Maximum number of APISIX Data Plane replicas
792 ## @param dataPlane.autoscaling.hpa.targetCPU Target CPU utilization percentage
795 ## @param dataPlane.autoscaling.hpa.targetMemory Target Memory utilization percentage
798 ## @section APISIX Data Plane RBAC Parameters
801 ## RBAC configuration
804 ## @param dataPlane.rbac.create Specifies whether RBAC resources should be created
807 ## @param dataPlane.rbac.rules Custom RBAC rules to set
819 ## ServiceAccount configuration
822 ## @param dataPlane.serviceAccount.create Specifies whether a ServiceAccount should be created
825 ## @param dataPlane.serviceAccount.name The name of the ServiceAccount to use.
826 ## If not set and create is true, a name is generated using the common.names.fullname template
829 ## @param dataPlane.serviceAccount.annotations Additional Service Account annotations (evaluated as a template)
832 ## @param dataPlane.serviceAccount.automountServiceAccountToken Automount service account token for the APISIX Data Plane service account
834 automountServiceAccountToken: false
835 ## @section APISIX Data Plane Metrics Parameters
838 ## Prometheus metrics
841 ## @param dataPlane.metrics.enabled Enable the export of Prometheus metrics
844 ## @param dataPlane.metrics.annotations [object] Annotations for the APISIX Data Plane service in order to scrape metrics
846 prometheus.io/scrape: "true"
847 prometheus.io/port: "{{ .Values.dataPlane.service.ports.metrics }}"
848 prometheus.io/path: "/apisix/prometheus/metrics"
849 ## Prometheus Operator ServiceMonitor configuration
852 ## @param dataPlane.metrics.serviceMonitor.enabled if `true`, creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)
855 ## @param dataPlane.metrics.serviceMonitor.namespace Namespace in which Prometheus is running
858 ## @param dataPlane.metrics.serviceMonitor.annotations Additional custom annotations for the ServiceMonitor
861 ## @param dataPlane.metrics.serviceMonitor.labels Extra labels for the ServiceMonitor
864 ## @param dataPlane.metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in Prometheus
867 ## @param dataPlane.metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
870 ## @param dataPlane.metrics.serviceMonitor.interval Interval at which metrics should be scraped.
871 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
876 ## @param dataPlane.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
877 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
879 ## scrapeTimeout: 10s
882 ## @param dataPlane.metrics.serviceMonitor.metricRelabelings Specify additional relabeling of metrics
884 metricRelabelings: []
885 ## @param dataPlane.metrics.serviceMonitor.relabelings Specify general relabeling
888 ## @param dataPlane.metrics.serviceMonitor.selector Prometheus instance selector labels
890 ## prometheus: my-prometheus
893## @section APISIX Control Plane Parameters
896 ## @param controlPlane.enabled Enable APISIX Control Plane
899 ## @param controlPlane.replicaCount Number of APISIX Control Plane replicas to deploy
902 ## @param controlPlane.hostNetwork Use hostNetwork
905 ## @param controlPlane.dnsPolicy DNS policy for APISIX Control Plane pods
906 ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-policies
907 ## NOTE: If you set hostNetwork=true, you must set dnsPolicy=ClusterFirstWithHostNet
909 dnsPolicy: ClusterFirst
910 ## @param controlPlane.useDaemonSet Deploy as DaemonSet
913 ## @param controlPlane.dashboardEnabled Enable APISIX Control Plane to expose APISIX Dashboards
915 dashboardEnabled: true
916 ## @param controlPlane.containerPorts.adminAPI APISIX Control Plane Admin API port
917 ## @param controlPlane.containerPorts.configServer APISIX Control Plane config port
918 ## @param controlPlane.containerPorts.control APISIX Control Plane control port
919 ## @param controlPlane.containerPorts.metrics APISIX Control Plane metrics port
926 ## Configure extra options for APISIX Control Plane containers' liveness and readiness probes
927 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
928 ## @param controlPlane.livenessProbe.enabled Enable livenessProbe on APISIX Control Plane containers
929 ## @param controlPlane.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
930 ## @param controlPlane.livenessProbe.periodSeconds Period seconds for livenessProbe
931 ## @param controlPlane.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
932 ## @param controlPlane.livenessProbe.failureThreshold Failure threshold for livenessProbe
933 ## @param controlPlane.livenessProbe.successThreshold Success threshold for livenessProbe
937 initialDelaySeconds: 5
942 ## @param controlPlane.readinessProbe.enabled Enable readinessProbe on APISIX Control Plane containers
943 ## @param controlPlane.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
944 ## @param controlPlane.readinessProbe.periodSeconds Period seconds for readinessProbe
945 ## @param controlPlane.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
946 ## @param controlPlane.readinessProbe.failureThreshold Failure threshold for readinessProbe
947 ## @param controlPlane.readinessProbe.successThreshold Success threshold for readinessProbe
951 initialDelaySeconds: 5
956 ## @param controlPlane.startupProbe.enabled Enable startupProbe on APISIX Control Plane containers
957 ## @param controlPlane.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
958 ## @param controlPlane.startupProbe.periodSeconds Period seconds for startupProbe
959 ## @param controlPlane.startupProbe.timeoutSeconds Timeout seconds for startupProbe
960 ## @param controlPlane.startupProbe.failureThreshold Failure threshold for startupProbe
961 ## @param controlPlane.startupProbe.successThreshold Success threshold for startupProbe
965 initialDelaySeconds: 5
970 ## @param controlPlane.customLivenessProbe Custom livenessProbe that overrides the default one
972 customLivenessProbe: {}
973 ## @param controlPlane.customReadinessProbe Custom readinessProbe that overrides the default one
975 customReadinessProbe: {}
976 ## @param controlPlane.customStartupProbe Custom startupProbe that overrides the default one
978 customStartupProbe: {}
979 ## APISIX Control Plane resource requests and limits
980 ## ref: http://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
981 ## @param controlPlane.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if controlPlane.resources is set (controlPlane.resources is recommended for production).
983 resourcesPreset: "nano"
984 ## @param controlPlane.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
995 ## Configure Pods Security Context
996 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
997 ## @param controlPlane.podSecurityContext.enabled Enabled APISIX Control Plane pods' Security Context
998 ## @param controlPlane.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
999 ## @param controlPlane.podSecurityContext.sysctls Set kernel settings using the sysctl interface
1000 ## @param controlPlane.podSecurityContext.supplementalGroups Set filesystem extra groups
1001 ## @param controlPlane.podSecurityContext.fsGroup Set APISIX Control Plane pod's Security Context fsGroup
1005 fsGroupChangePolicy: Always
1007 supplementalGroups: []
1009 ## Configure Container Security Context
1010 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
1011 ## @param controlPlane.containerSecurityContext.enabled Enabled APISIX Control Plane containers' Security Context
1012 ## @param controlPlane.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
1013 ## @param controlPlane.containerSecurityContext.runAsUser Set APISIX Control Plane containers' Security Context runAsUser
1014 ## @param controlPlane.containerSecurityContext.runAsGroup Set APISIX Control Plane containers' Security Context runAsGroup
1015 ## @param controlPlane.containerSecurityContext.runAsNonRoot Set APISIX Control Plane containers' Security Context runAsNonRoot
1016 ## @param controlPlane.containerSecurityContext.privileged Set APISIX Control Plane containers' Security Context privileged
1017 ## @param controlPlane.containerSecurityContext.readOnlyRootFilesystem Set APISIX Control Plane containers' Security Context runAsNonRoot
1018 ## @param controlPlane.containerSecurityContext.allowPrivilegeEscalation Set APISIX Control Plane container's privilege escalation
1019 ## @param controlPlane.containerSecurityContext.capabilities.drop Set APISIX Control Plane container's Security Context runAsNonRoot
1020 ## @param controlPlane.containerSecurityContext.seccompProfile.type Set APISIX Control Plane container's Security Context seccomp profile
1022 containerSecurityContext:
1029 readOnlyRootFilesystem: true
1030 allowPrivilegeEscalation: false
1034 type: RuntimeDefault
1035 ## @param controlPlane.command Override default container command (useful when using custom images)
1038 ## @param controlPlane.args Override default container args (useful when using custom images)
1041 ## @param controlPlane.automountServiceAccountToken Mount Service Account token in pod
1043 automountServiceAccountToken: true
1044 ## @param controlPlane.hostAliases APISIX Control Plane pods host aliases
1045 ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
1048 ## @param controlPlane.apiTokenAdmin Admin API Token for APISIX Control Plane
1051 ## @param controlPlane.apiTokenViewer Viewer API Token for APISIX Control Plane
1054 ## @param controlPlane.existingSecret Name of a secret containing API Tokens for APISIX Control Plane
1057 ## @param controlPlane.existingSecretAdminTokenKey Key inside the secret containing the Admin API Tokens for APISIX Control Plane
1059 existingSecretAdminTokenKey: ""
1060 ## @param controlPlane.existingSecretViewerTokenKey Key inside the secret containing the Viewer API Tokens for APISIX Control Plane
1062 existingSecretViewerTokenKey: ""
1063 ## @param controlPlane.defaultConfig [string] APISIX Control Plane configuration (evaluated as a template)
1066 {{- if .Values.controlPlane.metrics.enabled }}
1069 export_uri: /apisix/prometheus/metrics
1070 metric_prefix: apisix_
1071 enable_export_server: true
1074 port: {{ .Values.controlPlane.containerPorts.metrics }}
1077 error_log: /dev/stderr
1079 access_log: /dev/stdout
1081 access_log: /dev/stdout
1082 http_configuration_snippet: |
1083 proxy_buffering off;
1087 port: {{ .Values.controlPlane.containerPorts.control }}
1091 config_provider: etcd
1093 listen: 0.0.0.0:{{ .Values.controlPlane.containerPorts.configServer }}
1094 cert: /iamguarded/certs/{{ .Values.controlPlane.tls.certFilename }}
1095 cert_key: /iamguarded/certs/{{ .Values.controlPlane.tls.certKeyFilename }}
1098 {{- if .Values.etcd.enabled }}
1099 {{- $replicas := $.Values.etcd.replicaCount | int }}
1100 {{- range $i, $_e := until $replicas }}
1101 - {{ printf "%s://%s-%d.%s:%v" (ternary "https" "http" $.Values.etcd.auth.client.secureTransport) (include "apisix.etcd.fullname" $ ) $i (include "apisix.etcd.headlessServiceName" $) ( include "apisix.etcd.port" $ ) }} {{- end }}
1103 {{- range $node := .Values.externalEtcd.servers }}
1104 - {{ ternary "https" "http" $.Values.externalEtcd.secureTransport }}://{{ printf "%s:%v" $node (include "apisix.etcd.port" $) }}
1111 {{- if (include "apisix.etcd.authEnabled" .) }}
1112 user: "{{ print "{{APISIX_ETCD_USER}}" }}"
1113 password: "{{ print "{{APISIX_ETCD_PASSWORD}}" }}"
1115 {{- if .Values.controlPlane.tls.enabled }}
1117 {{- if .Values.controlPlane.tls.enabled }}
1118 cert: /iamguarded/certs/{{ .Values.controlPlane.tls.certFilename }}
1119 cert_key: /iamguarded/certs/{{ .Values.controlPlane.tls.certKeyFilename }}
1120 {{- if .Values.controlPlane.tls.certCAFilename }}
1121 client_ca_cert: /iamguarded/certs/{{ .Values.controlPlane.tls.certCAFilename }}
1126 {{- if .Values.controlPlane.tls.enabled }}
1129 admin_ssl_cert: /iamguarded/certs/{{ .Values.controlPlane.tls.certFilename }}
1130 admin_ssl_cert_key: /iamguarded/certs/{{ .Values.controlPlane.tls.certKeyFilename }}
1136 key: "{{ print "{{APISIX_ADMIN_API_TOKEN}}" }}"
1139 key: "{{ print "{{APISIX_VIEWER_API_TOKEN}}" }}"
1142 port: {{ .Values.controlPlane.containerPorts.adminAPI }}
1143 enable_admin_cors: true # Admin API support CORS response headers.
1144 enable_admin_ui: {{ ternary "true" "false" .Values.controlPlane.dashboardEnabled }}
1148 schema: https #default https
1149 # apiserver host, options [ipv4, ipv6, domain, environment variable]
1150 host: ${KUBERNETES_SERVICE_HOST}
1151 # apiserver port, options [port number, environment variable]
1152 port: ${KUBERNETES_SERVICE_PORT}
1154 # serviceaccount token or token_file
1155 token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
1156 default_weight: 50 # weight assigned to each discovered endpoint. default 50, minimum 0
1157 ## @param controlPlane.extraConfig [object] extra configuration parameters to add to the config.yaml file in APISIX Control plane
1160 ## @param controlPlane.existingConfigMap name of a ConfigMap with existing configuration for APISIX Control Plane
1162 existingConfigMap: ""
1163 ## @param controlPlane.extraConfigExistingConfigMap name of a ConfigMap with existing configuration for APISIX Control Plane
1165 extraConfigExistingConfigMap: ""
1167 ## @param controlPlane.tls.enabled Enable TLS transport in APISIX Control Plane
1170 ## @param controlPlane.tls.autoGenerated Auto-generate self-signed certificates
1173 ## @param controlPlane.tls.existingSecret Name of a secret containing the certificates
1176 ## @param controlPlane.tls.certFilename Path of the certificate file when mounted as a secret
1178 certFilename: tls.crt
1179 ## @param controlPlane.tls.certKeyFilename Path of the certificate key file when mounted as a secret
1181 certKeyFilename: tls.key
1182 ## @param controlPlane.tls.certCAFilename Path of the certificate CA file when mounted as a secret
1184 certCAFilename: ca.crt
1185 ## @param controlPlane.tls.cert Content of the certificate to be added to the secret
1188 ## @param controlPlane.tls.key Content of the certificate key to be added to the secret
1191 ## @param controlPlane.tls.ca Content of the certificate CA to be added to the secret
1194 ## @param controlPlane.podLabels Extra labels for APISIX Control Plane pods
1195 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
1198 ## @param controlPlane.podAnnotations Annotations for APISIX Control Plane pods
1199 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
1202 ## @param controlPlane.podAffinityPreset Pod affinity preset. Ignored if `apisix.affinity` is set. Allowed values: `soft` or `hard`
1203 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
1205 podAffinityPreset: ""
1206 ## @param controlPlane.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `apisix.affinity` is set. Allowed values: `soft` or `hard`
1207 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
1209 podAntiAffinityPreset: soft
1210 ## Pod Disruption Budget configuration
1211 ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb
1212 ## @param controlPlane.pdb.create Enable/disable a Pod Disruption Budget creation
1213 ## @param controlPlane.pdb.minAvailable Minimum number/percentage of pods that should remain scheduled
1214 ## @param controlPlane.pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable
1220 ## Node apisix.affinity preset
1221 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
1224 ## @param controlPlane.nodeAffinityPreset.type Node affinity preset type. Ignored if `apisix.affinity` is set. Allowed values: `soft` or `hard`
1227 ## @param controlPlane.nodeAffinityPreset.key Node label key to match. Ignored if `apisix.affinity` is set
1230 ## @param controlPlane.nodeAffinityPreset.values Node label values to match. Ignored if `apisix.affinity` is set
1237 ## @param controlPlane.affinity Affinity for APISIX Control Plane pods assignment
1238 ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
1239 ## NOTE: `apisix.podAffinityPreset`, `apisix.podAntiAffinityPreset`, and `apisix.nodeAffinityPreset` will be ignored when it's set
1242 ## @param controlPlane.nodeSelector Node labels for APISIX Control Plane pods assignment
1243 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
1246 ## @param controlPlane.tolerations Tolerations for APISIX Control Plane pods assignment
1247 ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
1250 ## @param controlPlane.updateStrategy.type APISIX Control Plane statefulset strategy type
1251 ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
1255 ## Can be set to RollingUpdate or OnDelete
1258 ## @param controlPlane.priorityClassName APISIX Control Plane pods' priorityClassName
1260 priorityClassName: ""
1261 ## @param controlPlane.topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template
1262 ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods
1264 topologySpreadConstraints: []
1265 ## @param controlPlane.schedulerName Name of the k8s scheduler (other than default) for APISIX Control Plane pods
1266 ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
1269 ## @param controlPlane.terminationGracePeriodSeconds Seconds Redmine pod needs to terminate gracefully
1270 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
1272 terminationGracePeriodSeconds: ""
1273 ## @param controlPlane.lifecycleHooks for the APISIX Control Plane container(s) to automate configuration before or after startup
1276 ## @param controlPlane.extraEnvVars Array with extra environment variables to add to APISIX Control Plane nodes
1283 ## @param controlPlane.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for APISIX Control Plane nodes
1286 ## @param controlPlane.extraEnvVarsSecret Name of existing Secret containing extra env vars for APISIX Control Plane nodes
1288 extraEnvVarsSecret: ""
1289 ## @param controlPlane.extraVolumes Optionally specify extra list of additional volumes for the APISIX Control Plane pod(s)
1292 ## @param controlPlane.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the APISIX Control Plane container(s)
1294 extraVolumeMounts: []
1295 ## @param controlPlane.sidecars Add additional sidecar containers to the APISIX Control Plane pod(s)
1298 ## - name: your-image-name
1299 ## image: your-image
1300 ## imagePullPolicy: Always
1303 ## containerPort: 1234
1306 ## @param controlPlane.initContainers Add additional init containers to the APISIX Control Plane pod(s)
1307 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
1310 ## - name: your-image-name
1311 ## image: your-image
1312 ## imagePullPolicy: Always
1313 ## command: ['sh', '-c', 'echo "hello world"']
1316 ## @section APISIX Control Plane Traffic Exposure Parameters
1319 ## @param controlPlane.service.type APISIX Control Plane service type
1322 ## @param controlPlane.service.ports.adminAPI APISIX Control Plane service Admin API port
1323 ## @param controlPlane.service.ports.configServer APISIX Control Plane service Config Server port
1324 ## @param controlPlane.service.ports.metrics APISIX Control Plane service metrics port
1330 ## Node ports to expose
1331 ## @param controlPlane.service.nodePorts.adminAPI Node port for Admin API
1332 ## @param controlPlane.service.nodePorts.configServer Node port for Config Server
1333 ## @param controlPlane.service.nodePorts.metrics Node port for Metrics
1334 ## NOTE: choose port between <30000-32767>
1340 ## @param controlPlane.service.clusterIP APISIX Control Plane service Cluster IP
1345 ## @param controlPlane.service.loadBalancerIP APISIX Control Plane service Load Balancer IP
1346 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
1349 ## @param controlPlane.service.loadBalancerSourceRanges APISIX Control Plane service Load Balancer sources
1350 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
1352 ## loadBalancerSourceRanges:
1355 loadBalancerSourceRanges: []
1356 ## @param controlPlane.service.externalIPs APISIX Control Plane service External IPs
1357 ## https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
1364 ## @param controlPlane.service.externalTrafficPolicy APISIX Control Plane service external traffic policy
1365 ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-web-source-ip
1367 externalTrafficPolicy: Cluster
1368 ## @param controlPlane.service.annotations Additional custom annotations for APISIX Control Plane service
1371 ## @param controlPlane.service.extraPorts Extra ports to expose in APISIX Control Plane service (normally used with the `sidecars` value)
1374 ## @param controlPlane.service.sessionAffinity Control where web requests go, to the same pod or round-robin
1375 ## Values: WebIP or None
1376 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/
1378 sessionAffinity: None
1379 ## @param controlPlane.service.sessionAffinityConfig Additional settings for the sessionAffinity
1380 ## sessionAffinityConfig:
1382 ## timeoutSeconds: 300
1384 sessionAffinityConfig: {}
1386 ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
1389 ## @param controlPlane.networkPolicy.enabled Specifies whether a NetworkPolicy should be created
1392 ## @param controlPlane.networkPolicy.allowExternal Don't require server label for connections
1393 ## The Policy model to apply. When set to false, only pods with the correct
1394 ## server label will have network access to the ports server is listening
1395 ## on. When true, server will accept connections from any source
1396 ## (with the correct destination port).
1399 ## @param controlPlane.networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
1401 allowExternalEgress: true
1402 ## @param controlPlane.networkPolicy.kubeAPIServerPorts [array] List of possible endpoints to kube-apiserver (limit to your cluster settings to increase security)
1404 kubeAPIServerPorts: [443, 6443, 8443]
1405 ## @param controlPlane.networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
1415 ## - matchExpressions:
1421 ## @param controlPlane.networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
1431 ## - matchExpressions:
1438 ## @param controlPlane.networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
1439 ## @param controlPlane.networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
1441 ingressNSMatchLabels: {}
1442 ingressNSPodMatchLabels: {}
1443 ## ref: http://kubernetes.io/docs/concepts/services-networking/ingress/
1446 ## @param controlPlane.ingress.enabled Enable ingress record generation for APISIX Control Plane
1449 ## @param controlPlane.ingress.pathType Ingress path type
1451 pathType: ImplementationSpecific
1452 ## @param controlPlane.ingress.apiVersion Force Ingress API version (automatically detected if not set)
1455 ## @param controlPlane.ingress.hostname Default host for the ingress record
1457 hostname: apisix-control-plane.local
1458 ## @param controlPlane.ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
1459 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
1460 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
1462 ingressClassName: ""
1463 ## @param controlPlane.ingress.path Default path for the ingress record
1464 ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
1467 ## @param controlPlane.ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
1468 ## Use this parameter to set the required annotations for cert-manager, see
1469 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
1472 ## kubernetes.io/ingress.class: nginx
1473 ## cert-manager.io/cluster-issuer: cluster-issuer-name
1476 ## @param controlPlane.ingress.tls Enable TLS configuration for the host defined at `controlPlane.ingress.hostname` parameter
1477 ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf "%s-tls" .Values.ingress.hostname }}`
1479 ## - Use the `controlPlane.ingress.secrets` parameter to create this TLS secret
1480 ## - Rely on cert-manager to create it by setting the corresponding annotations
1481 ## - Rely on Helm to create self-signed certificates by setting `controlPlane.ingress.selfSigned=true`
1484 ## @param controlPlane.ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
1487 ## @param controlPlane.ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record
1490 ## - name: apisix.local
1494 ## @param controlPlane.ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
1499 ## serviceName: ssl-redirect
1500 ## servicePort: use-annotation
1503 ## @param controlPlane.ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record
1504 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
1509 ## secretName: apisix.local-tls
1512 ## @param controlPlane.ingress.secrets Custom TLS certificates as secrets
1513 ## NOTE: 'key' and 'certificate' are expected in PEM format
1514 ## NOTE: 'name' should line up with a 'secretName' set further up
1515 ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates
1516 ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days
1517 ## It is also possible to create and manage the certificates outside of this helm chart
1518 ## Please see README.md for more information
1521 ## - name: apisix.local-tls
1523 ## -----BEGIN RSA PRIVATE KEY-----
1525 ## -----END RSA PRIVATE KEY-----
1527 ## -----BEGIN CERTIFICATE-----
1529 ## -----END CERTIFICATE-----
1532 ## @param controlPlane.ingress.extraRules Additional rules to be covered with this ingress record
1533 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules
1536 ## - host: example.local
1541 ## name: example-svc
1546 ## @section APISIX Control Plane Autoscaling configuration
1547 ## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
1551 ## @param controlPlane.autoscaling.vpa.enabled Enable VPA
1554 ## @param controlPlane.autoscaling.vpa.annotations Annotations for VPA resource
1557 ## @param controlPlane.autoscaling.vpa.controlledResources VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
1559 controlledResources: []
1560 ## @param controlPlane.autoscaling.vpa.maxAllowed VPA Max allowed resources for the pod
1564 ## @param controlPlane.autoscaling.vpa.minAllowed VPA Min allowed resources for the pod
1569 ## @param controlPlane.autoscaling.vpa.updatePolicy.updateMode Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod
1570 ## Possible values are "Off", "Initial", "Recreate", and "Auto".
1574 ## @param controlPlane.autoscaling.hpa.enabled Enable HPA for APISIX Control Plane
1577 ## @param controlPlane.autoscaling.hpa.minReplicas Minimum number of APISIX Control Plane replicas
1580 ## @param controlPlane.autoscaling.hpa.maxReplicas Maximum number of APISIX Control Plane replicas
1583 ## @param controlPlane.autoscaling.hpa.targetCPU Target CPU utilization percentage
1586 ## @param controlPlane.autoscaling.hpa.targetMemory Target Memory utilization percentage
1589 ## @section APISIX Control Plane RBAC parameters
1592 ## RBAC configuration
1595 ## @param controlPlane.rbac.create Specifies whether RBAC resources should be created
1598 ## @param controlPlane.rbac.rules Custom RBAC rules to set
1610 ## ServiceAccount configuration
1613 ## @param controlPlane.serviceAccount.create Specifies whether a ServiceAccount should be created
1616 ## @param controlPlane.serviceAccount.name The name of the ServiceAccount to use.
1617 ## If not set and create is true, a name is generated using the common.names.fullname template
1620 ## @param controlPlane.serviceAccount.annotations Additional Service Account annotations (evaluated as a template)
1623 ## @param controlPlane.serviceAccount.automountServiceAccountToken Automount service account token for the APISIX Control Plane service account
1625 automountServiceAccountToken: false
1626 ## @section APISIX Control Plane Metrics Parameters
1629 ## Prometheus metrics
1632 ## @param controlPlane.metrics.enabled Enable the export of Prometheus metrics
1635 ## @param controlPlane.metrics.annotations [object] Annotations for the APISIX Control Plane service in order to scrape metrics
1637 prometheus.io/scrape: "true"
1638 prometheus.io/port: "{{ .Values.controlPlane.service.ports.metrics }}"
1639 prometheus.io/path: "/apisix/prometheus/metrics"
1640 ## Prometheus Operator ServiceMonitor configuration
1643 ## @param controlPlane.metrics.serviceMonitor.enabled if `true`, creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)
1646 ## @param controlPlane.metrics.serviceMonitor.namespace Namespace in which Prometheus is running
1649 ## @param controlPlane.metrics.serviceMonitor.annotations Additional custom annotations for the ServiceMonitor
1652 ## @param controlPlane.metrics.serviceMonitor.labels Extra labels for the ServiceMonitor
1655 ## @param controlPlane.metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in Prometheus
1658 ## @param controlPlane.metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
1661 ## @param controlPlane.metrics.serviceMonitor.interval Interval at which metrics should be scraped.
1662 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1667 ## @param controlPlane.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
1668 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1670 ## scrapeTimeout: 10s
1673 ## @param controlPlane.metrics.serviceMonitor.metricRelabelings Specify additional relabeling of metrics
1675 metricRelabelings: []
1676 ## @param controlPlane.metrics.serviceMonitor.relabelings Specify general relabeling
1679 ## @param controlPlane.metrics.serviceMonitor.selector Prometheus instance selector labels
1681 ## prometheus: my-prometheus
1684## @section APISIX Ingress Controller Parameters
1687 ## @param ingressController.enabled Enable APISIX Ingress Controller
1690 ## Iamguarded APISIX Ingress Controller image
1691 ## @param ingressController.image.registry [default: REGISTRY_NAME] APISIX Ingress Controller image registry
1692 ## @param ingressController.image.repository [default: REPOSITORY_NAME/apisix-ingress-controller] APISIX Ingress Controller image repository
1693 ## @skip ingressController.image.tag APISIX Ingress Controller image tag (immutable tags are recommended)
1694 ## @param ingressController.image.digest APISIX Ingress Controller image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag image tag (immutable tags are recommended)
1695 ## @param ingressController.image.pullPolicy APISIX Ingress Controller image pull policy
1696 ## @param ingressController.image.pullSecrets APISIX Ingress Controller image pull secrets
1697 ## @param ingressController.image.debug Enable APISIX Ingress Controller image debug mode
1701 repository: chainguard-private/apisix-ingress-controller-iamguarded
1704 ## Specify a imagePullPolicy
1705 ## ref: http://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
1707 pullPolicy: IfNotPresent
1708 ## Optionally specify an array of imagePullSecrets.
1709 ## Secrets must be manually created in the namespace.
1710 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
1713 ## - myRegistryKeySecretName
1716 ## Enable debug mode
1719 ## @param ingressController.replicaCount Number of APISIX Ingress Controller replicas to deploy
1722 ## @param ingressController.containerPorts.http APISIX Ingress Controller http container port
1723 ## @param ingressController.containerPorts.https APISIX Ingress Controller https container port
1728 ## Configure extra options for APISIX Ingress Controller containers' liveness and readiness probes
1729 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
1730 ## @param ingressController.livenessProbe.enabled Enable livenessProbe on APISIX Ingress Controller containers
1731 ## @param ingressController.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
1732 ## @param ingressController.livenessProbe.periodSeconds Period seconds for livenessProbe
1733 ## @param ingressController.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
1734 ## @param ingressController.livenessProbe.failureThreshold Failure threshold for livenessProbe
1735 ## @param ingressController.livenessProbe.successThreshold Success threshold for livenessProbe
1739 initialDelaySeconds: 5
1744 ## @param ingressController.readinessProbe.enabled Enable readinessProbe on APISIX Ingress Controller containers
1745 ## @param ingressController.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
1746 ## @param ingressController.readinessProbe.periodSeconds Period seconds for readinessProbe
1747 ## @param ingressController.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
1748 ## @param ingressController.readinessProbe.failureThreshold Failure threshold for readinessProbe
1749 ## @param ingressController.readinessProbe.successThreshold Success threshold for readinessProbe
1753 initialDelaySeconds: 5
1758 ## @param ingressController.startupProbe.enabled Enable startupProbe on APISIX Ingress Controller containers
1759 ## @param ingressController.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
1760 ## @param ingressController.startupProbe.periodSeconds Period seconds for startupProbe
1761 ## @param ingressController.startupProbe.timeoutSeconds Timeout seconds for startupProbe
1762 ## @param ingressController.startupProbe.failureThreshold Failure threshold for startupProbe
1763 ## @param ingressController.startupProbe.successThreshold Success threshold for startupProbe
1767 initialDelaySeconds: 5
1772 ## @param ingressController.customLivenessProbe Custom livenessProbe that overrides the default one
1774 customLivenessProbe: {}
1775 ## @param ingressController.customReadinessProbe Custom readinessProbe that overrides the default one
1777 customReadinessProbe: {}
1778 ## @param ingressController.customStartupProbe Custom startupProbe that overrides the default one
1780 customStartupProbe: {}
1781 ## APISIX Ingress Controller resource requests and limits
1782 ## ref: http://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1783 ## @param ingressController.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if ingressController.resources is set (ingressController.resources is recommended for production).
1785 resourcesPreset: "nano"
1786 ## @param ingressController.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
1797 ## Configure Pods Security Context
1798 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
1799 ## @param ingressController.podSecurityContext.enabled Enabled APISIX Ingress Controller pods' Security Context
1800 ## @param ingressController.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
1801 ## @param ingressController.podSecurityContext.sysctls Set kernel settings using the sysctl interface
1802 ## @param ingressController.podSecurityContext.supplementalGroups Set filesystem extra groups
1803 ## @param ingressController.podSecurityContext.fsGroup Set APISIX Ingress Controller pod's Security Context fsGroup
1807 fsGroupChangePolicy: Always
1809 supplementalGroups: []
1811 ## Configure Container Security Context
1812 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
1813 ## @param ingressController.containerSecurityContext.enabled Enabled APISIX Ingress Controller containers' Security Context
1814 ## @param ingressController.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
1815 ## @param ingressController.containerSecurityContext.runAsUser Set APISIX Ingress Controller containers' Security Context runAsUser
1816 ## @param ingressController.containerSecurityContext.runAsGroup Set APISIX Ingress Controller containers' Security Context runAsGroup
1817 ## @param ingressController.containerSecurityContext.runAsNonRoot Set APISIX Ingress Controller containers' Security Context runAsNonRoot
1818 ## @param ingressController.containerSecurityContext.privileged Set APISIX Ingress Controller containers' Security Context privileged
1819 ## @param ingressController.containerSecurityContext.readOnlyRootFilesystem Set APISIX Ingress Controller containers' Security Context runAsNonRoot
1820 ## @param ingressController.containerSecurityContext.allowPrivilegeEscalation Set APISIX Ingress Controller container's privilege escalation
1821 ## @param ingressController.containerSecurityContext.capabilities.drop Set APISIX Ingress Controller container's Security Context runAsNonRoot
1822 ## @param ingressController.containerSecurityContext.seccompProfile.type Set APISIX Ingress Controller container's Security Context seccomp profile
1824 containerSecurityContext:
1831 readOnlyRootFilesystem: true
1832 allowPrivilegeEscalation: false
1836 type: RuntimeDefault
1837 ## @param ingressController.command Override default container command (useful when using custom images)
1840 ## @param ingressController.args Override default container args (useful when using custom images)
1843 ## @param ingressController.automountServiceAccountToken Mount Service Account token in pod
1845 automountServiceAccountToken: true
1846 ## @param ingressController.hostAliases APISIX Ingress Controller pods host aliases
1847 ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
1850 ## @param ingressController.podLabels Extra labels for APISIX Ingress Controller pods
1851 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
1854 ## @param ingressController.podAnnotations Annotations for APISIX Ingress Controller pods
1855 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
1858 ## @param ingressController.podAffinityPreset Pod affinity preset. Ignored if `injector.affinity` is set. Allowed values: `soft` or `hard`
1859 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
1861 podAffinityPreset: ""
1862 ## @param ingressController.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `injector.affinity` is set. Allowed values: `soft` or `hard`
1863 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
1865 podAntiAffinityPreset: soft
1866 ## Pod Disruption Budget configuration
1867 ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb
1868 ## @param ingressController.pdb.create Enable/disable a Pod Disruption Budget creation
1869 ## @param ingressController.pdb.minAvailable Minimum number/percentage of pods that should remain scheduled
1870 ## @param ingressController.pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable
1876 ## Node injector.affinity preset
1877 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
1880 ## @param ingressController.nodeAffinityPreset.type Node affinity preset type. Ignored if `injector.affinity` is set. Allowed values: `soft` or `hard`
1883 ## @param ingressController.nodeAffinityPreset.key Node label key to match. Ignored if `injector.affinity` is set
1886 ## @param ingressController.nodeAffinityPreset.values Node label values to match. Ignored if `injector.affinity` is set
1893 ## @param ingressController.affinity Affinity for APISIX Ingress Controller pods assignment
1894 ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
1895 ## NOTE: `injector.podAffinityPreset`, `injector.podAntiAffinityPreset`, and `injector.nodeAffinityPreset` will be ignored when it's set
1898 ## @param ingressController.nodeSelector Node labels for APISIX Ingress Controller pods assignment
1899 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
1902 ## @param ingressController.tolerations Tolerations for APISIX Ingress Controller pods assignment
1903 ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
1906 ## @param ingressController.updateStrategy.type APISIX Ingress Controller statefulset strategy type
1907 ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
1911 ## Can be set to RollingUpdate or OnDelete
1914 ## @param ingressController.priorityClassName APISIX Ingress Controller pods' priorityClassName
1916 priorityClassName: ""
1917 ## @param ingressController.topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template
1918 ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods
1920 topologySpreadConstraints: []
1921 ## @param ingressController.schedulerName Name of the k8s scheduler (other than default) for APISIX Ingress Controller pods
1922 ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
1925 ## @param ingressController.terminationGracePeriodSeconds Seconds Redmine pod needs to terminate gracefully
1926 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
1928 terminationGracePeriodSeconds: ""
1929 ## @param ingressController.lifecycleHooks for the APISIX Ingress Controller container(s) to automate configuration before or after startup
1932 ## @param ingressController.extraEnvVars Array with extra environment variables to add to APISIX Ingress Controller nodes
1939 ## @param ingressController.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for APISIX Ingress Controller nodes
1942 ## @param ingressController.extraEnvVarsSecret Name of existing Secret containing extra env vars for APISIX Ingress Controller nodes
1944 extraEnvVarsSecret: ""
1945 ## @param ingressController.extraVolumes Optionally specify extra list of additional volumes for the APISIX Ingress Controller pod(s)
1948 ## @param ingressController.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the APISIX Ingress Controller container(s)
1950 extraVolumeMounts: []
1951 ## @param ingressController.sidecars Add additional sidecar containers to the APISIX Ingress Controller pod(s)
1954 ## - name: your-image-name
1955 ## image: your-image
1956 ## imagePullPolicy: Always
1959 ## containerPort: 1234
1962 ## @param ingressController.initContainers Add additional init containers to the APISIX Ingress Controller pod(s)
1963 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
1966 ## - name: your-image-name
1967 ## image: your-image
1968 ## imagePullPolicy: Always
1969 ## command: ['sh', '-c', 'echo "hello world"']
1972 ## @param ingressController.ingressClass.create Specifies whether a IngressClass should be created
1973 ## @param ingressController.ingressClass.name IngressClass that will be be used to implement the APISIX Ingress Controller Ingress
1974 ## @param ingressController.ingressClass.annotations Additional annotations for the APISIX Ingress Controller IngressClass
1980 ## @param ingressController.defaultConfig [string] APISIX Ingress Controller configuration (evaluated as a template)
1985 log_output: "stderr"
1986 {{- if .Values.ingressController.tls.enabled }}
1987 https_listen: ":{{ .Values.ingressController.containerPorts.https }}"
1988 cert_file: "/iamguarded/certs/{{ .Values.ingressController.tls.certFilename }}"
1989 key_file: "/iamguarded/certs/{{ .Values.ingressController.tls.certKeyFilename }}"
1991 http_listen: ":{{ .Values.ingressController.containerPorts.http }}"
1992 ingress_publish_service: "{{ include "common.names.namespace" . }}/{{ ternary (include "apisix.data-plane.fullname" .) (include "apisix.control-plane.fullname" .) .Values.dataPlane.enabled }}"
1993 enable_profiling: true
1994 apisix-resource-sync-interval: 1h
1997 resync_interval: "6h"
1998 election_id: "{{ include "apisix.ingress-controller.fullname" . }}-leader"
1999 ingress_class: {{ .Values.ingressController.ingressClass.name | quote }}
2000 ingress_version: "networking/v1"
2001 watch_endpointslices: false
2002 apisix_route_version: "apisix.apache.org/v2"
2003 enable_gateway_api: false
2004 apisix_version: "apisix.apache.org/v2"
2005 plugin_metadata_cm: ""
2007 admin_api_version: "v3"
2008 default_cluster_base_url: {{ ternary "https" "http" .Values.controlPlane.tls.enabled }}://{{ include "apisix.control-plane.fullname" . }}:{{ .Values.controlPlane.service.ports.adminAPI }}/apisix/admin
2009 default_cluster_admin_key: "{{ print "{{APISIX_ADMIN_API_TOKEN}}" }}"
2010 default_cluster_name: "default"
2011 ## @param ingressController.extraConfig Extra configuration parameters for APISIX Ingress Controller
2014 ## @param ingressController.existingConfigMap name of a ConfigMap with existing configuration for the APISIX Ingress Controller
2016 existingConfigMap: ""
2017 ## @param ingressController.extraConfigExistingConfigMap name of a ConfigMap with existing configuration for the APISIX Ingress Controller
2019 extraConfigExistingConfigMap: ""
2021 ## @param ingressController.tls.enabled Enable TLS transport in APISIX Ingress Controller
2024 ## @param ingressController.tls.autoGenerated Auto-generate self-signed certificates
2027 ## @param ingressController.tls.existingSecret Name of a secret containing the certificates
2030 ## @param ingressController.tls.certFilename Path of the certificate file when mounted as a secret
2032 certFilename: tls.crt
2033 ## @param ingressController.tls.certKeyFilename Path of the certificate key file when mounted as a secret
2035 certKeyFilename: tls.key
2036 ## @param ingressController.tls.certCAFilename Path of the certificate CA file when mounted as a secret
2038 certCAFilename: ca.crt
2039 ## @param ingressController.tls.cert Content of the certificate to be added to the secret
2042 ## @param ingressController.tls.key Content of the certificate key to be added to the secret
2045 ## @param ingressController.tls.ca Content of the certificate CA to be added to the secret
2048 ## @section APISIX Ingress Controller Traffic Exposure Parameters
2051 ## @param ingressController.service.type APISIX Ingress Controller service type
2054 ## @param ingressController.service.ports.http APISIX Ingress Controller service HTTP port
2055 ## @param ingressController.service.ports.https APISIX Ingress Controller service HTTPS port
2060 ## Node ports to expose
2061 ## @param ingressController.service.nodePorts.http Node port for HTTP
2062 ## @param ingressController.service.nodePorts.https Node port for HTTPS
2063 ## NOTE: choose port between <30000-32767>
2068 ## @param ingressController.service.clusterIP APISIX Ingress Controller service Cluster IP
2073 ## @param ingressController.service.loadBalancerIP APISIX Ingress Controller service Load Balancer IP
2074 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
2077 ## @param ingressController.service.loadBalancerSourceRanges APISIX Ingress Controller service Load Balancer sources
2078 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
2080 ## loadBalancerSourceRanges:
2083 loadBalancerSourceRanges: []
2084 ## @param ingressController.service.externalIPs APISIX Ingress Controller service External IPs
2085 ## https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
2092 ## @param ingressController.service.externalTrafficPolicy APISIX Ingress Controller service external traffic policy
2093 ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-web-source-ip
2095 externalTrafficPolicy: Cluster
2096 ## @param ingressController.service.annotations Additional custom annotations for APISIX Ingress Controller service
2099 ## @param ingressController.service.extraPorts Extra ports to expose in APISIX Ingress Controller service (normally used with the `sidecars` value)
2102 ## @param ingressController.service.sessionAffinity Control where web requests go, to the same pod or round-robin
2103 ## Values: WebIP or None
2104 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/
2106 sessionAffinity: None
2107 ## @param ingressController.service.sessionAffinityConfig Additional settings for the sessionAffinity
2108 ## sessionAffinityConfig:
2110 ## timeoutSeconds: 300
2112 sessionAffinityConfig: {}
2114 ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
2117 ## @param ingressController.networkPolicy.enabled Specifies whether a NetworkPolicy should be created
2120 ## @param ingressController.networkPolicy.allowExternal Don't require server label for connections
2121 ## The Policy model to apply. When set to false, only pods with the correct
2122 ## server label will have network access to the ports server is listening
2123 ## on. When true, server will accept connections from any source
2124 ## (with the correct destination port).
2127 ## @param ingressController.networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
2129 allowExternalEgress: true
2130 ## @param ingressController.networkPolicy.kubeAPIServerPorts [array] List of possible endpoints to kube-apiserver (limit to your cluster settings to increase security)
2132 kubeAPIServerPorts: [443, 6443, 8443]
2133 ## @param ingressController.networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
2143 ## - matchExpressions:
2149 ## @param ingressController.networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
2159 ## - matchExpressions:
2166 ## @param ingressController.networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
2167 ## @param ingressController.networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
2169 ingressNSMatchLabels: {}
2170 ingressNSPodMatchLabels: {}
2171 ## ref: http://kubernetes.io/docs/concepts/services-networking/ingress/
2174 ## @param ingressController.ingress.enabled Enable ingress record generation for APISIX Ingress Controller
2177 ## @param ingressController.ingress.pathType Ingress path type
2179 pathType: ImplementationSpecific
2180 ## @param ingressController.ingress.apiVersion Force Ingress API version (automatically detected if not set)
2183 ## @param ingressController.ingress.hostname Default host for the ingress record
2185 hostname: apisix-ingress-controller.local
2186 ## @param ingressController.ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
2187 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
2188 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
2190 ingressClassName: ""
2191 ## @param ingressController.ingress.path Default path for the ingress record
2192 ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
2195 ## @param ingressController.ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
2196 ## Use this parameter to set the required annotations for cert-manager, see
2197 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
2200 ## kubernetes.io/ingress.class: nginx
2201 ## cert-manager.io/cluster-issuer: cluster-issuer-name
2204 ## @param ingressController.ingress.tls Enable TLS configuration for the host defined at `ingressController.ingress.hostname` parameter
2205 ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf "%s-tls" .Values.ingress.hostname }}`
2207 ## - Use the `ingressController.ingress.secrets` parameter to create this TLS secret
2208 ## - Rely on cert-manager to create it by setting the corresponding annotations
2209 ## - Rely on Helm to create self-signed certificates by setting `ingressController.ingress.selfSigned=true`
2212 ## @param ingressController.ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
2215 ## @param ingressController.ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record
2218 ## - name: apisix.local
2222 ## @param ingressController.ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
2227 ## serviceName: ssl-redirect
2228 ## servicePort: use-annotation
2231 ## @param ingressController.ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record
2232 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
2237 ## secretName: apisix.local-tls
2240 ## @param ingressController.ingress.secrets Custom TLS certificates as secrets
2241 ## NOTE: 'key' and 'certificate' are expected in PEM format
2242 ## NOTE: 'name' should line up with a 'secretName' set further up
2243 ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates
2244 ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days
2245 ## It is also possible to create and manage the certificates outside of this helm chart
2246 ## Please see README.md for more information
2249 ## - name: apisix.local-tls
2251 ## -----BEGIN RSA PRIVATE KEY-----
2253 ## -----END RSA PRIVATE KEY-----
2255 ## -----BEGIN CERTIFICATE-----
2257 ## -----END CERTIFICATE-----
2260 ## @param ingressController.ingress.extraRules Additional rules to be covered with this ingress record
2261 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules
2264 ## - host: example.local
2269 ## name: example-svc
2274 ## @section APISIX Ingress Controller Autoscaling configuration
2275 ## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
2279 ## @param ingressController.autoscaling.vpa.enabled Enable VPA
2282 ## @param ingressController.autoscaling.vpa.annotations Annotations for VPA resource
2285 ## @param ingressController.autoscaling.vpa.controlledResources VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
2287 controlledResources: []
2288 ## @param ingressController.autoscaling.vpa.maxAllowed VPA Max allowed resources for the pod
2292 ## @param ingressController.autoscaling.vpa.minAllowed VPA Min allowed resources for the pod
2297 ## @param ingressController.autoscaling.vpa.updatePolicy.updateMode Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod
2298 ## Possible values are "Off", "Initial", "Recreate", and "Auto".
2302 ## @param ingressController.autoscaling.hpa.enabled Enable HPA for APISIX Ingress Controller
2305 ## @param ingressController.autoscaling.hpa.minReplicas Minimum number of APISIX Ingress Controller replicas
2308 ## @param ingressController.autoscaling.hpa.maxReplicas Maximum number of APISIX Ingress Controller replicas
2311 ## @param ingressController.autoscaling.hpa.targetCPU Target CPU utilization percentage
2314 ## @param ingressController.autoscaling.hpa.targetMemory Target Memory utilization percentage
2317 ## @section APISIX Ingress Controller RBAC Parameters
2320 ## RBAC configuration
2323 ## @param ingressController.rbac.create Specifies whether RBAC resources should be created
2326 ## @param ingressController.rbac.rules Custom RBAC rules to set
2338 ## ServiceAccount configuration
2341 ## @param ingressController.serviceAccount.create Specifies whether a ServiceAccount should be created
2344 ## @param ingressController.serviceAccount.name The name of the ServiceAccount to use.
2345 ## If not set and create is true, a name is generated using the common.names.fullname template
2348 ## @param ingressController.serviceAccount.annotations Additional Service Account annotations (evaluated as a template)
2351 ## @param ingressController.serviceAccount.automountServiceAccountToken Automount service account token for the server service account
2353 automountServiceAccountToken: false
2354 ## Prometheus metrics
2357 ## @param ingressController.metrics.enabled Enable the export of Prometheus metrics
2360 ## @param ingressController.metrics.annotations [object] Annotations for the APISIX Ingress Controller service in order to scrape metrics
2362 prometheus.io/scrape: "true"
2363 prometheus.io/port: "{{ .Values.ingressController.service.ports.http }}"
2364 ## Prometheus Operator ServiceMonitor configuration
2367 ## @param ingressController.metrics.serviceMonitor.enabled if `true`, creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)
2370 ## @param ingressController.metrics.serviceMonitor.namespace Namespace in which Prometheus is running
2373 ## @param ingressController.metrics.serviceMonitor.annotations Additional custom annotations for the ServiceMonitor
2376 ## @param ingressController.metrics.serviceMonitor.labels Extra labels for the ServiceMonitor
2379 ## @param ingressController.metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in Prometheus
2382 ## @param ingressController.metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
2385 ## @param ingressController.metrics.serviceMonitor.interval Interval at which metrics should be scraped.
2386 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
2391 ## @param ingressController.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
2392 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
2394 ## scrapeTimeout: 10s
2397 ## @param ingressController.metrics.serviceMonitor.metricRelabelings Specify additional relabeling of metrics
2399 metricRelabelings: []
2400 ## @param ingressController.metrics.serviceMonitor.relabelings Specify general relabeling
2403 ## @param ingressController.metrics.serviceMonitor.selector Prometheus instance selector labels
2405 ## prometheus: my-prometheus
2408## @section Init containers parameters
2411 ## @param waitContainer.image.registry [default: REGISTRY_NAME] Init container wait-container image registry
2412 ## @param waitContainer.image.repository [default: REPOSITORY_NAME/os-shell] Init container wait-container image name
2413 ## @skip waitContainer.image.tag Init container wait-container image tag
2414 ## @param waitContainer.image.digest Init container wait-container image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
2418 repository: chainguard-private/os-shell-iamguarded
2421 ## @param waitContainer.image.pullPolicy Init container wait-container image pull policy
2423 pullPolicy: IfNotPresent
2424 ## @param waitContainer.image.pullSecrets [array] Specify docker-registry secret names as an array
2425 ## Optionally specify an array of imagePullSecrets.
2426 ## Secrets must be manually created in the namespace.
2427 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
2430 ## - myRegistryKeySecretName
2433 ## Configure Container Security Context
2434 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
2435 ## @param waitContainer.containerSecurityContext.enabled Enabled APISIX Ingress Controller containers' Security Context
2436 ## @param waitContainer.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
2437 ## @param waitContainer.containerSecurityContext.runAsUser Set APISIX Ingress Controller containers' Security Context runAsUser
2438 ## @param waitContainer.containerSecurityContext.runAsGroup Set APISIX Ingress Controller containers' Security Context runAsGroup
2439 ## @param waitContainer.containerSecurityContext.runAsNonRoot Set APISIX Ingress Controller containers' Security Context runAsNonRoot
2440 ## @param waitContainer.containerSecurityContext.privileged Set APISIX Ingress Controller containers' Security Context privileged
2441 ## @param waitContainer.containerSecurityContext.readOnlyRootFilesystem Set APISIX Ingress Controller containers' Security Context readOnlyRootFilesystem
2442 ## @param waitContainer.containerSecurityContext.allowPrivilegeEscalation Set APISIX Ingress Controller containers' Security Context allowPrivilegeEscalation
2443 ## @param waitContainer.containerSecurityContext.capabilities.drop Set APISIX Ingress Controller containers' Security Context capabilities.drop
2444 ## @param waitContainer.containerSecurityContext.seccompProfile.type Set APISIX Ingress Controller containers' Security Context seccompProfile.type
2446 containerSecurityContext:
2453 readOnlyRootFilesystem: true
2454 allowPrivilegeEscalation: false
2458 type: RuntimeDefault
2459## @section External etcd settings
2462 ## @param externalEtcd.servers List of hostnames of the external etcd
2465 ## @param externalEtcd.port Port of the external etcd instance
2468 ## @param externalEtcd.user User of the external etcd instance
2471 ## @param externalEtcd.password Password of the external etcd instance
2474 ## @param externalEtcd.existingSecret Name of a secret containing the external etcd password
2477 ## @param externalEtcd.existingSecretPasswordKey Key inside the secret containing the external etcd password
2479 existingSecretPasswordKey: "etcd-root-password"
2480 ## @param externalEtcd.secureTransport Use TLS for client-to-server communications
2482 secureTransport: false
2483## @section etcd sub-chart parameters
2486 ## @param etcd.enabled Deploy etcd sub-chart
2489 ## @param etcd.replicaCount Number of etcd replicas
2492 ## @param etcd.containerPorts.client Container port for etcd
2496 ## @param etcd.auth.rbac.create Switch to enable RBAC authentication
2497 ## @param etcd.auth.rbac.rootPassword etcd root password
2498 ## @param etcd.auth.client.secureTransport use TLS for client-to-server communications
2502 ## Currently the data_plane is not working with etcd credentials enabled. This should be
2503 ## changed when this is fixed by APISIX
2507 secureTransport: false
2508 ## @param etcd.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
2510 resourcesPreset: "micro"
2511 ## @param etcd.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
2524 repository: chainguard-private/etcd-iamguarded