Ansible Konfiguration für k3s-prod #
Aufgabe und Rolle #
Ansible ist hier für die Ebene unterhalb von Kubernetes zuständig: k3s auf
den Knoten installieren, die Basis-Manifeste anwenden, den Cluster geordnet
herunter- und wieder hochfahren. Alles, was danach im Cluster läuft, kommt
über ArgoCD aus dem Verzeichnis apps/.
Herkunft und Anpassung #
Die Grundlage ist die Collection
k3s-io/k3s-ansible, eingebunden über
requirements.yml im Wurzelverzeichnis. Die Playbooks hier rufen deren
k3s.orchestration.site auf und ergänzen, was darüber hinaus gebraucht wird.
Verzeichnisstruktur #
| Datei | Zweck |
|---|---|
inventory.yaml |
Knoten des Clusters, getrennt nach server und agent, samt k3s-Version und Cluster-Token |
deploy.yaml |
Installiert k3s und wendet anschließend apps/k3s per Kustomize an |
create_user.yaml |
Erzeugt einen Kubernetes-Benutzer samt eigener kubeconfig |
shutdown_cluster.yaml |
Fährt den Cluster geordnet herunter |
startup_cluster.yaml |
Fährt ihn wieder an |
shutdown-startup.md |
Warum die Reihenfolge wichtig ist, ausführlich |
Nutzung #
Beispiel: Cluster initialisieren/aktualisieren #
1ansible-playbook -i ansible/inventory.yaml ansible/deploy.yamldeploy.yaml macht zwei Dinge nacheinander: Es importiert das Playbook der
Collection, das k3s auf allen Knoten des Inventars installiert und verbindet,
und wendet danach apps/k3s an, die virtuelle IP des API-Servers. Die
Standard-StorageClass kommt nicht mehr von hier, sondern von Longhorn; das
k3s-Addon local-storage ist abgeschaltet, siehe apps/k3s/README.md.
Das Cluster-Token in inventory.yaml ist mit Ansible Vault verschlüsselt. Ohne
das Vault-Passwort läuft kein Playbook.
Nur k3s installieren, ohne den anschließenden Kustomize-Schritt — dafür lässt sich das Playbook der Collection auch direkt aufrufen:
1ansible-playbook k3s.orchestration.site -i ansible/inventory.yaml -u rootBenutzer anlegen #
1ansible-playbook ansible/create_user.yamlFragt Benutzer- und Gruppenname interaktiv ab und legt die fertige kubeconfig
unter user_configs/<name>/config ab.
Herunterfahren und Wiederanfahren #
1ansible-playbook -i ansible/inventory.yaml ansible/shutdown_cluster.yaml
2ansible-playbook -i ansible/inventory.yaml ansible/startup_cluster.yamlDie Reihenfolge ist nicht beliebig. Longhorn repliziert Volumes synchron über mehrere Knoten; werden die Knoten einfach abgeschaltet, können Volumes inkonsistent zurückbleiben. Zugleich muss ArgoCD ausgesetzt werden, damit es während der Wartung nicht selbständig alles wieder hochzieht.
Beides erledigen die Playbooks — die Begründung im Einzelnen steht in
shutdown-startup.md. Diesen Text vor dem ersten Einsatz
lesen.
Abhängigkeiten #
- Ansible in einer aktuellen stabilen Version, dazu ein passendes Python auf dem Controller
- Die Collections aus
requirements.ymlim Wurzelverzeichnis - Root-Zugang per SSH auf alle Knoten des Inventars. Den Schlüssel sinnvoll
über einen
ssh-agentbereitstellen, statt ihn je Aufruf anzugeben - Das Ansible-Vault-Passwort
kubectlundhelmauf dem Controller, für den Kustomize-Schritt
Weiterführende Dokumentation #
Einzelheiten zur k3s-Installation und zu den Playbooks der Collection stehen in der k3s-ansible-Dokumentation.
Per E-Mail antworten