在 GKE 上安装和迁移

本指南介绍如何为包含属于同一项目的一个或多个 GKE 集群的网格安装或迁移到 Anthos Service Mesh 版本 1.6.14。您将使用 Google 提供的脚本,该脚本配置项目和集群,然后安装 Anthos Service Mesh。

您可以针对以下使用场景使用本指南:

  • 新安装 Anthos Service Mesh。如果您安装了先前版本的 Anthos Service Mesh,请参阅升级 GKE 上的 Anthos Service Mesh。1.6 脚本不处理升级。

  • 从开源 Istio 1.6 迁移到 Anthos Service Mesh。不支持从更早版本的 Istio 迁移。1.7 版脚本支持从 Istio 1.6 或 1.7 迁移到 Anthos Service Mesh 1.7。由于您要进行迁移,您可能希望迁移到 Anthos Service Mesh 1.7。

  • 从 1.6 版本的 Istio on GKE 插件迁移到 Anthos Service Mesh。在迁移到 Anthos Service Mesh 之前,您需要使用 Operator 升级到 Istio 1.6。如需查看从该插件迁移的完整步骤,请参阅 Istio on GKE 文档中的迁移到 Anthos Service Mesh

您需要针对以下使用场景使用 GKE 上的高级安装和迁移指南:

  • 您需要自定义安装以覆盖 asm-gcp 配置文件中的设置,并且您有多个叠加 IstioOperator YAML 文件。脚本仅允许您指定一个 YAMl 文件。

  • 多集群网格包含的集群属于不同项目。

准备工作

本指南假定您已具备:

如果您是从 Istio 迁移,请务必查看准备从 Istio 迁移

Anthos 与 Anthos Service Mesh 的差异

  • GKE Enterprise 订阅者务必启用 GKE Enterprise API。

    启用该 API

  • 如果您不是 GKE Enterprise 订阅者,您仍然可以安装 Anthos Service Mesh,但 Google Cloud 控制台中的某些界面元素和功能仅供 GKE Enterprise 订阅者使用。如需了解订阅者和非订阅者可以使用的内容,请参阅 GKE Enterprise 和 Anthos Service Mesh 界面差异。如需了解非订阅者的 Anthos Service Mesh 价格,请参阅价格

使用要求

  • 您的 GKE 集群必须满足以下要求:

    • 具有至少四个 vCPU 的机器类型,例如 e2-standard-4。如果集群的机器类型没有至少四个 vCPU,请按照将工作负载迁移到不同的机器类型中所述更改机器类型。

    • 最小节点数取决于您的机器类型。Anthos Service Mesh 至少需要八个 vCPU。如果机器类型有四个 vCPU,则您的集群必须至少有两个节点。如果机器类型有八个 vCPU,则集群只需要一个节点。如果需要添加节点,请参阅调整集群大小

    • 该脚本会在集群上启用 Workload Identity。建议使用 Workload Identity 来调用 Google API。如 Workload Identity 限制所述,启用 Workload Identity 会更改从工作负载到 Google API 的调用方式。

    • (可选,但建议执行)在发布版本中注册集群。我们建议您在常规发布版本中注册集群,因为其他发布版本可能基于 Anthos Service Mesh 1.6.14 不支持的 GKE 版本。如需了解详情,请参阅支持的环境。如果您拥有静态 GKE 版本,请按照在发布渠道中注册现有集群中的说明操作。

  • 如需将服务端口纳入服务网格,必须为服务端口命名,并且名称必须包含以下语法的端口协议:name: protocol[-suffix],其中方括号表示必须以短划线开头的可选后缀。如需了解详情,请参阅为服务端口命名

  • 如果您要在专用集群上安装 Anthos Service Mesh,则必须在防火墙中打开端口 15017,以获取与自动 Sidecar 注入搭配使用的网络钩子,以便正常运行。如需了解详情,请参阅在专用集群上打开端口

  • 如果您在组织中创建了服务边界,则可能需要将 Mesh CA 服务添加到边界。如需了解详情,请参阅将 Mesh CA 添加到服务边界

  • 对于迁移,istiod 必须安装在 istio-system 命名空间中(通常都是这样)。

限制

一个 Google Cloud 项目只能关联一个网格。

选择证书授权机构

对于新安装和迁移,您可以使用 Anthos Service Mesh 证书授权机构 (Mesh CA) 或 Citadel(现已包含在 istiod 中)作为颁发双向 TLS (mTLS) 证书的证书授权机构 (CA)。

基于以下原因,我们通常建议您使用 Mesh CA:

  • Mesh CA 是一项高度可靠的可扩缩服务,针对 Google Cloud 上动态扩缩的工作负载进行了优化。
  • 通过 Mesh CA,Google 负责管理 CA 后端的安全性和可用性。
  • Mesh CA 让您可在集群中依赖单个信任根。
对于新安装的 Anthos Service Mesh,默认情况下,脚本会启用 Mesh CA。

不过,在某些情况下,您可能会考虑使用 Citadel,例如:

  • 如果您拥有自定义 CA。
  • 如果要从 Istio 或 Istio on GKE 插件迁移。

    如果您选择 Citadel,则不存在任何停机时间,因为 mTLS 流量在迁移期间不会中断。如果您选择 Mesh CA,则需要为迁移安排停机时间,因为 mTLS 流量在您重启所有命名空间中的所有 Pod 之前会失败。

来自 Mesh CA 的证书包含有关应用的服务的以下数据:

  • Google Cloud 项目 ID
  • GKE 命名空间
  • GKE 服务账号名称

安装所需的工具

您可以在 Cloud Shell 或运行 Linux 或 macOS 的本地机器上运行该脚本。Cloud Shell 会预安装所有必需的工具。

要在本地运行脚本,请执行以下操作:

  1. 请确保已安装以下工具:

  2. 使用 gcloud CLI 进行身份验证:

    gcloud auth login
    
  3. 更新组件:

    gcloud components update
    
  4. 请确保 git 位于您的路径中,以便 kpt 能够找到它。

运行脚本

本部分介绍如何下载脚本、设置必需参数和可选参数,以及如何运行脚本。如需详细了解脚本的功能,请参阅了解脚本

  1. 将脚本下载到当前工作目录:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.6 > install_asm
    
  2. 将文件的 SHA-256 下载到当前工作目录:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.6.sha256 > install_asm.sha256
    
  3. 在这两个文件位于同一目录的情况下,验证下载:

    sha256sum -c --ignore-missing install_asm.sha256
    

    如果验证成功,则该命令会输出 install_asm: OK

    为了确保兼容性,install_asm.sha256 文件包含两次校验和,以允许将脚本的任何版本重命名为 install_asm。如果出现 --ignore-missing 不存在的错误,请重新运行上一个命令,但不使用 --ignore-missing 标志。

  4. 让该脚本可执行:

    chmod +x install_asm
    
  5. 设置选项并指定运行脚本的标志。您应始终包含以下选项:project_idcluster_namecluster_locationmode。根据 mode,可能需要包含 ca 选项。

    • project_idcluster_namecluster_location 选项标识要安装 Anthos Service Mesh 的集群。
    • modeinstallmigrate
    • ca 将证书授权机构指定为 mesh_cacitadel

    以下部分提供了运行脚本的典型示例。如需查看脚本参数的完整说明,请参阅选项和标志

  6. 要完成 Anthos Service Mesh 的设置,您需要启用自动 Sidecar 注入并部署或重新部署工作负载

示例

本部分提供了在每个 mode 中运行脚本的示例以及一些可能有用的其他参数。请在右侧的导航栏中查看示例列表。

仅验证

以下示例展示使用 --only_validate 选项运行脚本。使用此选项时,脚本不会对您的集群进行任何更改,也不会安装 Anthos Service Mesh。该脚本会验证以下内容:

  • 您的环境拥有所需的工具。
  • 您对指定项目拥有所需权限。
  • 集群符合最低要求。
  • 项目已启用所有必需的 Google API。

默认情况下,该脚本会下载并解压缩安装文件,并将 GitHub 中的 asm 配置软件包下载到临时目录中。在退出之前,该脚本会输出一条消息,提供临时目录的名称。您可以使用 --output_dir DIR_PATH 选项为下载指定现有目录。--output_dir 选项可方便您使用 istioctl 命令行工具(如果需要)。

  1. 创建名为 asm-packages 的目录:

    mkdir asm-packages
    
  2. 运行以下命令以验证配置并将安装文件和 asm 软件包下载到 asm-packages 目录:

    ./install_asm \
    --project_id PROJECT_ID \
    --cluster_name CLUSTER_NAME \
    --cluster_location CLUSTER_LOCATION \
    --mode install \
    --output_dir ./asm-packages \
    --only_validate

成功后,脚本将输出以下内容:

./install_asm \
install_asm: Setting up necessary files...
install_asm: Creating temp directory...
install_asm: Generating a new kubeconfig...
install_asm: Checking installation tool dependencies...
install_asm: Downloading ASM..
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 57.0M  100 57.0M    0     0  30.6M      0  0:00:01  0:00:01 --:--:-- 30.6M
install_asm: Downloading ASM kpt package...
fetching package /asm from https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages to asm
install_asm: Checking for project PROJECT_ID...
install_asm: Confirming cluster information...
install_asm: Confirming node pool requirements...
install_asm: Fetching/writing GCP credentials to kubeconfig file...
Fetching cluster endpoint and auth data.
kubeconfig entry generated for cluster-1.
install_asm: Checking Istio installations...
install_asm: Checking required APIs...
install_asm: Successfully validated all requirements to install ASM from this computer.

如果某一个测试未通过验证,脚本将输出错误消息。例如,如果您的项目未启用所有必需的 Google API,您会看到以下错误:

ERROR: One or more APIs are not enabled. Please enable them and retry, or
re-run the script with the '--enable_apis' flag to allow the script to enable
them on your behalf.

新安装

以下命令运行新安装的脚本,启用 Mesh CA(新安装的默认 CA,因此在此情况下不需要使用 ca 选项),并允许脚本启用所需的 Google API。

./install_asm \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --mode install \
  --enable_apis

使用叠加文件的新安装

以下示例执行新安装并包含一个启用可选功能的 YAML 文件。

./install_asm \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --mode install \
  --enable_apis \
  --operator_overlay egressgateways.yaml

从 Istio 迁移

如果您是从开源 Istio 进行迁移,则使用 Citadel 作为 CA。以下命令运行迁移到 Anthos Service Mesh 的脚本,并启用 Citadel 作为 CA。此迁移仅部署控制平面。它不会更改根 CA,也不会打断现有工作负载。

./install_asm \
  -p PROJECT_ID \
  -n CLUSTER_NAME \
  -l CLUSTER_LOCATION \
  -m migrate \
  -c citadel \
  --enable_apis

选项和标志

选项

-p|--project_id CLUSTER_PROJECT_ID
在其中创建集群的项目的 ID。
-n|--cluster_name CLUSTER_NAME
集群的名称。
-l|--cluster_location CLUSTER_LOCATION
在其中创建集群的区域(对于单区域集群)或地区(对于地区级集群)。
-m|--mode {install|migrate}
如果要新安装 Anthos Service Mesh,请输入 install。如果您要从 Istio 或 Istio on GKE 插件迁移到 Anthos Service Mesh,请输入 migrate
-c|--ca {mesh_ca|citadel}
如果您要执行新的安装操作,则此参数默认为 Mesh CA,您无需添加它。如果您要从 Istio 进行迁移,则必须指定 citadelmesh_ca。如果您可以为迁移安排停机时间,我们建议您使用 mesh_ca。如果您无法为迁移安排停机时间,请使用 citadel
-o|--operator_overlay YAML_FILE
用于启用 asm-gcp 配置文件中未启用的功能的 YAML 文件的名称。脚本必须能够找到该 YAML 文件。因此,该文件必须与该脚本位于同一目录中,您也可以指定相对路径,例如:../manifests/asm-features.yaml
-s|--service_account ACCOUNT
用于安装 Anthos Service Mesh 的服务账号的名称。如果未指定,则使用当前 gcloud 配置中的活动用户账号。如果您需要更改活跃用户账号,请运行 gcloud auth login
-k|--key_file FILE PATH
服务账号的密钥文件。如果您未使用服务账号,请忽略此选项。
-D|--output_dir DIR_PATH
如果未指定,脚本将创建一个临时目录,用于下载安装 Anthos Service Mesh 所需的文件和配置。指定 --output-dir 标志以改为指定使用现有目录。完成后,指定的目录包含 asmistio-1.6.14-asm.2 子目录。asm 目录包含安装的配置。istio-1.6.14-asm.2 目录包含安装文件的解压缩内容,其中包含 istioctl、示例和清单。

标志

-e|--enable_apis
允许该脚本启用 Anthos Service Mesh 所需的 Google API。未使用此标志的情况下,如果所需的 API 尚未启用,则脚本将退出。如需查看脚本启用的 API 列表,请参阅 set_up_project
-v|--verbose
在执行前后输出命令。
--dry_run
输出命令,但不执行这些命令。
--only_validate
运行验证,但不安装 Anthos Service Mesh。
--disable_canonical_service
默认情况下,该脚本会将规范化服务控制器部署到您的集群。如果您不希望脚本部署该控制器,请指定 --disable_canonical_service。如需了解详情,请参阅启用和停用规范化服务控制器
-h|--help
显示描述选项和标志的帮助消息并退出。

部署和重新部署工作负载

您需要启用自动边车代理注入(自动注入),才能完成安装。

  • 对于新安装,在安装 Anthos Service Mesh 之前,您需要为集群上运行的所有工作负载启用自动注入和重启 pod。

  • 从 Istio 迁移时,应遵循双控制平面升级过程(在 Istio 文档中称为 Canary 版升级)。在双控制平面升级中,脚本在现有 istiod 的基础上安装新版本的 istiod。然后,您再将部分工作负载移至新版本。利用此过程,您可以通过一小部分工作负载监控新版本的影响,然后再将所有流量迁移到新版本。

  • 在部署新工作负载之前,请务必启用自动注入,以便 Anthos Service Mesh 可以监控和保护流量。

要启用自动注入,您需要获取脚本应用于 istiod 的修订版本标签,并使用该修订版本标签为命名空间添加标签。以下部分将作详细介绍。

获取修订版本标签

脚本会将格式为 istio.io/rev=asm-1614-2 的修订版本标签添加到 istiod。要启用自动注入,请向一个或多个命名空间添加匹配的修订版本标签。Sidecar 注入器网络钩子会使用修订版本标签将注入的 Sidecar 与特定 istiod 修订版本相关联。添加标签后,必须重启命名空间中的任何现有 pod,才能注入 Sidecar。

  1. 设置 kubectl 的当前上下文:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --project=PROJECT_ID
    
  2. 显示 istiod 上的标签,以获取脚本设置的修订版本标签:

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

    此命令的输出类似如下所示。

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-7744bc8dd7-qhlss             1/1     Running   0          49m   app=istiod,istio.io/rev=default,istio=pilot,pod-template-hash=7744bc8dd7
    istiod-asm-1614-2-85d86774f7-flrt2   1/1     Running   0          26m   app=istiod,istio.io/rev=asm-1614-2,istio=istiod,pod-template-hash=85d86774f7
    istiod-asm-1614-2-85d86774f7-tcwtn   1/1     Running   0          26m   app=istiod,istio.io/rev=asm-1614-2,istio=istiod,pod-template-hash=85d86774f7

    在输出中的 LABELS 列下,记下 istiod 修订版本标签的值,该值位于前缀 istio.io/rev= 之后。在此示例中,该值为 asm-1614-2,但您的值可能会不同。

    对于迁移,请也记下旧 istiod 版本的修订版本标签中的值。完成迁移后,您需要使用此值来删除旧版本的 istiod。在示例输出中,旧 istiod 版本的修订版本标签中的值为 default,但您的值可能会不同。

启用自动注入

按照以下步骤为新安装和迁移启用自动注入。

  1. 获取 istiod 的修订版本标签中的值

  2. 将修订版本标签添加到命名空间,并移除 istio-injection 标签。在以下命令中,将 REVISION 更改为与 istiod 上的修订版本匹配的值。

    kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite
  3. 重启 pod 以触发重新注入。

    kubectl rollout restart deployment -n NAMESPACE
  4. 验证 pod 是否配置为指向新版 istiod

    kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
  5. 测试您的应用,验证工作负载是否正常工作。

  6. 如果您的其他命名空间中存在工作负载,请重复上述步骤以标记命名空间并重启 Pod。

对于迁移:

  • 如果您确信应用按预期正常运行,请继续进行下一部分以完成转换从而转换到新版本的 istiod

  • 如果应用出现问题,请按照回滚到先前版本中的步骤操作。

完成转换

对于迁移,您需要移除 istiod 的旧版本。如果您确信应用按预期正常运行,请移除旧控制平面以完成到新版本的转换。

  1. 获取 istiod 的旧版本的版本标签中的值

  2. 删除 istiod 的旧版本。在以下命令中,将 OLD_REVISION 替换为上一步中获得的修订版本。

    kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION  -n istio-system --ignore-not-found=true
    

回滚到先前版本

对于迁移,如果您在使用 istiod 的新版本测试应用时遇到问题,请按照以下步骤回滚到之前的版本:

  1. 更新工作负载以注入先前的 istiod 版本:

    kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
  2. 重启 pod 以触发重新注入,以使代理具有之前的版本:

    kubectl rollout restart deployment -n NAMESPACE
  3. 重新部署旧版 istio-ingressgateway

    kubectl -n istio-system rollout undo deploy istio-ingressgateway
    
  4. 移除新的 istiod

    kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION -n istio-system --ignore-not-found=true
    
  5. 如果您未添加 --disable_canonical_service 标志,则脚本会启用规范化服务控制器。按照启用和停用规范化服务控制器中的步骤操作以将其停用。

查看 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 之外的集群。

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

了解脚本

虽然您可以从安全的 Cloud Source Repositories 位置下载该脚本,但 GitHub 上也提供了该脚本,因此您可以在下载前查看它所执行的操作。该脚本会验证您的集群是否满足要求,并且会自动执行您在 GKE 上安装 Anthos Service Mesh 时需要手动执行的所有步骤。

validate_argsvalidate_dependencies

validate_args() {
  if [[ "${MODE}" == "install" && -z "${CA}" ]]; then
    CA="mesh_ca"
  fi

  local MISSING_ARGS=0
  while read -r REQUIRED_ARG; do
    if [[ -z "${!REQUIRED_ARG}" ]]; then
      MISSING_ARGS=1
      warn "Missing value for ${REQUIRED_ARG}"
    fi
    readonly "${REQUIRED_ARG}"
  done <<EOF
validate_dependencies() {
  validate_cli_dependencies

  validate_gcp_resources
  # configure kubectl does have side effects but we've generated a temprorary
  # kubeconfig so we're not breaking the promise that --only_validate gives
  configure_kubectl
  validate_expected_control_plane
  if [[ "${MODE}" = "migrate" ]]; then
    validate_istio_version
  fi
  if [[ "${ENABLE_APIS}" -eq 0 || "${ONLY_VALIDATE}" -eq 1 ]]; then
    exit_if_apis_not_enabled
  fi
}

validate_argsvalidate_dependencies 函数:

  • 检查是否安装了所有必需的工具
  • 验证您作为参数值输入的项目 ID、集群名称和集群位置是否有效。
  • 确保集群满足机器类型和节点数的最低要求

set_up_project

如果您添加了 --enable_apis 标志,则 set_up_project 函数会启用所需的 API:

required_apis() {
    cat << EOF
container.googleapis.com
compute.googleapis.com
monitoring.googleapis.com
logging.googleapis.com
cloudtrace.googleapis.com
meshca.googleapis.com
meshtelemetry.googleapis.com
meshconfig.googleapis.com
iamcredentials.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
cloudresourcemanager.googleapis.com
EOF
}

set_up_cluster

set_up_cluster(){
  add_cluster_labels
  enable_workload_identity

  # this is project scope but requires workload identity
  if [[ "${CA}" = "mesh_ca" ]]; then
    init_meshca
  fi

  enable_stackdriver_kubernetes
  bind_user_to_cluster_admin
  ensure_istio_namespace_exists
}

set_up_cluster 函数会对您的集群进行以下更新:

  • 启用 Workload Identity,这是从 GKE 应用安全访问 Google Cloud 服务的推荐方法。

  • 启用 GKE 上的 Cloud Monitoring 和 Cloud Logging

  • 在集群上设置 mesh_id 标签,该标签对于在 Google Cloud 控制台中的 Anthos Service Mesh 页面上显示指标必不可少。

  • 设置像 asmv=asm-1614-2 这样的标签,以分辨脚本是否已修改集群。

  • 将运行脚本的 GCP 用户或服务账号绑定到集群上的集群管理员角色。

install_asm

install_asm(){

  local CA_OPT
  CA_OPT=""
  if [[ "${CA}" = "citadel" ]]; then
    CA_OPT="-citadel"
  fi

  info "Configuring kpt package..."
  run kpt cfg set asm gcloud.container.cluster "${CLUSTER_NAME}"
  run kpt cfg set asm gcloud.core.project "${PROJECT_ID}"
  run kpt cfg set asm gcloud.project.environProjectNumber "${PROJECT_NUMBER}"
  run kpt cfg set asm gcloud.compute.location "${CLUSTER_LOCATION}"
  run kpt cfg set asm anthos.servicemesh.rev "${REVISION_LABEL}"
  if [[ -n "${_CI_ASM_IMAGE_LOCATION}" ]]; then
    run kpt cfg set asm anthos.servicemesh.hub "${_CI_ASM_IMAGE_LOCATION}"
    run kpt cfg set asm anthos.servicemesh.tag "${RELEASE}"
  fi

  local PARAMS
  PARAMS="-f ${OPERATOR_MANIFEST}"
  if [[  -f "$CUSTOM_OVERLAY" ]]; then
    PARAMS="${PARAMS} -f ${CUSTOM_OVERLAY}"
  fi
  PARAMS="${PARAMS} --set revision=${REVISION_LABEL}"
  PARAMS="${PARAMS} -c ${KUBECONFIG}"

  info "Installing ASM control plane..."
  # shellcheck disable=SC2086
  retry 5 run ./"${ISTIOCTL_REL_PATH}" install $PARAMS

  # Prevent the stderr buffer from ^ messing up the terminal output below
  sleep 1
  info "...done!"

  if ! does_istiod_exist; then
    info "Installing validation webhook fix..."
    retry 3 run kubectl apply -f "${VALIDATION_FIX_SERVICE}"
  fi

  if [[ "$DISABLE_CANONICAL_SERVICE" -ne 1 ]]; then
    info "Installing ASM CanonicalService controller in asm-system namespace..."
    retry 3 run kubectl apply -f asm/canonical-service/controller.yaml
    info "Waiting for deployment..."
    retry 3 run kubectl wait --for=condition=available --timeout=600s \
        deployment/canonical-service-controller-manager -n asm-system
    info "...done!"
  fi

  outro
}

install_asm 函数

  • kpt 软件包下载到临时目录。
  • 运行 kpt setter 以配置 istio-operator.yaml 文件。
  • 安装 Anthos Service Mesh。

与 1.7 脚本的区别

1.7 脚本 1.6 脚本
支持升级。 不进行升级。
支持从 Istio 1.6 和 Istio 1.7 迁移。 支持从 Istio 1.6 迁移。
--print_config
提供使用 install_asm 脚本安装时使用的配置。通过标志,您可以轻松地使用先前安装时所用的相同配置重新安装 Anthos Service Meshversion(脚本不允许)。
不可用
--custom_overlay
允许多个叠加文件。
--custom_overlay
仅允许一个叠加文件。
--option
GitHub 上的 asm 软件包中拉取叠加文件。
不可用。
支持具有以下选项的自定义 CA:

--ca_cert
--ca_key
--root_cert
--cert_chain

不可用。