Mam Kubernetes działającego dobrze w dwóch różnych środowiskach, a mianowicie w moim środowisku lokalnym (MacBook z minikube) oraz w Google Container Engine (GCE, Kubernetes on Google Cloud). Używam MacBooka / środowiska lokalnego do tworzenia i testowania moich plików YAML, a po zakończeniu wypróbuj je na GCE.
Obecnie muszę pracować z każdym środowiskiem indywidualnie: muszę edytować pliki YAML w moim środowisku lokalnym i, gdy będą gotowe, (git) sklonować je do środowiska GCE, a następnie użyć / wdrożyć. Jest to nieco uciążliwy proces.
Idealnie chciałbym użyć kubectl z mojego Macbooka, aby łatwo przełączać się między lokalnymi środowiskami minikube lub GCE Kubernetes i łatwo określić, gdzie są używane pliki YAML. Czy istnieje prosty sposób zmiany kontekstów, aby to zrobić?
źródło
grep 'name:' ~/.kube/config
tak. Byłominikube
, więc mogłem wrócić do tego zkubectl config use-context minikube
Szybszym skrótem do standardowych poleceń kubectl jest użycie kubectx :
kubectx
kubectl config get-contexts
kubectx foo
kubectl config use-context foo
Aby zainstalować w systemie macOS:
brew install kubectx
Pakiet kubectx zawiera również podobne narzędzie do przełączania przestrzeni nazw o nazwie
kubens
.Te dwa są bardzo wygodne, jeśli regularnie pracujesz w wielu kontekstach i przestrzeniach nazw.
Więcej informacji: https://ahmet.im/blog/kubectx/
źródło
Jeśli szukasz rozwiązania opartego na graficznym interfejsie użytkownika dla komputerów Mac i masz zainstalowany Docker Desktop, możesz użyć ikony paska menu Docker. Tutaj możesz znaleźć menu „Kubernetes” ze wszystkimi kontekstami, które masz w swoim kubeconfig i łatwo przełączać się między nimi.
źródło
gcloud container clusters get-credentials $CLUSTER_NAME
komentarzem Justina Thomasa do zaakceptowanej odpowiedzi).Najnowsza odpowiedź na rok 2020 jest tutaj,
Prosty sposób na przełączanie się między kontekstem kubectl,
Możesz również zapisać nazwę kontekstu jako env, na przykład context01name = gke _ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1
źródło
TL; DR: stworzyłem GUI do przełączania kontekstów Kubernetes przez AppleScript. Aktywuję go przez shift-cmd-x.
Ja też miałem ten sam problem. To był problem przełączania kontekstów przez wiersz poleceń. Użyłem FastScripts do ustawienia kombinacji klawiszy (shift-cmd-x) do uruchomienia następującego AppleScript (umieszczonego w tym katalogu: $ (HOME) / Library / Scripts / Applications / Terminal).
źródło
Znudziło mi się pisanie tego w kółko, więc napisałem proste narzędzie bash do przełączania kontekstów
Możesz go znaleźć tutaj https://github.com/josefkorbel/kube-switch
źródło
Klonowanie plików YAML w repozytoriach dla różnych środowisk jest zdecydowanie idealne. To, co musisz zrobić, to utworzyć szablony plików YAML - poprzez wyodrębnienie parametrów, które różnią się w zależności od środowiska.
Możesz oczywiście użyć jakiegoś silnika szablonów i oddzielić wartości w YAML i stworzyć YAML dla określonego środowiska. Ale jest to łatwe do wykonania, jeśli zastosujesz wykresy sterowe . Aby rzucić okiem na przykładowe wykresy, przejdź do katalogu stabilnego w tym repozytorium Github
Aby wziąć przykład wykresu Wordpress , możesz mieć dwa różne polecenia dla dwóch środowisk:
Dla programistów:
helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress
Nie jest jednak konieczne przekazywanie tych wartości do CLI, możesz przechowywać wartości w pliku o nazwie aptly
values.yml
i możesz mieć różne pliki dla różnych środowiskBędziesz potrzebować trochę pracy przy konwersji do standardów wykresów Helm, ale wysiłek będzie tego wart.
źródło
Kanoniczną odpowiedzią na przełączanie / odczytywanie / manipulowanie różnymi środowiskami kubernetes (zwanymi też kontekstami kubernetes) jest, jak wspomniał Mark, użycie
kubectl config
, patrz poniżej:Za kulisami znajduje się
~/.kube/config
plik YAML, który przechowuje wszystkie dostępne konteksty z odpowiadającymi im poświadczeniami i punktami końcowymi dla każdego kontekstu.Gotowy Kubectl nie ułatwia zarządzania różnymi kontekstami kubernetes, jak prawdopodobnie już wiesz. Zamiast
kubectx
tworzyć własny skrypt, aby zarządzać tym wszystkim, lepszym podejściem jest użycie dojrzałego narzędzia o nazwie „Ahmet Alp Balkan”, który jest członkiem zespołu ds. Doświadczeń deweloperów Kubernetes / Google Cloud Platform, który tworzy takie narzędzia. Gorąco polecam.https://github.com/ahmetb/kubectx
źródło
Sprawdź też ostatnią (19.03 Döcker)
docker context
polecenia .Ajeet Singh Raina ) ilustruje to w „ Docker 19.03.0 Pre-Release: Fast Context Switching, Rootless Docker, Sysctl support for Swarm Services ”
Na przykład:
źródło
Jeśli szukasz prostego sposobu na przełączanie się między różnymi kontekstami, może to być pomocne.
Zostałem zainspirowany
kubectx
ikswitch
skrypty już wspomniano, które mogę polecić dla większości przypadków użycia. Pomagają w rozwiązaniu zadania przełączania, ale psują mi się w niektórych większych lub mniej standardowych konfiguracjach~/.kube/config
. Utworzyłem więc opakowanie wywołania sys-exec i krótką dłońkubectl
.Jeśli wywołasz k bez parametrów, zobaczysz przechwycony monit o przełączenie kontekstu.
Ponadto
k
nadal działa jako short-hand. Poniższe jest równoważne:źródło
Lista kontekstów
Przełącz konteksty
źródło
Aby uzyskać pełny kontekst
Aby uzyskać aktualny kontekst
Aby zmienić kontekst
źródło
tak, myślę, że o to pytasz. Aby wyświetlić bieżącą konfigurację, użyj widoku konfiguracji kubectl. kubectl ładuje i łączy konfigurację z następujących lokalizacji (w kolejności)
używam --kubeconfig, ponieważ często przełączam się między wieloma klastrami. jest nieco uciążliwy, ale działa dobrze.
zobacz je, aby uzyskać więcej informacji. https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/ i https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/
źródło