How to install Charmed Kubeflow on Kubernetes

Charmed Kubeflow (CKF) can be installed on any CNCF certified Kubernetes, including AKS, EKS, GKE, Openshift and any kubeadm-deployed cluster.

Prerequisites

A working Kubernetes (K8s) cluster is required. The cluster must meet these requirements:

Bootstrap Juju

CKF is deployed to Kubernetes with Juju. Before deployment, Juju must first be bootstrapped to the K8s cluster. For bootstrapping instructions, see Get started with the Juju OLM.

Create the kubeflow model

To create a Juju model for CKF, run:

juju add-model kubeflow
Caution:

The model name must be kubeflow for deploying Charmed Kubeflow.

See Juju OLM | juju add-model for more details.

To deploy the most recent stable version of CKF, run:

juju deploy kubeflow --trust --channel=1.9/stable

See Charmhub | kubeflow for more details.

It may take up to 20 minutes for all charms to become active.

To monitor the model with Juju:

juju status --watch 5s

Access the Kubeflow dashboard

To access the Kubeflow dashboard, you need to do the following:

Set credentials for a static user

Configure dex-auth with a username and password:

juju config dex-auth static-username=<new username>
juju config dex-auth static-password=<new password>

See juju config and Configure for more details.

Find the dashboard’s IP address and log in

To find the IP address of the Kubeflow dashboard, run::

kubectl get services -n kubeflow

See Kubernetes | kubectl get for more details.

The Charmed Kubeflow dashboard can be accessed using the IP attached to the istio-ingressgateway component. If you are using MicroK8s with the metallb add-on, the dashboard should be accessible at the LoadBalancer IP, typically http://10.64.140.43.nip.io. Otherwise, it should be accessible at the LoadBalancer IP, ClusterIP or NodePort when configured. You can refer to the gateway_service_type configuration option for more information.

If you have to set up DNS, you should use the resolvable address used by istio-ingressgateway.

If you are accessing the dashboard remotely, this URL can be made available over SSH and a SOCKS proxy — see How to setup SSH for more details.

After you have accessed the dashboard, log in using the static-username and static-password you configured in Set credentials for a static user.

Surely just one page will suffice, since Kubeflow would install the same on any K8s cluster, with an extra paragraph for the fact that it’s built in to MicroK8s?

1 Like

I think steps 6 and 7 are reversed. When installing on Charmed Kubernetes, the istio-ingressgateway operator doesn’t create an external IP address until the role it’s patched.

1 Like

Thanks for pointing this out, for some k8s that could be an issue so I will swap it around

Point 4 needs a small update: it says ‘You can create a model and give it a name, e.g. kubeflow’ while it has to be named exactly kubeflow, otherwise the deployment leads to one of the apps getting blocked with message ‘kubeflow-dashboard must be deployed to model named kubeflow: https://git.io/J6d35’.

2 Likes

Has this been tested on 22.04? Jesus! what an ordeal. #NotaQuickStart

Hey @rohanrehman,

I do use Charmed Kubeflow with 22.04 and don’t know of anything that blocks it. Do you have any details you could share to look into?

Thanks!

thanks for getting back. Adding juju bootstrap microk8s --agent-version="2.9.22" was the only solution that worked mind you… 2 clean installs (22.04 and 20.04), 32gig of ram (500GB SSD) on-prem bare metal.

full kubeflow was problematic

Any documentation on what features are missing in the kubeflow-lite?

From a kubeflow-lite deploy to kubeflow, will this destroy all containers and “start from scratch”.

Thanks