Как настроить kubectl с информацией о кластере из файла .conf?

У меня есть файл admin.conf, содержащий информацию о кластере, так что следующая команда отлично работает:

kubectl --kubeconfig ./admin.conf get nodes

Как я могу config kubectl использовать кластер, пользователя и аутентификацию из этого файла по умолчанию в одной команде? Я вижу только отдельный набор-кластер, set-credentials, set-context, use-context и т.д. Я хочу получить тот же результат, когда я просто запускаю:

kubectl get nodes

Ответ 1

Вот официальная документация по настройке kubectl

http://kubernetes.io/docs/user-guide/kubeconfig-file/

У вас есть несколько вариантов, в частности на этот вопрос, вы можете просто скопировать admin.conf в ~/.kube/config

Ответ 2

Лучший способ, который я нашел, это использовать переменную окружения:

export KUBECONFIG=/path/to/admin.conf

Ответ 3

Я просто псевдоним команды kubectl на отдельные команды для моей разработки и продакшен среды через .bashrc

alias k8='kubectl'
alias k8prd='kubectl --kubeconfig ~/.kube/config_prd.conf'

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

Ответ 4

Я .kubeconfig все кластерные конфиги как .kubeconfig и это находится в каталоге проекта.

Затем в .bashrc или .bash_profile меня есть следующий экспорт:

export KUBECONFIG=.kubeconfig:$HOME/.kube/config

Таким образом, когда я нахожусь в каталоге проекта, kubectl загрузит локальный .kubeconfig. надеюсь, это поможет

Ответ 5

kubectl использует ~/.kube/config в качестве файла конфигурации по умолчанию. Таким образом, вы можете просто скопировать admin.conf поверх него.

Ответ 6

  Прежде чем ответы будут очень твердыми и информативными, я постараюсь добавить мои 2 цента здесь

Настройте файл kubeconfig, зная его приоритет

Если вы используете kubectl, вот предпочтение, которое вступает в силу при определении того, какой файл kubeconfig используется.

  1. используйте флаг --kubeconfig, если указан
  2. используйте переменную окружения KUBECONFIG, если указано
  3. использовать файл $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/