在 GKE 上安装 Anthos Service Mesh

本页面介绍了如何在 GKE 集群上执行 Anthos Service Mesh 版本 1.6.14 的清洁安装。如果您安装了先前版本的 Anthos Service Mesh,请参阅在 GKE 上升级 Anthos Service Mesh

准备工作

在安装 Anthos Service Mesh 之前,请确保您已经:

设置凭据和权限

  1. 初始化您的项目,以便准备好安装。除此之外,以下命令会创建一个服务账号,可让控制层面组件(例如边车代理)安全地访问您的项目的数据和资源:

    curl --request POST \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --data '' \
      "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"

    该命令会以空花括号作为响应:{}

  2. 获取身份验证凭据以便与集群进行交互:

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  3. 向当前用户授予集群管理员权限。您需要这些权限,以便为 Anthos Service Mesh 创建必要的基于角色的访问权限控制 (RBAC) 规则:

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user="$(gcloud config get-value core/account)"

如果看到 "cluster-admin-binding" already exists 错误,您可以放心地忽略该错误并继续采用现有集群管理员绑定。

下载安装文件

    Linux

  1. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-linux-amd64.tar.gz
  2. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    预期输出为 Verified OK

  3. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.6.14-asm.2-linux-amd64.tar.gz

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

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。

  4. Mac OS

  5. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-osx.tar.gz
  6. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    预期输出为 Verified OK

  7. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.6.14-asm.2-osx.tar.gz

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

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。

  8. Windows

  9. 将 Anthos Service Mesh 安装文件下载到当前工作目录中:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-win.zip
  10. 下载签名文件并使用 openssl 验证签名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    预期输出为 Verified OK

  11. 将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
    tar xzf istio-1.6.14-asm.2-win.zip

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

    • samples 目录中的示例应用。
    • 用于安装 Anthos Service Mesh 的 istioctl 命令行工具位于 bin 目录中。
    • Anthos Service Mesh 配置文件位于 manifests/profiles 目录中。

  12. 确保您位于 Anthos Service Mesh 安装的根目录。
    cd istio-1.6.14-asm.2
  13. 为方便起见,请将 /bin 目录中的工具添加到 PATH:
    export PATH=$PWD/bin:$PATH

准备资源配置文件

运行 istioctl install 命令时,请在命令行中指定 -f istio-operator.yaml。此文件包含 Anthos Service Mesh 所需的项目和集群的相关信息。您需要下载包含 istio-operator.yaml 和其他资源配置文件的软件包,以便设置项目和集群信息。

首先,根据您要使用的证书授权机构 (CA) 选择要下载的软件包:

  • asm此软件包可启用 Mesh CA(建议用于新安装)。

  • asm-citadel:您可以选择启用 Citadel 作为 CA。在选择此软件包之前,请参阅选择证书授权机构以了解详情。

如需准备资源配置文件,请执行以下操作:

  1. 为 Anthos Service Mesh 软件包资源配置文件创建一个新目录。我们建议您使用集群名称作为目录名称。

  2. 切换到您要在其中下载 Anthos Service Mesh 软件包的目录。

  3. 根据 CA 下载您要使用的软件包

    Mesh CA

    下载 asm 软件包以启用 Mesh CA:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-asm asm
    

    Citadel

    下载 asm-citadel 软件包,以启用 Citadel 作为 CA:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-citadel@release-1.6-asm asm
    
  4. 为在其中创建集群的项目设置项目 ID:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. 为舰队宿主项目设置项目编号:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  6. 设置集群名称:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  7. 设置默认区域或地区:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  8. 设置验证网络钩子以使用修订版本标签:

    kpt cfg set asm anthos.servicemesh.rev asm-1614-2
    

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

  9. 设置您计划使用的配置文件

    • 如果您的所有集群都在同一项目中,请设置 asm-gcp 配置文件:

      kpt cfg set asm anthos.servicemesh.profile asm-gcp
      
    • 如果您的服务网格包含或将包含不同项目中的多个集群,请设置 asm-gcp-multiproject 配置文件(Beta 版):

      kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
      
  10. 如果您设置了 asm-gcp-multiproject 配置文件并下载了 asm 软件包以启用 Mesh CA,则需要为将形成多集群/多项目服务网格的其他项目配置信任网域别名。否则,请跳过此步骤。

    1. 获取将进入多集群/多项目网格的所有集群的项目 ID

    2. 针对每个集群的项目 ID,设置信任网域别名。例如,如果 3 个项目中存在集群,请运行以下命令,并将 PROJECT_ID_1PROJECT_ID_2PROJECT_ID_3 替换为每个集群的项目 ID。

      kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog

      在其他项目中配置集群时,您可以使用相同的命令。

      通过信任网域别名,Mesh CA 可对其他项目中的集群上的工作负载进行身份验证。除了设置信任网域别名之外,在安装 Anthos Service Mesh 之后,您还必须启用跨集群负载均衡

  11. 输出 kpt setter 的值:

      kpt cfg list-setters asm
    

    在命令的输出中,验证以下 setter 的值是否正确:

    • anthos.servicemesh.rev
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

安装 Anthos Service Mesh

  1. 验证当前的 kubeconfig 上下文是否指向要安装 Anthos Service Mesh 的集群:

      kubectl config current-context
    

    输出的格式如下:

      gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    kubeconfig 上下文和 kpt setter 的值必须匹配。如果需要,请运行 gcloud container clusters get-credentials 命令来设置当前的 kubeconfig 上下文。

  2. 如果您将 Citadel 用作证书授权机构,并且想要使用自定义 CA,请运行以下命令:或者,跳转至下一步。

    kubectl create namespace istio-system
    kubectl create secret generic cacerts  \
      -n istio-system \
      --from-file=ca-cert.pem \
      --from-file=ca-key.pem \
      --from-file=root-cert.pem \
      --from-file=cert-chain.pem

    如需了解详情,请参阅在现有 CA 证书中插入

  3. 运行以下命令,使用您在 istio-operator.yaml 文件中设置的配置文件安装 Anthos Service Mesh。如果您要启用受支持的可选功能,请在以下命令行中添加 -f 和 YAML 文件名。如需了解详情,请参阅启用可选功能

    istioctl install \
      -f asm/cluster/istio-operator.yaml \
      --set revision=asm-1614-2

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

  4. 配置验证网络钩子,使其能够使用修订版本标签查找 istiod 服务:

    kubectl apply -f asm/istiod-service.yaml

    此命令会创建一个服务条目,可让验证网络钩子在配置应用之前自动检查配置。

  5. 如果您使用 asm-gcp 配置文件,请运行以下命令来部署规范化服务控制器:

    kubectl apply -f asm/canonical-service/controller.yaml

    该命令会将规范化服务控制器部署到您的集群。规范化服务控制器会对属于同一逻辑服务的工作负载进行分组,且您必须使用它解锁 Google Cloud 控制台的服务信息中心中的额外功能。如需了解详情,请参阅启用和停用规范化服务控制器

    如果您使用 asm-gcp-multiproject 配置文件,则当前遥测数据不会显示在 Google Cloud 控制台的 Anthos Service Mesh 信息中心中。但是,您仍然可以在 Cloud Logging 和 Cloud Monitoring 中查看每个项目的日志和指标。

自动双向 TLS(自动 mTLS)默认情况下处于启用状态。通过自动 mTLS,客户端边车代理会自动检测服务器是否具有 Sidecar。客户端 Sidecar 会将 mTLS 发送到具有 Sidecar 的工作负载,并将纯文本流量发送到没有 Sidecar 的工作负载。

检查控制层面组件

检查 istio-system 中的控制层面 Pod 是否已启动:

kubectl get pod -n istio-system

预期输出如下所示:

NAME                                   READY   STATUS      RESTARTS   AGE
istio-ingressgateway-cff9f5c7d-qg4ls   1/1     Running   0          7m5s
istio-ingressgateway-cff9f5c7d-vlkzb   1/1     Running   0          7m20s
istiod-66b587859c-886gx                1/1     Running   0          7m33s
istiod-66b587859c-dfs2j                1/1     Running   0          7m33s

注入边车代理

Anthos Service Mesh 使用边车代理来增强网络安全性、可靠性和可观测性。借助 Anthos Service Mesh,这些功能可以从应用的主容器中抽象出来,并在作为同一 Pod 中单独的容器提供的常见进程外代理中实现。

在部署工作负载之前,请务必配置边车代理注入,以便 Anthos Service Mesh 可以监控和保护流量。

安装 Anthos Service Mesh 之前在集群上运行的任何工作负载都需要注入或更新边车代理,以使其具有当前 Anthos Service Mesh 版本。在部署新的工作负载之前,请务必配置边车代理注入,以便 Anthos Service Mesh 可以监控和保护流量。

要启用 Sidecar 自动注入,请使用您在 istiod 上设置的同一修订版本来为命名空间添加标签。运行以下命令以显示 istiod 上的标签:

kubectl -n istio-system get pods -l app=istiod --show-labels

确认输出中包含修订版本标签 istio.io/rev=asm-1614-2。这是您用于启用自动注入的标签。您可以使用一个命令来启用自动注入,例如:

kubectl label namespace NAMESPACE istio-injection-istio.io/rev=asm-1614-2 --overwrite

其中,NAMESPACE 是应用服务的命名空间的名称;如果未显式创建命名空间,则为 default

如需了解详情,请参阅注入 Sidecar 代理

查看 Anthos Service Mesh 信息中心

本部分仅适用于使用 asm-gcp 配置文件安装了 Anthos Service Mesh 的情况。如果您使用 asm-gcp-multiproject 配置文件安装 Anthos Service Mesh,则 Google Cloud 控制台的 Anthos Service Mesh 信息中心内不会显示遥测数据。

在集群上部署完工作负载并注入 Sidecar 代理后,您可以在 Google Cloud 控制台中探索 Anthos Service Mesh 页面,以了解 Anthos Service Mesh 提供的所有可观测性功能。请注意,部署工作负载后,遥测数据大约需要一两分钟才会显示在 Google Cloud 控制台中。

在 Google Cloud 控制台中访问 Anthos Service Mesh 的权限由 Identity and Access Management (IAM) 控制。如需访问 Anthos Service Mesh 页面,Project Owner 必须为用户授予 Project Editor 或 Viewer 角色,或者授予在 Google Cloud 控制台中控制对 Anthos Service Mesh 的访问权限中所述的限制性更强的角色。

  1. 在 Google Cloud 控制台中,前往 Anthos Service Mesh

    转到 Anthos Service Mesh

  2. 从菜单栏的下拉列表中选择 Google Cloud 项目。

  3. 如果您有多个服务网格,请从服务网格下拉列表中选择相应网格。

如需了解详情,请参阅在 Google Cloud 控制台中探索 Anthos Service Mesh

除了 Anthos Service Mesh 页面,系统还会将与服务相关的指标(例如特定服务收到的请求数)发送到 Cloud Monitoring,这些指标显示在 Cloud Monitoring 的 Metrics Explorer 中。

如需查看指标,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到监控页面:

    转到“监控”

  2. 选择资源 > Metrics Explorer

如需查看指标的完整列表,请参阅 Cloud Monitoring 文档中的 Istio 指标

注册您的集群

您必须向项目的队列注册集群,才能获取对 Google Cloud 控制台中的统一界面的访问权限。队列提供一种统一方法来查看和管理集群及其工作负载,包括 Google Cloud 之外的集群。

如需了解如何注册集群,请参阅向舰队注册集群

后续步骤