Ambient 模式下的发现选择器

在 ambient 模式中,控制平面在发现工作负载并且相应标签启用通过 ZTunnel 代理的流量重定向后,将包含这些工作负载。默认情况下,控制平面会监视集群中所有命名空间的工作负载,这意味着每个代理都会接收所有命名空间的配置——即使是未加入网格的工作负载。

在共享或多租户集群中,将网格参与范围限制在特定命名空间有助于减少配置开销,并支持多个服务网格在同一集群中共存。有关发现选择器的详细信息,请参见 使用发现选择器限定服务网格范围

使用发现选择器限定服务网格范围

要在 ambient 模式中限制服务网格的范围,请在 Istio 资源的 meshConfig 部分配置 discoverySelectors 参数。此配置基于标签选择器控制控制平面监视的命名空间。

前提条件

  • 已创建 Istio 控制平面资源。
  • 已创建 IstioCNI 资源。
  • 已创建 ZTunnel 资源。

操作步骤

  1. 给包含 IstioCNI 资源的命名空间(例如 istio-cni)打标签:

    kubectl label namespace istio-cni istio-discovery=enabled
  2. 给包含 Istio 控制平面资源的命名空间(例如 istio-system)打标签:

    kubectl label namespace istio-system istio-discovery=enabled
  3. 给包含 ZTunnel 资源的命名空间(例如 ztunnel)打标签:

    kubectl label namespace ztunnel istio-discovery=enabled
  4. 更新 Istio 控制平面资源,添加带有匹配标签的 discoverySelectors 部分。创建名为 istio-discovery-selectors.yaml 的 YAML 文件:

    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      namespace: istio-system
      profile: ambient
      values:
        pilot:
          trustedZtunnelNamespace: ztunnel
        meshConfig:
          discoverySelectors:
            - matchLabels:
                istio-discovery: enabled
  5. 应用配置:

    kubectl apply -f istio-discovery-selectors.yaml