Быстрый старт
Этот документ поможет вам быстро понять, как создать kubernetes connector для подключения к кластеру Kubernetes и безопасного выполнения операций kubectl без прямой работы с учетными данными.
Содержание
Оценочное время чтенияТребованияОбзор процессаПошаговые действияШаг 1: Создать NamespaceШаг 2: Создать K8S учетные данные и ConnectorШаг 3: Создать Job для выполнения операций KubectlШаг 4: Проверить выполнениеЧто происходит под капотомОсновные наблюденияПоля конфигурации проксиПоток аутентификацииТочка монтирования kubeconfigУстранение неполадокДополнительные материалыReferencesОценочное время чтения
15 минут
Требования
- Кластер Kubernetes с установленной системой Connectors (Operator, Core и компоненты K8S). Подробности об установке этих компонентов смотрите в Installation Guide.
- Адрес apiserver кластера Kubernetes и bearer token с разрешением на просмотр списка pod в Kubernetes
- Базовые знания Kubernetes
Обзор процесса
Пошаговые действия
Шаг 1: Создать Namespace
Создайте выделенный namespace для этой демонстрации:
Шаг 2: Создать K8S учетные данные и Connector
Создайте Secret с учетными данными k8s и ресурс kubernetes connector. Более подробную информацию о создании и настройке connectors смотрите в Connectors Quick Start Guide.
Проверьте, что connector находится в статусе "Ready":
Вывод должен быть следующим:
Шаг 3: Создать Job для выполнения операций Kubectl
Создайте job, который использует connector для выполнения операций k8s:
Ключевые параметры в volumeAttributes:
connector.name: имя вашего kubernetes connectorconfiguration.names: установлено в "kubeconfig", ссылается на конкретный шаблон конфигурации, определённый в kubernetes connectorClass. Этот шаблон используется для генерации файла ".kubeconfig" с соответствующими настройками аутентификации.
Шаг 4: Проверить выполнение
Проверьте логи job, чтобы убедиться, что операции kubectl выполнены успешно:
Вы должны увидеть успешное выполнение операций kubectl и список всех pod в кластере без какой-либо секретной конфигурации в job.
Что происходит под капотом
Kubernetes connector работает следующим образом:
- Создаёт прокси-сервис, который находится между вашими рабочими нагрузками и целевым 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в connector с именем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 не удалась, проверьте следующее:
-
Статус Connector: убедитесь, что connector в состоянии "Ready":
-
Проверьте статус развертывания connectors: убедитесь, что все компоненты развернуты и находятся в состоянии "Ready"
Дополнительные материалы
После успешного выполнения операций kubectl с помощью kubernetes connector вы можете:
- Изменить команду kubectl на нужную, например
kubectl create,kubectl apply - Узнать больше о Concepts of Kubernetes Connectors
- Использование Kubernetes Connectors в CI/CD пайплайнах