Deploy a Kubernetes cluster with Kubespray using Bash scripts, Ansible and Vagrant
APACHE-2.0 License
This project automates the deployment of a kubernetes cluster with kubespray in Test environment.
Ansible and bash scripts are used to setup a kubernetes cluster.
Vagrant is utilized to provision VMs.
Minimum required version of Kubernetes is v1.27
Ansible v2.14+
, Jinja 2.11+
and python-netaddr
is installed on the machine that will run Ansible commands.
The target servers must have access to the Internet in order to pull docker images. Otherwise, additional configuration is required.
Get Chocolatey and use it to install vagrant:
choco install vagrant
Provision vagrant VMs
vagrant up
Login to control
VM
vagrant ssh control
Change password of root
user
This new password will be required when public RSA keys are being transferred to kube nodes.
sudo passwd
Update yum package manager
cd /
yum update
Install Git
yum install git
Clone this repo to /
directory in control node
git clone [email protected]:odennav/kubespray-bash-ansible.git
Clone kubernetes-sigs kubespray repo to /
directory in control node
git clone [email protected]:kubernetes-sigs/kubespray.git
Run dependencies-install.sh
script in control
node to install necessary dependencies, update yum package index and ensuring python version compatibility.
chmod 770 dependencies-install
./dependencies-install
Setup system for Ansible playbook execution
This bash script copies SSH keys, updates Ansible inventory, builds host inventory manifest and installs kubectl.
chmod 770 k8s-env-build.sh
./k8s-env-build.sh
Run Ansible playbook to to deploy kubernetes cluster
Change directory to your local kubespray repository and execute cluster.yml
ansible playbook
cd /kubespray
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
To remove current kubernetes cluster, run playbook as root user.
Run this command in kubespray directory
cd /kubespray
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
To destroy the VMs created by vagrant.
vagrant destroy
special thanks to Kubernetes-sigs for their amazing work.
Enjoy!