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.
- The target servers are configured to allow IPv4 forwarding.
- If using IPv6 for pods and services, the target servers are configured to allow IPv6 forwarding.
- The firewalls are not managed, you'll need to implement your own rules the way you used to. in order to avoid any issue during deployment you should disable your firewall.
- If kubespray is run from non-root user account, correct privilege escalation method should be configured in the target servers. Then the ansible_become flag or command parameters --become or -b should be specified.
- 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 in control node to install necessary dependencies
Updating Yum, installing necessary dependencies, and ensuring Python 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 repo and execute cluster 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!