General installation

This guide describes the general steps required to install Charmed Kubeflow (CKF).

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

Requirements

A running K8s cluster including these requirements:

Bootstrap Juju

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

Create the kubeflow model

To create a Juju model for CKF, run:

juju add-model kubeflow

The model name must be kubeflow.

See Juju OLM | add-model for more details.

Deploy CKF

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.

You can monitor the deployment status with Juju as follows:

juju status --watch 5s

Access CKF dashboard

You can interact with CKF using its central dashboard, accessed through an IP address. To access the dashboard, you need to do the following:

  1. Set credentials
  2. Access the dashboard IP address
  3. Log in

Set credentials

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 Dex configurations for more details.

Access the dashboard IP address

First, find the dashboard IP address by running this command:

kubectl get services -n kubeflow

See kubectl get for more details.

This IP is related to the LoadBalancer service, applied by the istio-gateway charm.

Depending on the used K8s substrate, these steps apply:

  • For MicroK8s with metallb add-on enabled, the dashboard is accessible at the LoadBalancer IP, typically http://10.64.140.43.nip.io. Otherwise, it should be accessible at the Cluster or NodePort IP when configured. See Istio Gateway configurations for more information.

  • For other K8s, you can make the dashboard accessible by configuring its public URL to be the same as the LoadBalancer’s public IP. You can do so as follows:

PUBLIC_URL="http://$(kubectl -n kubeflow get svc istio-ingressgateway-workload -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
echo PUBLIC_URL: $PUBLIC_URL

juju config dex-auth public-url=$PUBLIC_URL
juju config oidc-gatekeeper public-url=$PUBLIC_URL

If DNS is required, use the resolvable address from istio-ingressgateway.

To access the dashboard remotely, you can obtain the IP over SSH and a SOCKS proxy. See How to setup SSH for more details.

Log in

Once you have accessed the dashboard IP address, log in using the credentials previously set.

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