安装 Anthos Service Mesh 时,需要指定配置文件。配置文件是 YAML 文件,用于定义和配置通过 Anthos Service Mesh 安装的功能。以下配置文件与 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
子目录中。
您可以使用 IstioOperator
API 替换配置文件并启用支持的可选功能。您可以在 YAML 文件中指定 IstioOperator
配置,例如 feature.yaml
。(YAML 文件的名称并不重要。)
虽然您可以通过在配置文件中进行更改或通过在命令行上使用 --set
选项指定配置参数来修改配置,但我们建议您使用 IstioOperator
配置 YAML 文件,以便可以将该文件与其他资源配置文件一起存储在版本控制系统中。启用可选功能时,您可以在命令行中指定多个文件。
示例
如需在安装或升级 Anthos Service Mesh 时启用某功能,您必须同时包含要启用的功能的配置文件和 YAML 文件。 这些示例假设您已完成安装或升级指南中安装 Anthos Service Mesh 之前的所有步骤。
启用出站流量网关
此示例展示了如何在 GKE On VMware 上启用出站流量网关。
将以下 YAML 复制到
feature.yaml
并保存该文件:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: egressGateways: - name: istio-egressgateway enabled: true
要在 GKE On VMware 上安装 Anthos Service Mesh,请在以下命令行中,将
REVISION
替换为要安装的确切 Anthos Service Mesh 版本,例如:asm-1614-2
istioctl install \ --set profile=asm-multicloud \ --set revision=REVISION \ -f feature.yaml
启用跟踪功能
此示例展示了如何在 GKE 上启用 Cloud Trace。
如需在 GKE 上进行安装和升级,您必须准备 istio-operator.yaml
,其中包含有关您的项目和集群的信息。配置 istio-operator.yaml
时,您可以设置要使用的配置文件,即 asm-gcp
或 asm-gcp-multiproject
。由于配置文件在 istio-operator.yaml
中配置,因此在这种情况下,因此在此情况下您无需在命令行中指定该配置文件(尽管为明确起见您可能需要指定)。
将以下 YAML 复制到
feature.yaml
并保存该文件:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: enableTracing: true values: global: proxy: tracer: stackdriver
如需在 GKE 上安装 Anthos Service Mesh,请在以下命令行中:
- 将
PROFILE
替换为您使用的配置文件,可以是:asm-gcp
或asm-gcp-multiproject
- 将
REVISION
替换为要安装的确切 Anthos Service Mesh 版本,例如:asm-1614-2
istioctl install \ -f asm/cluster/istio-operator.yaml \ --set profile=PROFILE \ --set revision=REVISION \ -f feature.yaml
- 将
用于可选功能的 YAML
以下几个部分提供用于启用可选功能和支持的功能的 YAML。启用可选功能时,您必须在命令行中同时包含要启用的功能的配置文件和 YAML 文件。对于 GKE,该配置文件在 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 上进行安装,您可以启用 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 上启用 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
对于 GKE on VMware,请将 gke-system
添加到 excludeNamespaces
且 values.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 上的安装,可为 Istio 入站流量网关启用内部负载均衡器。在以下 YAML 中,将 PROFILE
替换为您正在使用的配置文件(asm-gcp
或 asm-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 在入站流量网关上启用外部证书管理,请参阅安全网关。