Ich habe Kubernetes, die in zwei verschiedenen Umgebungen gut funktionieren, nämlich in meiner lokalen Umgebung (MacBook mit Minikube) und in Googles Container Engine (GCE, Kubernetes in Google Cloud). Ich verwende das MacBook / die lokale Umgebung, um meine YAML-Dateien zu entwickeln und zu testen, und probiere sie nach Abschluss auf GCE aus.
Derzeit muss ich mit jeder Umgebung einzeln arbeiten: Ich muss die YAML-Dateien in meiner lokalen Umgebung bearbeiten und sie (git) in eine GCE-Umgebung klonen und sie dann verwenden / bereitstellen. Dies ist ein etwas umständlicher Prozess.
Idealerweise möchte ich kubectl von meinem Macbook verwenden, um einfach zwischen den lokalen Minikube- oder GCE Kubernetes-Umgebungen zu wechseln und einfach zu bestimmen, wo die YAML-Dateien verwendet werden. Gibt es eine einfache Möglichkeit, den Kontext zu wechseln, um dies zu tun?
quelle
grep 'name:' ~/.kube/config
tat es aber. Es warminikube
, so dass ich mit ihm wechseln konntekubectl config use-context minikube
Eine schnellere Verknüpfung zu den Standardbefehlen von kubectl ist die Verwendung von kubectx :
kubectx
kubectl config get-contexts
kubectx foo
kubectl config use-context foo
So installieren Sie unter macOS:
brew install kubectx
Das kubectx-Paket enthält auch ein ähnliches Tool zum Wechseln von Namespaces
kubens
.Diese beiden sind sehr praktisch, wenn Sie regelmäßig in mehreren Kontexten und Namespaces arbeiten.
Weitere Informationen: https://ahmet.im/blog/kubectx/
quelle
Wenn Sie nach einer GUI-basierten Lösung für Mac suchen und Docker Desktop installiert haben, können Sie das Symbol der Docker-Menüleiste verwenden. Hier finden Sie das Menü "Kubernetes" mit allen Kontexten, die Sie in Ihrer kubeconfig haben, und können einfach zwischen ihnen wechseln.
quelle
gcloud container clusters get-credentials $CLUSTER_NAME
dem Kommentar von Justin Thomas zur akzeptierten Antwort).TL; DR: Ich habe eine GUI erstellt, um Kubernetes-Kontexte über AppleScript zu wechseln. Ich aktiviere es über shift-cmd-x.
Ich hatte auch das gleiche Problem. Es war ein schmerzverändernder Kontext über die Kommandozeile. Ich habe FastScripts verwendet, um eine Tastenkombination (shift-cmd-x) festzulegen, mit der das folgende AppleScript ausgeführt werden soll (in diesem Verzeichnis abgelegt: $ (HOME) / Library / Scripts / Applications / Terminal).
quelle
Es wurde mir langweilig, dies immer und immer wieder zu tippen, also schrieb ich ein einfaches Bash-Dienstprogramm, um den Kontext zu wechseln
Sie finden es hier https://github.com/josefkorbel/kube-switch
quelle
Die neueste Antwort für 2020 ist hier,
Ein einfacher Weg, um zwischen kubectl Kontext zu wechseln,
Sie können den Kontextnamen auch als env wie context01name = gke _ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1 speichern
quelle
Das Klonen der YAML-Dateien über Repos für verschiedene Umgebungen ist auf jeden Fall ideal. Sie müssen Ihre YAML-Dateien mit Vorlagen versehen, indem Sie die Parameter extrahieren, die sich von Umgebung zu Umgebung unterscheiden.
Sie können natürlich eine Template-Engine verwenden und die Werte in einer YAML trennen und die YAML für eine bestimmte Umgebung erstellen. Aber das ist leicht machbar , wenn Sie die nehmen Helm Charts . Um einige Beispieldiagramme anzusehen, gehen Sie zu einem stabilen Verzeichnis in diesem Github-Repo
Um ein Beispiel für das Wordpress-Diagramm zu nennen , können Sie zwei verschiedene Befehle für zwei Umgebungen verwenden:
Für Entwickler:
helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress
Es ist jedoch nicht erforderlich, diese Werte an die CLI zu übergeben. Sie können die Werte in einer Datei mit dem Namen treffend speichern
values.yml
und möglicherweise unterschiedliche Dateien für unterschiedliche Umgebungen verwendenBei der Konvertierung in Helm-Diagrammstandards müssen Sie einige Arbeiten ausführen, aber der Aufwand lohnt sich.
quelle
Die kanonische Antwort des Umschaltens / Lesens / Manipulierens verschiedener Kubernetes-Umgebungen (auch bekannt als Kubernetes-Kontexte) lautet, wie Mark erwähnte, wie folgt
kubectl config
:Hinter den Kulissen befindet sich eine
~/.kube/config
YAML-Datei, in der alle verfügbaren Kontexte mit den entsprechenden Anmeldeinformationen und Endpunkten für jeden Kontext gespeichert sind.Kubectl von der Stange macht es nicht einfach, verschiedene Kubernetes-Kontexte zu verwalten, wie Sie wahrscheinlich bereits wissen. Anstatt ein eigenes Skript zu
kubectx
erstellen , um all das zu verwalten, ist es besser, ein ausgereiftes Tool namens "Ahmet Alp Balkan" zu verwenden , das von einem Entwickler von Kubernetes / Google Cloud Platform entwickelt wurde. Ich empfehle es sehr.https://github.com/ahmetb/kubectx
quelle
Überprüfen Sie auch den neuesten
docker context
Befehl (Docker 19.03) .Ajeet Singh Raina ) illustriert es in " Docker 19.03.0 Pre-Release: Schnelle Kontextumschaltung, Rootless Docker, Sysctl-Unterstützung für Swarm Services ".
Beispielsweise:
quelle
Falls Sie nach einer einfachen Möglichkeit suchen, zwischen verschiedenen Kontexten zu wechseln, ist dies möglicherweise hilfreich.
Ich habe inspiriert von
kubectx
undkswitch
Skripten bereits erwähnt, die ich für die meisten Anwendungsfälle empfehlen. Sie helfen bei der Lösung der Schaltaufgabe, brechen aber für mich bei einigen größeren oder weniger Standardkonfigurationen von~/.kube/config
. Also habe ich einen Sys-Exec-Aufruf-Wrapper und eine Kurzanleitung erstelltkubectl
.Wenn Sie k ohne Parameter aufrufen, wird eine abgefangene Eingabeaufforderung zum Wechseln des Kontexts angezeigt.
Darüber hinaus fungiert
k
weiterhin als Short-Hand. Folgendes ist äquivalent:quelle
Listen Sie Kontexte auf
Wechseln Sie den Kontext
quelle
Um den gesamten Kontext zu erhalten
Um den aktuellen Kontext zu erhalten
Kontext wechseln
quelle
Ja, ich denke, das ist es, worüber du fragst. Verwenden Sie die kubectl-Konfigurationsansicht, um Ihre aktuelle Konfiguration anzuzeigen. kubectl lädt und führt config von den folgenden Speicherorten zusammen (in der Reihenfolge)
Ich benutze --kubeconfig, da ich viel zwischen mehreren Clustern wechsle. Es ist etwas umständlich, aber es funktioniert gut.
Weitere Informationen finden Sie in diesen. https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/ und https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/
quelle