Добавить приложение в ML-платформу
В ML-платформе вы можете добавлять дополнительные приложения с помощью kubectl, helm, kustomize.
Можно открывать приложение по URL вида https://myapp-yourdomain.mlops.selcloud.ru или добавить приложение на стартовую страницу ML-платформы.
Для приложений, которые будут доступны в интернете, нужно настроить авторизацию.
Добавить новое приложение в ML-платформу
Чтобы добавить новое приложение в ML-платформу, нужно создать объект вида Ingress. Ingress Controller создавать не нужно — в ML-платформе в кластерах Managed Kubernetes предустановлен контроллер Traefik.
Получать TLS-сертификаты непосредственно в ML-платформе не нужно, так как сертификат установлен на обратном прокси-сервере (reverse proxy).
-
Подключитесь к кластеру Managed Kubernetes, который был создан при подключении ML-платформы.
-
Создайте yaml-файл с манифестом для объекта Ingress.
Пример манифеста:
apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: myappnamespace: <ml_platform_namespace>annotations:traefik.ingress.kubernetes.io/router.tls: "true"spec:tls:- hosts:- "myapp-<ml_platform_domain>"secretName: myapp-<ml_platform_domain>-certrules:- host: "myapp-<ml_platform_domain>"http:paths:- path: /pathType: Prefixbackend:service:name: myappport:number: 80Укажите:
<ml_platform_namespace>— пространство имен (Namespace) ML-платформы;<ml_platform_domain>— URL видаyourdomain.mlops.selcloud.ru, который был выдан после подключения ML-платформы.
-
Создайте Ingress:
kubectl apply -f <ingress.yaml>Укажите
<ingress.yaml>— имя yaml-файла с манифестом для Ingress. -
Откройте приложение по адресу:
https://myapp-<ml_platform_domain>Укажите
<ml_platform_domain>— URL видаyourdomain.mlops.selcloud.ru, который был выдан после подключения ML-платформы. -
Опционально: добавьте приложение на стартовую страницу.
Добавить приложение на стартовую страницу ML-платформы
Стартовая страница ML-платформы работает с помощью инструмента Forecastle. На странице можно посмотреть все приложения, которые по умолчанию запущены в кластере Managed Kubernetes.
Если вы добавили новое приложение в ML-платформу, его так же можно разместить на стартовой странице.
-
Подключитесь к кластеру Managed Kubernetes, который был создан при подключении ML-платформы.
-
Откройте yaml-файл с манифестом для Ingress приложения и добавьте в него аннотации:
apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: myappnamespace: <ml_platform_namespace>annotations:traefik.ingress.kubernetes.io/router.tls: "true"forecastle.stakater.com/expose: "true"forecastle.stakater.com/appName: MyApp # Название приложения, которое будет показано на стартовой страницеforecastle.stakater.com/group: MyAppsGroup # Группа на стартовой странице, в которую добавится приложениеforecastle.stakater.com/icon: <app_icon_url>Укажите:
<ml_platform_namespace>— пространство имен (Namespace) ML-платформы;<app_icon_url>— опционально: URL изображения для иконки приложения.
-
Примените изменения для Ingress:
kubectl apply -f <ingress.yaml>Укажите
<ingress.yaml>— имя yaml-файла с манифестом для Ingress. -
Откройте стартовую страницу ML-платформы и проверьте, что приложение добавилось:
https://myapp-<ml_platform_domain>Укажите
<ml_platform_domain>— URL видаyourdomain.mlops.selcloud.ru, который был выдан после подключения ML-платформы.
Настроить авторизацию для приложения
Если вы добавили приложение в ML-платформу, обязательно настройте авторизацию.
Настройка авторизации зависит от протоколов, которые поддерживает приложение:
- если приложение поддерживает авторизацию при помощи протоколов OIDC/OAuth2/SAML, создайте клиента Keycloak;
- если приложение не поддерживает протоколы OIDC/OAuth2/SAML или у приложения нет механизмов авторизации, используйте gogatekeeper — это sidecar для Keycloak.
Авторизация при помощи OIDC
Авторизация при помощи gogatekeeper
Создайте клиента Keycloak и настройте для приложения авторизацию через Keycloak ML-платформы. Когда пользователь авторизуется в приложении, клиенту Keycloak отправится запрос. Если он его провалидирует, пользователь сможет зайти в приложение. Подробнее об использовании Keycloak в ML-платформе в инструкции Управление пользователями в Keycloak.
-
Подключитесь к кластеру Managed Kubernetes, который был создан при подключении ML-платформы.
-
Создайте клиента Keycloak через панель управления Keycloak по адресу
https://keycloak-<ml_platform_domain>/admin/cmlp/console/или создайте yaml-файл с манифестом для объекта KeycloakClient.Пример манифеста:
apiVersion: keycloak.org/v1alpha1kind: KeycloakClientmetadata:name: myapp-clientnamespace: <ml_platform_namespace>spec:client:# Settingsenabled: trueclientId: "<appclient_name>"name: ""description: ''secret: "<password>"protocol: "openid-connect"redirectUris:- "https://<appclient_name>-.<ml_platform_namespace>/*" # URI, с которого будет происходить редирект в KeycloakrootUrl: "${authBaseUrl}"baseUrl: "/"publicClient: falsebearerOnly: falseserviceAccountsEnabled: falseconsentRequired: falsedirectAccessGrantsEnabled: trueimplicitFlowEnabled: falsefrontchannelLogout: falsestandardFlowEnabled: truesurrogateAuthRequired: falseuseTemplateConfig: trueuseTemplateMappers: true# ScopesuseTemplateScope: truefullScopeAllowed: falsedefaultClientScopes:- "profile"- "email"# RolesprotocolMappers:- config:access.token.claim: "true"id.token.claim: "false"included.custom.audience: <appclient_name>consentRequired: falsename: Audience-forecastle-cmlpprotocol: openid-connectprotocolMapper: oidc-audience-mapperrealmSelector:matchLabels:app.kubernetes.io/name: keycloak-realm-cmlpapp.kubernetes.io/instance: keycloak-operatorУкажите:
<ml_platform_namespace>— пространство имен (Namespace) ML-платформы;<appclient_name>— уникальное имя клиента Keycloak;<password>— пароль для клиента Keycloak. Потребуется для настройки приложения.
-
Создайте клиента Keycloak:
kubectl apply -f <keycloakclient.yaml>Укажите
<keycloakclient.yaml>— имя yaml-файла с манифестом для создания клиента Keycloak. -
Проверьте, что клиент создан: откройте приложение Security Admin Console и перейдите в раздел Configure → Clients.
-
Настройте приложение на авторизацию через созданного клиента Keycloak:
- используйте python-библиотеку python-keycloak;
- или используйте Grafana и измените конфигурационный файл по примеру из документации Grafana.