Быстрый старт
Этот документ поможет вам быстро понять, как создать kubernetes-коннектор для подключения к кластеру Kubernetes и безопасного выполнения операций kubectl без прямой работы с учетными данными.
Содержание
Оценочное время чтенияТребованияОбзор процессаШаги выполненияШаг 1: Генерация токена ServiceAccountШаг 2: Создание NamespaceШаг 3: Создание учетных данных K8S и коннектораШаг 4: Создание Job для выполнения операций KubectlШаг 5: Проверка работыЧто происходит под капотомОсновные наблюденияПоля конфигурации проксиПоток аутентификацииТочка монтирования kubeconfigУстранение неполадокДополнительное чтениеReferencesОценочное время чтения
15 минут
Требования
- Кластер Kubernetes с установленной системой Connectors (Operator, Core и компоненты K8S). Подробности об установке этих компонентов см. в Installation Guide.
- Адрес apiserver кластера Kubernetes и токен bearer с разрешением на просмотр списка pod в Kubernetes.
- Базовые знания Kubernetes.
Обзор процесса
Шаги выполнения
Шаг 1: Генерация токена ServiceAccount
Сгенерируйте токен ServiceAccount для k8s-коннектора для выполнения операций.
- Создайте ServiceAccount и свяжите с ним clusterrole, который должен иметь необходимые разрешения, соответствующие вашим сценариям использования для k8s-коннектора. Следуйте руководству по Creating a ServiceAccount and binding a clusterrole.
- Сгенерируйте токен ServiceAccount для k8s-коннектора. Следуйте руководству по ServiceAccount tokens.
Шаг 2: Создание Namespace
Создайте выделенный namespace для этой демонстрации:
Шаг 3: Создание учетных данных K8S и коннектора
Создайте Secret с учетными данными k8s и ресурс kubernetes connector. Для более подробной информации о создании и настройке коннекторов обратитесь к Connectors Quick Start Guide.
Проверьте, что коннектор находится в статусе "Ready":
Вывод должен быть следующим:
Шаг 4: Создание Job для выполнения операций Kubectl
Создайте job, которая использует коннектор для выполнения операций в k8s:
Ключевые параметры в volumeAttributes:
connector.name: имя вашего kubernetes-коннектораconfiguration.names: установлено в "kubeconfig", что ссылается на конкретный шаблон конфигурации, определённый в kubernetes connectorClass. Этот шаблон используется для генерации файла ".kubeconfig" с соответствующими настройками аутентификации.
Шаг 5: Проверка работы
Проверьте логи job, чтобы убедиться, что операции kubectl выполнены успешно:
Вы должны увидеть успешное выполнение операций kubectl и список всех pod в кластере без какой-либо секретной конфигурации в job.
Что происходит под капотом
kubernetes-коннектор работает следующим образом:
- Создаёт прокси-сервис, который находится между вашими рабочими нагрузками и целевым кластером k8s
- Внедряет информацию об аутентификации при прохождении запросов через прокси
- Предоставляет файлы
kubeconfigдля клиента, чтобы выполнять операции kubectl через прокси
Для демонстрации этого механизма давайте посмотрим сгенерированный файл kubeconfig:
Просмотрите сгенерированный файл kubeconfig:
Пример вывода:
Основные наблюдения
- Поле
serverсовпадает с адресом Kubernetes API сервера, указанным в Connector - Дополнительные поля, связанные с прокси, обеспечивают аутентификацию через прокси, такие как
cluster.proxy-urlиcluster.certificate-authority-data. - Файл
kubeconfigне содержит оригинальных bearer токенов и монтируется в Pod через Connectors CSI Driver.
Поля конфигурации прокси
-
cluster.proxy-url: адрес прокси-коннектора из поляstatus.proxy.httpAddressв коннекторе с именемk8s-connector:Вывод должен быть следующим:
cluster.proxy-urlсодержит информацию для аутентификации через прокси:- username: формат
<connector-namespace>/<connector-name>, namespace и имя коннектора - password: временный токен ServiceAccount, автоматически сгенерированный коннектором (истекает через 30 минут) (не оригинальный токен кластера k8s)
- username: формат
-
cluster.certificate-authority-data: данные сертификата CA для проверки TLS прокси-сервера, клиент должен доверять сертификату прокси-сервера.
Поток аутентификации
Pod inspect-k8s-access не содержит оригинальных токенов кластера. Когда kubectl выполняет HTTPS-запросы к Kubernetes API серверу, прокси-сервер перехватывает эти запросы, внедряет учетные данные аутентификации из k8s-connector и перенаправляет аутентифицированные запросы на backend API сервер.
Точка монтирования kubeconfig
Файл kubeconfig монтируется в Pod через Connectors CSI Driver.
Параметры томов см. в разделе Using Connectors CSI Driver to mount kubeconfig file документации Kubernetes Connector Concepts.
Устранение неполадок
Если операция kubectl не удалась, проверьте следующее:
-
Статус коннектора: убедитесь, что коннектор находится в состоянии "Ready":
-
Проверьте статус развертывания коннекторов: убедитесь, что все компоненты развернуты и находятся в состоянии "Ready"
Дополнительное чтение
После успешного выполнения операций kubectl с использованием kubernetes-коннектора вы можете:
- Изменить команду kubectl на нужную вам, например
kubectl create,kubectl apply - Узнать больше о Concepts of Kubernetes Connectors
- Using Kubernetes Connectors in CI/CD pipelines