Connectors CSI Driver
Содержание
ОбзорБыстрый старт1. Создайте ConnectorClass2. Создайте Connector3. Создайте Pod с использованием CSI DriverВстроенные конфигурацииПараметры тома CSIconfiguration.paramsФорматКак работают значения по умолчаниюДоступные переменные в шаблонахНесколько ConnectorsОбъединение конфигурацийРендеринг файлов конфигурацииДоступные переменныеВстроенные функцииО службе proxyПримеры конфигурацииСледующие шагиОбзор
Connectors CSI Driver — это драйвер хранения, реализованный на основе спецификации Container Storage Interface (CSI). Он позволяет монтировать конфигурации из Connector как тома в рабочие нагрузки Kubernetes. Ключевые возможности:
- Монтирование файлов конфигурации из Connector в Pods
- Поддержка динамического рендеринга переменных в файлах конфигурации для автоматической подстановки данных во время выполнения
- Поддержка одновременного монтирования нескольких файлов конфигурации
Все данные конфигурации поступают из ConnectorClass configuration, связанной с Connector.
Используйте этот документ, чтобы понять, как рабочие нагрузки монтируют сгенерированную Connector конфигурацию и потребляют данные времени выполнения, связанные с proxy.
Этот документ фокусируется на поведении монтирования и рендеринга. О трафике proxy и аутентификации см. Connectors Proxy. О контроле разрешений и доступе к данным времени выполнения, инициируемом через approval, см. Connectors Approval & Permission Gating.
Быстрый старт
1. Создайте ConnectorClass
Сначала создайте ConnectorClass, который включает конфигурацию Git:
2. Создайте Connector
Затем создайте Connector, который подключается к GitHub:
3. Создайте Pod с использованием CSI Driver
Создайте Pod, который монтирует конфигурацию:
Проверьте смонтированные файлы:
Встроенные конфигурации
CSI Driver автоматически предоставляет встроенные файлы конфигурации, которые по умолчанию монтируются в Pods.
Вы можете исключить отдельные смонтированные файлы, используя !<fileName> в configuration.names (например, !context.token), включая как встроенные файлы, так и файлы ConnectorClass, выбранные через configuration.names.
Использование Forward Proxy:
Использование Reverse Proxy:
Параметры тома CSI
Параметры тома
Атрибуты тома
Примеры
Монтирование одной конфигурации:
Монтирование нескольких конфигураций:
Монтирование нескольких Connectors для аутентификации proxy:
Исключение определенных смонтированных файлов:
Исключение встроенного файла при монтировании только встроенных конфигураций:
Примечания:
- Если
configuration.namesне указан, монтируются только встроенные конфигурации - Когда несколько конфигураций содержат файлы с одинаковым именем, более поздние конфигурации перезаписывают более ранние
- Исключения (
!<fileName>) применяются к итоговым именам смонтированных файлов после сборки и объединения конфигураций. - Если указаны имена включаемых конфигураций, но ни одна из них не найдена, запрос завершается с ошибкой даже при наличии исключений.
- Параметр
connectorsиспользуется для указания нескольких Connectors для монтирования конфигурации.
configuration.params
configuration.params позволяет вызывающей стороне передавать runtime-параметры в шаблоны конфигурации во время монтирования. Каждая конфигурация в ConnectorClass может объявлять набор именованных параметров; configuration.params передает значения для этих параметров при создании CSI volume.
Формат
Значение представляет собой JSON-объект, ключами которого являются имена конфигураций, а каждое значение — это объект пар key-value:
Пример — передача mirrorRepository в конфигурацию settings и registry в конфигурацию npmrc в одном монтировании:
Область действия по имени конфигурации позволяет сохранять параметры неизменными независимо от того, сколько Connectors смонтировано и как они называются. Значения, специфичные для Connector, должны находиться в Connector.spec.params и доступны в шаблонах через .connectors[i].spec.params.
Как работают значения по умолчанию
Когда конфигурация ConnectorClass объявляет параметр со значением по умолчанию и вызывающая сторона его не указывает, CSI Driver автоматически подставляет значение по умолчанию перед рендерингом шаблона. В configuration.params явное значение не требуется.
Пример — у strictSSL значение по умолчанию равно "true", поэтому его можно не указывать:
Доступные переменные в шаблонах
После обработки переданные (и значения по умолчанию) параметры доступны в шаблоне конфигурации как .configurations.<paramName>:
Несколько Connectors
Connectors CSI Driver поддерживает использование нескольких Connectors для конфигураций. Вы можете указать несколько Connectors с помощью атрибута тома connectors в формате namespace/name или name; если namespace не указан, используется namespace Pod. Connectors следует разделять запятыми.
Перед использованием нескольких Connectors в одном CSI volume включите флаг функциональности enable-multi-connector в connectors-config. Подробности см. в Feature Flags.
Когда указано несколько Connectors, CSI Driver объединяет файлы конфигурации на основе атрибута configuration.names. Поведение при объединении подробно описано в разделе Configuration Merging.
Строгого ограничения на количество перечисляемых Connectors нет; однако не указывайте слишком много Connectors, чтобы избежать слишком больших заголовков запросов и других проблем, связанных с proxy.
Объединение конфигураций
Когда указано несколько Connectors, CSI Driver объединяет файлы конфигурации от всех указанных Connectors на основе атрибута configuration.names.
Существует несколько возможных сценариев обработки файлов конфигурации; ниже описано поведение для каждого случая.
Одно и то же имя конфигурации
Для Connectors с одинаковым именем конфигурации, когда указано несколько Connectors, их данные конфигурации будут объединены в один файл конфигурации.
Шаблоны конфигурации должны поддерживать рендеринг данных для нескольких Connectors, чтобы один файл мог включать несколько наборов данных, специфичных для Connector.
Например:
В приведенном выше примере файл конфигурации .multi-connector-config будет содержать секции для каждого Connector, указанного в атрибуте тома connectors.
Если объединенные Connectors относятся к разным ConnectorClasses и содержат файлы конфигурации с одинаковым именем, конфигурация из более позднего ConnectorClass переопределит конфигурацию из более раннего ConnectorClass. Поэтому в этом сценарии рекомендуется использовать разные имена файлов конфигурации, чтобы избежать конфликтов.
Разные имена конфигураций
Когда у указанных Connectors разные имена конфигураций, CSI Driver смонтирует все конфигурации отдельно.
При монтировании с указанием и connectors, и configuration names:
Смонтированный volume будет содержать и config.xml, и settings.json, каждый файл будет заполнен данными из соответствующих Connectors.
Рендеринг файлов конфигурации
CSI Driver выполняет рендеринг переменных при монтировании файлов конфигурации, используя синтаксис Go template.
Доступные переменные
Встроенные функции
См. sprig для списка поддерживаемых функций
Например: b64enc: кодирование строки в Base64
О службе proxy
Connectors предоставляют службу proxy для каждого Connector, позволяя клиентам получать доступ к целевым ресурсам без необходимости хранить исходные учетные данные. Подробнее см. connectors-proxy.
Примеры конфигурации
Константное содержимое
Использование connector.spec.params
Следующий ConnectorClass определяет параметр sslVerify для управления проверкой SSL во время git clone.
Использование службы proxy и token
Следующий ConnectorClass предоставляет файл с именем .gitconfig, который автоматически подставляет заголовки и заменяет URL git во время git clone с использованием службы proxy и token.