Upgrading Knative

How to upgrade knative for Seldon Deploy

Upgrading to 0.18

Most likely you are currently running 0.11 of knative. We suggest removing and installing a new version.

The official knative docs suggest upgrading versions one by one.

We suggest deleting the existing install and installing a new one in order to save time.

Note that knative serving 0.18 officially requires at least istio 1.4.10 but has been known to work with 1.2.10.

If you do not meet the minimum istio version, consider only upgrading knative eventing. Seldon Deploy can work with knative serving 0.11. To only upgrade eventing, modify the steps below to remove anything related to serving.

Note that we will delete all existing Triggers and kservices. But if these are just for Seldon Deploy then they can be recreated.

If you have InferenceServices running then there will be downtime for these resources (their kservices will be removed and not recreated until patching KFServing). Any outlier detectors should be deleted and recreated afterwards.

First remove deploy with helm delete -n seldon-system seldon-deploy

To remove knative 0.11 run:

#remove all knative eventing setup from seldon-logs namespace
kubectl label namespace seldon-logs knative-eventing-injection-
kubectl delete -n seldon-logs trigger.eventing.knative.dev/seldon-request-logger-trigger
kubectl delete broker -n seldon-logs default
kubectl delete -n seldon-logs inmemorychannel.messaging.knative.dev/default-kne-ingress
kubectl delete -n seldon-logs inmemorychannel.messaging.knative.dev/default-kne-trigger
kubectl delete -n seldon-logs -l eventing.knative.dev/broker=default
kubectl delete -n seldon-logs subscription.messaging.knative.dev/internal-ingress-default-db21c71f-6a5f-4216-81b2-bcedfba7d535
kubectl delete -n seldon-logs service.serving.knative.dev/seldon-request-logger

#eventing webhooks
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io sinkbindings.webhook.sources.knative.dev
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io webhook.eventing.knative.dev
kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io sinkbindings.webhook.sources.knative.dev
kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io config.webhook.eventing.knative.dev
kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io validation.webhook.eventing.knative.dev

#serving webhooks
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io webhook.serving.knative.dev
kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io config.webhook.serving.knative.dev
kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io validation.webhook.serving.knative.dev

kubectl delete --selector knative.dev/crd-install=true \
	--filename https://github.com/knative/serving/releases/download/v0.11.1/serving.yaml \
	--filename https://github.com/knative/eventing/releases/download/v0.11.0/eventing.yaml \
	--filename https://github.com/knative/serving/releases/download/v0.11.1/monitoring.yaml

kubectl delete \
	--filename https://github.com/knative/serving/releases/download/v0.11.1/serving.yaml \
	--filename https://github.com/knative/eventing/releases/download/v0.11.0/eventing.yaml \
	--filename https://github.com/knative/serving/releases/download/v0.11.1/monitoring.yaml

kubectl delete \
    ---filename https://github.com/knative/eventing/releases/download/v0.11.0/in-memory-channel.yaml

kubectl delete namespace knative-eventing
kubectl delete namespace knative-serving
kubectl delete namespace knative-monitoring

#ensure knative eventing crds are gone
kubectl delete crd inmemorychannels.messaging.knative.dev
kubectl delete crd brokers.eventing.knative.dev
kubectl delete crd triggers.eventing.knative.dev

Next install knative serving and eventing. We suggest using seldon-deploy-install/prerequisites-setup/knative/install_knative.sh from the scripts extracted in Getting Started > Download Installation Resources.

A knative broker has to be created in the seldon-logs namespace. We suggest using seldon-deploy-install/prerequisites-setup/efk/eventing_for_logs_ns.sh.

Seldon Core and KFServing both need to be patched to point to the new form of knative broker url. We suggest using seldon-deploy-install/prerequisites-setup/seldon-core/install_seldon_core.sh and seldon-deploy-install/prerequisites-setup/kfserving/install_kfserving.sh

Seldon Deploy itself can then be upgraded. This will create a new instance of the request logger and its Trigger.