第 3 步:安装 ASM

安装 ASM

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

支持的 ASM 版本

如需查看 Hybrid 1.5 版支持的 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
    • 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. 创建一个名为 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 限制,请参阅配额和限制

其他平台上的 GKE

以下说明介绍如何为在下列平台上使用 Anthos 运行的 Apigee Hybrid 实例安装和设置 ASM:

  • GKE On-Prem (Anthos)
  • Anthos on Bare Metal
  • GKE on AWS

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

  1. 根据 ASM 文档中的说明下载并解压缩 istioctl下载安装文件
  2. 根据您计划使用的证书授权机构,按照以下某个部分中的说明安装 ASM:
    1. 使用 Mesh CA使用 Mesh CA 安装 Anthos Service Mesh
    2. 使用 Istio CA 提供自己的证书使用 Istio CA 安装 Anthos Service Mesh
  3. 按照配置验证网络钩子中的说明配置验证网络钩子。
  4. 按照检查控制层面组件中的说明检查控制层面组件。

    请勿继续“注入边车代理”。

其他 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. 使用 asm-multicloud 配置文件,利用 istioctl 来安装 Anthos Service Mesh:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

    --set revision 参数会将格式为 istio.io/rev=asm-1129-3 的修订版本标签添加到 istiod。自动边车注入器网络钩子使用修订版本标签将注入的边车与特定 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-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-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-1129-3      ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

配置验证网络钩子

安装 Anthos Service Mesh 时,您可以在 istiod 上设置修订版本标签。您需要在验证网络钩子上设置相同的修订版本。

  1. 创建一个名为 istiod-service.yaml 且包含以下内容的文件:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        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-1129-3
      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 应用验证网络钩子配置:
    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.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. 使用 asm-multicloud 配置文件,利用 istioctl 来安装 Anthos Service Mesh:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

    --set revision 参数会将格式为 istio.io/rev=asm-1129-3 的修订版本标签添加到 istiod。自动边车注入器网络钩子使用修订版本标签将注入的边车与特定 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-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-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-1129-3      ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

配置验证网络钩子

安装 Anthos Service Mesh 时,您可以在 istiod 上设置修订版本标签。您需要在验证网络钩子上设置相同的修订版本。

  1. 创建一个名为 istiod-service.yaml 且包含以下内容的文件:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        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-1129-3
      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 应用验证网络钩子配置:
    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.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. 使用 asm-multicloud 配置文件,利用 istioctl 来安装 Anthos Service Mesh:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

    --set revision 参数会将格式为 istio.io/rev=asm-1129-3 的修订版本标签添加到 istiod。自动边车注入器网络钩子使用修订版本标签将注入的边车与特定 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-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-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-1129-3      ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

配置验证网络钩子

安装 Anthos Service Mesh 时,您可以在 istiod 上设置修订版本标签。您需要在验证网络钩子上设置相同的修订版本。

  1. 创建一个名为 istiod-service.yaml 且包含以下内容的文件:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        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-1129-3
      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 应用验证网络钩子配置:
    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 (下一步)第 4 步:安装 apigeectl 5 6 7 8 9