Requirements for Pods and Services
To be a part of the service mesh, pods and services in a Kubernetes cluster must satisfy the following requirements:
Named ports: Service ports must be named. The port names must be of the form
<protocol>[-<suffix>]
with http, http2, grpc, mongo, or redis as the<protocol>
in order to take advantage of Istio's routing features. For example,name: http2-foo
orname: http
are valid port names, butname: http2foo
is not. If the port name does not begin with a recognized prefix or if the port is unnamed, traffic on the port will be treated as plain TCP traffic (unless the port explicitly usesProtocol: UDP
to signify a UDP port).Service association: If a pod belongs to multiple Kubernetes services, the services cannot use the same port number for different protocols, for instance HTTP and TCP.
Deployments with app and version labels: It is recommended that pods deployed using the Kubernetes
Deployment
have an explicitapp
label andversion
label in the deployment specification. Each deployment specification should have a distinctapp
label with a value indicating something meaningful, withversion
indicating the version of the app that the particular deployment corresponds to. Theapp
label is used to add contextual information in distributed tracing. Theapp
andversion
labels are also used to add contextual information in the metric telemetry collected by Istio.
See also
Instructions for installing the Istio sidecar in application pods automatically using the sidecar injector webhook or manually using istioctl CLI.
Instructions to download the Istio release.
Instructions to setup a Google Kubernetes Engine cluster for Istio.
Example multicluster GKE install of Istio.
IBM Cloud Kubernetes Service & IBM Cloud Private
Example multicluster between IBM Cloud Kubernetes Service & IBM Cloud Private.
Example multicluster IBM Cloud Private install of Istio.