Ответ 1
Вот официальная документация по настройке kubectl
http://kubernetes.io/docs/user-guide/kubeconfig-file/
У вас есть несколько вариантов, в частности на этот вопрос, вы можете просто скопировать admin.conf
в ~/.kube/config
У меня есть файл admin.conf, содержащий информацию о кластере, так что следующая команда отлично работает:
kubectl --kubeconfig ./admin.conf get nodes
Как я могу config
kubectl использовать кластер, пользователя и аутентификацию из этого файла по умолчанию в одной команде? Я вижу только отдельный набор-кластер, set-credentials, set-context, use-context и т.д. Я хочу получить тот же результат, когда я просто запускаю:
kubectl get nodes
Вот официальная документация по настройке kubectl
http://kubernetes.io/docs/user-guide/kubeconfig-file/
У вас есть несколько вариантов, в частности на этот вопрос, вы можете просто скопировать admin.conf
в ~/.kube/config
Лучший способ, который я нашел, это использовать переменную окружения:
export KUBECONFIG=/path/to/admin.conf
Я просто псевдоним команды kubectl на отдельные команды для моей разработки и продакшен среды через .bashrc
alias k8='kubectl'
alias k8prd='kubectl --kubeconfig ~/.kube/config_prd.conf'
Я предпочитаю этот метод, так как он требует, чтобы я определял среду для каждой команды.. тогда как использование переменной среды потенциально может привести к выполнению команды в неправильной среде
Я .kubeconfig
все кластерные конфиги как .kubeconfig
и это находится в каталоге проекта.
Затем в .bashrc
или .bash_profile
меня есть следующий экспорт:
export KUBECONFIG=.kubeconfig:$HOME/.kube/config
Таким образом, когда я нахожусь в каталоге проекта, kubectl
загрузит локальный .kubeconfig
. надеюсь, это поможет
kubectl
использует ~/.kube/config
в качестве файла конфигурации по умолчанию. Таким образом, вы можете просто скопировать admin.conf
поверх него.
Прежде чем ответы будут очень твердыми и информативными, я постараюсь добавить мои 2 цента здесь
kubeconfig
, зная его приоритетЕсли вы используете kubectl
, вот предпочтение, которое вступает в силу при определении того, какой файл kubeconfig используется.
--kubeconfig
, если указанKUBECONFIG
, если указано$HOME/.kube/config
Благодаря этому вы можете легко переопределить файл kubeconfig, который вы используете, с помощью команды kubectl
:
#
# using --kubeconfig flag
#
kubectl get pods --kubeconfig=file1
kubectl get pods --kubeconfig=file2
#
# or
# using 'KUBECONFIG' environment variable
#
KUBECONFIG=file1 kubectl get pods
KUBECONFIG=file2 kubectl get pods
#
# or
# merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG= $HOME/.kube/config:file2:file3 kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2
ПРИМЕЧАНИЕ: Флаг --minify
позволяет нам извлекать только информацию об этом контексте, а флаг --flatten
позволяет нам сохранять учетные данные неотредактированными.
kubectl get pods --kubeconfig=/path/to/admin.conf
#
# or:
#
KUBECONFIG=/path/to/admin.conf kubectl get pods
#
# or:
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date)
KUBECONFIG= $HOME/.kube/config:/path/to/admin.conf kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2
Хотя этот список приоритетов официально не указан в документации, он здесь кодифицирован. Если вы разрабатываете клиентские инструменты для Kubernetes, вам следует рассмотреть возможность использования библиотеки cli-runtime, которая принесет в вашу программу стандартный флаг --kubeconfig
и обнаружение $KUBECONFIG
.
ссылка на статью: https://ahmet.im/blog/mastering-kubeconfig/