Zum Inhalt springen

Lab-Referenz

Diese Seite fasst zusammen, was du im Betrieb deines Labs immer wieder nachschlägst. Die Beispiele verwenden den Code mmuster. Setze überall deine eigenen Werte aus /etc/cc-lab.env ein. In den Kapiteln der letzten Spalte findest du die Begründungen.

Alle drei VMs haben dieselbe Datei /etc/cc-lab.env. Skripte und Checks lesen sie mit source /etc/cc-lab.env, danach stehen die Werte als Variablen zur Verfügung.

VariableBedeutungKapitel
CC_CODEdein persönlicher Code0.3
CC_LANGSprache der Berichte, de oder en0.3
CC_FE_HOST, CC_NODE1_HOST, CC_NODE2_HOSTNamen der drei VMs, etwa mmuster-fe0.3
CC_FE_IP, CC_NODE1_IP, CC_NODE2_IPAdressen der drei VMs im Labnetz0.3
CC_GUEST_NETinternes Netz cc-net für die VMs deiner Cloud, ein /24 in 172.16.0.0/122.3
CC_GUEST_GATEWAYAdresse des Front-ends in cc-net, endet auf .12.3
CC_GUEST_FIRST, CC_GUEST_SIZEerste Adresse und Anzahl Adressen für die VMs, ab .10 und 200 Adressen2.3
CC_VNI, CC_VXLAN_GROUPKennung und Multicast-Gruppe des VXLAN2.3
CC_K3S_SERVER_IP, CC_K3S_AGENT_IPfeste Adressen von k3s-server und k3s-agent, enden auf .110 und .1114.2
RechnerAdresseRolle
Front-end mmuster-feCC_FE_IP, in cc-net zusätzlich CC_GUEST_GATEWAYOpenNebula, Gateway mit NAT für cc-net, Gitea, OpenTofu, kubectl, Backups
Knoten mmuster-node1 und mmuster-node2CC_NODE1_IP, CC_NODE2_IPKVM und libvirt für die VMs der Cloud
k3s-serverCC_K3S_SERVER_IPControl Plane mit etcd, führt auch Pods aus
k3s-agentCC_K3S_AGENT_IPNode für Pods, mit den Zusatzaufträgen von Teil 5 auch für Ollama
VMs der Mitgliederab CC_GUEST_FIRSTLeases aus cc-net, onevnet show cc-net zeigt sie
Client192.168.210.10 auf smartlearnKali Linux mit Browser und Terminal, von hier aus arbeitest du, mit eigenem Hypervisor übernimmt dein PC diese Rolle

Am Front-end meldest du dich vom Client aus mit ssh mmuster-fe an, so wie in Kapitel 0.5 eingerichtet. Der Client ist auf smartlearn die Kali-VM, mit eigenem Hypervisor dein PC. Die VMs in cc-net erreichst du nur vom Front-end aus, etwa mit ssh root@$CC_K3S_SERVER_IP. Die festen Adressen der drei Server stehen in /etc/netplan/60-cc-lab.yaml, die du in Kapitel 0.3 mit dem Block des Generators angelegt hast.

DienstPortLäuft aufSo erreichst du ihnKapitel
SSH22allen VMsssh mmuster-fe, nach der Härtung nur mit Schlüssel0.5, 6.1
Sunstone2616Front-endhttp://<CC_FE_IP>:2616/ im Browser des Clients2.2
API von OpenNebula2633Front-endCLI und OpenTofu auf dem Front-end4.2
Gitea3000Front-endvor der Härtung http://<CC_FE_IP>:3000/, danach über einen Tunnel auf das Front-end4.4
OpenNebula-Exporter9925Front-endPrometheus im Cluster5.1
node_exporter9100Front-end und KnotenPrometheus im Cluster5.1
Libvirt-Exporter9926KnotenPrometheus im Cluster5.1
API von Kubernetes6443k3s-serverkubectl mit ~/.kube/config4.3
Webshop über Traefik80beiden NodesTunnel -L 8081:<CC_K3S_SERVER_IP>:804.4
Argo CD30080k3s-serverTunnel -L 8080:<CC_K3S_SERVER_IP>:300804.4
Prometheus30090k3s-serverTunnel -L 9090:<CC_K3S_SERVER_IP>:300905.1
Alertmanager30093k3s-serverTunnel -L 9093:<CC_K3S_SERVER_IP>:300935.3
Grafana30300k3s-serverTunnel -L 3000:<CC_K3S_SERVER_IP>:303005.1
Sprachmodell und Triage-Dienstnach deiner Lösungk3snach deiner Lösung, etwa über einen Tunnel5.5

Einen Tunnel öffnest du im Terminal des Clients. Mehrere -L lassen sich in einer Verbindung kombinieren. Solange sie offen ist, erreichst du den Dienst im Browser des Clients unter http://localhost:<lokaler-port>/.

Terminal-Fenster
ssh -L 8080:<CC_K3S_SERVER_IP>:30080 -L 3000:<CC_K3S_SERVER_IP>:30300 mmuster-fe

Für Gitea nach der Härtung leitest du einen freien lokalen Port auf Port 3000 des Front-ends weiter, etwa mit -L 3001:localhost:3000. Den lokalen Port 3000 belegt schon Grafana.

Diese Dateien liegen im Home-Verzeichnis deines Benutzers auf dem Front-end. Nur du darfst sie lesen. Ihr Inhalt gehört weder in Git noch in einen Screencast oder in einen Chat mit einem KI-Assistenten.

DateiInhaltKapitel
~/cc-lab/oneadmin.passPasswort von oneadmin für Sunstone2.2
~/.one/one_authBenutzer und Passwort, mit denen sich die CLI von OpenNebula anmeldet2.2
~/cc-lab/tenants/Passwörter und Anmeldedateien der Gruppenadmins3.1
~/platform/tofu/terraform.tfstateState von OpenTofu mit geheimen Werten, nicht in Git4.1
~/.kube/configAdresse und Zertifikat für kubectl, volle Rechte auf den Cluster4.3
~/cc-lab/gitea/Passwort des Benutzers platform und die Tokens für Git und Argo CD4.4
~/.git-credentialsToken, mit dem Git ins Repo platform pusht4.4
~/cc-lab/grafana.passPasswort von admin in Grafana5.1
~/backup/k3s/Snapshots von etcd, das Token von k3s und der Schlüssel von Sealed Secrets6.2

Das Passwort von admin in Argo CD legt das Bootstrap-Skript in einer Datei ab.

Terminal-Fenster
cat ~/cc-lab/argocd-admin.pass

Weitere Ordner auf dem Front-end sind ~/cc mit dem Kursrepo, ~/platform mit deinem Plattform-Repo und ~/cc-reports mit den Berichten der Checks.

BefehlZweck
onehost list, onehost show <knoten>Zustand, Kapazität und Monitoring der Knoten
onehost flush <knoten>, onehost enable <knoten>Knoten leeren und wieder in Betrieb nehmen
onehost forceupdateMonitoring der Knoten sofort neu einlesen
onevm list, onevm show <vm>VMs mit Zustand, Knoten und Adresse
onetemplate instantiate ubuntu --name <name>VM aus der Vorlage starten
onevm terminate <vm>, onevm terminate --hard <vm>VM beenden und löschen
onevm migrate --live <vm> <knoten>VM im Betrieb auf einen anderen Knoten verschieben
onevm backup -d backups <vm>VM in den Backup-Datastore sichern
onebackupjob list, onebackupjob backup <job>Backup-Jobs anzeigen, ein Backup ausser der Reihe starten
oneimage list, oneimage restore -d default <backup-image>Images und Backups anzeigen, ein Backup wiederherstellen
onevnet show cc-netAdressbereich und Leases des internen Netzes
onegroup list, onegroup show <gruppe>Gruppen der Mitglieder mit Quota und Verbrauch
oneuser listBenutzer und ihre Gruppen
oneshowback calculate, oneshowback listKosten berechnen und anzeigen
oneflow list, oneflow show <dienst>Dienste von OneFlow mit Rollen und Kardinalität

Diese Befehle führst du im Ordner ~/platform/tofu aus, nachdem du OPENNEBULA_USERNAME und OPENNEBULA_PASSWORD wie in Kapitel 4.2 gesetzt hast.

BefehlZweck
tofu initProvider laden, in jeder neuen Kopie des Repos
tofu planÄnderungen und Drift anzeigen, ohne etwas zu tun
tofu applyCode umsetzen
tofu apply -replace='opennebula_virtual_machine.k3s["k3s-agent"]'eine VM neu bauen
tofu state list, tofu outputObjekte im State und Ausgaben anzeigen
BefehlZweck
kubectl get nodes -o wideNodes mit Zustand und Adresse
kubectl get pods -A -o widealle Pods mit Node
kubectl -n <ns> describe pod <pod>Ereignisse eines Pods, etwa ein Fehler beim Pull
kubectl -n <ns> get events --sort-by=.lastTimestampEreignisse eines Namespaces, etwa FailedCreate
kubectl -n <ns> logs <pod>Logs eines Pods, solange er existiert
kubectl -n <ns> rollout restart deployment <name>Pods eines Deployments neu starten
kubectl top nodes, kubectl top pods -Aaktueller Verbrauch an CPU und Speicher
kubectl -n <ns> get resourcequota,limitrange,networkpolicyRahmen eines Mitglieds
kubectl -n <ns> get hpaZustand des Autoscalers
ssh root@<CC_K3S_SERVER_IP> k3s etcd-snapshot lsSnapshots von etcd auf dem Server
BefehlZweck
kubectl -n argocd get applicationsalle Applications mit Sync und Health
kubectl -n argocd describe application <name>Meldungen einer Application, etwa ein Fehler beim Sync
git status, git log --onelineStand des Plattform-Repos in ~/platform
git add, git commit, git pushÄnderung nach Gitea bringen, Argo CD holt sie innert einer Minute
git revert <commit>einen Commit mit einem neuen Commit rückgängig machen
BefehlZweck
systemctl status <dienst>Zustand eines Dienstes, etwa opennebula, gitea oder cc-gateway
sudo systemctl restart <dienst>Dienst neu starten
journalctl -u <dienst> -n 50letzte Meldungen eines Dienstes
systemctl list-timersTimer wie cc-backup-k3s.timer mit nächstem Lauf
sudo nft list rulesetalle Tabellen von nftables, darunter cc_gateway und cc_firewall
BefehlZweck
python3 ~/cc/checks/check.py <name>Check eines Teils ausführen, etwa iaas, platform oder operations
python3 ~/cc/checks/check.py m1 bis m4Check eines Meilensteins mit deinen persönlichen Werten und zwei Fragen für die Vorführung, sein Bericht belegt zusammen mit den Screenshots die Basis, bei Meilenstein 1 mit den Berichten von start, install und iaas
ls ~/cc-reportsgespeicherte Berichte mit Hash

Texte und Abbildungen stehen unter CC BY-SA 4.0 und der Code unter der MIT-Lizenz. Die Quellen liegen auf GitHub.