TL;DR
I'd like to know if it's possible to deploy Apisix on a Kubernetes cluster, without the Database support (etcd), via Helm.
If it's possible, how do I need to configure the Helm chart values?
Long Version
Base Setup
My setup is based on minikube and I'm using the apisix/apisix
Helm chart.
- Start a minikube cluster:
minikube start --driver=docker
- Run minikube tunnel and leave it running in a separate terminal:
minikube tunnel
- Install Apisix:
helm repo add apisix https://charts.apiseven.comhelm repo add bitnami https://charts.bitnami.com/bitnamihelm repo updatekubectl create ns "ingress-apisix"helm install apisix apisix/apisix --namespace "ingress-apisix" \ --namespace ingress-apisix \ --set service.type=LoadBalancer \ --set ingress-controller.enabled=true \ --set ingress-controller.config.apisix.serviceNamespace=ingress-apisix
NB: I'm using a LoadBalancer for easier route testing on localhost (that's why I'm using minikube tunnel
)
What I Tried
I noticed from the documentation that there's a "Standalone" deployment mode which:
will no longer use the default etcd as the configuration center.
And is suitable for Kubernetes users due to:
Declarative API that dynamically updates the routing rules with a full yaml configuration.
However, when I tried to deploy Apisix with what I think are the necessary config values, the installation gets stuck:
- File
values-dbless.yaml
(values from apisix/apisix Helm chart):
apisix: deployment: mode: standalone role: "data_plane"etcd: enabled: falseservice: type: LoadBalanceringress-controller: enabled: true config: apisix: serviceNamespace: ingress-apisix adminAPIVersion: v3
- Install Apisix with the following command:
helm repo add apisix https://charts.apiseven.comhelm repo add bitnami https://charts.bitnami.com/bitnamihelm repo updatekubectl create ns "ingress-apisix"helm install apisix apisix/apisix --namespace "ingress-apisix" \ -f "./values-dbless.yaml"
- It doesn't start the etcd pods anymore, but the
apisix-ingress-controller
Pod is forever stuck waiting for thewait-apisix-admin
InitContainer, which spams the following log messages:
waiting for apisix-adminwaiting for apisix-adminwaiting for apisix-adminwaiting for apisix-admin