knkski | 2023-09-19 13:05:23 UTC | #1 Charmed Kubeflow (CKF) can be installed on any [CNCF certified](https://www.cncf.io/certification/software-conformance/#logos) Kubernetes, including AKS, EKS, GKE, Openshift and any `kubeadm`-deployed cluster. **Contents:** 1. [Prerequisites](#heading--prerequisites) 1. [Bootstrap Juju](#heading--get-a-juju-controller-in-a-kubernetes-cluster) 1. [Create a model called `kubeflow`](#heading--create-a-model-called-kubeflow) 1. [Deploy the `kubeflow` bundle](#heading--deploy-the-kubeflow-bundle) 1. [Access the Kubeflow dashboard](#heading--access-the-kubeflow-dashboard)

Prerequisites

It is assumed you have a Kubernetes cluster running. The cluster must meet these requirements: * be version 1.22, 1.23, or 1.24 * have a (default) storage class configured * have dns configured * for accessing the dashboard, have a LoadBalancer and Ingress

Bootstrap Juju

Charmed Kubeflow is deployed to Kubernetes (K8s) with Juju. Before deployment, Juju must first be bootstrapped to the K8s cluster. For bootstrapping instructions, see [Juju OLM | Get started wtih the Juju OLM](https://juju.is/docs/olm/get-started-with-juju).

Create a model called `kubeflow`

To create a Juju model for Charmed Kubeflow, run: ```bash juju add-model kubeflow ``` [note type="caution" status="Caution"] The model name must be `kubeflow` for deploying Charmed Kubeflow. [/note] > See more: [Juju OLM | `juju add-model`](https://juju.is/docs/olm/juju-add-model) To view the newly created model, run: ```bash juju models ``` > See more: [Juju OLM | `juju models`](https://juju.is/docs/olm/juju-models)

Deploy the `kubeflow` bundle

To deploy the most recent stable version of Charmed Kubeflow: ```bash juju deploy kubeflow --trust ``` > See more: [Charmhub | `kubeflow`](https://charmhub.io/kubeflow) It may take up to an hour for all charms to become active. To monitor the system with Juju: ```bash watch -c juju status --color ``` To monitor the K8s pods directly: ```bash watch kubectl get pods -n kubeflow ```

Access the Kubeflow dashboard

To access the Kubeflow dashboard, you need to find the IP, set the credentials and then use them to log in to the dashboard. - [Find the IP address](#heading--find-the-ip-address) - [Set credentials](#heading--set-credentials) - [Access the dashboard and log in](#heading--access-the-dashboard-and-log-in)

Find the IP address

To find the IP address of the Kubeflow dashboard, run the code: ```bash kubectl get services -n kubeflow ``` The IP you need is the one attached to the `istio-ingressgateway` component. [note type=information] **If you're using MicroK8s, with the typical `metallb` add-on:**
You don't need to do this. The URL is always `http://10.64.140.43.nip.io`. Note that, if you have set up DNS, you should use the resolvable address used by `istio-ingressgateway`. [/note] > See more: [Kubernetes | `kubectl get`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get)

Set credentials

Use the IP address you just obtained to set the URL in the `dex-auth` and `oidc-gatekeeper` components: ```bash juju config dex-auth public-url=http:// juju config oidc-gatekeeper public-url=http:// ``` Configure `dex-auth` with a username and password: ```bash juju config dex-auth static-username= juju config dex-auth static-password= ``` > See more: [Juju OLM | `juju config`](https://juju.is/docs/olm/juju-config), [Charmhub > `dex-auth` > Configure](https://charmhub.io/dex-auth/configure)

Access the dashboard and log in

The Kubeflow dashboard is acessed using the IP found in the previous step, appending `nip.io`, for example: `http://10.64.140.43.nip.io`. If accessing the Dashboard remotely, this URL can be made available over SSH and a SOCKS proxy - see [How to setup SSH](/t/10872) for steps. ------------------------- sabdfl | 2020-11-10 06:32:03 UTC | #2 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? ------------------------- pedroleaoc | 2021-06-03 23:08:16 UTC | #4 ------------------------- zmraul | 2022-01-21 15:18:56 UTC | #5 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. ------------------------- evilnick | 2022-01-25 16:15:07 UTC | #6 Thanks for pointing this out, for some k8s that could be an issue so I will swap it around ------------------------- natalia-nowakowska | 2022-02-12 20:37:03 UTC | #7 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'. ------------------------- rohanrehman | 2022-11-30 14:08:43 UTC | #8 Has this been tested on 22.04? Jesus! what an ordeal. #NotaQuickStart ------------------------- ca-scribner | 2022-11-30 15:41:14 UTC | #9 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! ------------------------- rohanrehman | 2022-12-01 03:06:38 UTC | #10 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 -------------------------