knkski | 2024-12-04 11:43:39 UTC | #1 This guide describes the general steps required to install Charmed Kubeflow (CKF). CKF can be installed on any [CNCF certified](https://www.cncf.io/certification/software-conformance/#logos) Kubernetes (K8s), including [MicroK8s](https://microk8s.io/), AKS, EKS, GKE, Openshift and any `kubeadm`-deployed cluster. ## Requirements A running K8s cluster including these requirements: * 1.27-1.29 version. * A default [storage class](https://kubernetes.io/docs/concepts/storage/storage-classes/) configured. ## Bootstrap Juju CKF is deployed to Kubernetes with [Juju](https://juju.is/). Before deployment, Juju must be bootstrapped to the K8s cluster. For bootstrapping instructions, see [Get started with Juju](https://juju.is/docs/olm/get-started-with-juju). ## Create the `kubeflow` model To create a Juju model for CKF, run: ```bash juju add-model kubeflow ``` [note type="caution"] The model name must be `kubeflow`. [/note] See [Juju OLM | `add-model`](https://juju.is/docs/olm/juju-add-model) for more details. ## Deploy CKF To deploy the most recent stable version of CKF, run: ```bash juju deploy kubeflow --trust --channel=1.9/stable ``` See [Charmhub | `kubeflow`](https://charmhub.io/kubeflow) for more details. [note] It may take up to 20 minutes for all charms to become active. [/note] You can monitor the deployment status with Juju as follows: ```bash 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](#set-credentials-6) 2. [Access the dashboard IP address](#access-the-dashboard-ip-address-7) 3. [Log in](#log-in-8) ### Set credentials Configure `dex-auth` with a username and password: ```bash juju config dex-auth static-username= juju config dex-auth static-password= ``` See [`Juju config`](https://juju.is/docs/olm/juju-config) and [Dex configurations](https://charmhub.io/dex-auth/configurations) for more details. ### Access the dashboard IP address First, find the dashboard IP address by running this command: ```bash kubectl get services -n kubeflow ``` See [`kubectl get`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get) for more details. This IP is related to the [LoadBalancer](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer) service, applied by the [istio-gateway](https://charmhub.io/istio-gateway) charm. Depending on the used K8s substrate, these steps apply: - For [MicroK8s](https://microk8s.io/) with [`metallb`](https://microk8s.io/docs/addon-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](https://charmhub.io/istio-gateway/configurations?channel=1.22/stable) 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: ```bash 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 ``` [note] If DNS is required, use the resolvable address from `istio-ingressgateway`. [/note] [note] To access the dashboard remotely, you can obtain the IP over SSH and a SOCKS proxy. See [How to setup SSH](/t/10872) for more details. [/note] ### Log in Once you have accessed the dashboard IP address, log in using the credentials previously set. ------------------------- 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 ------------------------- afgambin | 2024-11-27 11:15:40 UTC | #11 -------------------------