APISIX Ingress controller for Kubernetes using Apache APISIX as a high performance reverse proxy and load balancer.
If you have installed multiple ingress controller, add the kubernetes.io/ingress.class: apisix annotation to your Ingress resources.
This chart bootstraps an apisix-ingress-controller deployment on a Kubernetes cluster using the Helm package manager.
Apisix ingress controller requires Kubernetes version 1.16+.
helm repo add apisix https://charts.apiseven.com helm repo update
Important: only helm3 is supported
helm install [RELEASE_NAME] apisix/apisix-ingress-controller --namespace ingress-apisix --create-namespace
The command deploys apisix-ingress-controller on the Kubernetes cluster in the default configuration.
See configuration below.
See helm install for command documentation.
helm uninstall [RELEASE_NAME] --namespace ingress-apisix
This removes all the Kubernetes components associated with the chart and deletes the release.
See helm uninstall for command documentation.
helm upgrade [RELEASE_NAME] [CHART] --install
See helm upgrade for command documentation.
See Customizing the Chart Before Installing. To see all configurable options with detailed comments, visit the chart's values.yaml, or run these configuration commands:
helm show values apisix/apisix-ingress-controller
priorityClassName field referenced a name of a created PriorityClass object. Check here for more details.
A security context provides us with a way to define privilege and access control for a Pod or even at the container level.
Check here to see the SecurityContext resource with more detail.
Check also here to see a full explanation and some examples to configure the security context.
Right below you have an example of the security context configuration. In this case, we define that all the processes in the container will run with user ID 1000.
... spec: securityContext: runAsUser: 1000 runAsGroup: 3000 ...
The same for the group definition, where we define the primary group of 3000 for all processes.
It's quite important to know, if the runAsGroup is omited, the primary group will be root(0), which in some cases goes against some security policies.
To define this configuration at the pod level, you need to set:
--set podSecurityContext.runAsUser=«VALUE» --set podSecurityContext.runAsGroup=«VALUE» ...
The same for container level, you need to set:
--set securityContext.runAsUser=«VALUE» --set SecurityContext.runAsGroup=«VALUE» ...
| Key | Type | Default | Description |
|---|---|---|---|
| apisix.adminService.name | string | "apisix-admin" | |
| apisix.adminService.namespace | string | "apisix-ingress" | |
| apisix.adminService.port | int | 9180 | |
| autoscaling.enabled | bool | false | |
| autoscaling.minReplicas | int | 1 | |
| config.controllerName | string | "apisix.apache.org/apisix-ingress-controller" | |
| config.enableHTTP2 | bool | false | |
| config.execADCTimeout | string | "15s" | |
| config.kubernetes.defaultIngressClass | bool | false | |
| config.kubernetes.ingressClass | string | "apisix" | |
| config.leaderElection.disable | bool | false | |
| config.leaderElection.id | string | "apisix-ingress-controller-leader" | |
| config.leaderElection.leaseDuration | string | "15s" | |
| config.leaderElection.renewDeadline | string | "10s" | |
| config.leaderElection.retryPeriod | string | "2s" | |
| config.logLevel | string | "info" | |
| config.metricsAddr | string | ":8080" | |
| config.probeAddr | string | ":8081" | |
| config.provider.initSyncDelay | string | "20m" | |
| config.provider.syncPeriod | string | "1s" | |
| config.provider.type | string | "apisix" | |
| config.secureMetrics | bool | false | |
| deployment.affinity | object | {} | |
| deployment.annotations | object | {} | Add annotations to Apache APISIX ingress controller resource |
| deployment.image.pullPolicy | string | "IfNotPresent" | |
| deployment.image.repository | string | "apache/apisix-ingress-controller" | |
| deployment.image.tag | string | "2.0.0-rc2" | |
| deployment.nodeSelector | object | {} | |
| deployment.podAnnotations | object | {} | |
| deployment.podSecurityContext | object | {} | |
| deployment.replicas | int | 1 | |
| deployment.resources | object | {} | Set pod resource requests & limits |
| deployment.tolerations | list | [] | |
| deployment.topologySpreadConstraints | list | [] | Topology Spread Constraints for pod assignment spread across your cluster among failure-domains ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods |
| fullnameOverride | string | "" | |
| gatewayProxy.createDefault | bool | false | |
| gatewayProxy.provider.controlPlane.auth.adminKey.value | string | "edd1c9f034335f136f87ad84b625c8f1" | |
| gatewayProxy.provider.controlPlane.auth.type | string | "AdminKey" | |
| gatewayProxy.provider.controlPlane.endpoints | list | [] | |
| gatewayProxy.provider.type | string | "ControlPlane" | |
| labelsOverride | object | {} | Override default labels assigned to Apache APISIX ingress controller resource |
| nameOverride | string | "" | Default values for apisix-ingress-controller. This is a YAML-formatted file. Declare variables to be passed into your templates. |
| podDisruptionBudget | object | {"enabled":false,"maxUnavailable":1,"minAvailable":"90%"} | See https://kubernetes.io/docs/tasks/run-application/configure-pdb/ for more details |
| podDisruptionBudget.enabled | bool | false | Enable or disable podDisruptionBudget |
| podDisruptionBudget.maxUnavailable | int | 1 | Set the maxUnavailable of podDisruptionBudget |
| podDisruptionBudget.minAvailable | string | "90%" | Set the minAvailable of podDisruptionBudget. You can specify only one of maxUnavailable and minAvailable in a single PodDisruptionBudget. See Specifying a Disruption Budget for your Application for more details |