Istio is a very useful service mesh. As such, it handles service-to-service communications.
It comes with addons, such as Prometheus, Grafana and Zipkin.
Having played with the 0.1.6 release, it seemed to be time to take another look at Istio and the current 0.6 release.
Istio imposes some requirements (and suggestions) on pod specifications.
-
Required:
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 or name: http are valid port names, but name: 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 uses Protocol: UDP to signify a UDP port).
-
Recommended:
It is recommended that Pods deployed using the Kubernetes
Deployment
have an explicitapp
label in the Deployment specification. Each deployment specification should have a distinctapp
label with a value indicating something meaningful. Theapp
label is used to add contextual information in distributed tracing.
-
Kubernetes 1.9 features mutating webhooks, which are enabled by default.
[Manual proxy injection can be used for earlier versions of Kubernetes.]
-
Minikube version v0.25.0 or later is required for Kubernetes v1.9.
The plan of attack is as follows:
Can now proceed to Install Istio.
- Istio 0.6
- Kubernetes v1.9.0
- minikube v0.25.0
- kubectl (Client: v1.8.6, Server: v1.9.0)
- Docker 17.12.1-ce (Client and Server)
- Complete the Isto website tutorials
Inspired by:
http://blog.kubernetes.io/2017/05/managing-microservices-with-istio-service-mesh.html