启用可选功能

安装 Anthos Service Mesh 时,根据您的环境,您可以指定配置文件,也可以指定为您设置配置文件的叠加文件。配置文件是使用 IstioOperator API 的 YAML 文件。这些配置文件定义和配置使用 Anthos Service Mesh 安装的功能。Anthos Service Mesh 配置文件是 empty 配置文件(意味着无设置)或 Istio default 配置文件的叠加。以下配置文件与 Anthos Service Mesh 一起提供:

  • asm-gcp:如果所有 GKE 集群都位于同一项目中,请使用此配置文件。使用此配置文件安装 Anthos Service Mesh 时,以下功能处于启用状态:

  • asm-gcp-multiproject:如果您的 GKE 集群位于共享虚拟私有云,而您希望将不同项目中的集群添加到 Anthos Service Mesh,请使用此配置文件。使用 asm-gcp-multiproject 配置文件安装 Anthos Service Mesh 时:

    • 目前,Google Cloud 控制台中的 Anthos Service Mesh 信息中心不可用。但是,您仍然可以在 Cloud Logging 和 Cloud Monitoring 中查看每个项目的日志和指标。

    • asm-gcp-multiproject 配置文件的支持的功能页面上列出的支持的默认功能处于启用状态。

  • asm-multicloud:对于其他受支持的环境上的集群,请使用此配置文件,这些环境包括 GKE On VMware、GKE on AWS、Amazon Elastic Kubernetes Service (Amazon EKS) 和 Microsoft Azure Kubernetes Service (Microsoft AKS)。使用 asm-multicloud.yaml 配置文件安装 Anthos Service Mesh 时,asm-multicloud 配置文件支持的功能页面上列出的支持的默认功能处于启用状态。

这些配置文件位于 Anthos Service Mesh 安装的根目录的 manifests/profiles 子目录中。

叠加文件

叠加文件是一个 YAML 文件,其中包含您用于配置控制平面的 IstioOperator 自定义资源 (CR)。您可以替换默认配置,并在叠加层文件中启用受支持的可选功能。您可以叠加多个文件,每个叠加文件会覆盖之前各层的配置。

使用 istioctl install 命令安装或升级 Anthos Service Mesh 时,您可以使用 -f 命令行选项在命令行中指定一个或多个叠加文件。

不要在一个 YAML 文件中包含多个 CR 为每个 CR 创建单独的 YAML 文件
一个 YAML 中的多个 CR 每个 CR 的单独 YAML 文件

虽然您可以通过对 istioctl install 使用 --set 选项在命令行中指定配置参数来修改配置,但我们建议您使用叠加文件,以便可以将该文件与其他自定义资源文件一起存储在版本控制系统中。您需要在升级 Anthos Service Mesh 时保留这些文件,以便服务网格在升级后具有相同的配置。

此页面中的叠加文件位于 GitHub 上的 asm 软件包中。这些文件包含配置文件的常用自定义设置。您可以按原样使用这些文件,也可以根据需要对这些文件进行其他更改。您也可以创建自己的叠加文件,如自定义配置中所述。

使用 Google 提供的 install_asm 脚本安装 Anthos Service Mesh 时,您可以使用 --option--custom_overlay 选项指定一个或多个叠加文件。如果您不需要对文件进行任何更改,则可以使用 --option,脚本会从 GitHub 中提取文件。否则,您可以更改叠加文件,然后使用 --custom_overlay 选项将其传递给 install_asm 脚本。如需查看使用这两个选项的示例,请参阅 install_asm 示例

要下载 asm 软件包,请执行以下操作:

以下步骤使用 kpt 从 GitHub 代码库下载 asm 软件包。如果愿意,您也可以改为使用 git clone

  1. 如果您尚未安装 kpt,请进行安装:

    gcloud components install kpt
    
  2. 下载包含这些文件的软件包:

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

示例

如需在安装或升级 Anthos Service Mesh 时启用某功能,您必须同时包含配置文件或设置配置文件的叠加文件以及要启用的功能的文件。根据环境以及您使用的是 install_asm 脚本还是 istioctl install 命令,确切的命令会略有不同。

以下所有命令都将在 istiod 上设置修订版本标签。修订版本标签的格式为 istio.io/rev=asm-178-10。自动 Sidecar 注入器网络钩子使用修订版本标签将注入的 Sidecar 与特定 istiod 修订版本相关联。如需为命名空间启用 Sidecar 自动注入功能,请使用与 istiod 上的修订版本标签匹配的修订版本来为其添加标签。

在 GKE On-Prem 上启用出站流量网关

本示例假设您已完成在本地安装 Anthos Service Mesh 指南中安装 Anthos Service Mesh 之前的所有步骤,并且 asm 软件包位于您当前的工作目录中。egressgateways.yaml 文件包含用于启用出站流量网关的配置。

  1. 在 GKE on VMware 上安装 Anthos Service Mesh:

    istioctl install \
      --set profile=asm-multicloud \
      -f asm/istio/options/egressgateways.yaml \
      --set revision=asm-178-10
    
  2. 请务必返回 GKE on VMware 安装指南以配置新安装所需的验证 webhook。

在 GKE on Google Cloud 上启用出站流量网关

我们建议您使用 install_asm 脚本设置独立集群或属于同一项目的多个集群。该脚本使用 asm-gcp 配置文件,并在 istiod 上设置修订版本标签。本示例假设您已按照在 GKE 上安装 Anthos Service Mesh 指南下载了 release-1.7-asm 分支上安装 Anthos Service Mesh 1.7.8 的 install_asm 脚本版本。

要使用 install_asm 脚本安装出站流量网关,请运行以下命令:

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

此命令运行新安装的脚本,设置 asm-gcp 配置文件,使用 Anthos Service Mesh 所需的选项配置集群,启用 Mesh CA(新安装的默认证书授权机构),允许脚本启用所需的 Google API 并从 GitHub 提取 egressgateways.yaml

在不同项目的 GKE 集群上启用出站流量网关

目前,install_asm 脚本不支持使用 asm-gcp-multiproject 配置文件安装 Anthos Service Mesh。当您想要配置不同项目中的多个集群时,需要使用该配置文件。

以下命令行假设您已完成多项目安装和迁移中安装 Anthos Service Mesh 之前的所有步骤,并且 asm 软件包位于您当前的工作目录中。

  1. 安装 Anthos Service Mesh:

    istioctl install \
     -f asm/istio/istio-operator.yaml \
     -f asm/istio/options/multiproject.yaml \
     -f asm/istio/options/multicluster.yaml\
     -f asm/istio/options/egressgateways.yaml \
     --set revision=asm-178-10
    

    以下文件将叠加在 istio-operator.yaml 文件中的设置之上:

    • multiproject.yaml 文件设置 asm-gcp-multiproject 配置文件。由于此文件设置配置文件,因此您需要在其他叠加文件之前指定它。

    • multicluster.yaml 文件配置 Anthos Service Mesh 进行多集群配置所需的设置。

    • egressgateways.yaml 文件配置出站流量网关。

  2. 请务必返回到多项目安装指南以配置新安装所需的验证网络钩子。

用于可选功能的 YAML

以下几个部分提供用于启用可选功能和支持的功能的 YAML。

mTLS STRICT 模式

global.mtls.enabled 配置已被移除,以避免升级出现问题并提供更灵活的安装。如需启用 STRICT mTLS,请改为配置对等身份验证政策

将 Envoy 定向到 stdout

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

如需了解详情,请参阅启用 Envoy 的访问日志记录

Cloud Trace

如需在 GKE 上进行安装,您可以启用 Cloud Trace。如需详细了解价格信息,请参阅 Cloud Trace 价格页面

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

默认采样率为 1%,但您可以通过指定 tracing.sampling 值来替换默认值。值必须在 0.0 到 100.0 的范围内,且精确率为 0.01。例如,如需跟踪每 10000 个请求中的 5 个,请使用 0.05。

以下示例展示了 100% 的采样率(仅用于演示或问题排查目的)。

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100
  values:
    global:
      proxy:
        tracer: stackdriver

跟踪上下文传播

虽然 Sidecar 代理可以自动发送跟踪记录 span,但它们需要一些提示来将整个跟踪记录关联在一起。应用需要传播适当的 HTTP 标头,以便在代理发送 span 信息时,span 可以正确地关联到单个跟踪记录中。

为此,应用需要从传入请求中收集以下标头并将其传播到任何传出请求:

  • x-request-id
  • x-b3-traceid
  • x-b3-spanid
  • x-b3-parentspanid
  • x-b3-sampled
  • x-b3-flags
  • x-ot-span-context
  • x-cloud-trace-context
  • traceparent
  • grpc-trace-bin

如需查看传播标头的示例,请参阅跟踪上下文传播

使用自定义 ID 从客户端创建跟踪记录

如需使用自定义 ID 从客户端创建跟踪记录,请使用 curl 命令创建具有外部客户端的请求并强制其显示跟踪记录。例如:

curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"

如需详细了解 x-client-trace-id,请参阅 Envoy 文档

通过出站流量网关出站

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    egressGateways:
    - name: istio-egressgateway
      enabled: true

如需了解详情,请参阅出站流量网关

Istio 容器网络接口

如何启用 Istio 容器网络接口 (CNI) 取决于安装 Anthos Service Mesh 的环境。您还需要启用网络政策

在 GKE 上启用 CNI

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
      - istio-system
      - kube-system

在 GKE on VMware 上启用 CNI

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
      - istio-system
      - kube-system
      - gke-system

启用内部负载均衡器

对于 GKE 上的安装,可为 Istio 入站流量网关启用内部负载均衡器。

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
    - name: istio-ingressgateway
      enabled: true
      k8s:
        serviceAnnotations:
          cloud.google.com/load-balancer-type: "internal"
        service:
          ports:
          - name: status-port
            port: 15020
          - name: http2
            port: 80
            targetPort: 8080
          - name: https
            port: 443
            targetPort: 8443

入站流量网关上的外部证书管理

如需了解如何使用 Envoy SDS 在入站流量网关上启用外部证书管理,请参阅安全网关