Die Schritte werden basierend auf dem Vagrantfile mitgeliefert. In der zwischen Zeit könnte sich einiges verändert haben und somit auch die Schritte beeinflussen. Sollte das der Fall sein, sollte ein Issue erstellt werden, sodass es frühzeitig behoben wird.
Für die erfolgreiche Provisionierung des Kubernetes-Produktionsclusters müssen folgende Voraussetzungen erfüllt sein:
- Ubuntu Betriebssystem (mindestens Version 20.04)
- Oracle VirtualBox installiert auf dem Ubuntu System
- Vagrant installiert auf dem Ubuntu System
Zuerst müssen die bereits vorhandenen Softwarepakete aktualisiert und benötigte installiert werden. Zu den benötigten Softwarepaketen gehören:
- jq
- haproxy
- python3.11
- kubectl
Für das einfache Arbeiten mit dem CLI von Kubernetes wird ein Alias k
für das Kommando kubectl
gesetzt.
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt install haproxy jq -y
sudo add-apt-repository ppa:deadsnakes/ppa -y && sudo apt update -y
sudo apt install python3.11 -y && sudo apt install python3.11-venv -y
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
alias k=kubectl
Im Git-Repository wurden bereits einige Vorkehrungen für die einfache Provisionierung des Kubernetes-Produktionsclusters und die Interaktion damit getroffen. Zu den Vorkehrungen gehören beispielsweise:
- Das Definieren des Ansible-Inventories.
- Das Festlegen des Vagrantfiles für die Infrastrukturprovisionierung.
- Das Erstellen der haproxy-Konfigurationsdatei.
git clone https://github.com/naivary/stud.project.two.git && cd stud.project.two
Im Folgendem werden insgesamt 5 virtuelle Maschinen provisioniert (3 Control Planes und 2 Nodes). Ebenfalls wird eine Python Virtual Environment erstellt, für die Installation der Kubespray Abhängigkeiten. Im Vagranfile sollte das richtige Bridge-Netzwerk eingestellt werden.
vagrant up
python3.11 -m venv .va
. .va/bin/activate
cd kubespray && pip install -r requirements.txt
ansible-playbook -i inventory/k8s-cluster/hosts.yaml -u vagrant -b cluster.yml
Damit die Interaktion zwischen dem Ubuntu-Infrakstruktursystem und dem Kubernetes-Produktionscluster gelingt, muss die Kubernetes-Konfiguration kubectl
bekannt sein. Diese ist bereits auf einem der drei Control Planes vordefiniert und muss ausschließlich auf das Infrastruktursystem kopiert werden. Der .kube
-Ordner im Homeverzeichnis des aktuellen Ubuntu-Nutzers ist der Standardordner von kubectl
. Dort erwartet kubectl
die Kubernetes-Konfiguration.
mkdir ~/.kube
sudo cp /etc/kubernetes/admin.conf admin.conf
sudo chown vagrant:vagrant admin.conf
exit
scp [email protected]:/home/vagrant/admin.conf ~/.kube/config
cd .. && sudo cp haproxy.cfg /etc/haproxy/haproxy.cfg && sudo systemctl restart haproxy
Für die Implementierung der beispielhaften Observability-Lösung werden die beiden Kubernetes-Operatoren Prometheus-Operator und Grafana-Operator benötigt.
LATEST=$(curl -s https://api.github.com/repos/prometheus-operator/prometheus-operator/releases/latest | jq -cr .tag_name)
curl -sL https://github.com/prometheus-operator/prometheus-operator/releases/download/${LATEST}/bundle.yaml | kubectl create -f -
curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.26.0/install.sh | bash -s v0.26.0
kubectl create -f https://operatorhub.io/install/grafana-operator.yaml
In der observe.yaml
Datei werden die Kubernetes-Objekte definiert, die für die beispielhafte Lösung benötigt werden. Sollte ein Fehler auftreten, sollte das zweite Kommando ausgeführt werden, bis Erfolg verzeichnet wird. Die Fehler können aufgrund der Abhängigkeiten der Kubernetes-Objekte entstehen, die möglicherweise noch nicht vollständig erstellt wurden.
cd ..
k apply -f observe.yaml
Das Grafana-Dashboard kann nach erfolgreichem Deployment unter der Adresse https://192.168.56.200 erreicht werden. Die Anmeldeinformationen lauten wie folgt:
- Username: root
- Password: secret