| title | Get APISIX and APISIX Ingress Controller | |||
|---|---|---|---|---|
| keywords |
|
|||
| description | Learn how to quickly install and set up Apache APISIX Ingres Controller. |
import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
APISIX Ingress Controller is a Kubernetes ingress controller using Apache APISIX as the high performance reverse proxy.
APISIX Ingress Controller can be configured using the native Kubernetes Ingress or Gateway API, as well as with APISIX’s own declarative and easy-to-use custom resources. The controller translates these resources into APISIX configuration.
This tutorial series walks you through how to quickly get started with APISIX on a kind Kubernetes cluster and use the APISIX Ingress Controller to manage resources.
- Install Docker as a dependency of kind.
- Install kind to start a local Kubernetes cluster, or use any existing Kubernetes cluster (version 1.26+).
- Install Helm (version 3.8+).
- Install kubectl to run commands against Kubernetes clusters.
In this section, you will be creating a kind cluster and configuring the namespace. Skip to the next section if you already have an existing cluster and a corresponding namspace.
Ensure you have Docker running and start a kind cluster:
kind create clusterCreate a new namespace ingress-apisix:
kubectl create namespace ingress-apisixSet the namespace to ingress-apisix to avoid specifying it explicitly in each subsequent command:
kubectl config set-context --current --namespace=ingress-apisixInstall the Gateway API CRDs, APISIX Standalone API-driven mode, and APISIX Ingress Controller:
helm repo add apisix https://charts.apiseven.com
helm repo update
helm install apisix \
--namespace ingress-apisix \
--create-namespace \
--set apisix.deployment.role=traditional \
--set apisix.deployment.role_traditional.config_provider=yaml \
--set etcd.enabled=false \
--set ingress-controller.enabled=true \
--set ingress-controller.config.provider.type=apisix-standalone \
--set ingress-controller.apisix.adminService.namespace=ingress-apisix \
--set ingress-controller.gatewayProxy.createDefault=true \
apisix/apisixMore details on the installation can be found in the Installation Guide.
Check the statuses of resources in the current namespace:
kubectl get allYou should wait for all pods to be running before proceeding:
NAME READY STATUS RESTARTS AGE
pod/apisix-7c5fb8d546-gtfqn 1/1 Running 0 113s
pod/apisix-ingress-controller-56c46fd54f-f8fxt 1/1 Running 0 113s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/apisix-admin ClusterIP 10.96.174.119 <none> 9180/TCP 113s
service/apisix-gateway NodePort 10.96.231.33 <none> 80:31321/TCP 113s
service/apisix-metrics-service ClusterIP 10.96.77.248 <none> 8443/TCP 113s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/apisix 1/1 1 1 113s
deployment.apps/apisix-ingress-controller 1/1 1 1 113s
NAME DESIRED CURRENT READY AGE
replicaset.apps/apisix-7c5fb8d546 1 1 1 113s
replicaset.apps/apisix-ingress-controller-56c46fd54f 1 1 1 113s
To verify the installed APISIX version, map port 80 of the apisix-gateway service to port 8080 on the local machine:
kubectl port-forward svc/apisix-gateway 9080:80 &Send a request to the gateway:
curl -sI "http://127.0.0.1:9080" | grep ServerIf everything is ok, you should see the APISIX version:
Server: APISIX/x.x.x