【Linkerd】identity 服务:CSR、mTLS 与工作负载证书轮转
内容提要
Linkerd的identity服务负责签发和轮转工作负载证书,通过CSR与Kubernetes ServiceAccount绑定实现mTLS。证书分三层:工作负载证书自动轮转,issuer和trust anchor轮转更重。与Istio SDS不同,Linkerd使用专用gRPC API,排障时先查leaf,再查issuer,最后查anchor,并注意时钟同步和跨集群信任问题。
延伸解读
排障顺序:先 leaf,再 issuer,最后 anchor
文章强调,遇到 mTLS 握手失败时,应按照工作负载证书(leaf)、issuer、trust anchor 的顺序排查。单 Pod 失败多与 CSR/SA 或本地证书有关;全集群新连接失败则可能涉及 issuer 或 trust anchor。升级后逐渐恢复的情况,可能是工作负载证书仍在有效窗口内滚动。这一顺序有助于快速定位问题层级,避免误判为网络故障。
与 Istio SDS 的机制差异
Linkerd 的 identity 服务使用专用 gRPC API,而非 xDS SDS。Istio/Envoy 通过 SDS 将证书作为 xDS 资源推送,错误落在 ACK/NACK 与 warming 状态机;Linkerd 则由 proxy 主动发起 CSR 和续期,错误集中在 identity 组件与 Secret 侦测。理解这一差异,排障时不应套用 istiod 的 warming 概念,而应关注 identity 日志和 gRPC 状态。
trust anchor 轮转是重操作
工作负载证书可自动轮转,但 trust anchor 的轮转最重,需要控制面与全数据面在过渡期同时信任新旧锚点,通常需滚动重启。2.20 虽增强了 trust anchor 自动化,但运维上仍须按文档检查清单执行,不能将工作负载证书的自动续期误解为根证书也会无感变更。生产环境应使用 cert-manager 等外置流程管理 issuer 和 anchor。
注意时钟同步与跨集群信任
短期工作负载证书对节点时钟漂移敏感,NTP 大幅偏差可能导致握手失败,排障时需检查节点时间同步。多集群场景下,trust anchor 可跨集群共享,但 issuer 按集群独立,复制 issuer Secret 不会自动建立互信,跨集群 mTLS 还需 multicluster 扩展与联邦身份规则。排障时应先确认失败发生在单集群还是联邦路径。
Q&A
Linkerd 的 identity 服务是如何签发工作负载证书的?
Linkerd 的 identity 服务作为集群内的 TLS 证书颁发机构(CA),数据面代理(linkerd2-proxy)在启动时向 identity 发送证书签名请求(CSR),identity 通过 Kubernetes TokenReview 校验 Pod 使用的 ServiceAccount 与 CSR 主体一致后,签发工作负载证书,用于 proxy-to-proxy 的 mTLS 连接。
Linkerd 工作负载证书的自动轮转机制是怎样的?
Linkerd 自动轮转工作负载证书:代理在证书临近过期时主动向 identity 服务发起续期请求,无需重启 Pod。证书寿命相对较短,轮转成功后新连接使用新证书。
Linkerd 的信任链分为哪三层?各层的轮转特点是什么?
Linkerd 的信任链分为三层:工作负载证书(leaf)、identity issuer、trust anchor。工作负载证书自动轮转,无需重启 Pod;issuer 可自动切换,代理侦测 Secret 更新;trust anchor 轮转最重,需要控制面和数据面在过渡期同时信任新旧锚点,通常需要滚动重启。
Linkerd 的 identity 服务与 Istio 的 SDS 在证书分发机制上有何不同?
Istio/Envoy 使用 SDS 作为 xDS 资源推送证书,代理订阅 Secret 资源,错误处理在 ACK/NACK 和 warming 状态机中;Linkerd 使用专用的 gRPC API(identity 服务),代理主动发起 CSR 和续期,错误处理在 gRPC 调用和 Secret 侦测中。
Linkerd 中证书握手失败时,排障的顺序和要点是什么?
排障口诀:先查 leaf(工作负载证书),再查 issuer,最后查 anchor。同时确认两端是否都已注入 mesh。具体表象对应:单 Pod 失败查 CSR/SA;全集群失败查 issuer 或 trust anchor;升级后逐渐恢复可能是工作负载证书滚动;计划轮换 anchor 后全挂需检查新旧 anchor 是否同时信任。
Linkerd 的 trust anchor 轮转与工作负载证书轮转有何不同?为什么 trust anchor 轮转更重?
工作负载证书轮转是自动的,只影响单个工作负载的 leaf 证书,无需重启 Pod;trust anchor 轮转是最重的,因为它是集群信任根,需要控制面和所有数据面在过渡期同时信任新旧锚点,通常需要滚动重启整个网格。
Linkerd 的 identity 服务故障会带来哪些影响?
identity 服务故障会阻断新证书的签发和续期,导致数据面无法续签 leaf 证书;同时控制面组件(如 destination、identity、injector)之间的 gRPC 通信也受 mTLS 保护,因此 identity 故障可能影响控制面组件间的通信。已持有未过期证书的连接可能短期继续。