Установка

Содержание

Введение

Система Connectors имеет модульную архитектуру с следующими компонентами:

  • Connectors Operator: центральный компонент управления, который отвечает за развертывание и жизненный цикл остальных компонентов коннекторов
  • ConnectorsCore: обязательный основной компонент, обеспечивающий основу для всех типов коннекторов
  • ConnectorsGit: дополнительный компонент, добавляющий поддержку Git-сервисов (GitHub, GitLab и др.)
  • ConnectorsOCI: дополнительный компонент, добавляющий поддержку реестров контейнеров

В этом документе приведены инструкции по установке и настройке системы Connectors.

Требования

Перед установкой убедитесь, что у вас есть:

  • Kubernetes кластер
  • CLI kubectl, настроенный для взаимодействия с вашим кластером
  • Права администратора в кластере
  • Connectors Operator в состоянии Ready в ACP Operator Hub

Установка Connectors Operator

Сначала установите Connectors Operator, который управляет жизненным циклом всех остальных компонентов.

  1. Создайте namespace для оператора:

    kubectl create namespace connectors-operator
  2. Примените YAML подписки оператора:

    cat <<EOF | kubectl apply -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      annotations:
        cpaas.io/target-namespaces: ""
      labels:
        catalog: platform
      name: connectors-operator
      namespace: connectors-operator
    spec:
      channel: alpha
      installPlanApproval: Manual
      name: connectors-operator
      source: platform
      sourceNamespace: cpaas-system
    EOF
    
    kubectl wait --for=condition=InstallPlanPending subscription.operators.coreos.com/connectors-operator -n connectors-operator
    
    installplanname=$(kubectl get subscription.operators.coreos.com -n connectors-operator connectors-operator -ojsonpath='{.status.installPlanRef.name}')
    kubectl patch installplan -n connectors-operator ${installplanname} --type='merge' -p='{"spec":{"approved":true}}'
  3. Проверьте, что оператор запущен:

    kubectl get pods -n connectors-operator

    Вы должны увидеть запущенный pod connectors-operator:

    NAME                                                  READY   STATUS    RESTARTS   AGE
    connectors-operator-controller-manager-xxxxxx-xxxxx   2/2     Running   0          1m
  4. Проверьте, что Custom Resource Definitions (CRD) созданы:

    kubectl get crds | grep connectors

    Вы должны увидеть CRD, включая:

    connectorscore.operator.connectors.alauda.io
    connectorsgit.operator.connectors.alauda.io
    connectorsoci.operator.connectors.alauda.io

Установка ConnectorsCore

После запуска оператора установите обязательный компонент ConnectorsCore:

  1. Создайте namespace для компонентов коннекторов (если ещё не создан):

    kubectl create namespace connectors-system
  2. Создайте Custom Resource ConnectorsCore:

    cat <<EOF | kubectl apply -f -
    apiVersion: operator.connectors.alauda.io/v1alpha1
    kind: ConnectorsCore
    metadata:
      name: connectors-core
      namespace: connectors-system
    spec: {}
    EOF
  3. Отслеживайте прогресс развертывания:

    kubectl get connectorscore -n connectors-system
  4. Дождитесь, пока статус покажет, что ConnectorsCore готов:

    kubectl wait --for=condition=Ready connectorscore/connectors-core -n connectors-system --timeout=300s
  5. Проверьте, что основные pod запущены:

    kubectl get pods -n connectors-system

    Вы должны увидеть основные компоненты, включая:

    NAME                                              READY   STATUS    RESTARTS   AGE
    connectors-api-xxxxxx                             1/1     Running   0          2m
    connectors-controller-manager-xxxxxx              1/1     Running   0          2m
    connectors-proxy-xxxxxx                           1/1     Running   0          2m
  6. Проверьте, что CRD, необходимые для функциональности коннекторов, установлены:

    kubectl get crds | grep connectors.alauda.io

    Вы должны увидеть:

    connectorclasses.connectors.alauda.io
    connectors.connectors.alauda.io

Установка ConnectorsGit (опционально)

Для добавления поддержки Git-сервисов, таких как GitHub, GitLab и др., установите компонент ConnectorsGit:

  1. Создайте Custom Resource ConnectorsGit:

    cat <<EOF | kubectl apply -f -
    apiVersion: operator.connectors.alauda.io/v1alpha1
    kind: ConnectorsGit
    metadata:
      name: connectors-git
      namespace: connectors-system
    spec: {}
    EOF
  2. Отслеживайте прогресс развертывания:

    kubectl get connectorsgit -n connectors-system
  3. Дождитесь, пока статус покажет, что ConnectorsGit готов:

    kubectl wait --for=condition=Ready connectorsgit/connectors-git -n connectors-system --timeout=300s
  4. Проверьте, что Git-плагин запущен:

    kubectl get pods -n connectors-system | grep git

    Вы должны увидеть:

    NAME                                   READY   STATUS    RESTARTS   AGE
    connectors-git-plugin-xxxxxx           1/1     Running   0          1m
  5. Проверьте, что ConnectorClass для Git создан:

    kubectl get connectorclass git

    Вы должны увидеть:

    NAME  READY  AGE
    git   True       1m

Установка ConnectorsOCI (опционально)

Для добавления поддержки реестров контейнеров, таких как Harbor, Docker Registry и др., установите компонент ConnectorsOCI:

  1. Создайте Custom Resource ConnectorsOCI:

    ClusterIP Expose:

    cat <<EOF | kubectl apply -f -
    apiVersion: operator.connectors.alauda.io/v1alpha1
    kind: ConnectorsOCI
    metadata:
      name: connectors-oci
      namespace: connectors-system
    spec: {}
    EOF

    NodePort Expose:

    cat <<EOF | kubectl apply -f -
    apiVersion: operator.connectors.alauda.io/v1alpha1
    kind: ConnectorsOCI
    metadata:
      name: connectors-oci
      namespace: connectors-system
    spec:
     expose:
       type: NodePort
       domain: 192.168.1.123
       nodePort:
         port: 30000
    EOF

    Ingress Expose:

    cat <<EOF | kubectl apply -f -
    apiVersion: operator.connectors.alauda.io/v1alpha1
    kind: ConnectorsOCI
    metadata:
      name: connectors-oci
      namespace: connectors-system
    spec:
     expose:
       type: Ingress
       domain: connectors.proxy.com
  2. Отслеживайте прогресс развертывания:

    kubectl get connectorsoci -n connectors-system
  3. Дождитесь, пока статус покажет, что ConnectorsOCI готов:

    kubectl wait --for=condition=Ready connectorsoci/connectors-oci -n connectors-system --timeout=300s
  4. Проверьте, что OCI-плагин запущен:

    kubectl get pods -n connectors-system | grep oci
  5. Проверьте, что ConnectorClass для OCI создан:

    kubectl get connectorclass oci

Удаление Connectors

Для удаления системы Connectors удаляйте компоненты в обратном порядке установки.

  1. Сначала удалите опциональные компоненты (если они были установлены):

    # Удалить ConnectorsOCI
    kubectl delete connectorsoci --all -n connectors-system
    
    # Удалить ConnectorsGit
    kubectl delete connectorsgit --all -n connectors-system
  2. Удалите основной компонент:

    kubectl delete connectorscore --all -n connectors-system
  3. Удалите оператора:

    kubectl delete -n connectors-operator subscription.operators.coreos.com/connectors-operator
  4. Удалите CRD:

    Внимание: это удалит все пользовательские данные о коннекторах

    kubectl delete crd connectors.connectors.alauda.io
    kubectl delete crd connectorclasses.connectors.alauda.io
    kubectl delete crd connectorscore.operator.connectors.alauda.io
    kubectl delete crd connectorsgit.operator.connectors.alauda.io
    kubectl delete crd connectorsoci.operator.connectors.alauda.io
  5. Удалите namespaces:

    kubectl delete namespace connectors-system
    kubectl delete namespace connectors-operator

Пользовательская конфигурация

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

Конфигурация ConnectorsCore

При создании ресурса ConnectorsCore можно указать пользовательскую конфигурацию:

apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsCore
metadata:
  name: connectors-core
  namespace: connectors-system
spec:
  # Настройка конкретных нагрузок
  workloads:
  - name: connectors-api
    replicas: 2
    template:
      spec:
        containers:
        - name: api
          imagePullPolicy: Always
          resources:
            limits:
              cpu: 500m
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 256Mi
          securityContext:
            readOnlyRootFilesystem: true
        nodeSelector:
          kubernetes.io/os: linux

  - name: connectors-controller-manager
    replicas: 1
    template:
      spec:
        containers:
        - name: manager
          resources:
            limits:
              cpu: 300m
              memory: 512Mi

  - name: connectors-proxy
    replicas: 2
    template:
      spec:
        containers:
        - name: proxy
          resources:
            limits:
              cpu: 200m
              memory: 256Mi

Конфигурация ConnectorsGit

Пользовательская конфигурация для Git-плагина:

apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsGit
metadata:
  name: connectors-git
  namespace: connectors-system
spec:
  # Настройка нагрузок
  workloads:
  - name: connectors-git-plugin
    replicas: 2
    template:
      spec:
        containers:
        - name: plugin
          resources:
            limits:
              cpu: 300m
              memory: 256Mi
            requests:
              cpu: 100m
              memory: 128Mi

Конфигурация ConnectorsOCI

Пользовательская конфигурация для OCI-плагина:

apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsOCI
metadata:
  name: connectors-oci
  namespace: connectors-system
spec:
  # Настройка нагрузок
  workloads:
  - name: connectors-oci-plugin
    replicas: 2
    template:
      spec:
        containers:
        - name: plugin
          resources:
            limits:
              cpu: 300m
              memory: 256Mi
            requests:
              cpu: 100m
              memory: 128Mi

Дополнительные настройки

Для продвинутых развертываний вы также можете указать:

apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsCore
metadata:
  name: connectors-core
  namespace: connectors-system
spec:
  # Указать дополнительные манифесты для установки
  additionalManifests: "<additional manifests>"

  # Другие необходимые настройки