Как переключить кластеры kubectl между gcloud и minikube

У меня есть Kubernetes хорошо работает в двух разных средах, а именно в моей локальной среде (MacBook работает minikube), а также на контейнерном движке Google (GCE, Kubernetes в Google Cloud). Я использую среду MacBook / local для разработки и тестирования файлов YAML, а затем, по завершении, примеряю их на GCE.

В настоящее время мне нужно работать с каждой средой индивидуально: мне нужно отредактировать файлы YAML в моей локальной среде и, когда я буду готов, (git) клонировать их среда GCE, а затем использовать / развернуть их. Это довольно трудоемкий процесс.

В идеале я хотел бы использовать kubectl с моего Macbook, чтобы легко переключаться между локальными средами minikube или GCE Kubernetes и легко определять, где используются файлы YAML. Есть ли простой способ переключить контексты для этого?

4 ответов


вы можете переключиться с локального (minikube) на gcloud и обратно с помощью:

kubectl config use-context CONTEXT_NAME

чтобы перечислить все cotexts:

kubectl config get-contexts

вы можете создавать различные среды для локальных и gcloud и помещать их в отдельные файлы yaml.


клонирование файлов YAML в репозиториях для разных сред определенно идеально. То, что вам нужно сделать, это шаблонизировать ваши файлы YAML - путем извлечения параметров, которые отличаются от среды к среде.

вы можете, конечно, использовать некоторый механизм шаблонов и отделить значения в YAML и создать YAML для конкретной среды. Но это легко выполнимо, если вы примите Хелм Графика. Чтобы взглянуть на некоторые примеры диаграмм перейдите на стабильный каталог это GitHub РЕПО

чтобы взять пример Wordpress chart, вы можете иметь две разные команды для двух сред:

Для Dev:

helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress

нет необходимости передавать эти значения на CLI, хотя вы можете хранить значения в файле с именем aptly values.yml и у вас могут быть разные файлы для разных сред

вам понадобится некоторая работа по преобразованию в стандарты рулевой диаграммы, но усилия того стоят.


TL; DR: я создал GUI для переключения контекстов Kubernetes через AppleScript. Я активирую его через shift-cmd-x.

У меня тоже была такая же проблема. Это была боль переключения контекстов с помощью командной строки. Я использовал FastScripts для установки комбинации клавиш (shift-cmd-x) для запуска следующего AppleScript (помещенного в этот каталог: $(HOME)/Library/Scripts/Applications/Terminal).

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

do shell script "/usr/local/bin/kubectl config current-context"
set curcontext to result

do shell script "/usr/local/bin/kubectl config get-contexts -o name"
set contexts to paragraphs of result

choose from list contexts with prompt "Select Context:" with title "K8s Context Selector" default items {curcontext}
set scriptArguments to item 1 of result

do shell script "/usr/local/bin/kubectl config use-context " & scriptArguments

display dialog "Switched to " & scriptArguments buttons {"ok"} default button 1

да, я думаю, что это то, о чем вы спрашиваете. Чтобы просмотреть текущую конфигурацию, используйте kubectl config view. kubectl загружает и объединяет конфигурацию из следующих местоположений (по порядку)

--kubeconfig=/path/to/.kube/config command line flag
KUBECONFIG=/path/to/.kube/config env variable
$HOME/.kube/config  - The DEFAULT

Я использую --kubeconfig, так как я переключаюсь между несколькими кластерами. это немного громоздко, но работает хорошо.

ознакомиться с этим подробнее. https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/ и https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/