blob: d9624ee6d3bac11950e99602eaa864f4f0c10a92 [file] [log] [blame] [view]
## 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.