This post will help you with How to configure DNS for Applications deployed on Kubernetes. DNS configuration on Kubernetes is very important to make sure the applications can be accessed through DNS names. So the other part of resolution will be taken care by DNS or Domain Name System, because it is responsible for resolving domain names to IP addresses.
DevOps Full Course Tutorial for Beginners - DevOps Free Training Online
Docker Full Course Tutorial for Beginners - Docker Free Training Online
Kubernetes Full Course Tutorial for Beginners - Kubernetes Free Training Online
Ansible Full Course Tutorial for Beginners - Ansible Free Training Online
Openstack Full Course Tutorial for Beginners - Openstack Free Training Online
Prerequisites:
- A Kubernetes cluster with one or more nodes.
- kubectl command-line tool installed on your local machine.
Step 1: Create Namespace on Kubernetes Cluster
I assume, you may have already a dedicated kubernetes namespace created for your application. If not, use kubectl command with namespace option to create namespace on kubernetes cluster for your application. Because, Kubernetes Namespace will help our application by organizing and isolating resources within Kubernetes cluster.
$ kubectl create namespace <namespace-name>
Replace <namespace-name> with your preferred name.
Step 2: Deploy Application on Kubernetes Cluster
I assume again, you already have application deployed on kubernetes cluster. If not, create deployment resource to deploy the application using the below command easily.
$ kubectl create deployment <deployment-name> --image=<image-name> --namespace=<namespace-name>
Replace <deployment-name> with the preferred name, <image-name> with the name of the Docker image that you need to deploy and <namespace-name> with the name of the namespace you created in Step 1.
Step 3: Expose Deployment
Once application is deployed and running in state, we need to expose the application. So users can access it from outside the kubernetes cluster. Use the below command to expose deployment.
$ kubectl expose deployment <deployment-name> --type=LoadBalancer --port=<port-number> --namespace=<namespace-name>
Replace <deployment-name> with the name of the deployment you created in Step 2, <port-number> with the port number your application is listening on and <namespace-name> with the name of the namespace you created in Step 1.
Step 4: Configure DNS
Here is the the final step to configure DNS for your application. You can use Kubernetes ingress to configure DNS as follows: Just create a kubernetes ingress yaml file and apply it.
Make sure the domain name record is created and mapped with correct CNAME record.
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: <ingress-name>
namespace: <namespace-name>
spec:
rules:
- host: <domain-name>
http:
paths:
- backend:
serviceName: <service-name>
servicePort: <port-number>
Replace <ingress-name> with the name you want to give your ingress, <domain-name> with the domain name you want to use to access your application, <service-name> with the name of the service you created in Step 3 and <port-number> with the port number your application is listening on.
After configuring DNS, you should be able to access the application running on the kubernetes cluster using the domain name you specified in the ingress.
That's it for this post. Keep practicing and have fun. Leave your comments if any.
Related Searches and Questions asked:
0 Comments