Anthos Service Mesh 1.6

启用可选功能

安装 Anthos Service Mesh 时,需要指定配置文件。配置文件是 YAML 文件,用于定义和配置通过 Anthos Service Mesh 安装的功能。以下配置文件与 Anthos Service Mesh 一起提供:

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

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

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

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

  • asm-multicloud:对于其他受支持的环境上的集群,请使用此配置文件,这些环境包括 GKE On-Prem、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 子目录中。

您可以使用 IstioOperator API 替换配置文件并启用支持的可选功能。您可以在 YAML 文件中指定 IstioOperator 配置,例如 feature.yaml。(YAML 文件的名称并不重要。)

虽然您可以通过在配置文件中进行更改或通过在命令行上使用 --set 选项指定配置参数来修改配置,但我们建议您使用 IstioOperator 配置 YAML 文件,以便可以将该文件与其他资源配置文件一起存储在版本控制系统中。启用可选功能时,您可以在命令行中指定多个文件。

示例

如需在安装或升级 Anthos Service Mesh 时启用某功能,您必须同时包含要启用的功能的配置文件和 YAML 文件。

启用出站流量网关

此示例展示了如何在 GKE On-Prem 上启用出站流量网关。

  1. 将以下 YAML 复制到 feature.yaml 并保存该文件:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        egressGateways:
          - name: istio-egressgateway
            enabled: true
  2. 如需在 GKE On-Prem 上安装 Anthos Service Mesh,请使用以下命令行:

    istioctl install \
      --set profile=asm-multicloud \
      -f feature.yaml

启用跟踪功能

此示例展示了如何在 GKE on Google Cloud 上启用 Cloud Trace。

如需在 GKE on Google Cloud 上进行安装和升级,您必须准备 istio-operator.yaml,其中包含有关您的项目和集群的信息。配置 istio-operator.yaml 时,您可以设置要使用的配置文件,即 asm-gcpasm-gcp-multiproject。由于配置文件在 istio-operator.yaml 中配置,因此在这种情况下,因此在此情况下您无需在命令行中指定该配置文件(尽管为明确起见您可能需要指定)。

  1. 将以下 YAML 复制到 feature.yaml 并保存该文件:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        enableTracing: true
      values:
        global:
           proxy:
             tracer: stackdriver
  2. 如需在 GKE on Google Cloud 上安装 Anthos Service Mesh,请使用以下命令行:

    istioctl install \
     -f asm/cluster/istio-operator.yaml \
     -f feature.yaml

用于可选功能的 YAML

以下几个部分提供用于启用可选功能和支持的功能的 YAML。启用可选功能时,您必须在命令行中同时包含要启用的功能的配置文件和 YAML 文件。对于 GKE on Google Cloud,该配置文件在 istio-operator.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 on Google Cloud 上进行安装,您可以启用 Cloud Trace。如需详细了解价格信息,请参阅 Cloud Trace 价格页面

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

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

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

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    pilot:
      traceSampling: 100
    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

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

通过出站流量网关出站

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

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

Istio 容器网络接口

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

在 GKE on Google Cloud 上启用 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-Prem 上启用 CNI

对于 GKE On-Prem,请将 gke-system 添加到 excludeNamespacesvalues.cni.cniBinDir. 为 /opt/cni/bin

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 on Google Cloud 上进行安装,您可以为 Istio 入站流量网关启用内部负载平衡器。在以下 YAML 中,将 PROFILE 替换为您正在使用的配置文件(asm-gcpasm-gcp-multiproject)。

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: PROFILE
  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
              - name: https
                port: 443

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

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