新米 Istio - 安裝篇

開始安裝

下載後會得到一個資料夾 istio-1.7.4 把他加入你的執行檔中吧

curl -L https://istio.io/downloadIstio | sh -

export PATH=$PWD/istio-1.7.4/bin:$PATH
istioctl version # 成功就是有囉

預設的 Profile 們有六個,我就先用 default 吧

default demo minimal remote empty preview
Core components
istio-egressgateway X
istio-ingressgateway X X X
istiod X X X X
istioctl profile list
istioctl install --set profile=default

裝好之後來實驗一下喔,開一個新的 namespce 並安裝官方範例 book info,裡面包含 4 個微服務

kubectl create namespcae istio-bookinfo

# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -n istio-bookinfo -f https://raw.githubusercontent.com/istio/istio/release-1.7/samples/bookinfo/platform/kube/bookinfo.yaml

目前的 pod 裡面都只有 1 個 Container,我們要注入 istio 的 envoy proxy 讓每個 Pod 裡面多一個 sidecar

> ~/istio » kubectl get po -n istio-bookinfo
NAME                              READY   STATUS    RESTARTS   AGE
details-v1-79c697d759-9kvrq       1/1     Running   0          3m41s
productpage-v1-65576bb7bf-w9gf6   1/1     Running   0          3m38s
ratings-v1-7d99676f7f-tq9kw       1/1     Running   0          3m40s
reviews-v1-987d495c-j655s         1/1     Running   0          3m40s
reviews-v2-6c5bf657cf-l595s       1/1     Running   0          3m39s
reviews-v3-5f7b9f4f77-4qdtb       1/1     Running   0          3m39s
kubectl label namespace istio-bookinfo istio-injection=enabled
kubectl get namespace -L istio-injection

# 重新部署,就把 Pod 都刪掉吧
kubectl delete (kubectl get all | grep pod | awk '{print $1}')

如果要關掉的話

kubectl label namespace default istio-injection-

再來看看,是不是每個 Pod 裡面都多一個 Container 啦~

> ~/istio » kubectl get pod
NAME                              READY   STATUS    RESTARTS   AGE
details-v1-79c697d759-lqt6k       2/2     Running   0          3m15s
productpage-v1-65576bb7bf-zwgqd   2/2     Running   0          3m15s
ratings-v1-7d99676f7f-fqvvd       2/2     Running   0          3m15s
reviews-v1-987d495c-kbc4z         2/2     Running   0          3m14s
reviews-v2-6c5bf657cf-749bn       2/2     Running   0          3m14s
reviews-v3-5f7b9f4f77-f7wvk       2/2     Running   0          3m14s

我們的服務目前長這樣

kubectl port-forward svc/productpage 9080:9080 -n istio-bookinfo

利用 Kaili 視覺化 traffic

# 詳細內容在 https://github.com/istio/istio/tree/1.7.0/samples/addons
kubectl apply -f samples/addons

檢查 namespace istio-system 內,多了 grafana, kiali, prometheus, tracing, zipkin 這幾個服務

來看看 kaili 喔~

port-forward svc/kiali 20001:20001 -n istio-system

kaili 可以用流量直接幫我們畫出 service 之間的關係圖

Reference

https://istio.io/latest/docs/setup/getting-started/ https://istio.io/latest/docs/setup/additional-setup/config-profiles/ https://istio.io/latest/docs/examples/bookinfo/