Kubernetes support:
Kubeflow does not yet support version 1.22 of Kubernetes. For microK8s, Charmed Kubernetes and others, please use version 1.21, which you can install with the command
snap install microk8s --classic --channel=1.21/stable
This guide lists the steps necessary to install Kubeflow on any conformant Kubernetes, including AKS, EKS, GKE, Openshift and any kubeadm-deployed cluster, provided that you have access to it via kubectl
.
Quickstart guide: To get up and running and try out Charmed Kubeflow on MicroK8s and Ubuntu in around 30 minutes or less, follow the quickstart guide.
1. Install the Juju client
On Linux, install juju
via snap with the following command:
snap install juju --classic
Alternatively, brew install juju
on macOS or download the Windows installer.
2. Connect Juju to your Kubernetes cluster
In order to operate workloads in your Kubernetes cluster with Juju, you have to add your cluster to the list of clouds in juju via the add-k8s
command.
If your Kubernetes config file is in the standard location (~/.kube/config
on Linux), and you only have one cluster, you can simply run:
juju add-k8s myk8s
If your kubectl config file contains multiple clusters, you can specify the appropriate one by name:
juju add-k8s myk8s --cluster-name=foo
Finally, to use a different config file, you can set the KUBECONFIG
environment variable to point to the relevant file. For example:
KUBECONFIG=path/to/file juju add-k8s myk8s
For more details, see the Juju documentation.
3. Create a controller
To operate workloads on your Kubernetes cluster, Juju uses controllers. You can create a controller with the bootstrap
command:
juju bootstrap myk8s my-controller
This command will create a couple of pods under the my-controller
namespace. You can see your controllers with the juju controllers
command.
You can read more about controllers in the Juju documentation.
4. Create a model
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.
You need to create a model and give it the name kubeflow
, with the add-model
command:
juju add-model kubeflow
You can list your models with the juju models
command.
5. Deploy Kubeflow
Requirements:
The minimum resources required to deploy kubeflow
are: 50Gb disk space, 14Gb RAM and 2 CPUs available to your Linux machine or VM.
If you have fewer resources, please deploy kubeflow-lite
.
Once you have a model, you can simply juju deploy
any of the provided Kubeflow bundles into your cluster.
For example, for the Kubeflow lite bundle, run:
juju deploy kubeflow-lite --trust
Congratulations, Kubeflow is now installing !
You can observe your Kubeflow deployment getting spun-up with the command:
watch -c juju status --color
6. Add RBAC role
Currently, in order to setup Kubeflow with Istio correctly when RBAC is enabled, you need to provide the istio-ingressgateway
operator access to Kubernetes resources. The following command will create the appropriate role:
kubectl patch role -n kubeflow istio-ingressgateway-operator -p '{"apiVersion":"rbac.authorization.k8s.io/v1","kind":"Role","metadata":{"name":"istio-ingressgateway-operator"},"rules":[{"apiGroups":["*"],"resources":["*"],"verbs":["*"]}]}'
7. Set URL in authentication methods
A final step to enable your Kubeflow dashboard access is to provide the istio-ingressgateway public URL to dex-auth and oidc-gatekeeper via the following commands:
juju config dex-auth public-url=http://<URL>
juju config oidc-gatekeeper public-url=http://<URL>
Where <URL>
is the hostname that the Kubeflow dashboard responds to. For example, in a typical MicroK8s installation, this URL is http://10.64.140.43.nip.io
. Note that when you have set up DNS, you should use the resolvable address used by istio-ingressgateway.
MicroK8s:
When evaluating Charmed Kubeflow using MicroK8s, you can enable the MetalLB add-on in order to expose the istio-ingressgateway:
microk8s enable storage dns metallb:10.64.140.43-10.64.140.49
Alternatively, follow the video guide
Having issues?
If you face any difficulties following these instructions, please create an issue here.