Add an application to the ML platform
In the ML Platform, you can add additional applications using kubectl, helm, and kustomize.
You can open the application using a URL like https://myapp-yourdomain.mlops.selcloud.ru or add the application to the ML Platform start page.
For applications that will be accessible on the internet, you need to configure authorization.
Add a new application to the ML platform
To add a new application to the ML Platform, create an Ingress object. You do not need to create an Ingress Controller — the Traefik controller is pre-installed in the ML Platform on Managed Kubernetes clusters.
There is no need to obtain TLS certificates directly in the ML platform, as the certificate is installed on the reverse proxy.
-
Connect to the Managed Kubernetes cluster created when connecting the ML Platform.
-
Create a yaml file with a manifest for the Ingress object.
Example manifest:
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: 80Specify:
<ml_platform_namespace>— ML Platform namespace;<ml_platform_domain>— URL likeyourdomain.mlops.selcloud.ruissued after connecting the ML Platform.
-
Create an Ingress:
kubectl apply -f <ingress.yaml>Specify
<ingress.yaml>— the name of the YAML file with the Ingress manifest. -
Open the application at the address:
https://myapp-<ml_platform_domain>Specify
<ml_platform_domain>— URL likeyourdomain.mlops.selcloud.ruissued after connecting the ML Platform. -
Optional: add the application to the start page.
Add an application to the ML platform home page
The ML Platform start page is powered by the Forecastle tool. On the page, you can view all applications running by default in the Managed Kubernetes cluster.
If you added a new application to the ML Platform, it can also be added to the start page.
-
Connect to the Managed Kubernetes cluster created when connecting the ML Platform.
-
Open the yaml file with the manifest for the application Ingress and add annotations to it:
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 # App name shown on the start pageforecastle.stakater.com/group: MyAppsGroup # Group on the start page where the app will be addedforecastle.stakater.com/icon: <app_icon_url>Specify:
<ml_platform_namespace>— ML Platform namespace;<app_icon_url>— optional: URL of the image for the application icon.
-
Apply the changes for the Ingress:
kubectl apply -f <ingress.yaml>Specify
<ingress.yaml>— the name of the YAML file with the Ingress manifest. -
Open the ML platform home page and verify that the application has been added:
https://myapp-<ml_platform_domain>Specify
<ml_platform_domain>— URL likeyourdomain.mlops.selcloud.ruissued after connecting the ML Platform.
Configure authorization for the application
If you have added an application to the ML platform, be sure to configure authorization.
Authorization setup depends on the protocols supported by the application:
- if the application supports authorization using OIDC/OAuth2/SAML protocols, create a Keycloak client;
- if the application does not support OIDC/OAuth2/SAML protocols or has no authorization mechanisms, use gogatekeeper—this is a sidecar for Keycloak.
Authorization using OIDC
Authorization using gogatekeeper
Create a Keycloak client and configure authorization for the application via the ML Platform Keycloak. When a user logs in to the application, a request is sent to the Keycloak client. If validated, the user can access the application. Learn more about using Keycloak in the ML Platform in the Manage Keycloak users instructions.
-
Connect to the Managed Kubernetes cluster created when connecting the ML Platform.
-
Create a Keycloak client via the Keycloak Admin Console at
https://keycloak-<ml_platform_domain>/admin/cmlp/console/or create a YAML file with the manifest for the KeycloakClient object.Example manifest:
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 from which the redirect to Keycloak occursrootUrl: "${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-operatorSpecify:
<ml_platform_namespace>— ML Platform namespace;<appclient_name>— unique name of the Keycloak client;<password>— password for the Keycloak client. Required for application configuration.
-
Create a Keycloak client:
kubectl apply -f <keycloakclient.yaml>Specify
<keycloakclient.yaml>— the name of the YAML file with the manifest for creating the Keycloak client. -
Verify that the client is created: open the Security Admin Console application and go to Configure → Clients.
-
Configure the application for authorization via the created Keycloak client:
- use the python-keycloak Python library;
- or use Grafana and modify the configuration file following the example in the Grafana documentation.