| ## Apache APISIX for Kubernetes |
| |
| Apache APISIX is a dynamic, real-time, high-performance API gateway. |
| |
| APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more. |
| |
| You can use Apache APISIX to handle traditional north-south traffic, as well as east-west traffic between services. It can also be used as a [k8s ingress controller](https://github.com/apache/apisix-ingress-controller/). |
| |
| This chart bootstraps all the components needed to run Apache APISIX on a Kubernetes Cluster using [Helm](https://helm.sh). |
| |
| |
| ## TL;DR |
| |
| ```sh |
| helm repo add apisix https://charts.apiseven.com |
| helm repo update |
| |
| helm install apisix/apisix --generate-name |
| ``` |
| |
| ## Prerequisites |
| |
| * Kubernetes v1.14+ |
| * Helm v3+ |
| |
| |
| ## Install |
| |
| To install the chart with the release name `my-apisix`: |
| |
| ```sh |
| helm repo add apisix https://charts.apiseven.com |
| helm repo update |
| |
| helm install my-apisix apisix/apisix |
| ``` |
| |
| ## Uninstall |
| |
| To uninstall/delete a Helm release `my-apisix`: |
| |
| ```sh |
| helm delete my-apisix |
| ``` |
| |
| The command removes all the Kubernetes components associated with the chart and deletes the release. |
| |
| ## Parameters |
| |
| The following tables lists the configurable parameters of the apisix chart and their default values per section/component: |
| |
| ### Global parameters |
| |
| | Parameter | Description | Default | |
| |---------------------------|-------------------------------------------------|---------------------------------------------------------| |
| | `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | |
| |
| |
| ### apisix parameters |
| |
| | Parameter | Description | Default | |
| |------------------------------------------|-----------------------------------------------------|---------------------------------------------------------| |
| | `apisix.enabled` | Enable or disable Apache APISIX itself | `true` | |
| | `apisix.image.repository` | Apache APISIX image repository | `apache/apisix` | |
| | `apisix.image.tag` | Apache APISIX image tag | `{TAG_NAME}` (the latest Apache APISIX image tag) | |
| | `apisix.image.pullPolicy` | Apache APISIX image pull policy | `IfNotPresent` | |
| | `apisix.replicaCount` | Apache APISIX deploy replica count | `1` | |
| | `apisix.podAnnotations` | Annotations to add to each pod | `{}` | |
| | `apisix.podSecurityContext` | Set the securityContext for Apache APISIX pods | `{}` | |
| | `apisix.securityContext` | Set the securityContext for Apache APISIX container | `{}` | |
| | `apisix.resources` | Set pod resource requests & limits | `{}` | |
| | `apisix.nodeSelector` | Node labels for Apache APISIX pod assignment | `{}` | |
| | `apisix.tolerations` | List of node taints to tolerate | `{}` | |
| | `apisix.affinity` | Set affinity for Apache APISIX deploy | `{}` | |
| | `apisix.podAntiAffinity.enabled` | Enable or disable podAntiAffinity | `false` | |
| |
| |
| ### gateway parameters |
| |
| Apache APISIX service parameters, this determines how users can access itself. |
| |
| | Parameter | Description | Default | |
| |---------------------------------|----------------------------------------------------------------------------------|---------------------------------------------------------| |
| | `gateway.type` | Apache APISIX service type for user access itself | `NodePort` | |
| | `gateway.externalTrafficPolicy` | Setting how the Service route external traffic | `Cluster` | |
| | `gateway.http` | Apache APISIX service settings for http | | |
| | `gateway.tls` | Apache APISIX service settings for tls | | |
| | `gateway.stream` | Apache APISIX service settings for stream | | |
| | `gateway.ingress` | Using ingress access Apache APISIX service | | |
| |
| |
| ### admin parameters |
| |
| | Parameter | Description | Default | |
| |----------------------------|----------------------------------------------------------------------------------|---------------------------------------------------------| |
| | `admin.enabled` | Enable or disable Apache APISIX admin API | `true` | |
| | `admin.port` | which port to use for Apache APISIX admin API | `9180` | |
| | `admin.servicePort` | Service port to use for Apache APISIX admin API | `9180` | |
| | `admin.type` | Apache APISIX admin API service type | `ClusterIP` | |
| | `admin.externalIPs` | IPs for which nodes in the cluster will also accept traffic for the servic | `[]` | |
| | `admin.cors` | Apache APISIX admin API support CORS response headers | `true` | |
| | `admin.credentials.admin` | Apache APISIX admin API admin role credentials | `edd1c9f034335f136f87ad84b625c8f1` | |
| | `admin.credentials.viewer` | Apache APISIX admin API viewer role credentials | `4054f7cf07e344346cd3f287985e76a2` | |
| | `admin.allow.ipList` | the IP range allowed to Apache APISIX admin API | `true` | |
| |
| ### plugins and stream_plugins parameters |
| |
| Default enabled plugins. See [configmap template](https://github.com/apache/apisix-helm-chart/blob/master/charts/apisix/templates/configmap.yaml) for details. |
| |
| ### etcd parameters |
| |
| Configurations for etcd sub chart. |
| |
| ### dashboard parameters |
| |
| Configurations for apisix-dashboard sub chart. |
| |
| |
| ### ingress-controller parameters |
| |
| Configurations for Apache APISIX ingress-controller sub chart. |