部署 Bookinfo 範例
本頁說明如何部署範例應用程式,示範 Cloud Service Mesh。如未加入 Cloud Service Mesh,請參閱入門指南。
安裝 Cloud Service Mesh 時,系統會提供多個範例應用程式。本指南會逐步說明如何部署 BookInfo 範例。這是一個簡單的模擬書店應用程式,包含四個服務:產品網頁、書籍詳細資料、評論 (包含數個版本的評論服務) 及評分。這些服務皆使用 Cloud Service Mesh 管理。您可以在 Cloud Service Mesh 安裝目錄的 samples/bookinfo 中,找到本範例使用的原始碼和所有其他檔案。
啟用自動注入 Sidecar
啟用要用於注入的命名空間。步驟取決於控制層實作方式。
代管 (TD)
- 將預設插入標籤套用至命名空間:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwrite受管理 (Istiod)
建議:執行下列指令,將預設插入標籤套用至命名空間:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwrite如果您是使用受管理 Istiod 控制平面的現有使用者: 建議您使用預設插入功能,但系統也支援以修訂版本為準的插入功能。請按照下列指示操作:
執行下列指令,找出可用的發布管道:
kubectl -n istio-system get controlplanerevision輸出結果會與下列內容相似:
NAME AGE asm-managed-rapid 6d7h注意:如果上述清單中出現兩個控制層修訂版本,請移除其中一個。叢集不支援多個控制層通道。
在輸出內容中,「
NAME」欄位下方的值是與 Cloud Service Mesh 版本適用的發布管道對應的修訂版本標籤。將修訂版本標籤套用至命名空間:
kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
叢集內
建議:執行下列指令,將預設插入標籤套用至命名空間:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwrite建議您使用預設插入方式,但系統也支援以修訂版本為準的插入方式: 請按照下列操作說明進行:
使用下列指令找出
istiod上的修訂版本標籤:kubectl get deploy -n istio-system -l app=istiod -o \ jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'將修訂版本標籤套用至命名空間。在下列指令中,
REVISION_LABEL是您在上一步記下的istiod修訂版本標籤值。kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
部署應用程式
現在 default 命名空間已啟用自動植入功能,當您部署 BookInfo 應用程式的服務時,系統會在每個服務旁植入補充 Proxy。
在安裝 Cloud Service Mesh 的電腦上,前往 Cloud Service Mesh 安裝目錄的根層級。如有需要,請下載叢集內安裝檔案,其中包含 bookinfo 範例應用程式,然後解壓縮。
使用
kubectl將應用程式部署至預設命名空間:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml執行下列指令,確認應用程式已正確部署:
kubectl get services輸出內容:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE details 10.0.0.31 <none> 9080/TCP 6m kubernetes 10.0.0.1 <none> 443/TCP 7d productpage 10.0.0.120 <none> 9080/TCP 6m ratings 10.0.0.15 <none> 9080/TCP 6m reviews 10.0.0.170 <none> 9080/TCP 6m
和
kubectl get pod輸出內容:
NAME READY STATUS RESTARTS AGE details-v1-1520924117-48z17 2/2 Running 0 6m productpage-v1-560495357-jk1lz 2/2 Running 0 6m ratings-v1-734492171-rnr5l 2/2 Running 0 6m reviews-v1-874083890-f0qf0 2/2 Running 0 6m reviews-v2-1343845940-b34q5 2/2 Running 0 6m reviews-v3-1813607990-8ch52 2/2 Running 0 6m
最後,為應用程式定義輸入閘道轉送:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml輸出內容:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
驗證應用程式部署作業
如要確認 BookInfo 應用程式是否正常運作,您需要將流量傳送至 Ingress 閘道。
如果您在 Google Distributed Cloud (僅限軟體) for VMware 上安裝 Cloud Service Mesh,請取得您在安裝 Cloud Service Mesh 後設定的 Ingress 閘道外部 IP 位址
如果您在 GKE 上安裝 Cloud Service Mesh,請按照下列步驟取得輸入閘道的外部 IP 位址:
kubectl get service istio-ingressgateway -n istio-system輸出內容:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
在本範例中,Ingress 服務的 IP 位址為
35.239.7.64。
試用應用程式
使用
curl檢查 BookInfo 應用程式是否正在執行:curl -I http://EXTERNAL_IP/productpage如果回應顯示
200,表示應用程式正常運作 Cloud Service Mesh。如要查看 BookInfo 網頁,請在瀏覽器中輸入下列網址:
http://EXTERNAL_IP/productpage請重新整理頁面幾次,您應該會看到產品頁面中顯示不同版本的評論,以循環配置方式呈現 (紅色星號、黑色星號、無星號)。
現在您已有產生流量的應用程式,可以探索 Google Cloud 控制台中的 Cloud Service Mesh 頁面,查看指標和其他可觀測性功能。
正在清除所用資源
完成 Bookinfo 範例實驗後,請從叢集中移除該範例。
使用下列指令碼解除安裝 Bookinfo:
samples/bookinfo/platform/kube/cleanup.sh確認關機:
kubectl get virtualservices #-- there should be no virtual services kubectl get destinationrules #-- there should be no destination rules kubectl get gateway #-- there should be no gateway kubectl get pods #-- the Bookinfo pods should be deleted