作者 | 元毅 阿里云智能事業(yè)群高級開發(fā)工程師 在 Istio 中提供了一個 Bookinfo 的示例,用于演示微服..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Knative 實戰(zhàn):一個微服務應用的部署

發(fā)布時間:2020-07-02 10:07:09 來源:網絡 閱讀:215 作者:阿里系統(tǒng)軟件技術 欄目:云計算

Knative 實戰(zhàn):一個微服務應用的部署cdn.com/ef27762085577f5a3916e783cdc59fbed9379219.png">

作者 | 元毅 阿里云智能事業(yè)群高級開發(fā)工程師

在 Istio 中提供了一個 Bookinfo 的示例,用于演示微服務之間的調用,那么如何在 Knative 中部署這個示例呢?本文將會給大家介紹一下在 Knative 中部署 Bookinfo 微服務以及查看調用鏈追蹤信息。

背景

Bookinfo 這個示例應用由 4 個微服務組成。 Bookinfo 應用架構圖如下:

Knative 實戰(zhàn):一個微服務應用的部署

  • productpage 微服務: 調用 details 微服務和 reviews 微服務來生成頁面
  • details 微服務: 包含圖書的詳細信息
  • reviews 微服務: 提供圖書的評論功能,也可以調用 rating 微服務給圖書評分
  • ratings 微服務: 提供圖書的評分功能

另外 reviews 微服務目前有 3 個版本:

  • v1 不會調用 ratings 微服務
  • v2 調用 ratings 微服務,并將評分顯示 1~5 個黑色星星
  • v3 調用 ratings 微服務,并將每個評分顯示為 1~5 個紅色星星

準備

  • 已部署 Knative??蓞⒖迹喊⒗镌迫萜鞣詹渴?Knative
  • 已開啟鏈路追蹤 Tracing Analysis服務,可參考:在Knative 上實現 Tracing 分布式追蹤

部署

首先開啟 Istio Sidecar 注入,我們在 default 命名空間打上 istio-injection=enabled 的 Label:

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

這里需要說明幾點:

  • productpage 環(huán)境變量設置:

    • SERVICES_DOMAIN:微服務直接通過內部訪問域名進行訪問,這里設置域名后綴為:default.svc.cluster.local
    • DETAILS_HOSTNAME:設置為 details-v1
    • RATINGS_HOSTNAME:設置為 ratings-v1
    • REVIEWS_HOSTNAME: 這里設置 reviews-v2
  • reviews v2, v3 環(huán)境變量設置。由于 v2 和 v3 需要訪問 rate 進行評分, 因此需要設置對應的環(huán)境變量:

    • SERVICES_DOMAIN:微服務直接通過內部訪問域名進行訪問,這里設置域名后綴為:default.svc.cluster.local
    • RATINGS_HOSTNAME:設置為 ratings-v1

執(zhí)行命令:

# kubectl apply -f bookinfo.yaml

查看執(zhí)行結果:

# 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

通過頁面進行訪問,說明服務訪問正常:

Knative 實戰(zhàn):一個微服務應用的部署

微服務調用鏈

一般情況下,用戶比×××調用鏈信息,通過 Tracing Analysis 服務,我們可以方便的查看服務調用鏈。

首先我們進行一次服務訪問,在 productpage 頁面,點擊?Normal user。

Knative 實戰(zhàn):一個微服務應用的部署

可以看到 Book Details ?和 Book Reviews 信息。productpage 服務依次會調用:details、reviews 和 ratings 服務。

Knative 實戰(zhàn):一個微服務應用的部署

接下來登錄 Tracing Analysis 服務控制臺,選擇【應用列表】,點擊 productpage.default。

Knative 實戰(zhàn):一個微服務應用的部署

選擇 調用鏈分析 頁簽,可以查看服務調用鏈信息。

Knative 實戰(zhàn):一個微服務應用的部署

結論

通過上面的介紹,我們可以在 Knative 中輕松實現微服務部署,并且結合 Tracing Analysis 服務可以滿足部署生產級別服務訴求。

歡迎加入 Knative 交流群

Knative 實戰(zhàn):一個微服務應用的部署

作者簡介:元毅,阿里云容器平臺高級開發(fā)工程師,負責阿里云容器平臺 Knative 相關工作。

了解 ACK 容器服務,請查看:https?:?//www.aliyun.com/product/kubernetes

“ 阿里巴巴云×××icloudnative×××erverless、容器、Service Mesh等技術領域、聚焦云原生流行技術趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)×××

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI