• Русский
  • Connectors CSI Driver

    Содержание

    Overview

    Драйвер Connectors CSI — это драйвер хранения, реализованный на основе спецификации Container Storage Interface (CSI). Он позволяет монтировать конфигурации из Connector в виде томов в Kubernetes workloads. Основные возможности включают:

    • Монтирование конфигурационных файлов из Connector в Pods
    • Поддержка динамического рендеринга переменных в конфигурационных файлах для автоматической подстановки информации во время выполнения
    • Поддержка одновременного монтирования нескольких конфигурационных файлов

    Все данные конфигурации берутся из ConnectorClass configuration, связанной с Connector.

    Quick Start

    1. Создайте ConnectorClass

    Сначала создайте ConnectorClass, который включает конфигурацию Git:

    cat << EOF | kubectl apply -f -
    apiVersion: connectors.alauda.io/v1alpha1
    kind: ConnectorClass
    metadata:
      name: my-git
    spec:
      address:
        type: string
      configurations:
      - name: config
        data:
          .gitconfig: |
            this is git config
    EOF

    2. Создайте Connector

    Затем создайте Connector, который подключается к GitHub:

    cat << EOF | kubectl apply -f -
    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-connector
    spec:
      address: https://github.com
      connectorClassName: my-git
    EOF

    3. Создайте Pod с использованием CSI Driver

    Теперь можно создать Pod, чтобы смонтировать конфигурацию из ConnectorClass:

    cat << EOF | kubectl create -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: csi-demo
      namespace: default
    spec:
      restartPolicy: Never
      containers:
      - name: web
        image: docker-mirrors.alauda.cn/bitnami/git:2.47.1
        imagePullPolicy: IfNotPresent
        command:
        - "sleep"
        args: [ "3600" ]
        volumeMounts:
        - name: git-config
          mountPath: /tmp/config
      volumes:
      - name: git-config
        csi:
          readOnly: true
          driver: connectors-csi
          volumeAttributes:
            connector.name: "git-connector"
            connector.namespace: "default"
            configuration.names: "config"
    EOF

    4. Настройте права доступа

    Чтобы Pod мог получить доступ к конфигурации Connector, необходимо предоставить ServiceAccount Pod'а права на чтение ресурсов Connector:

    cat << EOF | kubectl apply -f -
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: default-sa-connectors-connector-viewer
      namespace: default
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: connectors-connector-viewer-role
    subjects:
    - kind: ServiceAccount
      name: default
      namespace: default
    EOF

    Когда Pod запущен, вы можете проверить содержимое смонтированного конфигурационного файла с помощью следующей команды:

    kubectl exec -ti csi-demo -- cat /tmp/config/.gitconfig

    Описание конфигурации

    Параметры конфигурации CSI тома

    Имя параметраОбязательныйОписание
    readOnlyДаДолжен быть установлен в true
    driverДаФиксированное значение: connectors-csi

    Параметры volumeAttributes

    Имя параметраОбязательныйОписание
    connector.nameДаИмя Connector
    connector.namespaceНетПространство имён Connector, по умолчанию пространство имён Pod
    configuration.namesДаСписок имён конфигураций через запятую для монтирования
    token.expirationНетВремя истечения токена, по умолчанию 30 минут

    Описание имени конфигурации

    Параметр configuration.names должен соответствовать именам конфигураций, определённых в ConnectorClass. Например:

    kind: ConnectorClass
    apiVersion: connectors.alauda.io/v1alpha1
    spec:
      configurations:
      - name: config1
        data:
          key1.txt: value1
          key2.txt: value2
      - name: config2
        data:
          file1.txt: file-value1
          file2.txt: file-value2

    Монтирование одной конфигурации:

    kind: Pod
    apiVersion: v1
    spec:
      volumes:
      - name: config
        csi:
          driver: connectors-csi
          volumeAttributes:
            configuration.names: "config1"  # Смонтирует key1.txt и key2.txt

    Монтирование нескольких конфигураций:

    kind: Pod
    apiVersion: v1
    spec:
      volumes:
      - name: config
        csi:
          driver: connectors-csi
          volumeAttributes:
            configuration.names: "config1,config2"  # Смонтирует все конфигурационные файлы

    Примечание: если в нескольких конфигурациях есть файлы с одинаковыми именами, файлы из последующей конфигурации перезапишут файлы из предыдущей.

    Рендеринг конфигурационных файлов

    Драйвер CSI выполняет рендеринг переменных при монтировании конфигурационных файлов, используя синтаксис Go template.

    Доступные переменные

    ПеременнаяОписание
    .connector.status.proxyAddressПрокси-адрес Connector; см. connectors-proxy
    .connector.spec.addressЦелевой адрес Connector
    .context.tokenТокен аутентификации для доступа к прокси-сервису

    Встроенные функции

    Поддерживаемые функции см. в sprig

    Например: b64enc — Base64 кодирование строки

    О прокси-сервисе

    Connectors предоставляют прокси-сервис для каждого Connector, позволяющий клиентам обращаться к целевым ресурсам без необходимости хранить исходные учетные данные. Подробнее см. в connectors-proxy.