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 -ysudo apt-get upgrade -ysudo apt install haproxy jq -ysudo add-apt-repository ppa:deadsnakes/ppa -y && sudo apt update -ysudo apt install python3.11 -y && sudo apt install python3.11-venv -ycurl -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/kubectlalias k=kubectlIm 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.twoIm 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 uppython3.11 -m venv .va. .va/bin/activatecd kubespray && pip install -r requirements.txtansible-playbook -i inventory/k8s-cluster/hosts.yaml -u vagrant -b cluster.ymlDamit 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 ~/.kubessh vagrant@192.168.56.61sudo cp /etc/kubernetes/admin.conf admin.confsudo chown vagrant:vagrant admin.confexitscp vagrant@192.168.56.61:/home/vagrant/admin.conf ~/.kube/configcd .. && sudo cp haproxy.cfg /etc/haproxy/haproxy.cfg && sudo systemctl restart haproxyFü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.0kubectl create -f https://operatorhub.io/install/grafana-operator.yamlIn 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.yamlDas 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