Kubeflow

  • Kubeflow Charmers | bundle
  • Cloud
Channel Revision Published
latest/candidate 294 24 Jan 2022
latest/beta 430 30 Aug 2024
latest/edge 423 26 Jul 2024
1.9/stable 432 03 Dec 2024
1.9/beta 420 19 Jul 2024
1.9/edge 431 03 Dec 2024
1.8/stable 414 22 Nov 2023
1.8/beta 411 22 Nov 2023
1.8/edge 413 22 Nov 2023
1.7/stable 409 27 Oct 2023
1.7/beta 408 27 Oct 2023
1.7/edge 407 27 Oct 2023
juju deploy kubeflow --channel 1.9/stable
Show information

Platform:

This guide describes how you can manage profiles in Charmed Kubeflow (CKF).

In Kubeflow, a profile denotes a collection of resources, roles, and credentials. It must be owned by at least one user but can be shared among multiple ones. A user can also have multiple profiles.
The multi-tenancy component provides profile management.

For each profile, Kubeflow creates a namespace of the same name that encapsulates the resources specific to that profile. See Kubeflow profiles and namespaces for more details.

Charmed Kubeflow (CKF) facilitates profile management by automating the process of profile creation and initialisation.

Create a profile

  1. If you’re using juju < v.3.0:
    In a terminal, run the code below to enable the Juju actions feature flag:
export JUJU_FEATURES=actions-v2
  1. Get the username of the user used to log in to the dashboard. For example, if you’ve chosen to authenticate with the default identity provider Dex, this would be your Dex username.

  2. Think of a name for the profile you are creating.

If you want to limit the resources that will be available to this profile, also:

Define a resource quota by defining a variable (below, RQ) with the resource quota keys set to the desired values (feel free to adjust), as below:

RQ=$(cat <<END
{
  "hard": {
    "cpu": "2",
    "memory": "2Gi",
    "requests.nvidia.com/gpu": "1",
    "persistentvolumeclaims": "1",
    "requests.storage": "5Gi"
  }
}
END
)
  1. Create a user profile by running the create-profile action with the username and profilename keys, passing as values the username and profile name from the previous steps:
juju run kubeflow-profiles/0 create-profile username=<the authenticated username> profilename=<the new profile name>

If you want to limit the resources available to this profile:

Also use the resourcequota key, passing as a value the contents of the resource quota variable you defined earlier (in our case, RQ):

juju run kubeflow-profiles/0 create-profile username="<the authenticated username>" profilename="<the new profile name>" resourcequota="$RQ" --string-args

See more: Juju OLM | juju run, Charmed Kubeflow Profiles > Actions > create-profile

  1. Verify that the profile works by accessing the dashboard. (You’ll need the username you used above.) Once you are in, you should see the newly created user profile on the dashboard. The screenshot below shows this for a new profile with the name myprofile.

See more: How to access the Charmed Kubeflow dashboard

Initialise a profile

If you’ve created your profile using the Charmed Kubeflow Profiles create-profile action:

You do not need to do this step, as your profile has already been initialised.

To initialise a profile, open up a terminal and run the initialise-profile action with the profilename key set to the name of the existing profile that you wish to initialise.

juju run kubeflow-profiles/0 initialise-profile profilename=<profile name>

This will apply a set of credentials to the profile’s namespace that will enable you to use Minio, MLFlow, and Seldon, if you wish.

See more: Juju OLM | juju run, Charmed Kubeflow Profiles > Actions > initialise-profile


Expand to see the effect of initialising your profile on Notebooks

Once you’ve initialised your profile, if you go ahead to create a Jupyter Notebook, you should see two options, to allow access to Minio and MLFlow, as shown in the screenshot below.


Delete a profile

To delete an existing profile, follow the upstream documentation.

In case that was the only profile owned by your user, next time you log in, you will be prompted to create a namespace for your user.