cilium 未基于 vxlan 支持 VPC

32 阅读12分钟

cilium 有哪个 CRD 资源支持指定 vxlan 的 VNI ID 么? 类似 实现 VPC 的功能

根据我查找的资料,在 Cilium 中 目前没有 一个 CRD 资源可以让用户在 Kubernetes 内部为每个 “overlay 隧道” 明确指定一个 VXLAN VNI ID(即 VNI = VXLAN Network Identifier)来隔离类似 VPC 的网络。以下是整理分析:


✅ 支持的 VXLAN 功能

  • Cilium 支持 VXLAN(overlay)模式,可通过 tunnelProtocol: vxlan 来指定使用 VXLAN 隧道。(docs.cilium.io)
  • 在 VTEP(VXLAN Tunnel Endpoint)集成中,Cilium 支持将第三方 VTEP 设备接入,允许外部设备通过 VXLAN 与 Cilium 管理的 pod 通信。(docs.cilium.io)
  • 在这些文档中,有提到 “VXLAN network identifier (VNI) must be configured as VNI 2” 的静态值用于 VTEP 集成示例。(docs.cilium.io)

❓ 为什么没有 “指定每个 overlay 分段 VNI” 的 CRD

  • 虽然文档提到 VNI = 2 的固定值 (在 VTEP 集成场景);这意味着 Cilium 内部使用了一个固定 VNI 编号。(docs.cilium.io)
  • 但在 Helm values 或 ConfigMap 的配置项里,并未见有 “vni id” 或 “vxlanVNI” 之类可配置字段。比如在 Helm-Reference 中,支持的字段主要是 tunnelProtocoltunnelPortunderlayProtocol 等。(docs.cilium.io)
  • 在 Cilium 文档中也没有提及为不同租户或不同 “网络段” 分配不同 VNI 的机制。Cilium 的隔离主要是通过标签、安全身份(identity)等方式实现,并不是通过传统网络中的 “VNI 分段” 来操作。(docs.cilium.io)

🔍 如果你想实现类似 “VPC-style 隔离” 的效果,有几个替代方案

  • 可以使用不同的 Namespace + NetworkPolicy + CiliumIdentity 来隔离流量,而不是依赖 VNI。
  • 如果你确实需要物理/Overlay 层面的隧道隔离(即不同 VNI),可能需要结合外部网络设备(如 VTEP、EVPN Fabric)来与 Cilium 配合。Cilium 的 VTEP 集成功能说明了这一点。(Medium)
  • 或者,考虑是否切换为支持多 VNI 多租户的 overlay 网络插件,或者在 Cilium 源码/社区功能中查看是否有 roadmap 支持“多 VNI”配置。

如果你愿意,我可以帮你查下 “Cilium 最近版本(如 v1.20+)是否增加了按租户/网络段支持 VNI 配置” 的功能,看是否有正在开发中的 CRD 或提案。你要吗?

我查了一下 Cilium(v1.20+)中关于 “按租户/网络段 VNI 配置” 的功能支持情况,结果是:目前没有明确文档或 CRD 提案 表明已经支持每租户指定一个 VNI 的能力。下面是详细分析。


✅ 已支持 / 已有功能

以下是与 VNI/租户隔离相关,但 不完全等同 “为每租户指定 VNI” 的功能:

  • Cilium 支持 “VXLAN Tunnel Endpoint (VTEP) Integration (beta)” 功能:文档指出该功能允许第三方 VTEP 设备通过 VXLAN 与 Cilium 托管的 Pods 互通。文档明确指出 “The VXLAN network identifier (VNI) must be configured as VNI 2” 。(docs.cilium.io)

    • 这说明 Cilium 已经能与 VXLAN overlay + VTEP 设备交互,但 VNI 是固定值 2,而非 “每个租户不同 VNI” 的灵活映射。
  • 在 GitHub 上,有一个 feature proposal 叫 “multi-tenant filter on CCNP” (#36054) 提出基于 tenantId 标签对 CCNP(Cluster-wide CiliumNetworkPolicy)进行租户隔离。(GitHub)

    • 该提案属于网络策略/多租户隔离范畴,但并未涉及 VNI 或物理/overlay 隧道层之 “VNI 映射” 功能。
  • 在 Cisco 社区文章 “Cilium with N9K EVPN Fabric with different Tenants Access” 提出 Cilium + EVPN Fabric 场景中可做 BGP community 区分租户。(community.cisco.com)

    • 但那是用户案例/博客,不为 Cilium 核心项目功能声明,也未说明 Cilium 内部有 CRD 支持 “每租户 VNI” 映射。

❓ 尚未支持 /缺乏明确功能

  • 没有在 Cilium 官方文档中找到 “为每个租户(namespace 或标签)指定 VNI ID” 的配置项或 CRD。
  • 在 VTEP 集成文档中,VNI 被硬编码为 2,而非可配置多值。(docs.cilium.io)
  • 在功能提案中,多租户隔离主要集中在网络策略/可视化控制,而非 overlay 隧道层的 VNI 分区。
  • 未在 GitHub issue / feature-proposal 中发现 “Tenant → VNI mapping CRD” 或 “租户映射 VNI ID” 关键词被开发或合并。

🧭 小结与建议

  • 如果你的目标是 “为不同租户 (Namespace/标签) 指定不同 VNI ID,使每租户 overlay 隧道逻辑隔离”,目前 Cilium 不提供开箱功能 实现这一点。

  • 若要落地该功能,你可能需要:

    1. 在 Cilium 外部(控制平面/Operator)维护租户→VNI 映射逻辑,并通过节点/配置写入 nvlan/VXLAN device 或 Fabric 配置。
    2. 使用 Cilium 的 VTEP 模式作为起点(虽然固定 VNI=2,目前限制较多)。
    3. 或者与 Cilium 社区/开发者沟通,看看是否有计划将该功能纳入将来版本(可以查看 Cilium 的 roadmap 或加入 SIG Networking 讨论)。
  • 在决策过程中,你可以查看:Cilium 的 GitHub “design-cfps” 仓库、issue 标签 kind/feature + “vni”/“tenant”关键词、以及 roadmap 文件,看是否未来版本有引入此类功能。


如果你愿意,我可以帮你 查找 Cilium GitHub 仓库中所有关于 “VNI” 的 issue/PR(包括草案/讨论) ,并整理出 “是否在开发中/预计版本” 的清单。你要吗?

我查了一下 Cilium(v1.20+)中关于 “按租户/网络段 VNI 配置” 的功能支持情况,结果是:目前没有明确文档或 CRD 提案 表明已经支持每租户指定一个 VNI 的能力。下面是详细分析。


✅ 已支持 / 已有功能

以下是与 VNI/租户隔离相关,但 不完全等同 “为每租户指定 VNI” 的功能:

  • Cilium 支持 “VXLAN Tunnel Endpoint (VTEP) Integration (beta)” 功能:文档指出该功能允许第三方 VTEP 设备通过 VXLAN 与 Cilium 托管的 Pods 互通。文档明确指出 “The VXLAN network identifier (VNI) must be configured as VNI 2” 。(docs.cilium.io)

    • 这说明 Cilium 已经能与 VXLAN overlay + VTEP 设备交互,但 VNI 是固定值 2,而非 “每个租户不同 VNI” 的灵活映射。
  • 在 GitHub 上,有一个 feature proposal 叫 “multi-tenant filter on CCNP” (#36054) 提出基于 tenantId 标签对 CCNP(Cluster-wide CiliumNetworkPolicy)进行租户隔离。(GitHub)

    • 该提案属于网络策略/多租户隔离范畴,但并未涉及 VNI 或物理/overlay 隧道层之 “VNI 映射” 功能。
  • 在 Cisco 社区文章 “Cilium with N9K EVPN Fabric with different Tenants Access” 提出 Cilium + EVPN Fabric 场景中可做 BGP community 区分租户。(community.cisco.com)

    • 但那是用户案例/博客,不为 Cilium 核心项目功能声明,也未说明 Cilium 内部有 CRD 支持 “每租户 VNI” 映射。

❓ 尚未支持 /缺乏明确功能

  • 没有在 Cilium 官方文档中找到 “为每个租户(namespace 或标签)指定 VNI ID” 的配置项或 CRD。
  • 在 VTEP 集成文档中,VNI 被硬编码为 2,而非可配置多值。(docs.cilium.io)
  • 在功能提案中,多租户隔离主要集中在网络策略/可视化控制,而非 overlay 隧道层的 VNI 分区。
  • 未在 GitHub issue / feature-proposal 中发现 “Tenant → VNI mapping CRD” 或 “租户映射 VNI ID” 关键词被开发或合并。

🧭 小结与建议

  • 如果你的目标是 “为不同租户 (Namespace/标签) 指定不同 VNI ID,使每租户 overlay 隧道逻辑隔离”,目前 Cilium 不提供开箱功能 实现这一点。

  • 若要落地该功能,你可能需要:

    1. 在 Cilium 外部(控制平面/Operator)维护租户→VNI 映射逻辑,并通过节点/配置写入 nvlan/VXLAN device 或 Fabric 配置。
    2. 使用 Cilium 的 VTEP 模式作为起点(虽然固定 VNI=2,目前限制较多)。
    3. 或者与 Cilium 社区/开发者沟通,看看是否有计划将该功能纳入将来版本(可以查看 Cilium 的 roadmap 或加入 SIG Networking 讨论)。
  • 在决策过程中,你可以查看:Cilium 的 GitHub “design-cfps” 仓库、issue 标签 kind/feature + “vni”/“tenant”关键词、以及 roadmap 文件,看是否未来版本有引入此类功能。


如果你愿意,我可以帮你 查找 Cilium GitHub 仓库中所有关于 “VNI” 的 issue/PR(包括草案/讨论) ,并整理出 “是否在开发中/预计版本” 的清单。你要吗?

我查了一下 Cilium(v1.20+)中关于 “按租户/网络段 VNI 配置” 的功能支持情况,结果是:目前没有明确文档或 CRD 提案 表明已经支持每租户指定一个 VNI 的能力。下面是详细分析。


✅ 已支持 / 已有功能

以下是与 VNI/租户隔离相关,但 不完全等同 “为每租户指定 VNI” 的功能:

  • Cilium 支持 “VXLAN Tunnel Endpoint (VTEP) Integration (beta)” 功能:文档指出该功能允许第三方 VTEP 设备通过 VXLAN 与 Cilium 托管的 Pods 互通。文档明确指出 “The VXLAN network identifier (VNI) must be configured as VNI 2” 。(docs.cilium.io)

    • 这说明 Cilium 已经能与 VXLAN overlay + VTEP 设备交互,但 VNI 是固定值 2,而非 “每个租户不同 VNI” 的灵活映射。
  • 在 GitHub 上,有一个 feature proposal 叫 “multi-tenant filter on CCNP” (#36054) 提出基于 tenantId 标签对 CCNP(Cluster-wide CiliumNetworkPolicy)进行租户隔离。(GitHub)

    • 该提案属于网络策略/多租户隔离范畴,但并未涉及 VNI 或物理/overlay 隧道层之 “VNI 映射” 功能。
  • 在 Cisco 社区文章 “Cilium with N9K EVPN Fabric with different Tenants Access” 提出 Cilium + EVPN Fabric 场景中可做 BGP community 区分租户。(community.cisco.com)

    • 但那是用户案例/博客,不为 Cilium 核心项目功能声明,也未说明 Cilium 内部有 CRD 支持 “每租户 VNI” 映射。

❓ 尚未支持 /缺乏明确功能

  • 没有在 Cilium 官方文档中找到 “为每个租户(namespace 或标签)指定 VNI ID” 的配置项或 CRD。
  • 在 VTEP 集成文档中,VNI 被硬编码为 2,而非可配置多值。(docs.cilium.io)
  • 在功能提案中,多租户隔离主要集中在网络策略/可视化控制,而非 overlay 隧道层的 VNI 分区。
  • 未在 GitHub issue / feature-proposal 中发现 “Tenant → VNI mapping CRD” 或 “租户映射 VNI ID” 关键词被开发或合并。

🧭 小结与建议

  • 如果你的目标是 “为不同租户 (Namespace/标签) 指定不同 VNI ID,使每租户 overlay 隧道逻辑隔离”,目前 Cilium 不提供开箱功能 实现这一点。

  • 若要落地该功能,你可能需要:

    1. 在 Cilium 外部(控制平面/Operator)维护租户→VNI 映射逻辑,并通过节点/配置写入 nvlan/VXLAN device 或 Fabric 配置。
    2. 使用 Cilium 的 VTEP 模式作为起点(虽然固定 VNI=2,目前限制较多)。
    3. 或者与 Cilium 社区/开发者沟通,看看是否有计划将该功能纳入将来版本(可以查看 Cilium 的 roadmap 或加入 SIG Networking 讨论)。
  • 在决策过程中,你可以查看:Cilium 的 GitHub “design-cfps” 仓库、issue 标签 kind/feature + “vni”/“tenant”关键词、以及 roadmap 文件,看是否未来版本有引入此类功能。


如果你愿意,我可以帮你 查找 Cilium GitHub 仓库中所有关于 “VNI” 的 issue/PR(包括草案/讨论) ,并整理出 “是否在开发中/预计版本” 的清单。你要吗?

我进行了更深入的搜索(在 Cilium GitHub 仓库中使用关键词如 “vni”, “vxlan id”, “tenant”, “overlay segmentation”)并整理如下 扩展结果。这些结果中并 发现一个明确标注为 “租户→VNI 映射” 功能在开发中,但为你提供当前相关讨论的全面视图。


🔍 扩展搜索结果清单

#链接标题状态关联内容概述
1Issue #15852 (GitHub)“Add node cilium annotation for VXLAN integration with …”已关闭 (2021)讨论在节点注解中增加 VXLAN 集成字段。备注中指出:“VNI field is used for identity and not a virtual network”——意味着该字段不是用作租户隔离网络标识。
2Issue #36491 (GitHub)“Network broken when using an overlay network based on Wireguard …”已关闭 (2024)与 overlay 网络(Wireguard 背后)出错相关,不涉及 VNI 多租户或租户 ‑ VNI 映射。
3Issue #41858 (GitHub)“Network Policies are not applied to overlay networks”开放中 (2025)与策略/overlay 网络适配有关。未提及 VNI/租户隔离。
4Documentation 页 “VXLAN Tunnel Endpoint (VTEP) Integration (beta)” (docs.cilium.io)官方文档已发布 (beta)功能使第三方 VTEP 设备能与 Cilium 管理的 Pods 用 VXLAN 互通。文档明确:VNI 必须配置为 2。说明目前 VNI 固定值,不支持每租户不同 VNI。
5Cisco 社区文章 “Cilium with N9K EVPN Fabric with different Tenants Access” (community.cisco.com)外部博客/方案已发布 (2024)描述 Cilium 与 Cisco Nexus EVPN Fabric 集成,使用 BGP community 区分不同租户。但这是外部方案/用户实现,不是 Cilium 核心仓库的功能提案。
6Cisco 社区博客 “Cisco N9K EVPN Fabric with Kubernetes in multiple VRF/tenant” (community.cisco.com)外部博客/方案已发布 (2024)说明了在多 VRF/tenant 场景下 Cilium Enterprise 与 Fabric 的实现。虽然提及租户隔离,但也不是 Cilium 开源项目中 “租户→VNI 映射” 的明确功能。

✅ 分析结果

  • 在当前公开的 GitHub issue/PR 中,没有找到 明确标注 为 “为每个租户指定不同 VNI ID(VXLAN 隧道)” 的功能请求或正在开发的 feature。
  • 官方文档中提及的 VTEP 整合,VNI 是固定值 2,其实说明此功能还没有走向“多 VNI”或“租户 VNI 映射”这一步。
  • 虽然社区有较多“Cilium + EVPN Fabric +租户” 的实践和博客(如第 5 和 6 项),但这些属于用户或厂商集成方案,并不等同于 Cilium 主项目已纳入的 CRD/feature。

🧭 建议下一步监控/关注点

为了持续跟踪这一功能(租户→VNI 映射)是否将在未来加入,我建议你:

  • 在 Cilium 仓库 issue 搜索关键词如 "tenant vni", "multiple vni", "vxlan network id per tenant", "overlay segmentation tenant"
  • 关注 Cilium 的设计提案区(如 design/, cfps/ 目录)是否有 “multi‑VNI” 或 “tenant overlay” 类提案。
  • 检查 Cilium 的 Roadmap(通常在官网或 GitHub Releases Notes)是否列出 “multi‑tenant overlay segmentation”或 “VNI per namespace” 类功能。
  • 如果你是用户或潜在实现者,也可在 Cilium 社区(Slack/Discuss)发起请求或查看是否已有类似需求被登记。