部署在線書店bookinfo
在線書店-bookinfo
該應用由四個單獨的微服務構成,這個應用模仿在線書店的一個分類,顯示一本書的信息,頁面上會顯示一本書的描述,書籍的細節(ISBN、頁數等),以及關于這本書的一些評論。
Bookinfo應用分為四個單獨的微服務
1)productpage這個微服務會調用details和reviews兩個微服務,用來生成頁面;
2)details這個微服務中包含了書籍的信息;
3)reviews這個微服務中包含了書籍相關的評論,它還會調用ratings微服務;
4)ratings這個微服務中包含了由書籍評價組成的評級信息。
reviews微服務有3個版本
1)v1版本不會調用ratings服務;
2)v2版本會調用ratings服務,并使用1到5個黑色星形圖標來顯示評分信息;
3)v3版本會調用ratings服務,并使用1到5個紅色星形圖標來顯示評分信息。
下圖展示了這個應用的端到端架構
Bookinfo應用中的幾個微服務是由不同的語言編寫的。這些服務對istio并無依賴,但是構成了一個有代表性的服務網格的例子:它由多個服務、多個語言構成,并且reviews服務具有多個版本。
要在Istio中運行這一應用,無需對應用自身做出任何改變。 只要簡單的在 Istio 環境中對服務進行配置和運行,具體一點說就是把 Envoy sidecar 注入到每個服務之中。 最終的部署結果將如下圖所示:
istio默認自動注入 sidecar,需要為default命名空間打上標簽istio-injection=enabled
kubectl label namespace default istio-injection=enabled
上傳bookinfo鏡像到harbor
使用kubectl部署應用,將kube下的鏡像替換為harbor的鏡像
cd istio/istio-1.18.2/samples/bookinfo/platform/kube
sed -i 's/docker.io/172.16.80.140/g' *
grep 172 *
kubectl apply -f bookinfo.yaml
kubectl get pods
kubectl get svc
由上圖可以看出,新生成的pod都有兩個容器
將svc productpage的type修改為NodePort,通過瀏覽器訪問
istio也創建了幾個對應的svc
kubectl get svc -n istio-system
這幾個svc代理對應到istio的幾個pod
創建網關和虛擬服務
cd samples/bookinfo/networking
kubectl apply -f bookinfo-gateway.yaml
kubectl get svc -n istio-system
刷新頁面