title: Configuring Ingress with APISIX CRDs keywords:
This tutorial walks through configuring APISIX Ingress with APISIX Custom Resource Definitions (CRDs).
Also see:
Before you move on, make sure you:
We will deploy a sample service, kennethreitz/httpbin, for this tutorial.
You can deploy it to your Kubernetes cluster by running:
kubectl run httpbin --image kennethreitz/httpbin --port 80 kubectl expose pod httpbin --port 80
We can configure the Ingress using an ApisixRoute resource. The example below configures APISIX to route requests to the httpbin service:
apiVersion: apisix.apache.org/v2 kind: ApisixRoute metadata: name: httpserver-route spec: http: - name: rule1 match: hosts: - local.httpbin.org paths: - /* backends: - serviceName: httpbin servicePort: 80
This configuration will route all requests with host local.httpbin.org
to the httpbin service.
You can apply it by running:
kubectl apply -f httpbin-ingress.yaml
If you followed along and used minikube and NodePort
service to expose APISIX, you can access it through the Node IP of the service apisix-gateway
. If the Node IP is not reachable directly (if you are on Darwin, Windows, or WSL), you can create a tunnel to access the service on your machine:
minikube service apisix-gateway --url -n ingress-apisix
Now, you can send a GET
request to the created Route and it will be Routed to the httpbin service:
curl --location --request GET "localhost:57687/get?foo1=bar1&foo2=bar2" -H "Host: local.httpbin.org"
You will receive a response similar to:
{ "args": { "foo1": "bar1", "foo2": "bar2" }, "headers": { "Accept": "*/*", "Host": "local.httpbin.org", "User-Agent": "curl/7.84.0", "X-Forwarded-Host": "local.httpbin.org" }, "origin": "172.17.0.1", "url": "http://local.httpbin.org/get?foo1=bar1&foo2=bar2" }