Apache APISIX
Learn how to install and use Apache APISIX
Get started
Apache APISIX provides rich traffic management features like load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, etc.
Before exploring the chart’s possibilities, let’s start by deploying the default configuration:
helm install <release-name> oci://dp.apps.rancher.io/charts/apache-apisix \
--namespace apisix \
--create-namespace \
--set global.imagePullSecrets={application-collection}
Check our authentication guide if you need to configure Application Collection OCI credentials in your Kubernetes cluster.
Chart overview
Our Apache APISIX chart is based on the official apache-apisix chart and adapted to include our best practices. As such, any chart-related documentation provided by upstream will work out of the box with our chart. You can check the official documentation here.
By default, the chart will install the optional etcd
component.
Chart configuration
To view the supported configuration options and documentation, run:
helm show values oci://dp.apps.rancher.io/charts/apache-apisix
Deploy the dashboard
The Apache APISIX Helm chart offers a dashboard UI that allows you to easily manage its configurations. In order to deploy Apache APISIX with the dashboard UI, run the following command:
helm install <release-name> oci://dp.apps.rancher.io/charts/apache-apisix \
--namespace apisix \
--create-namespace \
--set global.imagePullSecrets={application-collection} \
--set dashboard.enabled=true \
--set dashboard.config.conf.etcd.endpoints[0]='<release-name>-etcd:2379'
Deploy the ingress controller
To deploy Apache APISIX with the ingress controller, run the following command:
helm install <release-name> oci://dp.apps.rancher.io/charts/apache-apisix \
--namespace apisix \
--create-namespace \
--set global.imagePullSecrets={application-collection} \
--set ingress-controller.enabled=true \
--set ingress-controller.config.apisix.serviceNamespace=apisix
It is necessary to reference the namespace where the chart is being installed in the
ingress-controller.config.apisix.serviceNamespace
property, so the controllers spun up by the installation know how to reach the Gateway and the Admin API of Apache APISIX.
External etcd
By default, the Apache APISIX Helm chart is installed with etcd. However, there are scenarios where you may want to configure Apache APISIX to use an external etcd cluster. This can be modified by installing the Helm chart with the following command:
helm install <release-name> oci://dp.apps.rancher.io/charts/apache-apisix \
--namespace apisix \
--create-namespace \
--set global.imagePullSecrets={application-collection} \
--set etcd.enabled=false \
--set 'externalEtcd.host[0]=<your-etcd-address>:<your-etcd-port>' \
--set 'externalEtcd.password=<your-etcd-password>'
As the dashboard also requires etcd to work properly, the following command should be used to install our Apache APISIX chart with the dashboard if an external etcd cluster is used:
helm install <release-name> oci://dp.apps.rancher.io/charts/apache-apisix \
--namespace apisix \
--create-namespace \
--set global.imagePullSecrets={application-collection} \
--set etcd.enabled=false \
--set 'externalEtcd.host[0]=<your-etcd-address>:<your-etcd-port>' \
--set 'externalEtcd.password=password' \
--set dashboard.enabled=true \
--set 'dashboard.config.conf.etcd.endpoints[0]=<your-etcd-address>:<your-etcd-port>' \
--set 'dashboard.config.conf.etcd.username=<your-etcd-username>' \
--set 'dashboard.config.conf.etcd.password=<your-etcd-password>'
Operations
Uninstall the chart
Removing an installed Apache APISIX instance is simple:
helm uninstall <release-name> \
--namespace apisix
The apisix
namespace is not removed by default. If no longer needed, use the following command to delete it:
kubectl delete namespace apisix
Due to Helm’s design, CustomResourceDefinitions (CRDs) are not removed when uninstalling the related chart. To do so, you will need to explicitly remove them:
kubectl delete $(kubectl get CustomResourceDefinition -l='apisix.apache.org/app=ingress-apisix' -o name -A)