Skip to main content
Version: 1.1.0

Install Ingress APISIX on Azure AKS

This document explains how to install Ingress APISIX on Azure AKS.

Prerequisites#

  • Create an Kubernetes Service on Azure.
  • Install Azure CLI and download the credentials by running az aks get-credentials.
  • Install Helm.
  • Clone Apache APISIX Charts.
  • Make sure your target namespace exists, kubectl operations thorough this document will be executed in namespace ingress-apisix.

Install APISIX#

Apache APISIX as the proxy plane of apisix-ingress-controller, should be deployed in advance.

cd /path/to/apisix-helm-chart
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add apisix https://charts.apiseven.com
# Use `helm search repo apisix` to search charts about apisix
helm repo update
helm install apisix apisix/apisix \
--set gateway.type=LoadBalancer \
--set admin.allow.ipList="{0.0.0.0/0}" \
--namespace ingress-apisix
kubectl get service --namespace ingress-apisix

Two Service resources were created, one is apisix-gateway, which processes the real traffic; another is apisix-admin, which acts as the control plane to process all the configuration changes.

The gateway service type is set to LoadBalancer, so that clients can access Apache APISIX through a load balancer IP. You can find the load balancer IP by running:

kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].ip}'

Another thing should be concerned that the allow.ipList field should be customized according to the Pod CIRD configuration of AKS, so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).

Install apisix-ingress-controller#

You can also install apisix-ingress-controller by Helm Charts, it's recommended to install it in the same namespace with Apache APISIX.

cd /path/to/apisix-helm-chart
# install apisix-ingress-controller
helm install apisix-ingress-controller apisix/apisix-ingress-controller \
--set image.tag=dev \
--set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
--set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \
--namespace ingress-apisix

Change the image.tag to the apisix-ingress-controller version that you desire. You have to wait for while until the corresponding pods are running.

Now try to create some resources to verify the running status. As a minimalist example, see proxy-the-httpbin-service to learn how to apply resources to drive the apisix-ingress-controller.