Перейти к основному содержимому
Добавить приложение в ML-платформу
Последнее изменение:

Добавить приложение в 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).

  1. Подключитесь к кластеру Managed Kubernetes, который был создан при подключении ML-платформы.

  2. Создайте yaml-файл с манифестом для объекта Ingress.

    Пример манифеста:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: myapp
    namespace: <ml_platform_namespace>
    annotations:
    traefik.ingress.kubernetes.io/router.tls: "true"
    spec:
    tls:
    - hosts:
    - "myapp-<ml_platform_domain>"
    secretName: myapp-<ml_platform_domain>-cert
    rules:
    - host: "myapp-<ml_platform_domain>"
    http:
    paths:
    - path: /
    pathType: Prefix
    backend:
    service:
    name: myapp
    port:
    number: 80

    Укажите:

    • <ml_platform_namespace> — пространство имен (Namespace) ML-платформы;
    • <ml_platform_domain> — URL вида yourdomain.mlops.selcloud.ru, который был выдан после подключения ML-платформы.
  3. Создайте Ingress:

    kubectl apply -f <ingress.yaml>

    Укажите <ingress.yaml> — имя yaml-файла с манифестом для Ingress.

  4. Откройте приложение по адресу:

    https://myapp-<ml_platform_domain>

    Укажите <ml_platform_domain> — URL вида yourdomain.mlops.selcloud.ru, который был выдан после подключения ML-платформы.

  5. Настройте авторизацию для приложения.

  6. Опционально: добавьте приложение на стартовую страницу.

Добавить приложение на стартовую страницу ML-платформы

Стартовая страница ML-платформы работает с помощью инструмента Forecastle. На странице можно посмотреть все приложения, которые по умолчанию запущены в кластере Managed Kubernetes.

Если вы добавили новое приложение в ML-платформу, его так же можно разместить на стартовой странице.

  1. Подключитесь к кластеру Managed Kubernetes, который был создан при подключении ML-платформы.

  2. Откройте yaml-файл с манифестом для Ingress приложения и добавьте в него аннотации:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: myapp
    namespace: <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 изображения для иконки приложения.
  3. Примените изменения для Ingress:

    kubectl apply -f <ingress.yaml>

    Укажите <ingress.yaml> — имя yaml-файла с манифестом для Ingress.

  4. Откройте стартовую страницу 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.

Создайте клиента Keycloak и настройте для приложения авторизацию через Keycloak ML-платформы. Когда пользователь авторизуется в приложении, клиенту Keycloak отправится запрос. Если он его провалидирует, пользователь сможет зайти в приложение. Подробнее об использовании Keycloak в ML-платформе в инструкции Управление пользователями в Keycloak.

  1. Подключитесь к кластеру Managed Kubernetes, который был создан при подключении ML-платформы.

  2. Создайте клиента Keycloak через панель управления Keycloak по адресу https://keycloak-<ml_platform_domain>/admin/cmlp/console/ или создайте yaml-файл с манифестом для объекта KeycloakClient.

    Пример манифеста:

    apiVersion: keycloak.org/v1alpha1
    kind: KeycloakClient
    metadata:
    name: myapp-client
    namespace: <ml_platform_namespace>
    spec:
    client:
    # Settings
    enabled: true
    clientId: "<appclient_name>"
    name: ""
    description: ''
    secret: "<password>"
    protocol: "openid-connect"
    redirectUris:
    - "https://<appclient_name>-.<ml_platform_namespace>/*" # URI, с которого будет происходить редирект в Keycloak
    rootUrl: "${authBaseUrl}"
    baseUrl: "/"
    publicClient: false
    bearerOnly: false
    serviceAccountsEnabled: false
    consentRequired: false
    directAccessGrantsEnabled: true
    implicitFlowEnabled: false
    frontchannelLogout: false
    standardFlowEnabled: true
    surrogateAuthRequired: false
    useTemplateConfig: true
    useTemplateMappers: true
    # Scopes
    useTemplateScope: true
    fullScopeAllowed: false
    defaultClientScopes:
    - "profile"
    - "email"
    # Roles
    protocolMappers:
    - config:
    access.token.claim: "true"
    id.token.claim: "false"
    included.custom.audience: <appclient_name>
    consentRequired: false
    name: Audience-forecastle-cmlp
    protocol: openid-connect
    protocolMapper: oidc-audience-mapper
    realmSelector:
    matchLabels:
    app.kubernetes.io/name: keycloak-realm-cmlp
    app.kubernetes.io/instance: keycloak-operator

    Укажите:

    • <ml_platform_namespace> — пространство имен (Namespace) ML-платформы;
    • <appclient_name> — уникальное имя клиента Keycloak;
    • <password> — пароль для клиента Keycloak. Потребуется для настройки приложения.
  3. Создайте клиента Keycloak:

    kubectl apply -f <keycloakclient.yaml>

    Укажите <keycloakclient.yaml> — имя yaml-файла с манифестом для создания клиента Keycloak.

  4. Проверьте, что клиент создан. Откройте приложение Security Admin Console и перейдите в раздел ConfigureClients.

  5. Настройте приложение на авторизацию через созданного клиента Keycloak:

    • используйте python-библиотеку python-keycloak;
    • или используйте Grafana и измените конфигурационный файл по примеру из документации Grafana.