![](https://github.com/Tony-Dja/kubernetes-cluster-deploy-vagrant-ansible/raw/35e60ca64e9bc44f5352709d64ff3f654cdc9ae1/screenshots/kubernetes-cluster.gif)
Déploiement automatisé d'un cluster Kubernetes multi-noeuds
au sein d'un environnement virtuel Vagrant
.
- OS - Debian 12 Bookworm
- Oracle Virtualbox 7.0
- Vagrant 2.4.0
- Ansible 2.15.8
Installer les outils suivants :
VirtualBox
=> Déploiement des VMsVagrant
=> Création d'un Environnement virtuelAnsible
=> Provisionnement des ressources du Cluster
- import gpg key of Virtualbox repository
sudo apt install curl wget gnupg2 lsb-release -y $ curl -fsSL https://www.virtualbox.org/download/oracle_vbox_2016.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/vbox.gpg $ curl -fsSL https://www.virtualbox.org/download/oracle_vbox.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/oracle_vbox.gpg
- add virtualbox repository
echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
- install VirtualBox
sudo apt update $ sudo apt install linux-headers-$(uname -r) dkms -y $ sudo apt install virtualbox-7.0 -y
- Installer les dépendances
sudo apt -y install apt-transport-https ca-certificates curl software-properties-common
- Récupérer la clé GPG du dépôt
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
- Ajouter le dépôt Vagrant
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
- Installer Vagrant
sudo apt update
sudo apt install vagrant
vagrant --version
- Récupérer la clé GPG du dépôt
$ wget -O- "https://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=get&search=0x6125E2A8C77F2818FB7BD15B93C4A3FD7BB9C367" | sudo gpg --dearmour -o /usr/share/keyrings/ansible-archive-keyring.gpg
- Ajouter le dépôt Ansible
$ UBUNTU_CODENAME=jammy
$ echo "deb [signed-by=/usr/share/keyrings/ansible-archive-keyring.gpg] http://ppa.launchpad.net/ansible/ansible/ubuntu $UBUNTU_CODENAME main" | sudo tee /etc/apt/sources.list.d/ansible.list
- Installer Ansible
$ sudo apt update && sudo apt install ansible
vagrant up
La configuration du cluster est gérée dans les variables présentes dans le fichier Vagrantfile
Il est possible de modifier les paramètres suivants :
- Image du système d'exploitation
- Mémoire RAM
- Nombre de CPU
- Nom du Master Node
- Nombre de Worker Node
- Adresses IP du réseaux de Noeuds
- Adresses IP du réseaux de Pods
A partir du dossier où se trouve le Vagrantfile
:
vagrant ssh master
A partir d'un autre emplacement:
ssh -r [email protected]
password = vagrant
Vous pouvez configurer la CLI kubectl
sur votre machine locale afin de communiquer avec l'API Kubernetes
.
- Installer kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
Copier sur votre machine locale le dossier .kube
contenant le fichier de configuration du cluster :
scp -r [email protected]:/home/vagrant/.kube $HOME/
password = vagrant
Vérifier que les Noeuds sont bien présents avec un status Ready
:
kubectl get nodes -ALL -o wide
Résultat :
NAME STATUS ROLES AGE VERSION INTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready control-plane 99m v1.28.2 192.168.56.10 Ubuntu 18.04.6 LTS 4.15.0-206-generic containerd://1.6.21
worker-1 Ready <none> 96m v1.28.2 192.168.56.11 Ubuntu 18.04.6 LTS 4.15.0-206-generic containerd://1.6.21
Vérifier que les Pods sont bien présents avec un status Running
:
kubectl get pods -ALL -o wide
Résultat :
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
kube-flannel kube-flannel-ds-gk8fn 1/1 Running 0 98m 192.168.56.10 master
kube-flannel kube-flannel-ds-zwxs2 1/1 Running 0 96m 192.168.56.11 worker-1
kube-system coredns-5dd5756b68-stn9l 1/1 Running 0 98m 10.244.0.3 master
kube-system coredns-5dd5756b68-wbk4t 1/1 Running 0 98m 10.244.0.2 master
kube-system etcd-master 1/1 Running 0 99m 192.168.56.10 master
kube-system kube-apiserver-master 1/1 Running 0 99m 192.168.56.10 master
kube-system kube-controller-manager-master 1/1 Running 0 99m 192.168.56.10 master
kube-system kube-proxy-nlhbd 1/1 Running 0 98m 192.168.56.10 master
kube-system kube-proxy-tqzq4 1/1 Running 0 96m 192.168.56.11 worker-1
kube-system kube-scheduler-master 1/1 Running 0 99m 192.168.56.10 master