How to customise your Kubeflow deployment
This document describes ways how you can customize the Kubeflow deployment by either enhancing it with other charms or editing existing ones.
- Extend Bundle with other charms
- Exposing the Kubeflow with Ingress
But not everybody’s needs are the same, and one of the benefits of deploying Charmed Kubeflow is that it is straightforward to mix and match the components of Kubeflow you actually need.
This approach starts with the different Kubeflow bundles at install time, but there is no need to stick with what you initially installed
Once you have familiarised yourself with all that Kubeflow can offer, you can quickly add any application inside Kubeflow to your current bundle.
You could, for example, start with the Kubeflow lite bundle and add Katib, the hyperparameter tuning piece of Kubeflow, later on. To do this you just need to run these commands:
juju deploy katib-controller juju deploy katib-db-manager juju deploy katib-db juju deploy katib-ui
You should also integrate applications that have been deployed with these commands:
juju add-relation katib-db-manager katib-db juju add-relation istio-pilot katib-ui
Even the full bundle can be extended with any of the many Kubeflow applications.Ingress resource in you cluster. Here is how you can achieve this: nginx-ingress-controller).
microk8s enable ingress
In case of other Kubernetes deployments you can install the same controller (e.g. with helm instructions) . If you are running Kubernetes as a service on the public cloud provider, you should always check for recommended ingress controllers (e.g. for AWS)
git clone email@example.com:canonical/bundle-kubeflow.git
Go to desired relase folder
Note: kubeflow-lite is a strip version of kubeflow which is ideal for experimentation.
Now you should edit the the
bundle.yaml file with following section:
istio-ingressgateway: series: kubernetes charm: istio-gateway channel: latest/edge scale: 1 trust: true _github_repo_name: istio-operators options: kind: ingress gateway_service_type: ClusterIP istio-pilot: series: kubernetes charm: istio-pilot channel: latest/edge scale: 1 trust: true _github_repo_name: istio-operators options: default-gateway: kubeflow-gateway
Now you can deploy the bundle (before make sure do remove kubelfow deployment as this will deploy the whole bundle again).
juju-deployer -c bundle.yaml kubeflow
Wait until components are in active state (
juju status --watch 5s)
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kubeflow-ingress namespace: kubeflow spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: istio-ingressgateway-workload port: number: 80
You can create TLS ingress if you have needed certificates (follow this guide)
Last updated 8 days ago.