How to install Charmed Kubeflow
This guide shows how to install Charmed Kubeflow on any conformant Kubernetes, including AKS, EKS, GKE, Openshift and any
- Get a Juju controller in a Kubernetes cluster
- Create a model called
- Deploy the
- Access the Kubeflow dashboard
Get a Juju controller in a Kubernetes cluster
To deploy Charmed Kubeflow, you need a Juju controller deployed in a Kubernetes instance. There are many ways to satisfy this, such as using your own local Kubernetes cluster or deploying into a managed Kubernetes in a cloud.
If you do not have access to a Kubernetes cluster:
See Get started with Charmed Kubeflow for an example of how to deploy a Juju onto a local Kubernetes cluster using MicroK8s.
If you do have a Kubernetes cluster but have not deployed Juju to it:
See Juju OLM | Get started wtih the Juju OLM.
Requirements of your Kubernetes instance
Charmed Kubeflow requires your Kubernetes instance to:
- be version 1.22
- have a (default) storage class configured
- have dns configured
- for accessing the dashboard, have a LoadBalancer and Ingress
Create a model called
To create a Juju model for Charmed Kubeflow, run:
Charmed Kubeflow must be deployed to a model named
juju add-model kubeflow
This creates a model named
kubeflow through our Juju controller and sets the model as active. A model in Juju is a blank canvas where your operators will be deployed, and it holds a 1:1 relationship with a Kubernetes namespace.
See more: Juju OLM |
To view the newly created model, run:
See more: Juju OLM |
To install the most recent stable version of Charmed Kubeflow, deploy the
juju deploy kubeflow --trust
See more: Charmhub |
Congratulations, Kubeflow is now installing!
Depending on your internet speed, this may take 10-15 minutes. You can observe your Kubeflow deployment getting spun-up with the command:
watch -c juju status --color
and see the corresponding resources in your Kubernetes cluster with the command:
watch kubectl get pods -n kubeflow
Access the Kubeflow dashboard
To access the Kubeflow dashboard, you need to prepare the IP and the credentials and then use them to log in to the dashboard.
- Find the IP address and set the access credentials
- Use the IP address to access the dashboard and log in
Find the IP address and set the access credentials
Find the IP address. To find the IP address of the Kubeflow dashboard for your deployment, run the code below (where
kubeflow is the name you gave to your Juju model, and hence the namespace of your Kubeflow deployment).
If you’re using MicroK8s, with the typical
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
kubectl get services -n kubeflow
The IP you need is the one attached to the
See more: Kubernetes |
Use the IP to configure the authentication components. Now, use the IP address you just obtained to set the URL in the
oidc-gatekeeper components of the newly installed
kubeflow, as below:
juju config dex-auth public-url=http://<IP address> juju config oidc-gatekeeper public-url=http://<IP address>
Also configure the authentication components with a username and password. Configure the
dex-auth component with a username and password:
juju config dex-auth static-username=<new username> juju config dex-auth static-password=<new password>
See more: Juju OLM |
juju config, Charmhub >
Use the IP address to access the dashboard and log in
The instructions for how to access the dashboard depend on whether your deployment is local or remote.
For local Kubeflow deployments, such as in a workstation, you can simply access the link found in the previous step, appending
nip.io, for example:
However, for remote deployments, or running on a virtual machine, creating a SOCKS proxy is required to access the dashboard. This can be done as follows:
Log out from the current session with the
Re-establish connection to the machine using
sshwith SOCKS proxy enabled through the
-D 9999parameter, as below:
ssh -D 9999 ubuntu@<machine_public_ip>
On your computer, go to
Settings > Network > Network Proxy, and enable SOCKS proxy pointing to:
On a new browser window, copy the link from the previous step with
.nip.ioappended at the end, for example:
Last updated 26 days ago.