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 Canonical Kubernetes, AKS, EKS, GKE, Openshift, and any kubeadm-deployed cluster.

Requirements

Charmed Kubeflow requires a running K8s cluster with the following:

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

You can install a different version of CKF by using the --channel option. See Supported versions 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 it, you must:

  1. Configure Dex to authenticate with the Identity Provider of your choice.
  2. Find the dashboard’s IP address.

Configure Dex

To configure Dex’s built-in connector, set credentials by configuring dex-auth with a username and a password:

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

To use an external Identity Provider, see Integrate with identity providers for more details.

Find the dashboard IP address

If the deployment uses a LoadBalancer, you can find the dashboard’s IP by running the following command:

kubectl -n kubeflow get svc istio-ingressgateway-workload -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

See kubectl get for more details.

If you have configured Istio Gateway to use a different gateway service type such as ClusterIP or NodePort, the dashboard should be accessible at that service’s IP. See Istio Gateway configurations for more information.

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 set up SSH for more details.

Log in

Once you have accessed the dashboard IP address, log in using the credentials matching the identity provider you are using.

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

The charm config public-url does not seem to exists anymore on ckf-1.9/stable

1 Like

Hey guys, I need some help,

I have installed everything correctly and no errors at all but I cannot access the UI

~$ kubectl -n kubeflow get svc istio-ingressgateway-workload
NAME                            TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                      AGE
istio-ingressgateway-workload   LoadBalancer   10.152.183.249   192.168.1.240   80:31363/TCP,443:31913/TCP   14h

:~$ ping 10.152.183.249
PING 10.152.183.249 (10.152.183.249) 56(84) bytes of data.
^C
--- 10.152.183.249 ping statistics ---
44 packets transmitted, 0 received, 100% packet loss, time 44055ms

:~$ ping 192.168.1.240
PING 192.168.1.240 (192.168.1.240) 56(84) bytes of data.
^C
--- 192.168.1.240 ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9200ms

@deezzir you are absolutely right, good catch. I have filed an issue to track this. Will potentially be resolved in the next release CKF 1.10.

hey @afrogrit, it does not look like you’ve got a LoadBalancer correctly configured (I can tell from the ExternalIP address). Is that the case?

If you actually have it correctly configured, could I ask you to file an issue here with as much detail as possible?

1 Like

you are right, I should have configured my LB properly, thanks

1 Like