第 3 步:安装 ASM

安装 ASM

Apigee Hybrid 使用 Anthos Service Mesh (ASM) 提供的 Istio 发行版。 请按照以下步骤在集群中安装 ASM。

支持的 ASM 版本

如需查看 Hybrid 1.7 版支持的 ASM 版本,请参阅《Apigee Hybrid:支持的平台》

执行 ASM 设置和配置步骤

如需完成 ASM 安装,首先必须按照 ASM 文档中特定于 ASM 的设置和配置步骤执行操作。然后,您必须返回此处完成特定于混合的配置,然后再将配置应用到集群。

安装和配置 ASM 的说明因平台而异。这些平台分为以下几种类别:

  • GKE:在 Google Cloud 上运行的 Google Kubernetes Engine 集群。
  • Google Cloud 外部:在以下位置运行的 Anthos 集群:
    • Anthos clusters on VMware (GKE on-prem)
    • Anthos on Bare Metal
    • Anthos clusters on AWS
    • 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
      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 Service Mesh 所需的权限
    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:

  • Anthos clusters on VMware (GKE on-prem)
  • Anthos on Bare Metal
  • Anthos clusters on AWS
  • Amazon EKS

准备安装 ASM

  1. 检查您需要在后续步骤中使用的环境变量,并在需要执行以下操作时设置这些环境变量:
    echo ${PROJECT_ID}
    echo ${CLUSTER_NAME}
    echo ${CLUSTER_LOCATION}
  2. 记下使用 ASMCLI 时所需的值。以下是您在按照 ASM 文档中的步骤操作时系统会要求您提供的值:
    • FLEET_PROJECT_ID:将与集群关联的项目的名称。使用您为此安装创建的项目,该项目存储在 ${PROJECT_ID} 环境变量中。
    • KUBECONFIG_FILE:kubeconfig 文件的完整路径。默认路径为 $HOME/.kube/config。如需了解详情,请参阅 Kubernetes 文档中的使用 kubeconfig 文件组织集群访问
    • DIR_PATH:ASMCLI 的输出目录。这是用于创建 Istio 配置文件的路径。例如:./asm
    • GATEWAY_NAMESPACE:Istio Ingress 网关的命名空间,例如 istio
    • REVISION:此 ASM 版本的修订版本标签。请使用 asm-1129-3
    • CONTEXT:Kubernetes 上下文。使用以下命令检查 kubernetes 是否正在为集群使用该上下文。
      kubectl config get-contexts

      如果当前集群不是当前上下文,您可以使用以下命令进行设置:

      kubectl config use-context CONTEXT
    • USER_ACCOUNT:具有用来管理集群的集群管理员权限的账号。
  3. 使用以下命令将上下文设置为您的项目和区域:

    设置默认项目 ID:

    gcloud config set project ${PROJECT_ID}

    如果您使用的是区域级集群,请设置默认计算区域:

    gcloud config set compute/region ${CLUSTER_LOCATION}
  4. 使用以下命令获取凭据:
    gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID}
  5. 创建一个名为 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 属性。
  6. 按照说明准备安装 ASM:
    1. Anthos 前提条件
    2. 安装 Anthos Service Mesh 所需的权限
    3. 规划安装
  7. 按照安装所需的工具中的说明安装 asmcli 以及所需的任何工具,例如 git、kubectl 和 jq。
  8. 继续执行授予集群管理员权限步骤并停止。请勿执行“验证项目和集群”步骤。
  9. 使用可选功能安装 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 限制,请参阅配额和限制

其他 Kubernetes 平台

AKS

设置和下载 ASM

开始之前,请仔细阅读以下步骤。我们会要求您执行 ASM 文档中列出的某些步骤,然后返回此处完成安装。

本指南介绍了如何在 Anthos 关联集群上执行 Anthos Service Mesh (ASM) 1.12.9-asm.3 版本的全新安装。使用本指南可以在以下环境中安装 Anthos Service Mesh:

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

准备安装 Anthos Service Mesh

    Linux

  1. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  2. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  3. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。
  4. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  5. 为方便起见,请将 /bin 目录中的工具添加到 PATH:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  8. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。
  10. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  11. 为方便起见,请将 /bin 目录中的工具添加到 PATH:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  14. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  15. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-win.zip

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests\profiles 目录中。
  16. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  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. 创建一个名为 overlay.yaml 且包含以下内容的文件:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        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)%"}'
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              ports:
              - name: status-port
                port: 15021
                targetPort: 15021
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443
    
  2. 使用 asm-multicloud 配置文件,利用 istioctl 来安装 Anthos Service Mesh:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3" \
        --filename overlay.yaml

    --set revision 参数会将格式为 istio.io/rev=asm-1129-3 的修订版本标签添加到 istiod。自动边车注入器网络钩子使用修订版本标签将注入的边车与特定 istiod 修订版本相关联。如需为命名空间启用边车自动注入功能,您必须使用一个与 istiod 上的标签匹配的修订版本来为其添加标签。

  3. 使用 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-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  4. 验证安装是否已完成:
    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-1129-3     ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

EKS

设置和下载 ASM

开始之前,请仔细阅读以下步骤。我们会要求您执行 ASM 文档中列出的某些步骤,然后返回此处完成安装。

本指南介绍了如何在 Anthos 关联集群上执行 Anthos Service Mesh (ASM) 1.12.9-asm.3 版本的全新安装。使用本指南可以在以下环境中安装 Anthos Service Mesh:

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

准备安装 Anthos Service Mesh

    Linux

  1. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  2. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  3. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。
  4. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  5. 为方便起见,请将 /bin 目录中的工具添加到 PATH:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  8. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。
  10. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  11. 为方便起见,请将 /bin 目录中的工具添加到 PATH:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  14. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  15. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-win.zip

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests\profiles 目录中。
  16. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  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. 创建一个名为 overlay.yaml 且包含以下内容的文件:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        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)%"}'
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              ports:
              - name: status-port
                port: 15021
                targetPort: 15021
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443
    
  2. 使用 asm-multicloud 配置文件,利用 istioctl 来安装 Anthos Service Mesh:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3" \
        --filename overlay.yaml

    --set revision 参数会将格式为 istio.io/rev=asm-1129-3 的修订版本标签添加到 istiod。自动边车注入器网络钩子使用修订版本标签将注入的边车与特定 istiod 修订版本相关联。如需为命名空间启用边车自动注入功能,您必须使用一个与 istiod 上的标签匹配的修订版本来为其添加标签。

  3. 使用 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-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  4. 验证安装是否已完成:
    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-1129-3     ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

设置和下载 ASM

开始之前,请仔细阅读以下步骤。我们会要求您执行 ASM 文档中列出的某些步骤,然后返回此处完成安装。

本指南介绍了如何在 Anthos 关联集群上执行 Anthos Service Mesh (ASM) 1.12.9-asm.3 版本的全新安装。使用本指南可以在以下环境中安装 Anthos Service Mesh:

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

准备安装 Anthos Service Mesh

    Linux

  1. 使用以下 oc 命令向 istio-system 授予 anyuid 安全上下文限制条件 (SCC):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  3. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  4. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。
  5. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  6. 为方便起见,请将 /bin 目录中的工具添加到 PATH:
    export PATH=$PWD/bin:$PATH
  7. Mac OS

  8. 使用以下 oc 命令向 istio-system 授予 anyuid 安全上下文限制条件 (SCC):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  10. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。
  12. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  13. 为方便起见,请将 /bin 目录中的工具添加到 PATH:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. 使用以下 OpenShift CLI (oc) 命令向 istio-system 授予 anyuid 安全上下文限制条件 (SCC):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  17. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  18. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.12.9-asm.3-win.zip

    该命令会在当前工作目录中创建一个名为 istio-1.12.9-asm.3 的安装目录,其中包含:

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests\profiles 目录中。
  19. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.12.9-asm.3
  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. 创建一个名为 overlay.yaml 且包含以下内容的文件:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        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)%"}'
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              ports:
              - name: status-port
                port: 15021
                targetPort: 15021
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443
    
  2. 使用 asm-multicloud 配置文件,利用 istioctl 来安装 Anthos Service Mesh:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3" \
        --filename overlay.yaml

    --set revision 参数会将格式为 istio.io/rev=asm-1129-3 的修订版本标签添加到 istiod。自动边车注入器网络钩子使用修订版本标签将注入的边车与特定 istiod 修订版本相关联。如需为命名空间启用边车自动注入功能,您必须使用一个与 istiod 上的标签匹配的修订版本来为其添加标签。

  3. 使用 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-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  4. 验证安装是否已完成:
    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-1129-3     ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

自定义 ASM 安装

您刚刚执行的 ASM 安装是最简安装,足够测试和使用 Apigee Hybrid 基本用例。如需了解如何处理更高级的用例(例如添加、移除或修改负载均衡器端口号),请参阅启用可选功能

摘要

现在,您已经安装了 cert-manager 和 ASM,可以在本地机器上安装 Apigee Hybrid 命令行工具了。

1 2 3 (下一步)第 4 步:安装 apigeectl 5 6 7 8 9