在 Istio 中提供了一個 Bookinfo 的示例,用於演示微服務之間的調用,那麼如何在 Knative 中部署這個示例呢?本文將會介紹一下在 Knative 中部署 Bookinfo 微服務以及查看調用鏈追蹤信息。html
Bookinfo 這個示例應用由 4 個微服務組成。 Bookinfo 應用架構圖以下:
api
另外 reviews 微服務目前有3個版本:架構
首先開啓 Istio Sidecar 注入,咱們在 default 命名空間打上 istio-injection=enabled
的Label:app
kubectl label namespace default istio-injection=enabled
部署 Bookinfo Knative Service 服務, 簡單直接經過yaml文件一鍵拉起來,bookinfo.yaml:分佈式
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: details-v1 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-details-v1:1.15.0 ports: - containerPort: 9080 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: ratings-v1 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-ratings-v1:1.15.0 ports: - containerPort: 9080 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: reviews-v1 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v1:v1-aliyun ports: - containerPort: 9080 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: reviews-v2 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v2:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: RATINGS_HOSTNAME value: ratings-v1 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: reviews-v3 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v3:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: RATINGS_HOSTNAME value: ratings-v1 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: productpage-v1 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/productpage:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: DETAILS_HOSTNAME value: details-v1 - name: RATINGS_HOSTNAME value: ratings-v1 - name: REVIEWS_HOSTNAME value: reviews-v2
這裏須要說明幾點:ide
productpage 環境變量設置:微服務
reviews v2, v3環境變量設置。因爲 v2 和 v3 須要訪問 rate 進行評分, 所以須要設置對應的環境變量:阿里雲
執行命令:spa
# kubectl apply -f bookinfo.yaml
查看執行結果:code
# kubectl get kservice productpage-v1 http://productpage-v1.default.knative.kuberun.com productpage-v1-s4drn productpage-v1-s4drn True ratings-v1 http://ratings-v1.default.knative.kuberun.com ratings-v1-bsvb2 ratings-v1-bsvb2 True details-v1 http://details-v1.default.knative.kuberun.com details-v1-dj47j details-v1-dj47j True reviews-v1 http://reviews-v1.default.knative.kuberun.com reviews-v1-q5wz4 reviews-v1-q5wz4 True reviews-v2 http://reviews-v2.default.knative.kuberun.com reviews-v2-5r7mm reviews-v2-5r7mm True reviews-v3 http://reviews-v3.default.knative.kuberun.com reviews-v3-s2v6j reviews-v3-s2v6j True
經過頁面進行訪問,說明服務訪問正常:
通常狀況下,用戶比較關注微服務中的調用鏈信息,經過 Tracing Analysis服務,咱們能夠方便的查看服務調用鏈。
首先咱們進行一次服務訪問,在productpage頁面,點擊Normal user
能夠看到 Book Details
和 Book Reviews
信息。productpage 服務依次會調用:details、reviews 和 ratings服務
接下來登陸 Tracing Analysis 服務控制檯,選擇【應用列表】,點擊 productpage.default
.
選擇 調用鏈分析
頁籤,能夠查看服務調用鏈信息
經過上面的介紹,咱們能夠看到在 Knative 中輕鬆實現微服務部署,而且結合 Tracing Analysis 服務能夠知足部署生產級別服務訴求。
本文爲雲棲社區原創內容,未經容許不得轉載。