• Русский
  • Установка плагинов Kubeflow

    На этой странице описано, как развернуть плагины, связанные с Kubeflow, в Alauda AI 2.0 и более поздних версиях.

    Поддерживаемые плагины:

    • kfbase: базовые компоненты Kubeflow, включая аутентификацию и авторизацию, центральную панель, Notebooks, PVC Viewer, TensorBoards, Volumes, Model Registry UI, KServe Endpoints UI и сервис API Model Catalog.
    • model-registry-operator: Kubeflow Model Registry Operator.
    • kfp: Kubeflow Pipelines.
    • kftraining: Kubeflow Training Operator. Этот плагин устарел.
    • kubeflow-trainer: Kubeflow Trainer v2 для управления обучающими заданиями. Этот плагин заменяет kftraining.

    Подготовка окружения

    Перед началом работы убедитесь, что выполнены следующие предварительные условия:

    1. Доступно и работает окружение ACP.
    2. Alauda AI уже развернут. Требуется Alauda AI 2.0 или более поздняя версия.
    3. Установлен Alauda Build of KServe.
    4. ASM развернут в бизнес-кластере, где будет работать Kubeflow. Если ASM еще не установлен, разверните его перед продолжением. ASM v1 устарел. По возможности используйте ASM v2.
    5. Плагин LWS, Alauda Build of LeaderWorkerSet, установлен, если вы планируете развернуть kubeflow-trainer.
    6. Плагин oauth2-proxy настроен, как описано ниже.

    Настройка перенаправления Dex

    Примечание: настройте URL доступа к платформе для перенаправления Dex перед установкой плагина kfbase. Этот шаг может обновить CA-сертификат платформы. Если сертификат изменится после настройки oauth2-proxy, настройка oauth2-proxy может завершиться с ошибкой.

    В Administrator > System Settings > Platform Parameters нажмите Edit рядом с Platform Access URLs и добавьте URL перенаправления в формате https://<your-kubeflow-domain>, например https://kubeflow.example.com.

    • <your-kubeflow-domain> должен соответствовать значению kubeflowDomain, настроенному для плагина kfbase.

    Настройка плагина oauth2-proxy

    Получите CA-сертификат Dex платформы для последующего использования в кластере Global:

    crt=$(kubectl get secret -n cpaas-system dex.tls -o jsonpath='{.data.tls\.crt}')
    echo -n $crt | base64 -d

    Настройка ASM v1 (устарело)

    В глобальном кластере или в ACP Platform Management > Resource Management обновите ресурс ServiceMesh и добавьте следующий контент в spec.

    Примечание: если spec.values.pilot.jwksResolverExtraRootCA уже настроен, обновите только spec.meshConfig.extensionProviders. Добавляйте новые записи, не удаляя существующие.

    spec:
      overlays:
        - kind: IstioOperator
          patches:
            - path: spec.values.pilot.env.PILOT_JWT_PUB_KEY_REFRESH_INTERVAL
              value: 1m
            - path: spec.values.pilot.jwksResolverExtraRootCA
              value: |
                -----BEGIN CERTIFICATE-----
                <YOUR_DEX_CA_CERTIFICATE_BASE64_HERE>
                -----END CERTIFICATE-----
            - path: spec.meshConfig.extensionProviders
              value:
                envoyExtAuthzHttp:
                  headersToDownstreamOnDeny:
                    - content-type
                    - set-cookie
                  headersToUpstreamOnAllow:
                    - authorization
                    - path
                    - x-auth-request-user
                    - x-auth-request-email
                    - x-auth-request-access-token
                  includeAdditionalHeadersInCheck:
                    X-Auth-Request-Redirect: http://%REQ(Host)%%REQ(:PATH)%
                  includeRequestHeadersInCheck:
                    - authorization
                    - cookie
                    - accept
                  port: "80"
                  service: oauth2-proxy.kubeflow-oauth2-proxy.svc.cluster.local
                name: oauth2-proxy-kubeflow

    Настройка ASM v2

    Примечание: если какие-либо webhook ASM v1 все еще присутствуют, сначала удалите их. Иначе аутентификация Kubeflow может завершиться неудачей.

    kubectl delete validatingwebhookconfigurations istiod-default-validator
    kubectl delete mutatingwebhookconfigurations istio-sidecar-injector-1-22
    kubectl delete mutatingwebhookconfigurations istio-revision-tag-default

    В ACP перейдите в Administrator > MarketPlace > OperatorHub, найдите Alauda Service Mesh v2, откройте вкладку All Instances, найдите экземпляр типа Istio, например default, нажмите Update и добавьте следующий контент в spec:

    spec:
      values:
        pilot:
          env:
            PILOT_JWT_PUB_KEY_REFRESH_INTERVAL: 1m
          jwksResolverExtraRootCA: |
            -----BEGIN CERTIFICATE-----
            <YOUR_DEX_CA_CERTIFICATE_BASE64_HERE>
            -----END CERTIFICATE-----
        meshConfig:
          extensionProviders:
            - envoyExtAuthzHttp:
                headersToDownstreamOnDeny:
                  - content-type
                  - set-cookie
                headersToUpstreamOnAllow:
                  - authorization
                  - path
                  - x-auth-request-user
                  - x-auth-request-email
                  - x-auth-request-access-token
                includeAdditionalHeadersInCheck:
                  X-Auth-Request-Redirect: http://%REQ(Host)%%REQ(:PATH)%
                includeRequestHeadersInCheck:
                  - authorization
                  - cookie
                  - accept
                port: 80
                service: oauth2-proxy.kubeflow-oauth2-proxy.svc.cluster.local
              name: oauth2-proxy-kubeflow

    Подключение компонентов

    Скачайте установочные пакеты для следующих плагинов и загрузите их с помощью violet:

    # Замените адрес платформы, имя пользователя, пароль и путь к пакету плагина.
    violet push --platform-address="https://192.168.171.123" \
      --platform-username="admin@cpaas.io" \
      --platform-password="<platform_password>" \
      <your-downloaded-plugin-package-file>
    • kfbase: базовая функциональность Kubeflow.
    • model-registry-operator: Kubeflow Model Registry Operator.
    • kfp: Kubeflow Pipelines.
    • kftraining: Kubeflow Training Operator. Этот плагин устарел.
    • kubeflow-trainer: Kubeflow Trainer v2. Этот плагин заменяет kftraining.

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

    Шаги развертывания

    1. Разверните kfbase (Kubeflow Base)

    В Cluster Plugins найдите плагин kfbase, выполните настройку на странице и дождитесь завершения развертывания.

    После развертывания:

    • В Administrator > System Settings > Platform Parameters убедитесь, что Platform Access URLs содержит адрес в формате https://<your-kubeflow-domain>, где <your-kubeflow-domain> — значение kubeflowDomain, настроенное для плагина kfbase.
    • Настройте DNS-разрешение или добавьте запись в локальный hosts-файл, чтобы <your-kubeflow-domain> разрешался в IP-адрес, назначенный для kubectl -n istio-system get gateway kubeflow-external-gateway.

    После развертывания запись Kubeflow появляется в разделе Tools в Alauda AI.

    Для действий, специфичных для обновления, см. Обновление плагинов Kubeflow.

    2. Создайте namespace пользователя Kubeflow и привяжите пользователя

    Перед первым входом пользователя в Kubeflow привяжите пользователя ACP к namespace. Следующий пример создает namespace kubeflow-admin-cpaas-io и назначает владельцем admin@cpaas.io.

    Примечание: если ресурс Profile уже был создан во время развертывания Alauda AI, этот шаг можно пропустить.

    Примечание: перед созданием экземпляров Notebook и подобных рабочих нагрузок может потребоваться понизить уровень Pod Security Admission для namespace пользователя.

    apiVersion: kubeflow.org/v1beta1
    kind: Profile
    metadata:
      name: kubeflow-admin-cpaas-io
    spec:
      owner:
        kind: User
        name: "admin@cpaas.io"

    3. Привяжите пользователя к существующему namespace

    Если Alauda AI уже был развернут и namespace kubeflow-admin-cpaas-io уже существует, ресурс Profile также может уже существовать. Если namespace по-прежнему не отображается в Kubeflow, создайте следующие ресурсы, чтобы привязать учетную запись к namespace:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: default-editor
      namespace: kubeflow-admin-cpaas-io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: default-editor
      namespace: kubeflow-admin-cpaas-io
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: kubeflow-edit
    subjects:
      - kind: ServiceAccount
        name: default-editor
        namespace: kubeflow-admin-cpaas-io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: user-admin-cpaas-io-clusterrole-admin
      namespace: kubeflow-admin-cpaas-io
      annotations:
        role: admin
        user: "admin@cpaas.io"
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: kubeflow-admin
    subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: "admin@cpaas.io"
    ---
    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: user-admin-cpaas-io-clusterrole-admin
      namespace: kubeflow-admin-cpaas-io
      annotations:
        role: admin
        user: "admin@cpaas.io"
    spec:
      rules:
        - from:
            - source:
                ## для получения дополнительной информации см. код KFAM:
                ## https://github.com/kubeflow/kubeflow/blob/v1.8.0/components/access-management/kfam/bindings.go#L79-L110
                principals:
                  ## требуется для Kubeflow notebooks
                  ## ШАБЛОН: "cluster.local/ns/<ISTIO_GATEWAY_NAMESPACE>/sa/<ISTIO_GATEWAY_SERVICE_ACCOUNT>"
                  - "cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
    
                  ## требуется для Kubeflow pipelines
                  ## ШАБЛОН: "cluster.local/ns/<KUBEFLOW_NAMESPACE>/sa/<KFP_UI_SERVICE_ACCOUNT>"
                  - "cluster.local/ns/kubeflow/sa/ml-pipeline-ui"
          when:
            - key: request.headers[kubeflow-userid]
              values:
                - "admin@cpaas.io"

    4. Разверните kfp и kftraining (устарело)

    В Cluster Plugins найдите kfp и kftraining и разверните их по необходимости.

    Примечание: после развертывания kfp функции, связанные с pipeline, становятся доступны в пользовательском интерфейсе Kubeflow.

    Примечание: kftraining — это контроллер, работающий в фоновом режиме. Он не отображается как пункт меню в пользовательском интерфейсе Kubeflow.

    5. Разверните Kubeflow Model Registry

    В Administrator > MarketPlace > OperatorHub найдите Model Registry Operator и нажмите Install.

    После установки оператора откройте вкладку All Instances и создайте экземпляр ModelRegistry в namespace пользователя.

    Примечание: создавайте экземпляр в namespace, который уже привязан к Kubeflow Profile. В противном случае UI Model Registry не отображается.

    При создании экземпляра при необходимости настройте следующие поля:

    • Name: имя экземпляра Model Registry.
    • Namespace: namespace, в котором будет работать экземпляр. Это должен быть namespace, уже привязанный к Kubeflow Profile.
    • MySQL Storage Class: класс хранения, используемый для метаданных Model Registry, например standard.
    • MySQL Storage Size: размер хранилища для базы данных метаданных. По умолчанию 10Gi.
    • DisplayName: отображаемое имя экземпляра Model Registry.
    • Description: краткое описание экземпляра.

    Примечание: после запуска экземпляра обновите запись Model Registry в левом меню Kubeflow, чтобы увидеть новый экземпляр. До создания первого экземпляра страница Model Registry пустая.

    Примечание: экземпляр Model Registry ограничивает сетевые запросы из других namespace. Чтобы разрешить дополнительные namespace, отредактируйте authorizationpolicy для экземпляра, например kubectl -n <your-namespace> edit authorizationpolicy <model-registry-name>, и обновите политику согласно документации Istio.

    Примечание: вы можете развернуть несколько экземпляров Model Registry в разных namespace. Каждый экземпляр независим.

    6. Разверните kubeflow-trainer (Kubeflow Trainer v2)

    Примечание: если kftraining уже развернут, удалите его перед развертыванием kubeflow-trainer.

    Примечание: установите плагин LWS перед развертыванием kubeflow-trainer, поскольку LWS является зависимостью kubeflow-trainer.

    Примечание: Kubeflow Trainer v2 требует Kubernetes 1.32.3 или более поздней версии. Более старые версии Kubernetes могут привести к непредсказуемому поведению.

    В Cluster Plugins найдите kubeflow-trainer, нажмите Install, выберите, нужно ли включать JobSet, и завершите установку.