Советы, чтобы использовать его как профессионал!

Куб… что?

Kubeconfig — это файл, используемый для настройки доступа к Kubernetes путем хранения информации о кластерах, пользователях и контекстах.

Он предоставляет пользователям возможность легко переключаться между различными кластерами и учетными записями и указывать учетные данные для аутентификации для доступа к Kubernetes API.

Обычно он используется в сочетании с инструментом командной строки kubectl, а также библиотеками и другими инструментами, которые взаимодействуют с API Kubernetes.

Типичный файл kubeconfig может иметь следующую структуру:

apiVersion: v1
kind: Config
preferences: {}

clusters:
- cluster:
    certificate-authority: /Users/test/.minikube/ca.crt
    server: https://127.0.0.1:62040
  name: minikube

contexts:
- context:
    cluster: minikube
    user: minikube
    namespace: default
  name: minikube
current-context: minikube

users:
- name: minikube
  user:
    client-certificate: /Users/test/.minikube/profiles/minikube/client.crt
    client-key: /Users/test/.minikube/profiles/minikube/client.key

Кластеры: в этом разделе перечислены все кластеры, к которым у вас есть доступ, каждый из которых содержит сведения об имени кластера, URL-адресе сервера API K8s и способе доступа к нему (в данном случае через центр сертификации). ).

Контексты. В этом разделе перечислены все контексты, которые можно использовать для указания, например, какого пользователя и кластер использовать для данной команды. Он поставляется с такой информацией, как имя кластера и контекста, пользователь и пространство имен.

Пользователи. в этом разделе перечислены все пользователи, которых вы можете использовать для аутентификации с помощью K8s API, предоставляя уникальное имя пользователя и учетные данные аутентификации, такие как учетные данные, сертификаты клиента, токены носителя или даже прокси-сервер.

Теперь, когда мы все знаем, что такое файл kubeconfig и из чего он состоит, давайте рассмотрим несколько полезных советов, как управлять им на профессиональном уровне!

Советы

1. Загрузка иерархии

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

  1. Флаг --kubeconfig.
  2. Переменная окружения $KUBECONFIG.
  3. В противном случае используется ${HOME}/.kube/config файл по умолчанию.
#1
kubectl get deployments --kubeconfig=custom_config
#2
KUBECONFIG=custom_config kubectl get deployments

2. Объедините несколько файлов kubeconfig

Представьте, что вам нужно работать с несколькими кластерами, и вы не хотите переключаться с одного файла kubeconfig на другой каждый раз, когда переключаете кластер. Чтобы избежать этого, вы можете загрузить несколько файлов для одновременного использования следующим образом:

KUBECONFIG=~/.kube/config:file2:file3 kubectl --context=minikube get pods

Обратите внимание на флаг --context, чтобы решить, в каком контексте kubeconfig мы выполняем запрос на получение модулей.

3. Объединение и извлечение нескольких файлов kubeconfig

В качестве альтернативы, чтобы подсказка № 2 и избежать поиска нескольких файлов на вашем диске, мы можем объединить все файлы в один, где у нас будут все наши контексты в одном месте.

KUBECONFIG=~/.kube/config:file2:file3 \
    kubectl config view --merge --flatten > config.yaml

И наоборот, вы можете извлечь данный контекст из файла kubeconfig в отдельный файл:

KUBECONFIG=config.yaml kubectl config view \
    --minify --context?minikube > minikube.yaml

4. Использование kubectl без файла конфигурации

Возможно, нам это никогда не понадобится и не захочется, но есть способ запустить kubectl без файла kubeconfig. Нам нужно установить пустую переменную $KUBECONFIGenvironment и передать сервер, пользователя, ключ клиента и сертификат в качестве флагов.

KUBECONFIG= kubectl --server=https://127.0.0.1:62040 \
    --user=minikube \
    --client-certificate=client.crt \
    --client-key=client.key

Интересные инструменты

Я работаю с несколькими инструментами, которые настоятельно рекомендую из-за простоты их использования при работе с несколькими кластерами:

  • kubectx: инструмент для простого переключения между контекстами на kubectl.
    Бонус: репозиторий также поставляется с инструментом kubens для переключения между пространствами имен Kubernetes.
  • kube-ps1: приглашение Kubernetes для bash и zsh, которое добавляет к вашему приглашению текущий контекст и пространство имен Kubernetes.

Спасибо за чтение! Я надеюсь, что эта статья сделает ваш опыт работы с файлами kubeconfig намного проще и полезнее!