Install Ingress APISIX on Amazon EKS
This document explains how to install Ingress APISIX on Amazon EKS.
#
Prerequisites- Create an EKS Service on AWS.
- Download the kube config for your EKS from aws cli interface.
- Install Helm.
#
Install APISIX and apisix-ingress-controllerAs the data plane of apisix-ingress-controller, Apache APISIX can be deployed at the same time using Helm chart.
helm repo add apisix https://charts.apiseven.com
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
kubectl create ns ingress-apisix
helm install apisix apisix/apisix \
--set gateway.type=LoadBalancer \
--set ingress-controller.enabled=true \
--namespace ingress-apisix \
--set ingress-controller.config.apisix.serviceNamespace=ingress-apisix
kubectl get service --namespace ingress-apisix
Five Service resources were created.
apisix-gateway
, which processes the real traffic;apisix-admin
, which acts as the control plane to process all the configuration changes.apisix-ingress-controller
, which exposes apisix-ingress-controller's metrics.apisix-etcd
andapisix-etcd-headless
for etcd service and internal communication.
The gateway service type is set to LoadBalancer
(See AWS Network Balancer for more details), so that clients can access Apache APISIX through a load balancer. You can find the load balancer hostname by running:
kubectl get service apisix-gateway --namespace ingress-apisix -o jsonpath='{.status.loadBalancer.ingress[].hostname}'
Now open your EKS console, choosing your cluster and clicking the Workloads tag, you'll see all pods of Apache APISIX, etcd and apisix-ingress-controller are ready.
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.
#
Specify The Ingress Versionapisix-ingress-controller will watch apiVersion of networking.k8s.io/v1
by default. If the target kubernetes version is under v1.19
, add --set ingress-controller.config.kubernetes.ingressVersion=networking/v1beta1
or --set ingress-controller.config.kubernetes.ingressVersion=extensions/v1beta1
if your kubernetes cluster is under v1.16
#
Enable SSLThe ssl config is disabled by default, add --set gateway.tls.enabled=true
to enable tls support.
#
Change default apikeyIt's Recommended to change the default key by add --set ingress-controller.config.apisix.adminKey=ADMIN_KEY_GENERATED_BY_YOURSELF
, --set admin.credentials.admin=ADMIN_KEY_GENERATED_BY_YOURSELF
, --set admin.credentials.viewer=VIEWER_KEY_GENERATED_BY_YOURSELF
, notice that ingress-controller.config.apisix.adminKey
and admin.credentials.admin
must be the same, and should better not same as admin.credentials.viewer
.