• Русский
  • Kubeflow Chart Plugins

    Развертывание плагинов Kubeflow в Alauda AI версии >= 2.0. Включает:

    • kfbase: базовые компоненты Kubeflow, включая аутентификацию и авторизацию, центральную панель управления, notebook, pvc-viewer, tensorboards, volumes, интерфейс модели реестра, интерфейс конечных точек kserve, сервис API каталога моделей и др.
    • model-registry-operator: оператор Kubeflow Model Registry
    • kfp: Kubeflow Pipeline
    • kftraining: оператор Kubeflow Training (устаревший)
    • kubeflow-trainer: плагин управления задачами обучения Kubeflow, также известный как Kubeflow Trainer v2 (заменяет kftraining)

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

    1. Запущенная среда ACP
    2. Убедитесь, что Alauda AI развернута (требуется версия Alauda AI >= 2.0)
    3. Разверните ASM в бизнес-кластере, где будет развернут Kubeflow (если ASM не был развернут на предыдущем шаге) (на данный момент поддерживается ASM v1. Поддержка ASM v2 ожидается в будущем)
    4. Разверните плагин LWS (Alauda Build of LeaderWorkerSet), который является зависимостью Kubeflow Trainer v2.
    5. Настройте плагин oauth2-proxy, как описано ниже

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

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

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

    Затем перейдите в глобальный кластер или в acp Platform Management -> Resource Management, обновите ресурс ServiceMesh, добавив следующий контент в поле spec:

    Примечание: Если spec.values.pilot.jwksResolverExtraRootCA уже настроен, вы можете настроить только spec.meshConfig.extensionProviders, добавляя новые, не удаляя существующие 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

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

    Получите установочные пакеты для следующих плагинов и используйте инструмент 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
    • kfp: функционал Kubeflow Pipeline
    • kftraining: оператор Kubeflow Training (устаревший)
    • kubeflow-trainer: плагин управления задачами обучения Kubeflow (заменяет kftraining)

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

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

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

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

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

    В Administrator - System Settings - Platform Parameters нажмите кнопку "Edit" справа от Platform Access URLs и добавьте URL перенаправления в формате https://<your-kubeflow-domain>:<port>/, например, https://192.168.139.133:30443/. Обратите внимание, что хост должен совпадать с oidcRedirectURL, настроенным на странице развертывания плагина kfbase, а порт — с istioGatewayNodeportHTTPS.

    После развертывания в навигации Alauda AI в разделе Tools появится пункт меню Kubeflow. Нажмите, чтобы войти в интерфейс Kubeflow.

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

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

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

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

    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 не выбирается, можно создать привязку ролей для аккаунта, используя следующий ресурс.

    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 (Kubeflow Pipeline) и kftrainer (Kubeflow Training Operator)

    Аналогично, в разделе Cluster Plugins найдите kfp (Kubeflow Pipeline) и kftrainer (Kubeflow Training Operator).

    Примечание: После развертывания Kubeflow Pipeline функции, связанные с Pipeline, станут доступны в интерфейсе Kubeflow.
    Примечание: Kubeflow Training Operator является фоновым планировщиком задач и не отображается в меню и функциях UI.

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

    В Administrator - MarketPlace - OperatorHub найдите Model Registry Operator, нажмите кнопку "Install" для завершения развертывания оператора.

    После установки оператора необходимо создать экземпляр ModelRegistry в namespace пользователя, переключитесь на вкладку All Instances, нажмите кнопку "Create" для создания экземпляра.

    Примечание: Экземпляр должен быть создан в namespace, который уже привязан к профилю пользователя Kubeflow, иначе интерфейс Model Registry не будет отображаться

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

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

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

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

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

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

    Примечание: Перед развертыванием kubeflow-trainer необходимо удалить kftraining (Kubeflow Training Operator), если он уже развернут.

    Примечание: Убедитесь, что плагин LWS (Alauda Build of LeaderWorkerSet) установлен перед развертыванием kubeflow-trainer, так как LWS является зависимостью kubeflow-trainer.

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

    В разделе Cluster Plugins найдите kubeflow-trainer (Kubeflow Trainer v2), нажмите кнопку "Install", выберите опции включения JobSet и нажмите "Install" для завершения развертывания.