Install Ingress APISIX on K3S and Rancher RKE
This document explains how to install Ingress APISIX on k3S and Rancher RKE.
K3S is a certified Kubernetes distribution built for IoT and Edge computing, whilst Apache APISIX is also good at IoT (See MQTT plugin) and runs well on ARM architecture. It's a good choice to use Ingress APISIX as the north-south API gateway in K3S.
#
Prerequisites- Install K3S or Rancher RKE.
- 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=NodePort \
--set ingress-controller.enabled=true \
--namespace ingress-apisix \
--set ingress-controller.config.apisix.serviceNamespace=ingress-apisix \
--kubeconfig /etc/rancher/k3s/k3s.yaml
kubectl get service --namespace ingress-apisix
If you are using K3S, the default kubeconfig file is in /etc/rancher/k3s and root permission may required.
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 NodePort
, so that clients can access Apache APISIX through the Node IPs and the assigned port.
If you are using K3S and you want to expose a LoadBalancer
service, try to use Klipper.
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.