OpenShift
Follow these instructions to prepare an OpenShift cluster for Istio.
By default, OpenShift doesn’t allow containers running with user ID 0. You must enable containers running with UID 0 for Istio’s service accounts by running the command below. Make sure to replace istio-system
if you are deploying Istio in another namespace:
$ oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
Install Istio using the OpenShift profile:
$ istioctl install --set profile=openshift
After installation is complete, expose an OpenShift route for the ingress gateway.
$ oc -n istio-system expose svc/istio-ingressgateway --port=http2
Security context constraints for application sidecars
The Istio sidecar injected into each application pod runs with user ID 1337, which is not allowed by default in OpenShift. To allow this user ID to be used, execute the following commands. Replace <target-namespace>
with the appropriate namespace.
$ oc adm policy add-scc-to-group anyuid system:serviceaccounts:<target-namespace>
When removing your application, remove the permissions as follows.
$ oc adm policy remove-scc-from-group anyuid system:serviceaccounts:<target-namespace>
Additional requirements for the application namespace
CNI on OpenShift is managed by Multus
, and it requires a NetworkAttachmentDefinition
to be present in the application namespace in order to invoke the istio-cni
plugin. Execute the following commands. Replace <target-namespace>
with the appropriate namespace.
$ cat <<EOF | oc -n <target-namespace> create -f -
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: istio-cni
EOF
When removing your application, remove the NetworkAttachmentDefinition
as follows.
$ oc -n <target-namespace> delete network-attachment-definition istio-cni