尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linkerd 2.x 版本演进全解:从 CHANGES.md 看服务网格九年的架构变迁与升级实践

Linkerd 2.x 版本演进全解:从 CHANGES.md 看服务网格九年的架构变迁与升级实践 服务网格云原生可观测性【免费下载链接】linkerd2Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.项目地址https://gitcode.com/gh_mirrors/li/linkerd2点击查看免费下载Linkerd 2.x 是 Kubernetes 上主打极简、安全优先的服务网格本文以仓库根目录的 CHANGES.md8129 行完整变更记录为骨架系统梳理从 Conduit 0.1.0 到 stable-2.14.0、edge-24.2.5 的版本演进脉络涵盖 mTLS 安全模型、Gateway API 策略体系、多集群、CNI、Helm 安装模型等核心主题并结合仓库内 charts、policy-controller、multicluster、cli 等源码佐证。读完本文你将掌握 Linkerd 的版本命名规则、各 stable 里程碑的核心能力、关键 Helm 配置值与 CLI 命令以及安全升级的注意事项。一、版本体系与文档定位edge / stable 双通道与变更记录的组织方式Linkerd 2.x 采用edge边缘版与 stable稳定版双通道的发布模式该模式在edge-18.9.2的变更记录中首次出现。edge 版每月多次发布快速迭代新特性stable 版则从 edge 中挑选经过验证的功能固化发布通常一年 23 个。CHANGES.md 的组织方式也遵循这一规律文件头部明确声明自 edge-24.2.5 起edge 版变更说明迁移至 GitHub 的自动化 Release Notes 功能即 CHANGES.md 中的最新 edge 条目为edge-24.2.5此后不再手工维护 edge 条目。每个版本条目按## 版本号组织内容采用分类清单Proxy、Control Plane、CLI、Helm、Viz、Multicluster、CNI、Extensions等每条变更后附 GitHub PR/Issue 编号如[#12098]。stable 版本条目通常还包含三段式结构概述段落Release highlights、Upgrade notes升级说明、Full release notes完整变更清单多数版本还附有贡献者致谢名单。版本通道示例版本定位变更记录特征edgeedge-24.2.5快速迭代、尝鲜条目较短聚焦增量修复stablestable-2.14.0生产可用含概述、升级说明、完整清单RCstable-2.12.0-rc2稳定版候选与对应 stable 高度重合旧版v18.9.1Conduit 时期早期版本按 v 前缀命名从版本号跨度可以清晰看到项目的历史脉络早期 Conduit 采用v0.1.0、v18.8.x命名后统一为edge-/stable-前缀并维持到今天。仓库中对应版本的安装产物可在 charts/linkerd-control-plane、charts/linkerd-crds、charts/linkerd2-cni 等 Helm Chart 中查看。二、安全基石零配置 mTLS 与证书体系的演进Linkerd 最核心的安全能力是零配置的 mutual TLSmTLS这一能力在不同 stable 版本中持续增强stable-2.7.0外部证书签发与证书轮换新增对外部证书签发者如 cert-manager的支持可将 Linkerd 的 PKI 与外部 CA 集成将注入器与 tap API 的 Secret 类型改为kubernetes.io/tls该变更实际落地于 stable-2.9.0以便 cert-manager 等工具托管简化证书轮换流程linkerd check与linkerd upgrade命令增加了 TLS 证书校验。stable-2.9.0mTLS 覆盖全部 TCP 连接将零配置 mTLS 扩展至所有 TCP 连接集群安装 Linkerd 后TCP 流量即被透明加密与认证而不再局限于 HTTP引入ARM 架构支持引入多核 proxy 运行时以提升吞吐对应仓库中的 proxy-runtime.yml 与 Rust 侧 policy-controller/runtime 等构建配置可佐证运行时架构支持 Kubernetes 服务拓扑感知路由与 EndpointSlice见下节。stable-2.12.0 之后身份与信任identity 控制器引入 client-go 的QPS/Burst可配置项默认值从5/10提升至100/200见 edge-23.12.1 条目stable-2.12.1 起所有注入的工作负载新增linkerd.io/trust-root-sha256注解用于通过 Kubernetes API 统一比对各工作负载的信任锚trust anchoredge-24.1.3 起proxy 支持使用SPIRE 在 Kubernetes 之外提供身份为后续 ExternalWorkload网格外扩铺路MeshTLSAuthentication资源校验放宽允许 SPIFFE URI 身份edge-24.1.1并在 stable-2.14.0 中强制要求至少提供一个 identity/identityRef。三、策略体系从 ServerAuthorization 到 Gateway API 的演进Linkerd 的策略能力经历了从自研 CRD 到拥抱 Gateway API 标准的大迁移这是 2.122.14 版本的主线stable-2.12.0路由级策略与零信任授权引入基于 HTTP 路由的授权策略用户可基于 Gateway API 的 HTTPRoute 定义零信任授权策略配合强工作负载身份与 mTLS 落地policy 控制器支持AuthorizationPolicy资源可分别 targetHttpRoute或Server资源移除默认安装中的 SMI 功能TrafficSplit 改由独立的linkerd-smi扩展提供新增policyController.probeNetworksHelm 值用于配置探测网络范围。stable-2.13.0客户端策略outbound引入客户端侧策略client-side policyHTTPRoute 可以以 Service 作为parentRef从而同时配置 outbound客户端与 inbound服务端proxy 的策略新增动态请求路由dynamic request routing与HTTP 熔断circuit breaking能力proxy 通过新的OutboundPoliciesAPI 获取路由规则新增 proxy 指标outbound_route_backend_http_requests_total、outbound_route_backend_grpc_requests_total、outbound_http_balancer_endpointsHTTPRoute 版本从v1alpha1升级为v1beta2引入linkerd diagnostics policy命令展示 Service 的 outbound 策略仓库中 cli/cmd/diagnostics_profile.go、cli/cmd/policy.go 为相关 CLI 实现。stable-2.14.0HTTPRoute 能力补全policy 控制器支持gateway.networking.k8s.ioHTTPRoute支持RequestHeaderModifier、RequestRedirect、ResponseHeaderModifierHTTP 过滤器可挂在 route 或 backend 级别支持消费者命名空间consumer namespace中定义的 HTTPRoute支持不带端口声明的parentRefs引入 HTTPRoute 超时timeout配置能力。四、多集群能力从网关代理到直连镜像多集群multicluster是 Linkerd 扩展体系的重要一环仓库根目录 multicluster 与 multicluster/service-mirror 保存了全部实现代码。stable-2.8.0引入多集群扩展linkerd multicluster子命令族提供跨集群服务发现工具linkerd multicluster gateways暴露网关遥测注意当时尚未支持 EKS随后由 stable-2.8.1 修复扩展 service-mirror 在无 IP 时解析目标集群 DNS 名称。stable-2.9.0将单一service-mirror控制器重构为按目标集群分别安装的控制器通过linkerd multicluster link安装镜像机制从注解驱动改为源集群通过 label selector 声明要导出的服务新增linkerd multicluster unlink。stable-2.14.0引入直连 pod-to-pod 多集群镜像——当集群部署在扁平网络上时跨集群流量无需再经过网关增强了多集群认证并减少了对公共负载均衡器的依赖新增remoteDiscoverySelector字段支持由控制面在远端集群执行镜像服务的发现而非在源集群创建 Endpointsservice-mirror 控制器新增 leader-election 与 HA 模式新增logFormat、gateway.deploymentAnnotations、gateway.terminationGracePeriodSeconds、gateway.loadBalancerSourceRanges等配置项。五、安装与升级模型Helm Chart 拆分与安装流程变迁安装模型是 Linkerd 演进中变化最大、对运维影响最直接的方面CLI 安装路径早期版本通过curl https://run.linkerd.io/install | sh一键安装stable-2.1.02.7.0 说明中的标准方式stable-2.4.0 引入分阶段安装linkerd install config与linkerd install control-plane升级对应linkerd upgrade config/linkerd upgrade control-planestable-2.12.0 起强制分离 CRD 安装必须先执行linkerd install --crds再执行linkerd install升级时先linkerd upgrade --crds再linkerd upgrade。Helm 路径stable-2.5.0 首次引入 Helm 支持stable-2.6.0 发布公开 Helm 仓库stable-2.12.0 将原先的linkerd2Chart 拆分为linkerd-crds与linkerd-control-plane二者以 SemVer 独立于 Linkerd 版本进行版本管理对应仓库中的 charts/linkerd-crds 与 charts/linkerd-control-plane各有独立的 Chart.yaml 与 Chart.lockCNI 插件 Chart 独立维护于 charts/linkerd2-cni多集群 Chart 位于 multicluster/charts。关键 Helm 配置值来自仓库 charts/linkerd-control-plane/values.yamlCHANGES.md 中提到的部分配置值可直接在 Chart 中找到例如policyController.probeNetworksstable-2.12.0 引入# -- The networks from which probes are performed. # # By default, all networks are allowed so that all probes are authorized. probeNetworks: - 0.0.0.0/0 - ::/0CHANGES.md 还记录了其他重要 Helm 值包括版本引入配置值作用stable-2.12.0proxy.await控制面组件是否启用linkerd-await现可禁用stable-2.12.0policyController.probeNetworks配置探测允许的来源网络edge-23.11.4Proxy.NativeSidecar以原生 sidecarinit-container 形态运行 proxyedge-24.1.3createNamespaceMetadataJob控制安装时是否运行 namespace-metadata Jobedge-23.12.1identityQPS/Burst控制 identity 控制器访问 Kubernetes API 的速率edge-23.10.1vizpodAnnotations为 Viz Prometheus Deployment 追加注解六、CNI 与初始化iptables 配置与自愈能力Linkerd 通过linkerd-proxy-initinitContainer 模式或linkerd-cniDaemonSet 模式完成流量重定向的 iptables 规则配置。stable-2.8.0linkerd-cni从 experimental 晋升为stablestable-2.13.0新增network-validatorinit 容器——在启用 CNI 时于 linkerd-proxy 启动前校验本地 iptables 规则是否生效它替代原noop容器以nobody身份运行并丢弃全部 capabilities对应模板见 charts/partials/templates/_network-validator.tpl同时新增proxyInit.privileged开关控制proxy-init是否以特权进程运行edge-24.1.1引入cni-repair-controller二进制随 CNI 插件镜像发布自动重启那些未收到 iptables 配置的错误 Podedge-23.11.4支持 Kubernetes 1.29 的native sidecar 容器Beta改善 proxy 相对其他容器的启停顺序修复注入Job长期存在的关闭问题并允许其他initContainer的流量被 proxy 接管——通过新增注解config.alpha.linkerd.io/proxy-enable-native-sidecar启用。七、CLI 与诊断命令的持续演化CHANGES.md 记录了 CLI 命令从无到有、从粗到精的完整过程。以下命令均在仓库 cli/cmd 目录下有对应实现如 prune.go、inject.go、install.go、diagnostics.go 等引入版本命令/能力说明stable-2.4.0linkerd install config/control-plane分阶段安装stable-2.4.0linkerd edges细粒度 TLS 身份体系可观测stable-2.4.0linkerd inject --enable-debug-sidecar调试 sidecarstable-2.5.0linkerd --as、tap/top/profileRBAC 收紧用户模拟与鉴权stable-2.5.0linkerd stat trafficsplits、-A/--all-namespaces流量拆分指标与全局查询stable-2.6.0linkerd tap -o json含请求/响应头、--cluster-domain、--disable-heartbeat可观测与自定义域stable-2.9.0linkerd inject --ingress、fish shell 补全入口控制器场景stable-2.10.1Apple Silicon M1 二进制、linkerd repair版本感知平台与修复stable-2.13.0linkerd prune清理不再属于 Linkerd manifests 的资源stable-2.13.0linkerd diagnostics policyoutbound策略诊断edge-24.1.1linkerd diagnostics endpointsjson 输出增加 metric 标签与权重端点诊断此外stable-2.5.0 引入--use-wait-flagCNI 使用 iptables-w、--restrict-dashboard-privilegesedge-23.10.1 起linkerd viz tap支持-o jsonpath过滤字段linkerd check在 stable-2.13.0 中新增扩展命名空间配置校验edge-23.11.4 引入。八、可观测性Viz 扩展、tap 与分布式追踪Linkerd 的遥测能力在 2.52.14 期间从内嵌 Prometheus 逐步走向扩展化stable-2.6.0引入分布式追踪支持proxy 内置 trace新增config.linkerd.io/trace-collector注解实现按 Pod 追踪linkerd tap新增 json 输出并暴露请求/响应头stable-2.8.0Grafana 可被禁用并指向外部实例Jaeger/OpenCensus 作为 add-on 配置linkerd profile --open-api支持x-linkerd-retryable、x-linkerd-timeout注解stable-2.9.0Prometheus 迁入 add-on默认启用支持禁用内置实例与BYOPBring-Your-Own-Prometheus——新增global.prometheusUrlHelm 值指向外部 Prometheus支持将指标持久化到卷而非内存stable-2.13.0viz 新增tap.ignoredHeaders值linkerd viz子命令新增--viz-namespace标志避免遍历所有命名空间的权限需求stable-2.14.0proxy 新增outbound_http_balancer_endpoints指标linkerd viz tap支持-o jsonpath修复 remote_write 配置导致 Prometheus 配置失效的问题。九、性能与可靠性Destination 控制器与 proxy 的持续打磨CHANGES.md 中大量条目围绕Destination 控制器服务发现与proxy 数据面的可靠性展开以下是几个具有代表性的问题模式服务发现卡死类edge-23.10.3 修复 proxy 停止读取服务发现更新时 Destination 控制器停止处理端点变更、导致流量发往陈旧端点的问题对应 issue #11480、#11279、#10590edge-23.12.4 修复 Pod IP 发现无限挂起的问题背压与过载stable-2.13.0 起 proxy 对流式更新启用时间限制edge-23.10.3 修复 stable-2.13.0 引入的回归——proxy 不终止未使用的发现 watch反向压迫 Destination 控制器可观测性补强edge-23.11.2 在 Destination 控制器新增 informer lag 直方图指标用于跟踪被 watch 对象落后于 apiserver 的程度edge-23.12.3 新增控制面访问 Kubernetes API 错误的计数指标edge-24.2.3 新增 Destination 控制器 workqueue 丢弃项计数器协议/端口语义edge-24.2.2 修复 Server 选择器不再选中某资源时该资源 opaque 端口未恢复默认语义的问题edge-23.12.3 修复未网格化 Pod 且端口位于默认 opaque 列表时 profile 查询的误报负载均衡器重构edge-23.12.2 重构 proxy balancer——均衡变更可与请求处理解耦fail-fast 熔断在队列上生效避免请求无限排队并新增排队延迟直方图、failfast 状态、发现更新计数、端点池大小等指标错误码语义edge-24.1.3 起 Destination 控制器对不存在的服务正确返回INVALID_ARGUMENT状态码edge-24.2.4 修复 proxy 日志与指标不一致问题。这类修复对应的实现散落在 controller/api/destination服务发现与 controller/proxy-injector注入等目录例如 destination 下包含opaque_ports_adaptor.go、syncronized_get_stream.go、fallback_profile_listener.go等与上述问题直接相关的模块。十、网格外扩Mesh ExpansionExternalWorkload 的前瞻布局从 edge-23.12.1 到 edge-24.2.4CHANGES.md 记录了 ExternalWorkload网格外扩能力的渐进式建设edge-23.12.1引入ExternalWorkloadCRD支撑即将到来的网格外扩特性对应 CRD 模板位于 charts/linkerd-crds/templates/workloadedge-23.12.3MeshTLSAuthentication校验允许 SPIFFE URI 身份edge-24.1.1/24.1.2/24.1.3控制面与数据面逐步打通——proxy 使用 SPIRE 提供 Kubernetes 外身份Destination 控制器新增 ExternalWorkload EndpointSlice 控制器edge-24.2.1改进 ExternalWorkload Endpoints 控制器的 leader election 以避免漏事件、改进生成的 EndpointSlice 命名、限制单个 ExternalWorkload 的 IP 数量edge-24.2.4ExternalWorkload CRD 升级至v1beta1meshTls字段更名为meshTLS。十一、Conduit 时代的遗产v0.1.0v18.9.x 的起点CHANGES.md 保留了项目前身 Conduit 的早期记录便于理解 2.x 的能力基线v0.1.0首个公开版本仅支持 gRPC 服务要求 Kubernetes 1.8v0.2.0支持 HTTP/1.x 与原始 TCP 流量v0.1.3v18.9.1陆续补齐conduit check、shell 补全、tap、注入状态报告、proxy 就绪/存活探针等能力edge-18.9.2确立edge / stable 双通道发布模式此后版本体系沿用至今。十二、升级实践要点综合 CHANGES.md 中的 Upgrade notes安全升级的关键步骤可归纳为读取目标版本的升级说明每个 stable 版本都附有专属 upgrade notice如 stable-2.14.0、2.13.0、2.12.0升级前务必确认破坏性变更按顺序升级 CRD 与控制面≥2.12CLI 路径依次执行linkerd upgrade --crds与linkerd upgradeHelm 路径依次升级linkerd-crds与linkerd-control-plane保留 mTLS 密钥linkerd upgrade会保留既有控制面配置与 mTLS secretsstable-2.5.0 起的标准行为关注镜像仓库变更stable-2.9.0 将默认镜像仓库从gcr.io切换为ghcr.io私有镜像同步用户需特别注意注意最低 Kubernetes 版本edge-23.12.2 起最低支持 Kubernetes 1.22利用诊断命令验证升级后用linkerd check、linkerd diagnostics、linkerd viz stat验证控制面健康、策略生效与流量状态。结语CHANGES.md 不只是一份流水账它完整记录了 Linkerd 从仅支持 gRPC 的实验项目成长为具备零信任策略、多集群直连、网格外扩能力的生产级服务网格的每一步决策安全上坚持默认 mTLS策略上坚定拥抱 Gateway API 标准安装上走向 CRD 与控制面分离的 Helm 模型可靠性上围绕 Destination 控制器与 proxy 做了长期修复。对于正在使用或计划引入 Linkerd 的团队这份变更记录既是版本选择的依据也是理解当前代码库charts、controller、multicluster、policy-controller、cli设计动机的最佳入口。赞分享服务网格云原生可观测性【免费下载链接】linkerd2Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.项目地址https://gitcode.com/gh_mirrors/li/linkerd2点击查看免费下载相关推荐actix-web 版本演进全景解读从 CHANGES.md 看 Actix Web 4.x 核心 API 变迁与升级指南actix web 版本演进全景解读从 CHANGES.md 看 Actix Web 4.x 核心 API 变迁与升级指南 导读 本文以 actix web后端Web框架PyTorch Lightning 版本演进全解析从 CHANGELOG 读懂 2.x 时代的架构变迁与升级策略PyTorch Lightning 版本演进全解析从 CHANGELOG 读懂 2.x 时代的架构变迁与升级策略 本文以仓库内 src/lightning/p人工智能深度学习机器学习预训练分布式训练微调MessageKit 版本演进全解读从 CHANGELOG 看 Swift 聊天 UI 框架的 4.x 架构变迁与升级路径MessageKit 版本演进全解读从 CHANGELOG 看 Swift 聊天 UI 框架的 4.x 架构变迁与升级路径 本文以仓库根目录 CHANGELO即时通讯移动开发UI组件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表