CLUSTER_NAME must be lowercase and unique among any other Kubernetes
clusters in this IBM Cloud region.

CLUSTER_REGION can be any region where IKS is available. You can get a
list of all available regions via the
IBM Cloud documentation
or via ibmcloud cs regions.

CLUSTER_ZONE can be any zone that is available in the specified region
above. You can get a list of all avaible locations from the
IBM Cloud documentation
or by using ibmcloud cs zones after you set the region by using
ibmcloud cs region-set $CLUSTER_REGION.

Creating a Kubernetes cluster

To make sure the cluster is large enough to host all the Knative and Istio
components, the recommended configuration for a cluster is:

If you’re starting in a fresh account with no public and private VLANs, they
are created automatically for you. If you already have VLANs configured in
your account, get them via ibmcloud cs vlans --zone $CLUSTER_ZONE and
include the public/private VLAN in the cluster-create command:

It can take a while for your cluster to be deployed. Repeat the above
command until the state of your cluster is “normal”.

Point kubectl to the cluster:

ibmcloud cs cluster-config $CLUSTER_NAME

Follow the instructions on the screen to EXPORT the correct KUBECONFIG
value to point to the created cluster.

Make sure all nodes are up:

kubectl get nodes

Make sure all the nodes are in Ready state. You are now ready to install
Istio into your cluster.

With a Kuberntes cluster ready, you now have two choices on how to install
Knative: via a one-click “add-on” or manually.

Installing Knative using an IKS managed add-on

The easiest way to install it is using the Managed Knative add-on facility. This
one-click install process will install Knative, and Istio if not already
installed, and provide automatic updates and lifecycle management of your
Knative control plane.

You can get the add-on via the “Add-ons” tab of your Kubernetes cluster’s
console page, or via the command line:

Manually installing Knative on IKS

However, if you’d like to install Knative manually, see the instructions below.
Kind in mind that if you do not use the add-on mechanism then you will need to
manually manage the upgrade of your Istio and Knative installs yourself going
forward.

Installing Istio

If you prefer to install Istio manually, if your cloud provider doesn’t offer a
managed Istio installation, or if you’re installing Knative locally using
Minkube or similar, see the
Installing Istio for Knative guide.

You must install Istio on your Kubernetes cluster before continuing with these
instructions to install Knative.

Installing Knative

The following commands install all available Knative components as well as the
standard set of observability plugins. To customize your Knative installation,
see Performing a Custom Knative Installation.

If you are upgrading from Knative 0.3.x: Update your domain and static IP
address to be associated with the LoadBalancer istio-ingressgateway instead
of knative-ingressgateway. Then run the following to clean up leftover
resources:

If you have the Knative Eventing Sources component installed, you will also
need to delete the following resource before upgrading:

kubectl delete statefulset/controller-manager -n knative-sources

While the deletion of this resource during the upgrade process will not
prevent modifications to Eventing Source resources, those changes will not be
completed until the upgrade process finishes.

To install Knative, first install the CRDs by running the kubectl apply
command once with the -l knative.dev/crd-install=true flag. This prevents
race conditions during the install, which cause intermittent errors: