Csi-external-attacher#

Сsi-external-attacher - компонент управляет присоединением томов к pod. Он обеспечивает подключение томов к указанному pod. Компонент предоставляет API для присоединения томов и запускается в DropApp Plus в виде pod.

Последовательность выполнения#

Параметры командной строки Сsi-external-attacher представлены в таблице ниже.

Таблица. Параметры командной строки

Синтаксис флага

Значение

csi-address <path to CSI socket>

Путь к сокету драйвера CSI внутри модуля, который контейнер внешнего подключения будет использовать для выполнения операций CSI. По умолчанию используется /run/csi/socket

--leader-election

Включает выборы главного процесса. Это полезно, когда для одного драйвера CSI работает несколько реплик одного и того же Сsi-external-attacher. Активным может быть только один из них

--leader-election-namespace <namespace>

Пространство имен, в котором запускается Сsi-external-attacher, и где будет создан объект выбора главного процесса. Рекомендуется, чтобы этот параметр заполнялся из DropApp Plus DownwardAPI

--timeout <duration>

Тайм-аут всех обращений к драйверу CSI. Он должен быть установлен на значение, которое подходит для большинства вызовов ControllerPublish и ControllerUnpublish. По умолчанию используется 15 секунд

--worker-threads

Количество рабочих узлов для обработки VolumeAttachments. По умолчанию используется значение 10

--retry-interval-start

Время ожидания в случае неудачного старта. По умолчанию – 1 секунда

--retry-interval-max

Максимальное время отсрочки действия. По умолчанию – 5 минут

--http-endpoint

Сетевой адрес TCP, где будет прослушиваться HTTP-сервер для диагностики, включая метрики и проверку работоспособности при выборе главного процесса (example:8080, что соответствует порту 8080 на локальном хосте). По умолчанию используется пустая строка, что означает, что сервер отключен

--metrics-path

HTTP-путь, по которому будут отображаться метрики prometheus. По умолчанию /metrics

--reconcile-sync

Частота повторной синхронизации подключенных томов с драйвером. По умолчанию – 1 минута

--kube-api-qps

Количество запросов в секунду, отправленных клиентом DropApp Plus на API server DropApp Plus. По умолчанию – 5.0

--kube-api-burst

Количество запросов к серверу API DropApp Plus, превышающее число запросов в секунду, которые можно отправить в любой момент времени. По умолчанию – 10

--default-fstype <type>

Тип файловой системы тома для публикации по умолчанию. По умолчанию пустая строка

  1. Создайте новую учетную запись службы и предоставьте ей права для запуска Сsi-external-attacher.

  2. Разверните Сsi-external-attacher:

    oc create deploy/deployment.yaml
    

    Содержание манифеста будет следующим:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: csi-attacher
      namespace: default
    
    ---
    
    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: external-attacher-runner
    rules:
      - apiGroups: [""]
        resources: ["persistentvolumes"]
        verbs: ["get", "list", "watch", "patch"]
      - apiGroups: ["storage.k8s.io"]
        resources: ["csinodes"]
        verbs: ["get", "list", "watch"]
      - apiGroups: ["storage.k8s.io"]
        resources: ["volumeattachments"]
        verbs: ["get", "list", "watch", "patch"]
      - apiGroups: ["storage.k8s.io"]
        resources: ["volumeattachments/status"]
        verbs: ["patch"]
    
    ---
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: csi-attacher-role
    subjects:
      - kind: ServiceAccount
        name: csi-attacher
        # replace with non-default namespace name
        namespace: default
    roleRef:
      kind: ClusterRole
      name: external-attacher-runner
      apiGroup: rbac.authorization.k8s.io
    
    ---
    
    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      # replace with non-default namespace name
      namespace: default
      name: external-attacher-cfg
    rules:
    - apiGroups: ["coordination.k8s.io"]
      resources: ["leases"]
      verbs: ["get", "watch", "list", "delete", "update", "create"]
    
    ---
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: csi-attacher-role-cfg
      namespace: default
    subjects:
      - kind: ServiceAccount
        name: csi-attacher
        namespace: default
    roleRef:
      kind: Role
      name: external-attacher-cfg
      apiGroup: rbac.authorization.k8s.io
    

    Этот файл содержит все объекты RBAC, необходимые для запуска Сsi-external-attacher.

Вышеприведенная команда – для создания развертывания в DropApp Plus. Deployment - это набор компонентов, которые запускаются вместе и выполняют определенную задачу. В данном случае, команда создает deployment, который запускает контейнер с драйвером DropApp Plus.

Сsi-external-attacher может работать в одном pod с другими внешними контроллерами CSI, такими как Csi-external-provisioner, Csi-external-snapshotter и Csi-external-resizer.

Результат#

Сsi-external-attacher настроен и готов к использованию.