土法炼钢 · 系统与基础设施

【Linkerd】Gateway API 与多集群:GAPI 1.5.1 门与边界

文章导航

分类入口
kubernetesnetwork
标签入口
#linkerd#gateway-api#gapi#multicluster#httproute#grpcroute#service-mirror#v2.20

目录

第 10 篇 落在 linkerd2-proxy 入站/出站链。本篇回答:2.20 把 Gateway API 钉到哪一扇门、mesh 内路由与南北向 ingress 谁负责、多集群需要共享什么信任根——以及哪些能力不能因为 live 文档已出现就写进 2.20 正文。

常见误区:把集群里装的 GAPI CRD 版本当成「Linkerd 已理解全部字段」;把 Envoy Gateway 的 GatewayClass 故事照抄到 mesh 内 HTTPRoute;multicluster 只装 gateway 却不轮转 trust bundle。排障时 GAPI 未生效多落在轴 4(策略与 L7),multicluster 握手失败常回到轴 2(共享 trust anchor)。

本篇在系列中的位置

篇目 核心内容
第 10 篇 · linkerd2-proxy 数据面入站/出站与 LB
第 11 篇 · Gateway API 与多集群 GAPI 1.5.1 门、mesh vs EG、multicluster 边界
第 12 篇 · 运维与升级 证书轮转与 destination 内存门
系列目录 全部篇目

版本锚定:Linkerd 2.20;Gateway API 1.2.1–1.5.1(公告上限 1.5.1推荐安装 1.2.1)。multicluster 机制以 tag version-2.20 配套文档为准。无多集群环境则不写「镜像成功」叙事。


一、GAPI 1.5.1 门

2.20 把最高支持的 Gateway API 版本抬到 1.5.1(随 2026-06-23 公告;K8s 支持至 1.35)。兼容区间与路由 API 版本见官方 Gateway API support

Linkerd 版本 Gateway API 兼容 HTTPRoute GRPCRoute
2.18–2.19 1.1.1–1.2.1 v1 v1
2.20 1.2.1–1.5.1 v1 v1

推荐安装 1.2.1 的原因(文档原文口径):更高版本 CRD 可以共存,但 Linkerd 只保证理解 ≤1.2.1 规范中的字段与取值。遇到未知字段或取值时,Linkerd 忽略该资源——表象是「YAML 在集群里存在,mesh 行为不变」。

第 9 篇的双轨:

配置面 API 组 2.20 地位
ServiceProfile linkerd.io / 历史 CRD 仍支持;与 GAPI 路由分工
policy.linkerd.io HTTPRoute Linkerd 自有 逐步由标准 GAPI 承接
gateway.networking.k8s.io HTTPRoute / GRPCRoute Kubernetes GAPI 2.20 核心配置路径之一

从 GAPI 1.1.1 升到 ≥1.2.0 时,GRPCRoute 有破坏性注意点——升级窗口须读 GAPI 1.2.0 release notes,本篇不替代该清单。


二、mesh 路由 vs 南北向 EG 分工

Gateway API 同时描述集群内(mesh)集群边(ingress/egress)流量类型,但实现者不同。本系列只钉 Linkerd mesh 侧;南北向数据面与控制面见 envoy-gateway/ 系列。

流量类 典型资源 Linkerd 2.20 Envoy Gateway / 其他 ingress
东西向 mTLS HTTPRoute 附着 Service、AuthorizationPolicy destination + policy 求值后进入 linkerd2-proxy 非 Linkerd 核心路径
南北向入口 Gateway、GatewayClass、Listener 可共存;边车 mesh 与入口解耦 EG 主战场
L7 超时/重试/分权 HTTPRoute rules、ServiceProfile 经 destination 下发(轴 4) EG xDS 翻译链

争论(有文档依据):GAPI 旨在实现无关,但 policy attachment 在 mesh 与 gateway 控制器之间仍可能双轨——Linkerd 同时保留 ServiceProfile 与 GAPI HTTPRoute 时,「哪条资源生效」必须以 destination 实际加载为准(第 9 篇),不能假设「只改 GAPI 就一定覆盖 SP」。

排障口令:南北向 404/证书问题先查 Gateway/Listener 与 EG;mesh 内 403/路由不命中查 轴 4 与 HTTPRoute parentRef,不要混查 istio VirtualService


三、multicluster(以 tag 文档为准,不超前)

Linkerd multicluster 在 2.20 仍遵循官方 Installing Multi-cluster 任务文档机制(开写时对照 tag version-2.20 path):

flowchart LR
  src["Source cluster"]
  tgt["Target cluster"]
  gw["multicluster gateway"]
  mirror["Service mirror / exported Service"]
  src -->|"mTLS over gateway"| gw
  gw --> tgt
  mirror --> src
机制 文档锚点 运维要点
共享 trust anchor multicluster 安装前提;可与第 12 篇 bundle 轮转衔接 无共享根 → 轴 2 握手失败
gateway 组件 linkerd multicluster install 跨集群 TLS 终止与身份校验
服务导出 默认仅 mirror.linkerd.io/exported 标签 Service 被镜像 未打标 ≠ 「multicluster 坏了」
源集群 SA linkerd multicluster allow 可为每源集群单独 SA 撤销镜像权限

不写超前:live 文档若出现新镜像模式、新 CRD 或 edge-only 字段,在未钉入 version-2.20 前不得写入本篇结论。实验台账未跑:无伪造 linkerd multicluster check 输出。

与单集群发现的关系:镜像 Service 在源集群表现为 K8s Service,后端解析仍走 destination Get()第 7 篇)——multicluster 不是第二条 xDS。


四、不写未钉能力

下列内容禁止当成 2.20 事实写入正文或 runbook:

类别 处理
linkerd.io/docs/ live 上晚于 2.20 公告的能力 仅作线索;机制以 tag 为准
未在 1.2.1 字段集内的 GAPI 实验字段 可能被 Linkerd 静默忽略
edge-only 特性 不得写成 2.20 stable 默认
OSS stable 制品(2024-02 起项目本身不再发) 安装来源见 releases/vendor;机制仍钉 tag
跨方案 CPU%/延迟榜 全系列禁止

值班门禁:变更单写 Linkerd tag + 集群内 GAPI CRD 版本 + 资源字段是否 ⊆ 1.2.1,不写「docs 今天新出现的注解」。


五、开放问题指针 16

下列问题在本篇只立边界,收束见第 16 篇

  1. GAPI 双轨:ServiceProfile、policy.linkerd.io HTTPRoute、标准 GAPI HTTPRoute 并存时,冲突判定与迁移路径——社区仍在从 SP 向 GAPI 统一(见 Gateway API support 迁移段)。
  2. multicluster 与 trust anchor bundle:bundle 轮转窗口内多集群是否全部完成滚动重启——与第 12 篇同一运维门。
  3. native sidecar 默认(2.20)下 Job/CronJob 与 multicluster gateway 的启动顺序——第 2 篇与选型篇回收。

参考资料

规范 / 官方文档(A)

对照(B)

本系列


上一篇linkerd2-proxy 数据面

下一篇运维与升级

读完这篇,下一步读什么

优先读同系列或同问题的下一篇,把单篇消费变成主题集群。


By .