How to upgrade Kubeflow from 1.1 to 1.3

Version 1.3 of Kubeflow was released in March 2021, and the bundles and charms which make up Charmed Kubeflow followed swiftly after.

However, version 1.3 introduced some known breaking changes, so the upgrade path is not as straightforward as it might otherwise have been. It is recommended to simply deploy the latest version of Kubeflow rather than upgrade an existing installation. If there are compelling reasons to upgrade though, the following procedure can be followed.

Caution: As this upgrade process removes the relations between the Kubeflow components, there will be service interruption until the upgrade is complete.

1. Remove existing relations

Check you are using the correct Juju model where Kubeflow is deployed

juju models

The corresponding output will highlight the current model. You can switch to the appropriate model if required with:

juju switch kubeflow_model

… replacing ‘kubeflow_model’ with the name of the model containing the Kubeflow deployment you wish to upgrade.

The existing relations can then be removed. All the relations need to be removed. You can see the current relations by running:

juju status --relations

Rather than manually removing the relations one by one, it is faster to invoke a short script:

juju status --relations | grep regular | awk '{print $1" "$2}' | xargs -l juju remove-relation

2. Upgrade the charms

Individual charms can now be upgraded to the latest available versions. In some cases, charms have been replaced - upgrades to these are managed with the --switch option, which allows certain charms to be replaced by others. The charm upgrades shown here also target a specific version of the charm (the default 1.3 release version). These versions may be superseded by later revisions.

juju upgrade-charm katib-controller --switch cs:katib-controller-30
juju upgrade-charm katib-ui --switch cs:katib-ui-30
juju upgrade-charm katib-db --switch cs:~charmed-osm/mariadb-k8s-35
juju upgrade-charm katib-manager --switch cs:katib-db-manager-4
juju upgrade-charm pipelines-persistence --switch cs:kfp-persistence-7
juju upgrade-charm pipelines-api --switch cs:kfp-api-10
juju upgrade-charm admission-webhook --switch cs:admission-webhook-10
juju upgrade-charm argo-controller --switch cs:argo-controller-51
juju upgrade-charm dex-auth --switch cs:dex-auth-60
juju upgrade-charm istio-ingressgateway --switch cs:istio-ingressgateway-20
juju upgrade-charm istio-pilot --switch cs:istio-pilot-20
juju upgrade-charm jupyter-controller --switch cs:jupyter-controller-55
juju upgrade-charm jupyter-web --switch cs:jupyter-ui-9
juju upgrade-charm kubeflow-dashboard --switch cs:kubeflow-dashboard-56
juju upgrade-charm kubeflow-profiles --switch cs:kubeflow-profiles-52
juju upgrade-charm minio --switch cs:minio-55
juju upgrade-charm oidc-gatekeeper --switch cs:oidc-gatekeeper-54
juju upgrade-charm pipelines-db --switch cs:~charmed-osm/mariadb-k8s-35
juju upgrade-charm pipelines-scheduledworkflow --switch cs:kfp-schedwf-7
juju upgrade-charm pipelines-ui --switch cs:kfp-ui-10
juju upgrade-charm pipelines-viewer --switch cs:kfp-viewer-7
juju upgrade-charm pipelines-visualization --switch cs:kfp-viz-6
juju upgrade-charm pytorch-operator --switch cs:pytorch-operator-53
juju upgrade-charm tf-job-operator --switch cs:tfjob-operator-1

3. Remove outdated charms

Some charms which were part of version 1.1 are no longer required for 1.3 and should be removed:

juju remove-application metacontroller
juju remove-application metadata-api
juju remove-application metadata-db
juju remove-application metadata-envoy
juju remove-application metadata-grpc
juju remove-application metadata-ui
juju remove-application argo-ui
juju remove-application seldon-core

4. Deploy additional charms

Version 1.3 introduces some new charms and services which should now be deployed:

juju deploy cs:~spark-charmers/spark-2
juju deploy cs:mlmd-5
juju deploy cs:seldon-core-50 seldon-controller-manager

5. Add relations

The charms now require relations to be added again to complete a working deployment. You do not need to wait for all the charms to be deployed to add these relations.

juju add-relation argo-controller minio
juju add-relation dex-auth:oidc-client oidc-gatekeeper:oidc-client
juju add-relation istio-pilot:ingress dex-auth:ingress
juju add-relation istio-pilot:ingress jupyter-web:ingress
juju add-relation istio-pilot:ingress katib-ui:ingress
juju add-relation istio-pilot:ingress pipelines-ui:ingress
juju add-relation istio-pilot:ingress kubeflow-dashboard:ingress
juju add-relation istio-pilot:ingress oidc-gatekeeper:ingress
juju add-relation istio-pilot:ingress-auth oidc-gatekeeper:ingress-auth
juju add-relation istio-pilot:istio-pilot istio-ingressgateway:istio-pilot
juju add-relation katib-manager katib-db
juju add-relation pipelines-api pipelines-db
juju add-relation pipelines-api:kfp-api pipelines-persistence:kfp-api
juju add-relation pipelines-api:kfp-api pipelines-ui:kfp-api
juju add-relation pipelines-api:kfp-viz pipelines-visualization:kfp-viz
juju add-relation pipelines-api:object-storage minio:object-storage
juju add-relation pipelines-ui:object-storage minio:object-storage
juju add-relation kubeflow-profiles kubeflow-dashboard

You can check on the progress of the update by running:

juju status

Last updated 6 months ago.