在集群内控制平面上启用可选功能
本页面介绍如何在使用集群内控制平面的 Cloud Service Mesh 上启用可选功能。
安装集群内 Cloud Service Mesh 时,默认启用的功能因平台而异。安装(或升级)Cloud Service Mesh 时,您可以通过添加叠加文件来替换默认配置并启用可选功能。叠加文件是一个 YAML 文件,其中包含您用于配置控制平面的 IstioOperator 自定义资源 (CR)。请在每个叠加文件中指定一个功能。您可以叠加多个文件,每个叠加文件会覆盖之前各层的配置。
关于叠加文件
此页面中的叠加文件位于 GitHub 上的 anthos-service-mesh 软件包中。这些文件包含默认配置的常见自定义。您可以按原样使用这些文件,也可以根据需要对这些文件进行其他更改。
使用 asmcli 脚本安装 Cloud Service Mesh 时,您可以通过 --option 或 --custom_overlay 选项指定一个或多个叠加文件。如果您不需要对 anthos-service-mesh 代码库中的文件进行任何更改,则可以使用 --option,该脚本将从 GitHub 中提取文件。否则,您可以对叠加层文件进行更改,然后使用 --custom_overlay 选项将其传递给 asmcli。
| 不要在一个叠加文件中包含多个 CR | 为每个 CR 创建单独的叠加文件 |
|---|---|
![]() |
![]() |
如何启用可选功能
以下示例经过简化,仅显示自定义叠加层以启用可选功能。将 OTHER_FLAGS 替换为所需的安装标志。
asmcli install 命令提供两种启用可选功能的方法。您使用的方法取决于您是否需要更改叠加层文件。
如果不需要对叠加层文件进行任何更改,请使用
--option。使用--option时,asmcli会从 GitHub 代码库中为您提取该文件,因此您必须连接到互联网。./asmcli install \ OTHER_FLAGS \ --option OPTION_NAME将
OPTION_NAME替换为您要启用的选项。请务必省略 .yaml 扩展名,并仅包含叠加文件的名称,例如iap-operator和attached-cluster。如需查看选项列表,请参阅anthos-service-mesh软件包。如果您需要自定义叠加层文件,请使用
--custom_overlay。./asmcli install \ OTHER_FLAGS \ --custom_overlay PATH_TO_FILE将
PATH_TO_FILE替换为您要使用的叠加层文件的路径。
用于可选功能的 YAML
以下几个部分提供用于启用可选功能和支持的功能的 YAML。
mTLS STRICT 模式
global.mtls.enabled 配置已从 IstioOperator CR 中移除,以避免升级出现问题并提供更灵活的安装。如需启用 STRICT mTLS,请改为配置对等身份验证政策。
Distroless 代理映像
Istio 提供基于 Distroless 基础映像的代理映像。
以下配置可为整个 Cloud Service Mesh 启用 Distroless 映像。映像类型更改要求每个 pod 重启并重新注入才能生效。
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
defaultConfig:
image:
imageType: distroless
Distroless 映像不包含代理以外的任何二进制文件。因此,无法使用 exec shell 或使用容器中的 curl、ping 或其他调试实用程序。
如果您运行 curl 命令,则会看到以下错误:
error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "<container-id>"
OCI runtime exec failed: exec failed: unable to start container process: exec: "curl": executable file not found in $PATH: unknown
如果您运行 shell 命令,则会看到以下错误:
error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "<container-id>"
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "sh": executable file not found in $PATH: unknown
如果您需要为特定 Pod 访问这些工具,则可以使用以下 Pod 注解替换 imageType。
sidecar.istio.io/proxyImageType: debug
通过注解更改部署的映像类型后,部署应重启。
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
对于大多数代理调试类型,应使用 istioctl proxy-cmd,它无需调试基础映像。
为自定义注册表使用自定义叠加层
例如,如果您需要从自定义 Container Registry 安装 Cloud Service Mesh,那么您可以为自定义注册表使用自定义叠加层。例如:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
hub: {private_registry_url}
下面是您需要镜像到自定义 Container Registry 的 Cloud Service Mesh 映像的列表:
- Install-cni -
gke.gcr.io/asm/install-cni:1.30.5-asm.11 - Managed Data Plane -
gke.gcr.io/asm/mdp:1.30.5-asm.11 - Pilot -
gke.gcr.io/asm/pilot:1.30.5-asm.11 - Proxyv2 -
gke.gcr.io/asm/proxyv2:1.30.5-asm.11
将映像添加到私有存储库
如需将 Cloud Service Mesh 映像推送到私有注册表,请完成以下步骤。
-
拉取 Cloud Service Mesh 映像:
docker pull gke.gcr.io/asm/install-cni:1.30.5-asm.11 docker pull gke.gcr.io/asm/pilot:1.30.5-asm.11 docker pull gke.gcr.io/asm/proxyv2:1.30.5-asm.11
-
为私有注册表网址创建变量:
将export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
PRIVATE_REGISTRY_URL替换为您的私有注册表网址。 -
使用您的私有注册表网址标记映像:
docker tag gke.gcr.io/asm/install-cni:1.30.5-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.30.5-asm.11 docker tag gke.gcr.io/asm/mdp:1.30.5-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.30.5-asm.11 docker tag gke.gcr.io/asm/proxyv2:1.30.5-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.30.5-asm.11 - 将带有标记的映像推送到您的私有注册表:
docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.30.5-asm.11 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.30.5-asm.11 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.30.5-asm.11 - (可选)如果您使用规范化服务,请将规范化服务映像添加到您的私有注册表。
- 拉取 Cloud Service Mesh 规范化服务映像:
docker pull gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 docker pull gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 - 使用您的私有注册表网址标记映像:
docker tag gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 \ ${PRIVATE_REGISTRY_URL}/gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 docker tag gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 - 将带有标记的映像推送到您的私有注册表:
docker push ${PRIVATE_REGISTRY_URL}/gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
- 拉取 Cloud Service Mesh 规范化服务映像:
如果您可以从私有存储库中拉取标记的映像,则过程已成功。
增加终止排空时长
默认情况下,当 Pod 终止时,Envoy 将等待 5 秒 (5s),以便现有连接完成。
Pod terminationGracePeriodSeconds 必须大于 terminationDrainDuration 值。
如需了解详情,请参阅全局网格选项。
---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
defaultConfig:
terminationDrainDuration: 30s
启用访问日志
如需了解详情,请参阅启用 Envoy 的访问日志记录。
Cloud Trace
可以在以下平台上安装的 Cloud Service Mesh 使用 Cloud Trace:
- GKE on Google Cloud
- 本地 GKE Enterprise 集群(如果您使用 Cloud Service Mesh 证书授权机构进行安装)
如需了解详情,请参阅访问跟踪记录。
通过出站流量网关出站
我们建议您按照安装和升级网关中的说明安装注入的网关。注入(或自动注入)是指使用更改webhook在创建时修改 Pod 规范。您可以使用注入来为网格服务添加 Envoy 代理 Sidecar 配置,或者配置网关的 Envoy 代理。
Istio 容器网络接口
如何启用 Istio 容器网络接口 (CNI) 取决于安装 Cloud Service Mesh 的环境。
选择与您的平台相匹配的叠加文件。
在 GKE 上启用 CNI
在本地启用 CNI
在Google Cloud外部启用流量日志
默认情况下,如果在 Google Cloud 外部使用 Istio CA 安装 Cloud Service Mesh,则系统会向 Prometheus 报告指标。使用此选项可以改为启用流量日志报告,或者同时向 Prometheus 和 Stackdriver 报告指标,以便您可以使用 Cloud Service Mesh 信息中心。
仅 Stackdriver
Stackdriver 和 Prometheus
启用内部负载均衡器
我们建议您按照安装和升级网关中的说明安装注入的网关,以在 GKE 上设置内部负载均衡器。配置网关 Service 时,您需要添加注解:networking.gke.io/load-balancer-type: "Internal"
入站流量网关上的外部证书管理
如需了解如何使用 Envoy SDS 在入站流量网关上启用外部证书管理,请参阅安全网关。

