Create Ingress With Default Backend¶
A defaultBackend
is often configured in an Ingress controller to service any requests that do not match a path in the spec
.
Let's see this in action!
Docker Images¶
Here is the Docker Image used in this tutorial: reyanshkharga/nodeapp:v1
Note
reyanshkharga/nodeapp:v1 runs on port 5000
and has the following routes:
GET /
Returns host info and app versionGET /health
Returns health status of the appGET /random
Returns a randomly generated number between 1 and 10
Step 1: Create a Deployment¶
First, let's create a deployment as follows:
Apply the manifest to create the Deployment:
Verify deployment and pods:
Step 2: Create a NodePort Service¶
Let's create a NodePort service as follows:
Apply the manifest to create the NodePort service:
Verify service:
Step 3: Create Ingress¶
Now that we have the service ready, let's create an Ingress object:
Observe the following:
- We have used annotations to specify load balancer and target group attributes
- We have one rule that matches
/yXnKHUoJGt
path and then routes traffic to default backend which in this case ismy-nodeport-service
.
Apply the manifest to create ingress:
Verify ingress:
Step 4: Verify AWS Resources in AWS Console¶
Visit the AWS console and verify the resources created by AWS Load Balancer Controller.
Pay close attention to the listener rules. You will observe a default listener rule that was set using defaultBackend
.
Also, verify that the ALB was created by AWS Load Balancer Controller
. You can check the events in the logs as follows:
kubectl logs -f deploy/aws-load-balancer-controller -n aws-load-balancer-controller --all-containers=true
Troubleshooting¶
If you don't see the load balancer in the AWS console, this means the ingress has some issue. To identify the underlying issue, you can examine the logs of the controller as follows:
# Describe the ingress
kubectl describe ing my-ingress
# View aws load balancer controller logs
kubectl logs -f deploy/aws-load-balancer-controller -n aws-load-balancer-controller --all-containers=true
Clean Up¶
Assuming your folder structure looks like the one below:
Let's delete all the resources we created:
References: