Install Kubeflow

You can easily install Kubeflow on top of any conformant Kubernetes using the Juju Operator Lifecycle Manager.

  1. Install the Juju OLM:

    snap install --classic juju
    

    If you are in a system that does not support snaps, see the Juju documentation for more installation options.

  2. Introduce Juju to your Kubernetes deployment:

    juju add-k8s myk8scloud
    

    where myk8scloud is a unique name you give to your Kubernetes cluster.

    If you are on AKS, EKS, or GKE, append --aks, --eks, or --gke. For multiple clusters, non-standard kubeconfig locations, or other advanced configuration scenarios, see the Juju cloud documentation.

  3. Bootstrap Juju to your cluster:

    juju bootstrap myk8scloud my-controller
    

    where my-controller is a name that you pick that’s easy for you to remember, and myk8scloud is the cloud name you used above.

  4. Create a model:

    juju add-model kubeflow
    
  5. Deploy Kubeflow:

    juju deploy kubeflow
    

    Note:
    It is recommended that you have at least 2 CPUs, 14Gb of RAM, and 50Gb of disk available on your Linux machine or VM to install the full Kubeflow bundle. If you have fewer resources, try juju deploy kubeflow-lite or juju deploy kubeflow-edge instead.

Kubeflow will be deployed into a namespace named after the model created in the previous step (we recommend you use ‘kubeflow’ as specified above).

Congratulations, Kubeflow is now installing!

You can observe your Kubeflow deployment getting spun-up with the command:

watch -c juju status --color

Note: There is currently a manual step to apply the correct role for the istio-ingressgateway. You can use the following command to create it:

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":["*"]}]}'

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