Советы, чтобы использовать его как профессионал!
Куб… что?
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.
- Флаг
--kubeconfig
. - Переменная окружения
$KUBECONFIG
. - В противном случае используется
${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. Нам нужно установить пустую переменную $KUBECONFIG
environment и передать сервер, пользователя, ключ клиента и сертификат в качестве флагов.
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 намного проще и полезнее!