為解決微服務的分布式應用架構在營運、調試、和安全管理等維度存在的問題,可通過部署Istio建立微服務網路,並提供負載平衡、服務間認證以及監控等能力,同時Istio不需要修改服務即可實現以上功能。

前提條件

您已經成功建立一個 Kubernetes 叢集,參見建立Kubernetes叢集

背景資訊

  • 阿里雲Container ServiceKubernetes 1.10.4及之後版本支援部署Istio,如果是1.10.4之前的版本,請先升級到1.10.4或之後版本。

  • 一個叢集中,worker節點數量需要大於等於3個,保證資源充足可用。

操作步驟

通過叢集介面部署Istio
  1. 登入 Container Service管理主控台
  2. 單擊左側導覽列中的叢集,進入叢集列表頁面。
  3. 選擇所需的叢集並單擊操作列更多 > 部署Istio

  4. 根據如下資訊,部署Istio:
    配置 說明
    叢集 部署Istio的目的地組群。
    命名空間 部署Istio的命名空間。
    發布名稱 發布的Istio名稱。
    啟用 Prometheus 度量日誌收集 是否啟用Prometheus 收集度量日誌。預設情況下啟用。
    啟用 Grafana 度量展示 是否啟用Grafana 展示指標的度量資料。預設情況下啟用。
    啟用 ServiceGraph 可視化部署 是否啟用ServiceGraph 進行可視化部署。預設情況下啟用。
    啟用 Sidecar 自動注入 是否啟用 Sidecar 進行容器的自動注入。預設情況下啟用。
    啟用阿里雲Log Service SLS 及 Jaeger

    是否啟用阿里雲的Log ServiceSLS 及 Jaeger。預設情況下不啟用。

    服務入口地址(Endpoint):根據配置的Log Service所在region選擇對應的地址。具體請參見服務入口

    項目名稱(Project):採集日誌所在的項目名稱。

    日誌庫名稱(Logstore):採集日誌所在的日誌庫名稱。

    AccessKeyID:訪問Log Service時,所使用的訪問秘鑰ID。
    说明 需要選擇有許可權訪問Log Service的AccessKeyID。

    AccessKeySecret:訪問Log Service時,所使用的訪問秘鑰Secret。

  5. 單擊部署 Istio,啟動部署。
    在部署頁面下方,可即時查看部署進展及狀態。

預期結果

可通過以下方法查看部署是否成功:
  • 部署 Istio頁面下方,部署 Istio變為已部署

    • 單擊左側導覽列應用 > 容器組,進入容器組頁面。
    • 選擇部署Istio的叢集及命名空間,可查看到已經部署Istio的相關容器組。

    • 單擊左側導覽列應用 > 服務,進入服務列表頁面。
    • 選擇部署Istio的叢集及命名空間,可查看到已經部署Istio相關服務所提供的訪問地址。

通過應用目錄部署Istio
  1. 登入 Container Service管理主控台
  2. 單擊左側導覽列中的市場 > 應用目錄,進入應用目錄頁面。

  3. 單擊ack-istio,進入應用目錄 - ack-istio頁面。
  4. 單擊參數頁簽,進行參數配置。

    说明
    • 通用參數的含義、取值及預設情況,可參考說明頁簽Configuration欄位。
    • 也可以針對特定參數進行定製化配置,例如:是否啟用grafanaprometheustracingweave-scope以及kiali等,可參考:
      #
      # addons configuration
      #
      grafana:
      enabled: true
      replicaCount: 1
      image: istio-grafana
      service:
      name: http
      type: ClusterIP
      externalPort: 3000
      internalPort: 3000
      ....
      prometheus:
      enabled: true
      replicaCount: 1
      image:
      repository: registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog/istio-prometheus
      tag: latest
      ....
      tracing:
      enabled: true
      jaeger:
      enabled: true
      ....
      weave-scope:
      enabled: true
      global:
      # global.image: the image that will be used for this release
      image:
      repository: weaveworks/scope
      tag: "1.9.0"
      # global.image.pullPolicy: must be Always, IfNotPresent, or Never
      pullPolicy: "IfNotPresent"
      ....
      kiali:
      enabled: true
      replicaCount: 1
      image:
      repository: registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog/istio-kiali
      tag: dev
      
      
  5. 在右側建立地區,填寫以下基本資料:
    配置 說明
    叢集 部署Istio的目的地組群。
    命名空間 部署Istio的命名空間。預設情況下為 default。
    發布名稱 發布的Istio名稱。
  6. 單擊建立,啟動部署。

預期結果

    • 單擊左側導覽列應用 > 容器組,進入容器組頁面。
    • 選擇部署Istio的叢集及命名空間,可查看到已經部署Istio的相關容器組。

    • 單擊左側導覽列應用 > 服務,進入服務列表頁面。
    • 選擇部署Istio的叢集及命名空間,可查看到已經部署Istio相關服務所提供的訪問地址。