Как связаны Штурвал и Kubeflow

ML-платформа поверх кластеров и неймспейсов, управляемых Штурвалом.

Роли Штурвала и Kubeflow

  • Штурвал управляет жизненным циклом кластеров Kubernetes, неймспейсами, правами доступа, провайдерами инфраструктуры и системными сервисами и интегрирует Kubeflow в платформу.
  • Kubeflow предоставляет инструменты для ML-сценариев в Kubernetes: notebooks, pipelines, experiments, runs/jobs, serving, training jobs, TensorBoard и viewers.

При этом:

  • Kubeflow разворачивается в кластере, как набор компонентов для ML-нагрузок;
  • рабочая область пользователя в Kubeflow связана с неймспейсом, созданным через кастомный ресурс Profile API-группы kubeflow.org;
  • источником прав и разграничения доступа остаётся Штурвал: права Kubeflow задаются в наборах доступов и применяются в целевых кластерах.

Типовая архитектура

Типовая схема выглядит так:

  • Kubeflow — установлен в кластере и публикует веб-интерфейсы через Istio Gateway и VirtualService;
  • Profile Kubeflow — создаёт пользовательский неймспейс и включает для него компоненты Kubeflow.

В типовой установке Kubeflow используются компоненты Central Dashboard, Profiles, Jupyter/Notebook Controller, Kubeflow Pipelines, Katib, KServe, Knative Serving, Training Operator, Spark Operator, TensorBoard, PVC Viewer и Volumes Web App. Kubeflow Pipelines использует Argo Workflows как зависимость для запуска workflow.


Профили и неймспейсы

Профиль Kubeflow — это ресурс Profile API-группы kubeflow.org. Контроллер создаёт или сопровождает неймспейс пользователя и добавляет к нему лейблы, которые включают интеграцию с компонентами Kubeflow, например Pipelines, KServe и Katib.

В интерфейсе Штурвала переход в Kubeflow доступен на странице неймспейса, созданного через Profile Kubeflow. В релизе 2.14 переход в Kubeflow доступен только из неймспейса.

Подробнее о дашборде неймспейса: Обзор дашборда неймспейса.


Как применяются права Kubeflow

Права Kubeflow задаются в наборах доступов. Поддерживаются роли:

  • kubeflow-admin;
  • kubeflow-view.

Permissions operator применяет права в кластере:

  • для назначения на уровне неймспейса создаёт RoleBinding в выбранном неймспейсе и Istio AuthorizationPolicy;
  • для назначения на уровне кластера или платформы применяет права ко всем неймспейсам, которые соответствуют Profile Kubeflow, и создаёт ClusterRoleBinding;
  • проверяет наличие ClusterRole kubeflow-admin, kubeflow-edit или kubeflow-view; сами ClusterRole поставляются Kubeflow и не создаются backend-компонентами Штурвала.

Istio AuthorizationPolicy ограничивает доступ к Kubeflow по пользователю или группе. Для пользовательского доступа используется заголовок kubeflow-userid; для групп — claims токена.

Подробнее о ролях: Настройка разрешений.


Как открыть Kubeflow из интерфейса Штурвала

Если в кластере установлен и работает сервис Kubeflow, а неймспейс создан через ресурс Profile, в интерфейс Kubeflow можно перейти из GUI по SSO — без отдельного логина и пароля. Для авторизации используются учётные данные пользователя в платформе.

  1. Выберите Кластер, в котором развёрнут Kubeflow.
  2. Выберите Неймспейс, созданный через Profile.
  3. На странице неймспейса нажмите кнопку Kubeflow — откроется интерфейс Kubeflow для этого неймспейса. Вы будете аутентифицированы через платформу (SSO), а доступ к ресурсам Kubeflow будет ограничен вашими правами.

Если кнопка не отображается, проверьте, что сервис Kubeflow установлен и работает, неймспейс создан через Profile Kubeflow и для него настроена ссылка перехода.


Когда использовать Kubeflow

Kubeflow подходит, когда команде нужны:

  • изолированные ML-неймспейсы для пользователей или команд;
  • notebooks и pipeline-сценарии для экспериментов и обучения моделей;
  • управление experiments, runs/jobs и артефактами;
  • serving моделей через KServe/Knative;
  • training jobs, Spark jobs, TensorBoard и viewers в Kubernetes.

Kubeflow предназначен для ML-сценариев и работает поверх Kubernetes-ресурсов в неймспейсе.