Install Kubeflow on any Kubernetes

Charmed Kubeflow is compatible with any conformant Kubernetes, including AKS, EKS, GKE, MicroK8s, Charmed Kubernetes, and any kubeadm-deployed cluster.

You can get started with Charmed Kubeflow in a few easy steps. Start by bootstrapping Juju onto your Kubernetes with these instructions:

https://juju.is/docs/kubernetes

Next, add a kubeflow model to the Juju controller

juju add-model kubeflow

You should now be able to run juju status and see output that looks like this:

Model      Controller  Cloud/Region        Version  SLA          Timestamp
kubeflow   uk8s        microk8s/localhost  2.8.6    unsupported  16:20:00Z

Model "admin/kubeflow" is empty.

You are now ready to deploy the Kubeflow bundle with this command:

juju deploy kubeflow

Note that you can also deploy kubeflow-lite or kubeflow-edge for smaller bundle sizes if your Kubernetes is resource-constrainted.

If you have juju-wait installed (sudo snap install juju-wait --classic), you can run this command to wait until Kubeflow is done deploying:

juju wait -wv

Otherwise, you can wait for the deploy to finish with this command:

kubectl wait -nkubeflow --for=condition=Ready pod --timeout=-1s --all

As of right now, the following steps are necessary. Soon they won’t be, and you’ll have Charmed Kubeflow set up and ready to go!

NOTE: $PUBADDR below may be dependent on your setup. In many cases, it can be viewed with this command: kubectl get services -nkubeflow -ljuju-app=ambassador -o=jsonpath='{.items[*].status.loadBalancer.ingress[*].ip}'

  • juju config dex-auth public-url=http://$PUBADDR:80
  • juju config oidc-gatekeeper public-url=http://$PUBADDR:80
  • juju config ambassador juju-external-hostname=$PUBADDR
  • juju expose ambassador
    • If full or lite bundle