Skip to content

Deploy a Kubernetes cluster with Kubespray using Bash scripts, Ansible and Vagrant

License

Notifications You must be signed in to change notification settings

odennav/kubespray-ansible-rhel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

k8s Deployment of a Kubernetes Cluster with Kubespray

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.

Requirements

  • 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

Getting Started

  1. Provision vagrant VMs

    vagrant up
  2. Login to control vm

    vagrant ssh control
  3. Change password of root user This new password will be required when public RSA keys are being transferred to kube nodes.

    sudo passwd
  4. Update yum package manager

    cd /
    yum update
  5. Install git

    yum install git
  6. Clone this repo to / directory in control node

    git clone [email protected]:odennav/kubespray-bash-ansible.git
  7. Clone kubernetes-sigs kubespray repo to / directory in control node

    git clone [email protected]:kubernetes-sigs/kubespray.git
  8. 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
  9. 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
  10. 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   

Reset Kubernetes Cluster

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

Destroying Resources(Optional)

To destroy the VMs created by vagrant.

vagrant destroy

Special Credits

Special thanks to Kubernetes-sigs for their amazing work.

Enjoy!