之前就有稍微提到在K3d的環境下安裝Istio,因此我們就依照先前所建立的環境開始後面的講解,Istio使用了sidecar pattern,因此我們必須先學會如何設定Sidecar Injection。
sidecar在Kubernetes有分為Automatic Sidecar Injection或者是Manual Sidecar Injection
Istio中的Automatic是利用Kubernetes Admission Controllers MutatingAdmissionWebhook
做法就是對Kubernetes Namespace下一個Label
kubectl label namespace <Your_Example Namespace> istio-injection=enabled
這樣Istio-sidecar-injector,就會將default sidecar proxy policy以及template建立起來,所以你在進行Deployment的部署,同時Istio會建立一個init-container Envoy Proxy。
kubectl apply --namespace=<Your_Example Namespace> samples/bookinfo/platform/kube/bookinfo.yaml
這邊被Automatic建立出來的Pod都會呈現2/2,這是因為istio-sidecar-injector,幫我們多建立一個init-container Envoy Proxy。
Manual Sidecar Injection就必須依靠 istioctl kube-inject,也就是必須利用istioctl CLI工具去進行進一步的設定,當初覺得還要多維護一套Injection方式就沒有選擇這個方案,不過有興趣的可以參考這邊。
當我們建立好服務,也將服務新增Sidecar Proxy,將服務也納管進Service Mesh,基本上到這邊都不會有什麼特別大的問題。但你如果有許多其他類型的應用,那你勢必還必須添加許多額外的Istio物件。基本的導入或者是應用都不會有太多的問題及困難,後面會開始介紹,加了Istio原先的Kubernetes服務需要改變什麼,以及有哪些Istio物件是必須添加的。