步驟 3:安裝 ASM

安裝 ASM

Apigee Hybrid 會使用 Anthos 服務網格 (ASM) 提供的 Istio 發行版本。 請按照下列步驟,在叢集中安裝 ASM。

支援的 ASM 版本

如要瞭解 1.5 版混合式支援的 ASM 版本,請參閱「Apigee hybrid:支援的平台」。

執行 ASM 設定步驟

如要完成 ASM 安裝作業,請先按照 ASM 說明文件中的步驟,完成 ASM 專屬的設定。然後,您必須返回這裡完成混合專屬設定,再將設定套用至叢集。

安裝及設定 ASM 的操作說明會因平台而異。平台可分為下列類別:

  • GKE:在 Google Cloud 上執行的 Google Kubernetes Engine 叢集。
  • Google Cloud 以外:在下列項目上執行的 Anthos 叢集:
    • VMware 中的 Anthos 叢集 (GKE On-Prem)
    • Anthos on bare metal
    • AWS 中的 Anthos 叢集
    • Amazon EKS
  • 其他 Kubernetes 平台:在下列項目中建立及執行的相容叢集:
    • AKS
    • EKS
    • OpenShift

GKE

準備安裝 ASM

  1. 檢查下列步驟所需的環境變數,並視需要設定:
    echo ${PROJECT_ID}
    echo ${CLUSTER_NAME}
    echo ${CLUSTER_LOCATION}
  2. 建立名為 overlay.yaml 的疊加檔案,並在當中加入下列內容:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
    • 節點選取器的預設值為 apigee-runtime。這是您在步驟 1:建立叢集中建立的 apigee-runtime 節點集區。如果您使用其他節點選取器或未使用節點選取器,請變更或省略 nodeSelector 屬性。
    • STATIC_IP 是負載平衡器的 IP 位址。如果尚未設定,請省略 loadBalancerIP 屬性,但保留 typeports 屬性。
  3. 按照操作說明準備安裝 ASM:
    1. Anthos 先決條件
    2. 安裝 Anthos 服務網格所需的權限
    3. 規劃安裝作業
  4. 按照「安裝必要工具」一文中的操作說明,安裝 asmcli 和所有必要工具,例如 git、kubectl 和 jq。
  5. 繼續執行步驟,授予叢集管理員權限,然後停止。請勿執行「驗證專案和叢集」步驟。
  6. 安裝 ASM,並啟用選用功能。 使用 --option legacy-default-ingressgateway 指定舊版輸入閘道。 例如:
    ./asmcli install \
      --verbose \
      --project_id $PROJECT_ID \
      --cluster_name $CLUSTER_NAME \
      --cluster_location $CLUSTER_LOCATION \
      --output_dir dir_path \
      --custom_overlay overlay.yaml \
      --enable_all \
      --option legacy-default-ingressgateway
    • dir_path 是您要設定 ASM 安裝作業的輸出目錄,包括所有子目錄。asmcli
    • overlay.yaml 是您在先前步驟中建立的疊加檔案。

    按照「安裝選用功能」一文中的指示操作時,請使用這些設定。

疑難排解

如果遇到與 gcloud container hub memberships register 相關的錯誤,可能是因為您向 GKE Hub 註冊的叢集數量已達上限。例如:

asmcli_1.12: [WARNING]:  Command 'run_command gcloud
container hub memberships register my-hybrid-example
...' failed.

請按照下列步驟修正這項錯誤,然後再次執行 asmcli install

  1. 列出專案的 GKE Hub 成員資格:
    gcloud container hub memberships list --project=$PROJECT_ID
  2. 刪除 GKE Hub 成員資格:
    gcloud container hub memberships delete "membership" --project=$PROJECT_ID

如要進一步瞭解 GKE Hub 限制,請參閱配額與限制

Google Cloud 以外

以下操作說明適用於使用 Anthos 在下列項目上執行的 Apigee Hybrid 執行個體,安裝及設定 ASM:

  • VMware 中的 Anthos 叢集 (GKE On-Prem)
  • Anthos on bare metal
  • AWS 中的 Anthos 叢集
  • Amazon EKS

準備安裝 ASM

  1. 檢查下列步驟所需的環境變數,並視需要設定:
    echo ${PROJECT_ID}
    echo ${CLUSTER_NAME}
    echo ${CLUSTER_LOCATION}
  2. 建立名為 overlay.yaml 的疊加檔案,並在當中加入下列內容:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
    
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
    • 節點選取器的預設值為 apigee-runtime。這是您在步驟 1:建立叢集中建立的 apigee-runtime 節點集區。如果您使用其他節點選取器或未使用節點選取器,請變更或省略 nodeSelector 屬性。
    • STATIC_IP 是負載平衡器的 IP 位址。如果尚未設定,請省略 loadBalancerIP 屬性,但保留 typeports 屬性。
  3. 按照操作說明準備安裝 ASM:
    1. Anthos 先決條件
    2. 安裝 Anthos 服務網格所需的權限
    3. 規劃安裝作業
  4. 按照「安裝必要工具」一文中的操作說明,安裝 asmcli 和所有必要工具,例如 git、kubectl 和 jq。
  5. 繼續執行步驟,授予叢集管理員權限,然後停止。請勿執行「驗證專案和叢集」步驟。
  6. 安裝 ASM,並啟用選用功能。 使用 --option legacy-default-ingressgateway 指定舊版輸入閘道。 例如:
    ./asmcli install \
      --verbose \
      --project_id $PROJECT_ID \
      --cluster_name $CLUSTER_NAME \
      --cluster_location $CLUSTER_LOCATION \
      --output_dir dir_path \
      --custom_overlay overlay.yaml \
      --enable_all \
      --option legacy-default-ingressgateway
    • dir_path 是您要設定 ASM 安裝作業的輸出目錄,包括所有子目錄。asmcli
    • overlay.yaml 是您在先前步驟中建立的疊加檔案。

    按照「安裝選用功能」一文中的指示操作時,請使用這些設定。

疑難排解

如果遇到與 gcloud container hub memberships register 相關的錯誤,可能是因為您向 GKE Hub 註冊的叢集數量已達上限。例如:

asmcli_1.12: [WARNING]:  Command 'run_command gcloud
container hub memberships register my-hybrid-example
...' failed.

請按照下列步驟修正這項錯誤,然後再次執行 asmcli install

  1. 列出專案的 GKE Hub 成員資格:
    gcloud container hub memberships list --project=$PROJECT_ID
  2. 刪除 GKE Hub 成員資格:
    gcloud container hub memberships delete "membership" --project=$PROJECT_ID

如要進一步瞭解 GKE Hub 限制,請參閱配額與限制

其他平台上的 GKE

以下操作說明適用於使用 Anthos 在下列項目上執行的 Apigee Hybrid 執行個體,安裝及設定 ASM:

  • GKE On-Prem (Anthos)
  • Anthos on bare metal
  • GKE on AWS

開始前,請詳閱下列步驟。 我們會請您執行 ASM 說明文件列出的一些步驟,然後返回這裡完成安裝。

  1. 按照 ASM 說明文件中的操作說明,下載並解壓縮 istioctl下載安裝檔案
  2. 請根據您打算使用的憑證授權單位,按照下列其中一個章節的操作說明安裝 ASM:
    1. 使用網格 CA安裝 Anthos 服務網格和網格 CA
    2. 使用 Istio CA 提供您自己的憑證使用 Istio CA 安裝 Anthos 服務網格
  3. 按照「設定驗證 Webhook」一文中的操作說明,設定驗證 Webhook。
  4. 請按照「檢查控制層元件」一文中的說明,檢查控制層元件。

    請勿繼續「插入補充 Proxy」。

其他 Kubernetes 平台

AKS

設定及下載 ASM

開始前,請詳閱下列步驟。 我們會請您執行 ASM 說明文件列出的一些步驟,然後返回這個頁面完成安裝。

本指南說明如何在 Anthos 附加叢集上,乾淨安裝 Anthos Service Mesh (ASM) 版本 1.26.0-asm.11 。請參閱本指南,在下列環境中安裝 Anthos 服務網格:

  • Kubernetes 上的 Amazon Elastic Kubernetes Service (Amazon EKS)
  • Kubernetes 上的 Microsoft Azure Kubernetes Service (Microsoft AKS)
  • Red Hat OpenShift

準備安裝 Anthos Service Mesh

    Linux

  1. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-linux-amd64.tar.gz
  2. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig istio-1.26.0-asm.11-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  3. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-linux-amd64.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  4. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  5. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz
  8. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.0-asm.11-osx.tar.gz.1.sig istio-1.26.0-asm.11-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-osx.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  10. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  11. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip
  14. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.0-asm.11-win.zip.1.sig istio-1.26.0-asm.11-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  15. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-win.zip

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests\profiles 目錄中。
  16. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  17. 為方便起見,請將 \bin 目錄中的工具新增至 PATH:
    set PATH=%CD%\bin:%PATH%
  18. 安裝 ASM Istio 後,請檢查 istioctl 的版本:
    istioctl version
  19. 為控制層元件建立名為 istio-system 的命名空間:
    kubectl create namespace istio-system

安裝 Anthos Service Mesh

  1. 使用 asm-multicloud 設定檔,透過 istioctl 安裝 Anthos 服務網格:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1260-11"

    --set revision 引數會將修訂版本標籤新增至 istiod,格式為 istio.io/rev=asm-1260-11。自動 Sidecar 注入器 Webhook 會使用修訂版本標籤,將注入的 Sidecar 與特定 istiod 修訂版本建立關聯。如要為命名空間啟用 Sidecar 自動插入功能,您必須使用與 istiod 標籤相符的修訂版本標記命名空間。

  2. 確認 istiod Pod 正在執行 kubectl get pods
    kubectl get pods -n istio-system

    輸出內容應如下所示:

    NAME                                      READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2  1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9  1/1     Running   0          2m57s
    istiod-asm-1260-11-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1260-11-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  3. 確認安裝完成:
    kubectl get svc -n istio-system

    輸出內容應如下所示:

    NAME                  TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway  LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1260-11      ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

設定驗證 Webhook

安裝 Anthos 服務網格時,您會在 istiod 上設定修訂版本標籤。您需要在驗證 Webhook 上設定相同的修訂版本。

  1. 建立名為 istiod-service.yaml 的檔案,並在當中加入下列內容:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1260-11
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1260-11
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  2. 使用 kubectl 套用驗證 webhook 設定:
    kubectl apply -f istiod-service.yaml
  3. 確認設定已套用:
    kubectl get svc -n istio-system

    回應內容大致如下:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

EKS

設定及下載 ASM

開始前,請詳閱下列步驟。 我們會請您執行 ASM 說明文件列出的一些步驟,然後返回這個頁面完成安裝。

本指南說明如何在 Anthos 附加叢集上,乾淨安裝 Anthos Service Mesh (ASM) 版本 1.26.0-asm.11 。請參閱本指南,在下列環境中安裝 Anthos 服務網格:

  • Kubernetes 上的 Amazon Elastic Kubernetes Service (Amazon EKS)
  • Kubernetes 上的 Microsoft Azure Kubernetes Service (Microsoft AKS)
  • Red Hat OpenShift

準備安裝 Anthos Service Mesh

    Linux

  1. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-linux-amd64.tar.gz
  2. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig istio-1.26.0-asm.11-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  3. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-linux-amd64.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  4. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  5. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz
  8. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.0-asm.11-osx.tar.gz.1.sig istio-1.26.0-asm.11-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-osx.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  10. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  11. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip
  14. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.0-asm.11-win.zip.1.sig istio-1.26.0-asm.11-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  15. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-win.zip

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests\profiles 目錄中。
  16. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  17. 為方便起見,請將 \bin 目錄中的工具新增至 PATH:
    set PATH=%CD%\bin:%PATH%
  18. 安裝 ASM Istio 後,請檢查 istioctl 的版本:
    istioctl version
  19. 為控制層元件建立名為 istio-system 的命名空間:
    kubectl create namespace istio-system

安裝 Anthos Service Mesh

  1. 使用 asm-multicloud 設定檔,透過 istioctl 安裝 Anthos 服務網格:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1260-11"

    --set revision 引數會將修訂版本標籤新增至 istiod,格式為 istio.io/rev=asm-1260-11。自動 Sidecar 注入器 Webhook 會使用修訂版本標籤,將注入的 Sidecar 與特定 istiod 修訂版本建立關聯。如要為命名空間啟用 Sidecar 自動插入功能,您必須使用與 istiod 標籤相符的修訂版本標記命名空間。

  2. 確認 istiod Pod 正在執行 kubectl get pods
    kubectl get pods -n istio-system

    輸出內容應如下所示:

    NAME                                      READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2  1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9  1/1     Running   0          2m57s
    istiod-asm-1260-11-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1260-11-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  3. 確認安裝完成:
    kubectl get svc -n istio-system

    輸出內容應如下所示:

    NAME                  TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway  LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1260-11      ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

設定驗證 Webhook

安裝 Anthos 服務網格時,您會在 istiod 上設定修訂版本標籤。您需要在驗證 Webhook 上設定相同的修訂版本。

  1. 建立名為 istiod-service.yaml 的檔案,並在當中加入下列內容:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1260-11
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1260-11
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  2. 使用 kubectl 套用驗證 webhook 設定:
    kubectl apply -f istiod-service.yaml
  3. 確認設定已套用:
    kubectl get svc -n istio-system

    回應內容大致如下:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

OpenShift

設定及下載 ASM

開始前,請詳閱下列步驟。 我們會請您執行 ASM 說明文件列出的一些步驟,然後返回這個頁面完成安裝。

本指南說明如何在 Anthos 附加叢集上,乾淨安裝 Anthos Service Mesh (ASM) 版本 1.26.0-asm.11 。請參閱本指南,在下列環境中安裝 Anthos 服務網格:

  • Kubernetes 上的 Amazon Elastic Kubernetes Service (Amazon EKS)
  • Kubernetes 上的 Microsoft Azure Kubernetes Service (Microsoft AKS)
  • Red Hat OpenShift

準備安裝 Anthos Service Mesh

    Linux

  1. 使用下列 oc 指令,將 anyuid 安全性內容限制 (SCC) 授予 istio-system:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-linux-amd64.tar.gz
  3. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig istio-1.26.0-asm.11-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  4. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-linux-amd64.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  5. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  6. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  7. Mac OS

  8. 使用下列 oc 指令,將 anyuid 安全性內容限制 (SCC) 授予 istio-system:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz
  10. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.0-asm.11-osx.tar.gz.1.sig istio-1.26.0-asm.11-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-osx.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  12. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  13. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. 使用下列 OpenShift CLI (oc) 指令,將 anyuid 安全性環境限制 (SCC) 授予 istio-system:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip
  17. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.0-asm.11-win.zip.1.sig istio-1.26.0-asm.11-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  18. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.0-asm.11-win.zip

    這個指令會在目前的工作目錄中建立名為 istio-1.26.0-asm.11 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests\profiles 目錄中。
  19. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.0-asm.11
  20. 為方便起見,請將 \bin 目錄中的工具新增至 PATH:
    set PATH=%CD%\bin:%PATH%
  21. 安裝 ASM Istio 後,請檢查 istioctl 的版本:
    istioctl version
  22. 為控制層元件建立名為 istio-system 的命名空間:
    kubectl create namespace istio-system

安裝 Anthos Service Mesh

  1. 使用 asm-multicloud 設定檔,透過 istioctl 安裝 Anthos 服務網格:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1260-11"

    --set revision 引數會將修訂版本標籤新增至 istiod,格式為 istio.io/rev=asm-1260-11。自動 Sidecar 注入器 Webhook 會使用修訂版本標籤,將注入的 Sidecar 與特定 istiod 修訂版本建立關聯。如要為命名空間啟用 Sidecar 自動插入功能,您必須使用與 istiod 標籤相符的修訂版本標記命名空間。

  2. 確認 istiod Pod 正在執行 kubectl get pods
    kubectl get pods -n istio-system

    輸出內容應如下所示:

    NAME                                      READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2  1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9  1/1     Running   0          2m57s
    istiod-asm-1260-11-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1260-11-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  3. 確認安裝完成:
    kubectl get svc -n istio-system

    輸出內容應如下所示:

    NAME                  TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway  LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1260-11      ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

設定驗證 Webhook

安裝 Anthos 服務網格時,您會在 istiod 上設定修訂版本標籤。您需要在驗證 Webhook 上設定相同的修訂版本。

  1. 建立名為 istiod-service.yaml 的檔案,並在當中加入下列內容:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1260-11
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1260-11
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  2. 使用 kubectl 套用驗證 webhook 設定:
    kubectl apply -f istiod-service.yaml
  3. 確認設定已套用:
    kubectl get svc -n istio-system

    回應內容大致如下:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

自訂 ASM 安裝作業

您剛執行的 ASM 安裝作業是最低限度的安裝,足以測試及使用 Apigee Hybrid 的基本用途。如要瞭解如何處理更進階的用途,例如新增、移除或修改負載平衡器連接埠號碼,請參閱「啟用選用功能」。

摘要

您現在已安裝 cert-manager 和 ASM,可以開始在本機安裝 Apigee Hybrid 指令列工具。

1 2 3 (NEXT) Step 4: Install apigeectl 5 6 7 8 9