У меня Kubernetes хорошо работает в двух различных средах, а именно в местной среде (MacBook работает minikube), а также на Google'контейнер с двигателем (ГЦЭ, Kubernetes в облачном сервисе Google). Я использую Макбук/локальную среду для разработки и тестирования мои файлы YAML и потом, по завершению, попробовать их на ГККП.
В настоящее время мне нужно работать с каждой среды в отдельности: мне нужно редактировать файлы YAML в моей локальной среде и, когда готово, (ЖКТ) клонировать их в среде ГККП, а затем использовать/внедрять их. Это довольно трудоемкий процесс.
В идеале, я хотел бы использовать kubectl от моего MacBook легко переключаться между локальным minikube или сред Kubernetes ГККП и легко определить, где используется YAML файлы находятся. Есть простой способ для переключения контекстов для этого?
Вы можете переключиться из местных (minikube) в gcloud и обратно с:
kubectl конфиг использовать контекстный принадлежащему context_name
список всех контекстах:
kubectl конфиг сделать-контекстах
Вы можете создавать различные среды для местных и gcloud и положил его в отдельные файлы YAML.
Если вы'вновь глядя на графические решения для Mac и установили окна настройки рабочего стола, вы можете использовать значок Меню Настройки. Здесь вы можете найти и"Kubernetes и" меню с всех контекстах у вас в kubeconfig и легко переключаться между ними.
Быстрее быстрого доступа к стандартным командам kubectl использовать kubectx:
kubectx
kubectl конфиг сделать-контекстах
kubectx фу
kubectl конфиг использовать контекстный фу
Установить на macOS: самогон установите kubectx
Пакет kubectx также включает в себя инструмент для переключения пространства имен kubens
.
Эти два супер удобно, если вы работаете в нескольких контекстах и пространствах имен регулярно.
Подробнее: https://ahmet.im/blog/kubectx/
ТЛ;ДР: я создал GUI для переключения контекстов Kubernetes через помощью AppleScript. Я активировать его через шифт-КМД-х.
У меня тоже была такая же проблема. Это была боль переключение контекста командной строке. Я FastScripts установить ключ комбинированный (шифт-КМД-х) выполнить следующие помощью AppleScript (размещен в этом каталоге: $(дома)/библиотеки/Скрипты/программы/терминал).
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
Копирую файлы YAML через РЕПО для различных сред определенно идеально. Что вам нужно сделать, это templatize ваши файлы YAML - путем извлечения параметров, которые отличаются от среды к среде.
Вы можете, конечно, использовать некоторые шаблонизатора и отдельных значений в YAML и производят и YAML для конкретных условий. Но это легко выполнимо, если вы принять Хелм графика. Чтобы взглянуть на некоторые примеры диаграмм перейдите на стабильный каталог в этом GitHub РЕПО
Брать пример из график Вордпресс, можно иметь две различных команды для двух сред:
Для Дев:
штурвал установить-имя разработчика-релиз-набор \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ версию MariaDB.mariadbRootPassword=\dev_secretpassword стабильный/вордпресс
Не надо передавать эти значения, хотя в CLI, вы можете сохранять значения в файл значений метко`.в формате YML
и вы можете получать различные файлы для разных сред
Вам понадобятся некоторые работы в процессе перехода к стандартам руля графике, но усилия будут того стоить.
Проверьте также последний (докер 19.03) команда докер контексте
.
Аджит Сингх Райна ) показывает, что в " на"Докер 19.03.0 пре-релиз: быстрое переключение контекста, Безродные настройки команды sysctl поддержка для служб Рой;
В контексте это по сути настройки, которые вы используете для доступа к определенному кластеру.
говорят, например, в моем конкретном случае, у меня есть 4 разных кластеров – смесь Роя и Kubernetes работает локально и удаленно. Предположим, что у меня по умолчанию кластер работает на моем компьютере , 2 рой узел кластера работает на Google облачная платформа, 5-узел кластера, работающих на играть с докер, площадка и на одном узле кластера под управлением Kubernetes на Minikube и что мне нужно получить доступ к довольно регулярно.
используя докер контексте командной строки я могу легко переключаться из одного кластера(который мог бы быть моим кластерного развития) для проверки на соответствие производственного кластера в секундах.
$ sudo docker context --help
Usage: docker context COMMAND
Manage contexts
Commands:
create Create a context
export Export a context to a tar or kubeconfig file
import Import a context from a tar file
inspect Display detailed information on one or more contexts
ls List contexts
rm Remove one or more contexts
update Update a context
use Set the current docker context
Run 'docker context COMMAND --help' for more information on a command.
Например:
[: капитан)'sBay=>судо докер контексте ЛС НАЗВАНИЕ ОПИСАНИЕ НАСТРОЙКИ КОНЕЧНОЙ ТОЧКИ KUBERNETES КОНЕЧНОЙ ТОЧКИ ОРКЕСТРАТОР по умолчанию * текущая DOCKER_HOST на основе конфигурации Unix:///ВАР/работа/докер.носок https://127.0.0.1:16443 (по умолчанию) Рой Рой-context1
В случае, если вы ищете простой способ переключения между различными контекстами, возможно, это будет помощь.
Я воодушевился kubectx
и kswitch
скрипты уже упоминалось, который я могу рекомендовать для большинства случаев использования. Они помогают с решением задач коммутации, но голосуют за меня на некоторых больше или меньше стандартных конфигураций ~/.Кубе/конфигурации
. Так я создала систему старпома фантик вызов и короткие руки вокруг kubectl
.
Если вы называете к без параметров, вы увидите перехваченный запрос на переключение контекста.
Switch kubectl to a different context/cluster/namespace.
Found following options to select from:
>>> context: [1] franz
>>> context: [2] gke_foo_us-central1-a_live-v1
>>> context: [3] minikube
--> new num [?/q]:
Далее, " к " продолжает выступать в качестве коротких рук. Следующий эквивалент:
kubectl get pods --all-namespaces
k get pods -A
k p -A
Мне надоело печатать это снова и снова, поэтому я написал простой Баш утилита для переключения контекстов
Вы можете найти его здесь https://github.com/josefkorbel/kube-switch
Канонический ответ коммутации/значение/манипулирование различных средах kubernetes (kubernetes ака контекстов) является, как уже упоминалось Марком, чтобы использовать kubectl конфигурации
, см. ниже:
$ kubectl config
Modify kubeconfig files using subcommands like "kubectl config set current-context my-context"
Available Commands:
current-context Displays the current-context
delete-cluster Delete the specified cluster from the kubeconfig
delete-context Delete the specified context from the kubeconfig
get-clusters Display clusters defined in the kubeconfig
get-contexts Describe one or many contexts
rename-context Renames a context from the kubeconfig file.
set Sets an individual value in a kubeconfig file
set-cluster Sets a cluster entry in kubeconfig
set-context Sets a context entry in kubeconfig
set-credentials Sets a user entry in kubeconfig
unset Unsets an individual value in a kubeconfig file
use-context Sets the current-context in a kubeconfig file
view Display merged kubeconfig settings or a specified kubeconfig file
Usage:
kubectl config SUBCOMMAND [options]
За сценой, есть ~/.файл Кубе/конфиг
и YAML, который хранит все доступные контексты и соответствующие им учетные данные и конечные точки для каждого контекста.
Kubectl с полки не'т сделать это легко управлять различных контекстах kubernetes, как вы, наверное, уже знаете. Вместо прокатки свой собственный скрипт для управления все, что для этого лучше использовать зрелый инструмент под названием kubectx
, создана Google-ром по кличке "Ахмет Альп Балкан", который's на Kubernetes и Google облачная платформа для разработчиков опыт команды, которая строит Tooling как этот. Я очень рекомендую его.
https://github.com/ahmetb/kubectx
$ kctx --help
USAGE:
kubectx : list the contexts
kubectx <NAME> : switch to context <NAME>
kubectx - : switch to the previous context
kubectx <NEW_NAME>=<NAME> : rename context <NAME> to <NEW_NAME>
kubectx <NEW_NAME>=. : rename current-context to <NEW_NAME>
kubectx -d <NAME> [<NAME...>] : delete context <NAME> ('.' for current-context)
(this command won't delete the user/cluster entry
that is used by the context)
kubectx -h,--help : show this message
да, я думаю, это то, что вы просите об этом. Для просмотра текущей конфигурации, использованию kubectl конфиг посмотреть. 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/