Note: The following guide is only for RKE provisioned clusters.

If you have restrictive Pod Security Policies enabled, then Istio may not be able to function correctly, because it needs certain permissions in order to install itself and manage pod infrastructure. In this section, we will configure a cluster with PSPs enabled for an Istio install, and also set up the Istio CNI plugin.

The Istio CNI plugin removes the need for each application pod to have a privileged NET_ADMIN container. For further information, see the Istio CNI Plugin docs. Please note that the Istio CNI Plugin is in alpha.

1. Configure the System Project Policy to allow Istio install

  1. From the main menu of the Dashboard, select Projects/Namespaces.
  2. Find the Project: System project and select the ⋮ > Edit.
  3. Change the Pod Security Policy option to be unrestricted, then click Save.

2. Install the CNI Plugin in the System Project

  1. From the main menu of the Dashboard, select Projects/Namespaces.
  2. Select the Project: System project.
  3. Choose Tools > Catalogs in the navigation bar.
  4. Add a catalog with the following:
    1. Name: istio-cni
    2. Catalog URL: https://github.com/istio/cni
    3. Branch: The branch that matches your current release, for example: release-1.4.
  5. From the main menu select Apps
  6. Click Launch and select istio-cni
  7. Update the namespace to be “kube-system”
  8. In the answers section, click “Edit as YAML” and paste in the following, then click launch:
  1. ---
  2. logLevel: "info"
  3. excludeNamespaces:
  4. - "istio-system"
  5. - "kube-system"

3. Install Istio

Follow the primary instructions, adding a custom answer: istio_cni.enabled: true.

After Istio has finished installing, the Apps page in System Projects should show both istio and istio-cni applications deployed successfully. Sidecar injection will now be functional.