У меня Kubernetes хорошо работает в двух разных средах, а именно в моей локальной среде (MacBook с minikube) и в Google Container Engine (GCE, Kubernetes в Google Cloud). Я использую MacBook / локальную среду для разработки и тестирования файлов YAML, а затем, по завершении, пробую их на GCE.
В настоящее время мне нужно работать с каждой средой индивидуально: мне нужно отредактировать файлы YAML в моей локальной среде и, когда все будет готово, (git) клонировать их в среду GCE, а затем использовать / развернуть их. Это несколько громоздкий процесс.
В идеале я хотел бы использовать kubectl со своего Macbook, чтобы легко переключаться между локальной средой minikube или GCE Kubernetes и легко определять, где используются файлы YAML. Есть ли простой способ для этого переключить контекст?
источник
grep 'name:' ~/.kube/config
. Это былоminikube
так, чтобы я мог вернуться к нему сkubectl config use-context minikube
Более быстрый ярлык для стандартных команд kubectl - использовать kubectx :
kubectx
kubectl config get-contexts
kubectx foo
kubectl config use-context foo
Для установки на macOS:
brew install kubectx
Пакет kubectx также включает аналогичный инструмент для переключения пространств имен под названием
kubens
.Эти два очень удобны, если вы регулярно работаете в нескольких контекстах и пространствах имен.
Подробнее: https://ahmet.im/blog/kubectx/
источник
Если вы ищете решение на основе графического интерфейса для Mac и у вас установлен Docker Desktop, вы можете использовать значок панели меню Docker. Здесь вы можете найти меню «Kubernetes» со всеми контекстами, которые есть в вашем kubeconfig, и легко переключаться между ними.
источник
gcloud container clusters get-credentials $CLUSTER_NAME
комментарием Джастина Томаса к принятому ответу).Последний ответ 2020 года здесь,
Простой способ переключаться между контекстом kubectl,
Вы также можете сохранить имя контекста как env, например context01name = gke _ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1
источник
TL; DR: Я создал графический интерфейс для переключения контекстов Kubernetes через AppleScript. Активирую через shift-cmd-x.
У меня тоже была такая же проблема. Командной строкой было нелегко переключать контексты. Я использовал FastScripts, чтобы установить комбинацию клавиш (shift-cmd-x) для запуска следующего AppleScript (помещенного в этот каталог: $ (HOME) / Library / Scripts / Applications / Terminal).
источник
Мне надоело набирать это снова и снова, поэтому я написал простую утилиту bash для переключения контекстов.
Вы можете найти его здесь https://github.com/josefkorbel/kube-switch
источник
Клонирование файлов YAML в репозиториях для разных сред определенно идеально. Что вам нужно сделать, так это создать шаблоны ваших файлов YAML, извлекая параметры, которые различаются от среды к среде.
Конечно, вы можете использовать какой-нибудь механизм шаблонов и разделить значения в YAML и создать YAML для определенной среды. Но это легко сделать, если вы воспользуетесь Helm Charts . Чтобы взглянуть на некоторые образцы диаграмм, перейдите в стабильный каталог в этом репозитории Github.
Чтобы взять пример диаграммы Wordpress , у вас могут быть две разные команды для двух сред:
Для разработчиков:
helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress
Однако нет необходимости передавать эти значения в CLI, вы можете сохранить значения в файле с именем aptly,
values.yml
и у вас могут быть разные файлы для разных сред.Вам потребуется некоторая работа по преобразованию в стандарты диаграмм Helm, но усилия того стоят.
источник
Канонический ответ переключения / чтения / управления различными средами кубернетов (также известными как контексты кубернетов), как упомянул Марк, следует использовать
kubectl config
, см. Ниже:За сценой стоит
~/.kube/config
файл YAML, в котором хранятся все доступные контексты с соответствующими учетными данными и конечными точками для каждого контекста.Готовый Kubectl не позволяет легко управлять различными контекстами Kubernetes, как вы, вероятно, уже знаете. Вместо того, чтобы использовать собственный скрипт для управления всем этим, лучший подход - использовать зрелый инструмент под названием
kubectx
, созданный гуглером по имени Ахмет Альп Балкан, который находится в команде разработчиков Kubernetes / Google Cloud Platform, которая создает подобные инструменты. Я очень рекомендую это.https://github.com/ahmetb/kubectx
источник
Проверьте также последнюю (докер 19.03)
docker context
команды .Ajeet Singh Raina ) иллюстрирует это в статье «Предварительная версия Docker 19.03.0: быстрое переключение контекста, Docker без рута, поддержка Sysctl для служб Swarm »
Например:
источник
Если вы ищете простой способ переключения между различными контекстами, возможно, это поможет.
Я был вдохновлен
kubectx
иkswitch
скрипты уже упоминались, которые я могу рекомендовать для большинства сценариев использования. Они помогают с решением задачи переключения, но ломаются для меня на некоторых более крупных или менее стандартных конфигурациях~/.kube/config
. Итак, я создал оболочку вызова sys-exec и сокращенную версиюkubectl
.Если вы вызовете k без параметров, вы увидите перехваченную подсказку для переключения контекста.
Далее
k
продолжает действовать как короткометражка. Следующее эквивалентно:источник
Список контекстов
Сменить контексты
источник
Чтобы получить весь контекст
Чтобы получить текущий контекст
Чтобы переключить контекст
источник
да, я думаю, это то, о чем вы спрашиваете. Чтобы просмотреть текущую конфигурацию, используйте представление конфигурации kubectl. kubectl загружает и объединяет конфигурацию из следующих мест (по порядку)
Я использую --kubeconfig, поскольку много переключаюсь между несколькими кластерами. это немного громоздко, но работает хорошо.
см. их для получения дополнительной информации. https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/ и https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/
источник