Kubectl Konfiguration

Das Tool kubectl wird für die direkte Kommunikation mit einer Kubernetes API benötigt.

Um mit der API kommunizieren zu können wird eine Konfigurationsdatei benötigt (KUBECONFIG) in der die Informationen zur API, wie die Adresse, Benutzer, Kennwort oder Zertifikate enthalten sind. Die Konfigurationdatei wird in der Regel in der Datei ~/.kube/config abgelegt. Alternativ kann die Umgebungsvariable KUBECONFIG gesetzt werden um eine alternative Konfigurationsdatei angeben zu können.

KUBECONFIG Dateien zusammenfassen

Statt mehrere Konfigurationsdateien zu führen ist es Sinnvoll die Konfigurationsdaten in eine Datei zusammen zu fassen.

Auf Grund des Formats können die Dateien nicht einfach zusammenkopiert werden. Die einzelnen Daten müssen in die jeweiligen Sektionen der Konfigurationdatei verteilt werden.

Mit dem folgenden Workflow ist es möglich dies teilweise zu automatisieren.

  • Erstellen einer Kopie der aktuellen Konfigurationsdatei (es wird von ~/.kube/config ausgegangen)
  • Setzen der Variable KUBECONFIG auf die kopierte Datei und die neue Datei (/tmp/kube_config). Weitere Dateien können durch Doppelpunkt getrennt angegeben werden
  • Ausgeben der Kopie und der zusätzlichen Datei, oder Dateien über kubectl in die Datei ~/.kube/config.
  • Löschen der temporären Dateien
  • Löschen der Variable KUBECONFIG
user@linux # cp ~/.kube/config ~/.kube/config_temp
user@linux # export KUBECONFIG="~/.kube/config_temp:/tmp/kube_config"
user@linux # kubectl config view --flatten >~/.kube/config
user@linux # rm ~/.kube/config_temp /tmp/kube_config
user@linux # unset KUBECONFIG

Auswählen des Context

Sobald die Konfigurationsdatei für kubectl mehr als einen Eintrag enthält, kann der Context in dem gearbeitet werden soll gewechselt werden.

Dies geschieht entweder durch das Festlegen eines Default Context:

user@linux # kubectl config use-context meincontext

Oder durch die Nutzung des Parameters --context bei kubectl oder anderen Befehlen wie z. B. flux, die dies unterstützen.

user@linux # kubectl get --context meincontext nodes

Über den Befehl kubectl config get-contexts lässt sich eine Liste der verfügbaren Umgebungen anzeigen.