步驟 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
    • 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 是您要讓 asmcli 設定 ASM 安裝作業 (包括所有子目錄) 的輸出目錄。
    • 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
  • 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 是您要讓 asmcli 設定 ASM 安裝作業 (包括所有子目錄) 的輸出目錄。
    • 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 內部部署 (Anthos)
  • 裸機中的 Anthos
  • GKE on AWS

開始前,請詳閱下列步驟。 我們會請您執行 ASM 說明文件中列出的部分步驟,然後返回此處完成安裝作業。

  1. 請按照 ASM 說明文件中的操作說明,下載並解壓縮 istioctl下載安裝檔案
  2. 視您要使用的憑證授權機構而定,請按照下列任一章節中的操作說明安裝 ASM:
    1. 使用 Mesh CA使用 Mesh CA 安裝 Anthos 服務網格
    2. 透過 Istio CA 提供您自己的憑證透過 Istio CA 安裝 Anthos 服務網格
  3. 按照「設定驗證 Webhook」中的操作說明,設定驗證 Webhook。
  4. 請使用「檢查控制層元件」中的指示符檢查控制層元件。

    請勿繼續執行「Injecting sidecar proxies」。

一文中的操作說明執行相關步驟。

其他 Kubernetes 平台

AKS

設定及下載 ASM

開始前,請詳閱下列步驟。我們會請您執行 ASM 說明文件中列出的部分步驟,然後返回此處完成安裝作業。

本指南說明如何在 Anthos 已連結叢集中,執行 Anthos 服務網格 (ASM) 版本 的全新安裝作業。您可以參考本指南在下列環境中安裝 Anthos 服務網格:

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

準備安裝 Anthos 服務網格

    Linux

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

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

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

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

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

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

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

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

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

安裝 Anthos 服務網格

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

    --set revision 引數會將以 istio.io/rev= 格式編寫的修訂版本標籤新增至 istiod。自動附加元件注入器 webhook 會使用修訂版本標籤,將注入的附加元件與特定 istiod 修訂版本建立關聯。如要為命名空間啟用自動補充插入功能,您必須使用與 istiod 上的標籤相符的修訂版本標記命名空間。

  2. 使用 kubectl get pods 檢查 istiod Pod 是否正在執行:
    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--dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod--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-      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: 
        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: 
      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 服務網格 (ASM) 版本 的全新安裝作業。您可以參考本指南在下列環境中安裝 Anthos 服務網格:

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

準備安裝 Anthos 服務網格

    Linux

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

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

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

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

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

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

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

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

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

安裝 Anthos 服務網格

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

    --set revision 引數會將以 istio.io/rev= 格式編寫的修訂版本標籤新增至 istiod。自動附加元件注入器 webhook 會使用修訂版本標籤,將注入的附加元件與特定 istiod 修訂版本建立關聯。如要為命名空間啟用自動補充插入功能,您必須使用與 istiod 上的標籤相符的修訂版本標記命名空間。

  2. 使用 kubectl get pods 檢查 istiod Pod 是否正在執行:
    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--dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod--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-      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: 
        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: 
      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 服務網格 (ASM) 版本 的全新安裝作業。您可以參考本指南在下列環境中安裝 Anthos 服務網格:

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

準備安裝 Anthos 服務網格

    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/-linux-amd64.tar.gz
  3. 下載簽章檔案,然後使用 openssl 驗證簽章:
    curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature -linux-amd64.tar.gz.1.sig -linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  4. 將檔案的內容解壓縮到您檔案系統上的任何位置,例如,如要將內容擷取至目前的工作目錄:
    tar xzf -linux-amd64.tar.gz

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

    • samples 目錄中的範例應用程式。
    • 用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  5. 請確認您位於 Anthos 服務網格安裝的根目錄中:
    cd 
  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/-osx.tar.gz
  10. 下載簽章檔案,然後使用 openssl 驗證簽章:
    curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature -osx.tar.gz.1.sig -osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. 將檔案的內容解壓縮到您檔案系統上的任何位置,例如,如要將內容擷取至目前的工作目錄:
    tar xzf -osx.tar.gz

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

    • samples 目錄中的範例應用程式。
    • 用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  12. 請確認您位於 Anthos 服務網格安裝的根目錄中:
    cd 
  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/-win.zip
  17. 下載簽章檔案,然後使用 openssl 驗證簽章:
    curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip.1.sig
    openssl dgst -verify - -signature -win.zip.1.sig -win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  18. 將檔案的內容解壓縮到您檔案系統上的任何位置,例如,如要將內容擷取至目前的工作目錄:
    tar xzf -win.zip

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

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

安裝 Anthos 服務網格

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

    --set revision 引數會將以 istio.io/rev= 格式編寫的修訂版本標籤新增至 istiod。自動附加元件注入器 webhook 會使用修訂版本標籤,將注入的附加元件與特定 istiod 修訂版本建立關聯。如要為命名空間啟用自動補充插入功能,您必須使用與 istiod 上的標籤相符的修訂版本標記命名空間。

  2. 使用 kubectl get pods 檢查 istiod Pod 是否正在執行:
    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--dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod--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-      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: 
        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: 
      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 混合指令列工具。

1 2 3 5 6 9