Как связаны Штурвал и 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 — без отдельного логина и пароля. Для авторизации используются учётные данные пользователя в платформе.
- Выберите Кластер, в котором развёрнут Kubeflow.
- Выберите Неймспейс, созданный через Profile.
- На странице неймспейса нажмите кнопку 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-ресурсов в неймспейсе.