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

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

    • kfbase: базовые компоненты Kubeflow, включая аутентификацию и авторизацию, центральную панель управления, notebook, pvc-viewer, tensorboards, volumes, интерфейс модели реестра, интерфейс конечных точек kserve, сервис API каталога моделей и др.
    • chart-kubeflow-model-registry: экземпляр Kubeflow Model Registry (Helm Chart)
    • kfp: Kubeflow Pipeline
    • kftraining: Kubeflow Training Operator (устаревший)
    • 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
    • chart-kubeflow-model-registry: Kubeflow Model Registry
    • kfp: функционал Kubeflow Pipeline
    • kftraining: Kubeflow Training Operator (устаревший)
    • kubeflow-trainer: плагин управления задачами обучения Kubeflow (заменяет kftraining)

    Примечание: Для плагина kftraining, если требуется поддержка volcano scheduler, необходимо сначала развернуть 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.

    После развертывания в навигации Tools в Alauda AI появится пункт меню 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. Развертывание chart-kubeflow-model-registry (Kubeflow Model Registry)

    В Catalog или Administrator - Marketplace - Chart Repositories найдите chart-kubeflow-model-registry, нажмите кнопку "Create", заполните имя развертывания, проект, namespace (пример места развертывания), версию Chart, затем скопируйте конфигурацию values.yaml справа налево, измените следующие параметры согласно информации о кластере:

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

    • global.registry.address: адрес реестра образов, используемый текущей платформой
    • mysqlStorageClass: класс хранения mysql, используемый Model Registry. Должен поддерживаться целевым кластером развертывания.
    • mysqlStorageSize: размер хранилища mysql, используемый Model Registry.
    • mysqlDataBase: имя базы данных (создаётся автоматически).
    • modelRegistryDisplayName: имя экземпляра Model Registry для развертывания
    • modelRegistryDescription: краткое описание экземпляра Model Registry для развертывания

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

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

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