1.4. 使用发现选择器对 Service Mesh 进行范围


Service Mesh 包括满足以下条件的工作负载:

  • control plane 已发现工作负载。
  • 工作负载注入了 Envoy 代理 sidecar。

默认情况下,control plane 在集群中的所有命名空间中发现工作负载,其结果如下:

  • 每个代理实例接收所有命名空间的配置,包括没有在网格中注册的工作负载。
  • 任何具有适当 pod 或命名空间注入标签的工作负载都会接收代理 sidecar。

在共享集群中,您可能想要将 Service Mesh 范围限制为只有某些命名空间。当多个服务网格在同一个集群中运行时,此方法特别有用。

1.4.1. 关于发现选择器

使用发现选择器,网格管理员可以控制 control plane 可以访问的命名空间。通过使用 Kubernetes 标签选择器,管理员将命名空间可见的条件设置为 control plane,不包括与指定条件不匹配的任何命名空间。

注意

Istiod 始终为所有命名空间打开对 OpenShift 的监视。但是,发现选择器会忽略其处理早期没有被选择的对象,从而尽量减少成本。

discoverySelectors 字段接受一组 Kubernetes 选择器,它们应用到命名空间上的标签。您可以为不同的用例配置每个选择器:

  • 自定义标签名称和值。例如,使用标签 istio-discovery=enabled 配置所有命名空间。
  • 使用基于集合的选择器和 OR 逻辑的命名空间标签列表。例如,使用 istio-discovery=enabled OR region=us-east1 配置命名空间。
  • 包含和排除命名空间。例如,使用 istio-discovery=enabled 和标签 app=helloworld 配置命名空间。
注意

发现选择器不是安全边界。即使配置了 discoverySelector 字段,Istiod 仍然可以访问所有命名空间。

1.4.2. 使用发现选择器来限制 Service Mesh

如果您知道在 Service Mesh 中包含的命名空间,请在安装过程中或安装后配置 discoverySelectors,方法是将所需的选择器添加到 Istio 资源的 meshConfig.discoverySelectors 部分。例如,将 Istio 配置为仅发现标记为 istio-discovery=enabled 的命名空间。

先决条件

  • 已安装 OpenShift Service Mesh operator。
  • 已创建一个 Istio CNI 资源。

流程

  1. 在包含 Istio control plane 的命名空间中添加一个标签,如 istio-system 系统命名空间。

    $ oc label namespace istio-system istio-discovery=enabled
  2. 修改 Istio control plane 资源,使其包含具有相同标签的 discoverySelectors 部分。

    kind: Istio
    apiVersion: sailoperator.io/v1alpha1
    metadata:
      name: default
    spec:
      namespace: istio-system
      values:
        meshConfig:
          discoverySelectors:
            - matchLabels:
                istio-discovery: enabled
  3. 应用 Istio CR:

    $ oc apply -f istio.yaml
  4. 确保包含作为 Service Mesh 一部分的工作负载的所有命名空间都有 discoverySelector 标签,如果需要,适当的 Istio 注入标签。
注意

发现选择器有助于限制单个 Service Mesh 的范围,在在单个集群中部署多个 Istio control plane 时,务必要限制 control plane 范围。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.