Install Ingress APISIX on Google Cloud GKE
This document explains how to install Ingress APISIX on Google Cloud GKE.
#
Prerequisites- Create an Kubernetes Service on GKE.
- Install Google Cloud SDK and get the credentials or you can just use the Cloud Shell.
- 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 APISIXApache 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 the GKE Load Balancer . 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 GKE, so that the apisix-ingress-controller instances can access the APISIX instances (resources pushing).
#
Install apisix-ingress-controllerYou 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.