Task 23 | Launching frontend & Backend Application Multi-Node Kubernetes Cluster Using Ansible | ARTH
Overview
In this article I am going to create a multi-node Kubernates cluster & launch one Wordpress & Mysql databse & all of this we do using Ansible playbook.
Task Description
- Automate Kubernetes Cluster Using Ansible
- Launch ec2-instances on AWS Cloud eg. for master and slave.
- Create roles that will configure master node and slave node seperately.
- Launch a wordpress and mysql database connected to it in the respectine slaves.
- Expose the wordpress pod and client able hit the wordpress ip with its respective port.
Pre-Requisites
- Kubernetes is an open-source COE(Container Orchestration Engine) used for automating container apps deployment, scaling, and monitor/management.
- Ansible is a automation tool used mostly for provisioning, configuration management, we can write infrastructure as code.
I have already created a blog in which I created a blog in which i have created Ansible roles to create multi-node kubernates cluster, it’s literally cover half of this task.
Now let’s start the task.
Steps
- First we create role For launching Master & Slave with there tags.
Now after running playbook we successfully launched 3 nodes.
- Next we create roles for slave & master node & using join command we join slave to the master & create kubernates cluster.
#Role for Master Node
#Role for Slave Node
- So above steps are for creating Kubernates cluster now we are going to launch two pods in the cluster so for that we need create yml files for the pods & copied them to master node.
- Next we run kubectl create command & create the nodes.
- I have already included expose resource in the wppod.yml file, so we don’t need to run kubectl expose command separately.
- Now we create debug tasks for retrieving the “exposed port” & “Database host IP”.
Now include all these roles to main playbook.
Finally after running our playbook we can check the results.
- Master-Node
- Pods YAML files
Now lets access the Wordpress app —
- But first need host IP & exposed port
- For accessing the wordpress, use below URL:
http://{{Master_Node_IP}}:{{Exposed_Port}}
- Now login to the Wordpress
Conclusion
Mistakes & learning
- First time I failed to run the kubectl command in the respective directory. So for switching the directory we can use “chdir” parameter.
- So this one mistake done by me unintentionally during the task is that when I launch the cluster, the IP range & flannel’s network range are different.
By default flannel’s network range is “10.244.0.0/16", so we have two option-
1. Use pod-network-cidr= “10.244.0.0/16” in kubeadm command.
2. Edit flannel network range:-
# kubectl edit configmap kube-flannel-cfg -n kube-system
—
net-conf.json: |
{
“Network”: “10.240.0.0/16”,
—
And then delete all the flannel pods
# kubectl delete pods -l app=flannel -n kube-system
Fin.
In last I want to thank you for reading this blog.
Hope you’ve learnt something.
Also share it if you liked this blog.