kubeconfig и контексты

Тема дорожной карты · Kubernetes

Конфигурация kubectl управляется через файл kubeconfig (по умолчанию ~/.kube/config), хранящий детали подключения к кластерам, учётные данные пользователей и именованные контексты, позволяя kubectl аутентифицироваться и взаимодействовать с несколькими кластерами Kubernetes с одной рабочей станции. Структура kubeconfig содержит три секции верхнего уровня: clusters (URL API-сервера и CA-сертификаты), users (учётные данные аутентификации: клиентские сертификаты, bearer-токены или OIDC-плагины exec) и contexts (именованные комбинации кластера, пользователя и пространства имён по умолчанию). Распространённые подкоманды kubectl config: kubectl config use-context <name> для переключения активного кластера, kubectl config get-contexts для вывода всех доступных контекстов, kubectl config set-context --current --namespace=<ns> для изменения пространства имён по умолчанию и kubectl config view --minify для просмотра активной конфигурации. Инструменты kubectx и kubens оборачивают эти команды более удобным UX для переключения между K8s-кластерами и пространствами имён, а kubelogin и другие exec-плагины учётных данных автоматизируют обновление OIDC-токенов для Kubernetes-сред с корпоративной SSO-аутентификацией.

Как это работает

kubeconfig и контексты — операция kubectl, которая общается с API-сервером Kubernetes. CLI читает ваш kubeconfig (по умолчанию ~/.kube/config), аутентифицирует (token, сертификат или OIDC), отправляет HTTPS-запрос API-серверу и печатает ответ. Для команд, изменяющих состояние (apply, patch, delete), API-сервер валидирует запрос, сохраняет в etcd и триггерит соответствующие контроллеры.

Когда применять

Используйте kubeconfig и контексты в ежедневных операциях кластера: инспектирование текущего состояния (kubectl get/describe), применение декларативных изменений (kubectl apply -f), отладка pods (kubectl logs/exec), валидация конфигов перед деплоем. Для повторяющихся workflow оборачивайте в shell-скрипты или Helm chart; для one-off отладки kubectl напрямую быстрее, чем писать инструменты.

Типичные ошибки

Распространённые ловушки kubectl: забыли -n <namespace> и инспектируете не тот namespace; используете kubectl edit на production-ресурсах (нет audit trail — используйте GitOps); копипаст из Stack Overflow без чтения, что удаляется. Всегда выполняйте kubectl config current-context перед деструктивными командами, чтобы убедиться, что указываете на правильный кластер.

Связанные понятия

Полезные ресурсы