Releases: linkerd/linkerd2
edge-25.3.4
Overall status: NOT RECOMMENDED, use edge-25.7.4 instead
Cautions
This release includes one breaking change: Linkerd now requires the Gateway API CRDs, so you must either install them before installing Linkerd, or you must explicitly set installGatewayAPI=true when installing Linkerd -- but a CLI bug in this release prevents the CLI from installing the Gateway API CRDs for you. While edge-25.4.1 fixes the CLI bug, we recommend edge-25.7.4 instead for other bugfixes.
Changes
Starting with this release, you must have the Gateway API CRDs on the cluster before installing Linkerd. If you are upgrading from an earlier version of Linkerd, you should not need to take any action. If you're installing Linkerd for the first time, you'll need to either set installGatewayAPI true when installing Linkerd, or install the Gateway API CRDs manually.
This release restores correct IPv6 support and restores Role permissions for the multicluster mirror controller, and continues multicluster improvements by introducing the new linkerd multicluster link-gen command (which deprecates link and unlink), as well as adding a CLI check to warn of any older mirror controllers that haven't yet been replaced. It supports setting proxy.metrics.hostnameLabels true when installing Linkerd to include hostname labels in outbound metrics, supports excluding labels and annotations from federated and mirrored services, fixes a bug that could result in stale Service resources when mirroring services, fixes support for ExternalWorkloads that don't explicitly declare the Linkerd proxy port (4143) in their manifests, and mitigates a thundering herd effect where proxies could unnecessarily load the DNS server. Finally, linkerd viz tap no longer relies on the obsolete authority pseudo-resource (thanks, Stephen Muth!).
What's Changed
- build(deps): bump tj-actions/changed-files from 0b975f61488402a699abcebd6a1e25924cf85218 to 6482371e862961013f9584015cf362c4f664b20c by @dependabot in #13837
- chore(deps): remove unused k8s-gateway-api dependency by @olix0r in #13844
- build(deps): bump kubert from 0.23 to 0.24 by @olix0r in #13843
- chore(dependabot): group kubert updates by @olix0r in #13842
- build(deps): bump actions/download-artifact from 4.2.0 to 4.2.1 by @dependabot in #13839
- build(deps): bump Swatinem/rust-cache from 2.7.7 to 2.7.8 by @dependabot in #13838
- build(deps): bump actions/upload-artifact from 4.6.1 to 4.6.2 by @dependabot in #13836
- fix(dest): fallback to default proxy inbound port when one could not … by @zaharidichev in #13840
- proxy: v2.288.0 by @l5d-bot in #13847
- build(deps-dev): bump sinon from 19.0.2 to 19.0.4 in /web/app by @dependabot in #13846
- build(deps): bump linkerd-extension-init from 0.1.2 to 0.1.3 by @alpeb in #13833
- refactor(multicluster): revert Link permissions back to Role by @alpeb in #13848
- Remove deprecated 'authority' references from tap form by @smuth4 in #13850
- build(deps): bump tj-actions/changed-files from 6482371e862961013f9584015cf362c4f664b20c to 27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99 by @dependabot in #13854
- build(deps): bump iana-time-zone from 0.1.61 to 0.1.62 by @dependabot in #13857
- feat(policy): Configure outbound hostname labels in metrics by @sfleen in #13822
- build(deps): bump google.golang.org/protobuf from 1.36.5 to 1.36.6 by @dependabot in #13855
- build(deps): bump log from 0.4.26 to 0.4.27 by @dependabot in #13856
- build(deps): bump cc from 1.2.16 to 1.2.17 by @dependabot in #13853
- feat(multicluster): add CLI check for legacy service mirror controllers by @alpeb in #13859
- build(deps): bump rustls-webpki from 0.103.0 to 0.103.1 by @dependabot in #13863
- build(deps): bump pest from 2.7.15 to 2.8.0 by @dependabot in #13862
- build(deps): bump delegate from 0.13.2 to 0.13.3 by @dependabot in #13861
- build(deps): bump pest_derive from 2.7.15 to 2.8.0 by @dependabot in #13860
- proxy: v2.289.0 by @l5d-bot in #13864
- feat(mutlicluster): Add support for excluding labels and annotations from federated and mirror services by @adleong in #13802
- feat(multicluster): add link-gen command, deprecate link and unlink commands by @alpeb in #13858
- feat(CLI): Add errors for invalid Gateway API CRD states by @adleong in #13834
- fix(multicluster): fix stale service resources during event requeue by @adleong in #13849
- build(deps): bump the clap group with 2 updates by @dependabot in #13866
- Bump Prometheus to
v2.55.1by @siggy in #13867
New Contributors
Full Changelog: edge-25.3.3...edge-25.3.4
edge-25.3.3
Overall status: NOT RECOMMENDED, use edge-25.7.4 instead
Cautions
This release unintentionally switched the multicluster mirror controller to use ClusterRole permissions rather than Role permissions. While edge-25.4.1 correctly switches back to Role and correctly supports IPv6, we recommend edge-25.7.4 instead for other bugfixes.
Additionally, this release introduces several changes to make Linkerd multicluster more GitOps-friendly, and federated Services will now keep their metadata in sync with the member with the oldest Link. To make use of this new functionality you must upgrade your Link resources by following the instructions in the upgrading multicluster page.
Changes
This edge release integrates the service-mirroring controllers into the Linkerd multicluster extension, allowing better GitOps management of the new Link v1alpha3 CRs and credential Secrets. Additionally, when using federated Services, the metadata of the federated Service will be kept in sync with the Service with the oldest Link, the proxy.cores Helm chart value has been replaced with a more flexible proxy.runtime.workers structure, it's now possible to set an environment variable to reenable outbound hostname metrics, and - last but not least! - we will correctly honor custom debug container annotations (thanks, Vishal Tewatia!)
What's Changed
- build(deps): bump tokio from 1.43.0 to 1.44.1 by @dependabot in #13793
- build(deps): bump tokio-util from 0.7.13 to 0.7.14 by @dependabot in #13797
- build(deps): bump tj-actions/changed-files from 45.0.7 to 45.0.8 by @dependabot in #13798
- build(deps): bump once_cell from 1.21.0 to 1.21.1 by @dependabot in #13796
- build(deps): bump itoa from 1.0.14 to 1.0.15 by @dependabot in #13794
- build(deps): bump helm.sh/helm/v3 from 3.17.1 to 3.17.2 by @dependabot in #13792
- build(deps): bump github.com/prometheus/common from 0.62.0 to 0.63.0 by @dependabot in #13791
- feat(multicluster): have linkerd-multicluster chart be responsible for service mirror controllers by @alpeb in #13770
- feat(multicluster): have linkerd-multicluster chart be responsible for service mirror controllers - probes by @alpeb in #13781
- build(deps): bump extractions/setup-just from 2.0.0 to 3.0.0 by @dependabot in #13812
- feat(multicluster): have linkerd-multicluster chart be responsible for service mirror controllers - CLI by @alpeb in #13782
- feat(multicluster): have linkerd-multicluster chart be responsible for service mirror controllers - tests by @alpeb in #13800
- build(deps): bump rustversion from 1.0.19 to 1.0.20 by @dependabot in #13807
- build(deps): bump hyper-http-proxy from 1.0.0 to 1.1.0 by @dependabot in #13808
- build(deps): bump foldhash from 0.1.4 to 0.1.5 by @dependabot in #13809
- build(deps): bump dtoa from 1.0.9 to 1.0.10 by @dependabot in #13810
- build(deps): bump libc from 0.2.170 to 0.2.171 by @dependabot in #13811
- feat(inject): replace proxy.cores with proxy.runtime.workers by @olix0r in #13767
- build(deps-dev): bump @babel/core from 7.26.8 to 7.26.10 in /web/app by @dependabot in #13804
- build(deps): bump @babel/eslint-plugin from 7.25.9 to 7.26.10 in /web/app by @dependabot in #13806
- build(deps-dev): bump @babel/eslint-parser from 7.26.8 to 7.26.10 in /web/app by @dependabot in #13805
- feat!(multicluster): Federated services take metadata from member with the oldest Link by @adleong in #13783
- build(deps): bump async-trait from 0.1.86 to 0.1.88 by @dependabot in #13819
- build(deps): bump http-body-util from 0.1.2 to 0.1.3 by @dependabot in #13818
- build(deps): bump rustls from 0.23.23 to 0.23.25 by @dependabot in #13817
- fix(multicluster): correct Helm manifest whitespacing by @alpeb in #13815
- fix(injector): use annotated values for debug container by @vishu42 in #13778
- fix(test): add missing env var to debug annotation test by @alpeb in #13825
- fix(multicluster): move controller's permissions from Role to ClusterRole by @alpeb in #13823
- build(proxy): update fetch-proxy to use the new release assets by @olix0r in #13824
- build(deps): bump tj-actions/changed-files from 9200e69727eb73eb060652b19946b8a2fdfb654b to 0b975f61488402a699abcebd6a1e25924cf85218 by @dependabot in #13820
- build(deps): bump github.com/containerd/containerd from 1.7.24 to 1.7.27 by @dependabot in #13816
- chore(multicluster): descriptive name for the test-multicluster integration tests by @alpeb in #13826
- build(deps): bump actions/setup-go from 5.3.0 to 5.4.0 by @dependabot in #13831
- build(deps): bump actions/download-artifact from 4.1.9 to 4.2.0 by @dependabot in #13830
- build(deps): bump windows-link from 0.1.0 to 0.1.1 by @dependabot in #13828
- build(proxy): use correct naming convention for proxy artifact in
fetch-proxyby @zaharidichev in #13832 - proxy: v2.287.0 by @l5d-bot in #13829
- chore(helm): eliminate stray whitespace by @olix0r in #13827
- feat(multicluster): Add Link v1alpha3 by @adleong in #13801
New Contributors
Full Changelog: edge-25.3.2...edge-25.3.3
edge-25.3.2
Overall status: NOT RECOMMENDED, use edge-25.7.4 instead
Cautions
This release includes a change to protocol detection: if the client closes the connection without writing any data, the proxy doing protocol detection will treat it as a read failure, which a client making unusual use of half-open connections might see as a behavioral change. If you have such a client, you may need to mark the connection as opaque.
Additionally, this release changes the default for outbound-transport-mode to transport-header, which will result in all traffic between meshed proxies flowing on port 4143, rather than using the original destination port. It also does not correctly support IPv6. While edge-25.4.1 correctly supports IPv6, we recommend edge-25.7.4 for other bugfixes.
Changes
This release changes the default for outbound-transport-mode to transport-header, meaning that by default, all traffic between meshed proxies will be multiplexed on TCP port 4143 rather than using the original destination port. It also fixes a bug where installing with Helm could install Gateway API CRDs even when enableHttpRoutes, enableTcpRoutes, or enableTlsRoutes were set to false, and improves metrics around protocol declarations and protocol detection (especially when using the transport-header mode). Additionally, inbound server metrics now get a srv_port label to identify the specific port used for inbound policy.
What's Changed
- build(deps): bump ring from 0.17.12 to 0.17.13 by @dependabot in #13757
- build(deps): bump anyhow from 1.0.96 to 1.0.97 by @dependabot in #13754
- build(deps): bump serde_json from 1.0.139 to 1.0.140 by @dependabot in #13753
- build(deps): bump ryu from 1.0.19 to 1.0.20 by @dependabot in #13755
- build(deps): bump linkerd2-proxy-api from
66abbf3tod6cb0efby @dependabot in #13756 - fix(helm): correct installGatewayAPI helm value defaulting by @adleong in #13759
- chore(deps): ignore backoff crate advisory by @alpeb in #13766
- refactor(inject): group resource requests/limits by type by @olix0r in #13769
- build(deps): bump pin-project from 1.1.9 to 1.1.10 by @dependabot in #13761
- build(deps): bump quote from 1.0.38 to 1.0.39 by @dependabot in #13763
- build(deps): bump syn from 2.0.99 to 2.0.100 by @dependabot in #13764
- build(deps): bump proc-macro2 from 1.0.93 to 1.0.94 by @dependabot in #13765
- build(deps): bump unicode-ident from 1.0.17 to 1.0.18 by @dependabot in #13762
- fix(destination): Do not send admin traffic over opaque transport by @sfleen in #13758
- feat(dest): Default meshed traffic to inbound proxy port by @sfleen in #13715
- proxy: v2.286.0 by @l5d-bot in #13771
- build(deps): bump the clap group with 3 updates by @dependabot in #13772
- build(deps): bump serde from 1.0.218 to 1.0.219 by @dependabot in #13776
- build(deps): bump quote from 1.0.39 to 1.0.40 by @dependabot in #13775
- build(deps): bump ring from 0.17.13 to 0.17.14 by @dependabot in #13773
- build(deps): bump kubert-prometheus-tokio from 0.2.0-alpha1 to 0.2.0 by @dependabot in #13774
- build(deps-dev): bump @babel/runtime from 7.26.7 to 7.26.10 in /web/app by @dependabot in #13779
- build(deps): bump the kube group with 7 updates by @dependabot in #13784
- build(deps): bump kubert from 0.23.0 to 0.23.1 by @dependabot in #13787
- build(deps): bump once_cell from 1.20.3 to 1.21.0 by @dependabot in #13785
- build(deps): bump thiserror from 2.0.11 to 2.0.12 by @dependabot in #13786
- build(deps): bump httparse from 1.10.0 to 1.10.1 by @dependabot in #13788
- build(deps): bump dyn-clone from 1.0.18 to 1.0.19 by @dependabot in #13789
- chore(ci): install cargo-nextest from binary by @olix0r in #13790
Full Changelog: edge-25.3.1...edge-25.3.2
edge-25.3.1
Overall status: NOT RECOMMENDED, use edge-25.7.4 instead
Cautions
In this release, linkerd install --crds --set enableHttpRoutes=false will still install the HTTPRoute CRD due to a bug, and IPv6 support does not work correctly. Using linkerd install --crds --set installGatewayAPI=false will work around the install issue, but we recommend edge-25.7.4 instead for other bugfixes.
Linkerd's management of Gateway API changes in this release:
linkerd install --crdswill not install Gateway API CRDs if any are already present on the cluster (which requireslinkerd installto read from the cluster);- The
installGatewayAPIsetting is the new recommended way to control whether Linkerd installs Gateway API CRDs; and - If Linkerd installs the Gateway API CRDs, it will annotate them with
helm.sh/resource-policy: keepto avoid downtime during upgrades.
Changes
This release changes the way Linkerd manages the Gateway API CRDs as a first step away from managing them at all: the new installGatewayAPI setting takes the place of the previous enableHttpRoutes, enableTcpRoutes, and enableTlsRoutes settings; linkerd install --crds will no longer install Gateway API CRDs if any are already present; and any Gateway API CRDs installed by Linkerd will be annotated such that Helm will not uninstall them during an upgrade.
Additionally, this version adds support for Linkerd protocol declaration, bypassing protocol detection if you set appProtocol in a Service port definition (for example, setting appProtocol to http or kubernetes.io/h2c will skip protocol detection and do HTTP). It also supports setting outbound-transport-mode to transport-header when installing Linkerd to multiplex all traffic between meshed proxies on port 4143 rather than using the original destination port. Finally, the documentation for proxy-wait-before-exit-seconds has been updated to match the website (thanks, Takumi Sue!).
What's Changed
- docs: fix description about proxy wait by @mikutas in #13605
- fix(ci): remove EmbarkStudios/cargo-deny-action by @olix0r in #13732
- build(deps): bump tokio-rustls from 0.26.1 to 0.26.2 by @dependabot in #13728
- build(deps): bump bitflags from 2.8.0 to 2.9.0 by @dependabot in #13729
- build(deps): bump cc from 1.2.15 to 1.2.16 by @dependabot in #13727
- build(deps): bump crazy-max/ghaction-chocolatey from 3.2.0 to 3.3.0 by @dependabot in #13730
- build(deps-dev): bump babel-loader from 9.2.1 to 10.0.0 in /web/app by @dependabot in #13724
- feat(policy): Add http protocol configuration by @sfleen in #13721
- proxy: v2.284.0 by @l5d-bot in #13736
- build(deps): bump google.golang.org/grpc from 1.70.0 to 1.71.0 by @dependabot in #13734
- build(deps): bump github.com/prometheus/client_golang from 1.21.0 to 1.21.1 by @dependabot in #13733
- build(deps): bump golang.org/x/net from 0.35.0 to 0.36.0 by @dependabot in #13735
- feat(destination): introduce transport-protocol outbound TLS mode by @sfleen in #13699
- build(policy): fix kubert TLS features by @olix0r in #13738
- build(deps): bump core-js from 3.40.0 to 3.41.0 in /web/app by @dependabot in #13726
- fix(policy): ensure runtime default features are correct by @olix0r in #13742
- build(deps): bump bytes from 1.10.0 to 1.10.1 by @dependabot in #13745
- build(deps): bump ring from 0.17.11 to 0.17.12 by @dependabot in #13747
- build(deps): bump either from 1.14.0 to 1.15.0 by @dependabot in #13746
- build(deps): bump syn from 2.0.98 to 2.0.99 by @dependabot in #13748
- build(deps): bump golang.org/x/net from 0.36.0 to 0.37.0 by @dependabot in #13743
- build(deps): bump cni-plugin from v1.6.0 to v1.6.2 by @alpeb in #13751
- build(deps): bump pkg-config from 0.3.31 to 0.3.32 by @dependabot in #13749
- build(deps): bump golang.org/x/tools from 0.30.0 to 0.31.0 by @dependabot in #13744
- fix(policy): Fix policy controller panic when gateway api is not installed by @adleong in #13741
- feat(helm)!: abandon gateway api CRDs after install by @adleong in #13740
- test(policy): Add E2E test for service
appProtocolhandling by @sfleen in #13737 - proxy: v2.285.0 by @l5d-bot in #13752
- feat!(helm): Add installGatewayAPI helm chart value by @adleong in #13739
Full Changelog: edge-25.2.3...edge-25.3.1
edge-25.2.3
Overall status: RECOMMENDED for IPv4 sites only
Cautions
This release does not correctly support IPv6; sites that need IPv6 should use edge-25.4.1 or later instead. Additionally, if you allow Linkerd to manage Gateway API CRDs for you, this release will install Gateway API CRDs version 1.1.1 experimental.
Changes:
If you allow Linkerd to manage Gateway API CRDs for you, this release will upgrade your Gateway API CRDs to version 1.1.1 experimental. Also, you can now use appProtocol: linkerd.io/opaque in a Service port definition to mark a port as opaque.
What's Changed
- build(deps): bump h2 from 0.4.7 to 0.4.8 by @dependabot in #13687
- build(deps): bump github.com/prometheus/client_golang from 1.20.5 to 1.21.0 by @dependabot in #13689
- build(deps): bump typenum from 1.17.0 to 1.18.0 by @dependabot in #13688
- build(deps): bump itertools from 0.12.1 to 0.14.0 by @dependabot in #13685
- build(deps): bump serde_json from 1.0.138 to 1.0.139 by @dependabot in #13684
- build(deps): bump tokio-tungstenite from 0.26.1 to 0.26.2 by @dependabot in #13692
- build(deps): bump security-framework from 2.11.0 to 2.11.1 by @dependabot in #13694
- build(deps): bump syn from 2.0.87 to 2.0.98 by @dependabot in #13693
- build(deps): bump anyhow from 1.0.95 to 1.0.96 by @dependabot in #13695
- build(deps): bump EmbarkStudios/cargo-deny-action from 2.0.4 to 2.0.5 by @dependabot in #13697
- test(deps): upgrade minimum k8s version to 1.23 by @adleong in #13691
- build(deps): bump actions/upload-artifact from 4.6.0 to 4.6.1 by @dependabot in #13708
- build(deps): bump either from 1.13.0 to 1.14.0 by @dependabot in #13707
- build(deps): bump miniz_oxide from 0.8.4 to 0.8.5 by @dependabot in #13706
- build(deps): bump cc from 1.2.14 to 1.2.15 by @dependabot in #13705
- build(deps): bump serde from 1.0.217 to 1.0.218 by @dependabot in #13704
- build(deps): bump log from 0.4.25 to 0.4.26 by @dependabot in #13703
- build(deps): bump EmbarkStudios/cargo-deny-action from 2.0.5 to 2.0.6 by @dependabot in #13714
- build(deps): bump unicode-ident from 1.0.16 to 1.0.17 by @dependabot in #13713
- build(deps): bump pem from 3.0.4 to 3.0.5 by @dependabot in #13710
- build(deps): bump the clap group with 2 updates by @dependabot in #13709
- build(deps): bump libc from 0.2.169 to 0.2.170 by @dependabot in #13712
- feat(helm): Upgrade Gateway API CRDs to gateway API v1.1.1 by @adleong in #13690
- build(deps): bump ring from 0.17.9 to 0.17.11 by @dependabot in #13711
- feat(policy): Add opaque protocol configuration by @sfleen in #13660
- proxy: v2.283.0 by @l5d-bot in #13716
- build(deps): bump schemars from 0.8.21 to 0.8.22 by @dependabot in #13717
- build(deps): bump actions/download-artifact from 4.1.8 to 4.1.9 by @dependabot in #13718
- refactor(policy): Use gateway API bindings from the official gateway-api crate by @adleong in #13643
- build(deps): bump chrono from 0.4.39 to 0.4.40 by @dependabot in #13720
- build(deps): bump codecov/codecov-action from 5.3.1 to 5.4.0 by @dependabot in #13722
Full Changelog: edge-25.2.2...edge-25.2.3
edge-25.2.2
Overall status: RECOMMENDED for IPv4 sites only
Cautions
This release introduces a bug that affects only IPv6; sites that need IPv6 should use edge-25.4.1 or later instead. It also changes the default tracing protocol to OpenTelemetry instead of OpenCensus.
Changes:
The default tracing protocol is now OpenTelemetry instead of OpenCensus, and the policy controller now retries errors in lease handling. We've also enabled additional runtime metrics around Kubernetes watches, and finally, in the unlikely event of overlapping Server resources, we order the resources by creation time and name (as we do for Routes).
What's Changed
- build(deps): bump helm.sh/helm/v3 from 3.17.0 to 3.17.1 by @dependabot in #13655
- build(deps): bump ring from 0.17.8 to 0.17.9 by @dependabot in #13657
- build(deps): bump the kube group with 7 updates by @dependabot in #13658
- build(deps): bump equivalent from 1.0.1 to 1.0.2 by @dependabot in #13666
- build(deps): bump openssl-sys from 0.9.105 to 0.9.106 by @dependabot in #13669
- build(deps): bump cc from 1.2.13 to 1.2.14 by @dependabot in #13667
- build(deps): bump smallvec from 1.13.2 to 1.14.0 by @dependabot in #13670
- build(deps): bump github.com/spf13/cobra from 1.8.1 to 1.9.1 by @dependabot in #13671
- build(deps): bump openssl from 0.10.70 to 0.10.71 by @dependabot in #13668
- refactor(policy): Prepare for Gateway API type binding library switch by @adleong in #13654
- chore(cargo): use workspace dependencies for kube and hyper by @olix0r in #13672
- refactor(policy): extract lease init into a separate module by @olix0r in #13673
- fix(test): mark TestResourcesPostInstall as a helper by @olix0r in #13674
- feat(policy): enable kubert runtime metrics by @olix0r in #13675
- build(deps): bump the clap group with 2 updates by @dependabot in #13678
- add 2024 security audit report by @wmorgan in #13679
- feat!(tracing): Change default trace protocol to OpenTelemetry by @sfleen in #13491
- feat(proto-detect): Convert opaque ports to app protocol by @sfleen in #13659
- fix(policy): retry lease creation errors by @olix0r in #13677
- proxy: v2.281.0 by @l5d-bot in #13681
- fix(policy): order Server resources deterministically by @olix0r in #13676
- update 7ASecurity audit report by @wmorgan in #13682
- build(deps): bump kubert to v0.23.0 by @olix0r in #13533
- proxy: v2.282.0 by @l5d-bot in #13683
Full Changelog: edge-25.2.1...edge-25.2.2
edge-25.2.1
Overall status: RECOMMENDED
Cautions
Starting with this release, the hostname label for inbound HTTP and TLS metrics will always have an empty value, and the authority label has been removed.
Changes:
This release markedly improves Linkerd's OpenTelemetry compatibility by supporting the OTEL_RESOURCE_ATTRIBUTES environment variable, correctly propagating OpenTelemetry trace attributes from the client side of a request, and better supporting OpenTelemetry trace attributes (including the pod UID and container name). It adds a new issuer_cert_ttl_seconds gauge metric to expose the time remaining until the identity issuer certificate expires (thanks, Nathan Mehl!), removes the authority label on inbound HTTP metrics, and disables the hostname label for inbound HTTP and TLS metrics (it will be present with an empty value). It also fixes a bug that could result in HTTPRoutes with no port specified ending up with stale policy information, and allows linkerd install to work without the Gateway API CRDs installed at all. Last but certainly not least, labels on mirrored Services are propagated to their mirrored versions (thanks, Maxime Brunet!) and CI got an improved codeql workflow (thanks, Scott Brenner!).
What's Changed
- feat(multicluster): propagate service labels to endpoints by @maxbrunet in #13583
- build(deps): bump codecov/codecov-action from 5.1.2 to 5.2.0 by @dependabot in #13587
- fix(policy): Update outbound policy routes even when parent ref has no port by @adleong in #13584
- build(deps): bump openssl from 0.10.68 to 0.10.69 by @dependabot in #13601
- Add extra trace attributes from downward API by @sfleen in #13544
- proxy: v2.277.0 by @l5d-bot in #13609
- workflows/codeql - Reorder steps to cache dependencies by @ScottBrenner in #13594
- build(deps): bump openssl-probe from 0.1.5 to 0.1.6 by @dependabot in #13592
- build(deps): bump rand from 0.8.5 to 0.9.0 by @dependabot in #13604
- build(deps): bump openssl from 0.10.69 to 0.10.70 by @dependabot in #13620
- build(deps): bump google-github-actions/auth from 2.1.7 to 2.1.8 by @dependabot in #13618
- build(deps): bump ryu from 1.0.18 to 1.0.19 by @dependabot in #13612
- build(deps): bump httparse from 1.9.5 to 1.10.0 by @dependabot in #13611
- build(deps): bump github.com/spf13/pflag from 1.0.5 to 1.0.6 by @dependabot in #13610
- build(deps): bump unicode-ident from 1.0.14 to 1.0.16 by @dependabot in #13607
- build(deps): bump bumpalo from 3.16.0 to 3.17.0 by @dependabot in #13606
- build(deps): bump codecov/codecov-action from 5.2.0 to 5.3.1 by @dependabot in #13602
- build(deps): bump cpufeatures from 0.2.16 to 0.2.17 by @dependabot in #13600
- build(deps): bump google.golang.org/protobuf from 1.36.3 to 1.36.4 by @dependabot in #13599
- build(deps-dev): bump @babel/core from 7.26.0 to 7.26.7 in /web/app by @dependabot in #13598
- build(deps-dev): bump @babel/runtime from 7.26.0 to 7.26.7 in /web/app by @dependabot in #13596
- build(deps-dev): bump @babel/preset-env from 7.26.0 to 7.26.7 in /web/app by @dependabot in #13597
- build(deps): bump google.golang.org/grpc from 1.69.4 to 1.70.0 by @dependabot in #13593
- build(deps): bump cc from 1.2.10 to 1.2.11 by @dependabot in #13625
- build(deps): bump bytes from 1.9.0 to 1.10.0 by @dependabot in #13624
- build(deps): bump async-trait from 0.1.85 to 0.1.86 by @dependabot in #13623
- build(deps): bump serde_json from 1.0.137 to 1.0.138 by @dependabot in #13622
- build(deps): bump the clap group with 2 updates by @dependabot in #13621
- proxy: v2.278.0 by @l5d-bot in #13626
- build(deps): bump pin-project from 1.1.8 to 1.1.9 by @dependabot in #13627
- build(deps): bump cc from 1.2.11 to 1.2.12 by @dependabot in #13629
- build(deps): bump dyn-clone from 1.0.17 to 1.0.18 by @dependabot in #13628
- test(deps): bump k8s to v1.32 by @alpeb in #13632
- build(deps): bump once_cell from 1.20.2 to 1.20.3 by @dependabot in #13635
- build(deps): bump google.golang.org/protobuf from 1.36.4 to 1.36.5 by @dependabot in #13634
- build(deps): bump tj-actions/changed-files from 45.0.6 to 45.0.7 by @dependabot in #13630
- build(deps): bump data-encoding from 2.7.0 to 2.8.0 by @dependabot in #13642
- build(deps): bump cc from 1.2.12 to 1.2.13 by @dependabot in #13641
- build(deps-dev): bump @babel/preset-env from 7.26.7 to 7.26.8 in /web/app by @dependabot in #13640
- build(deps-dev): bump @babel/eslint-parser from 7.26.5 to 7.26.8 in /web/app by @dependabot in #13639
- build(deps-dev): bump @babel/core from 7.26.7 to 7.26.8 in /web/app by @dependabot in #13638
- expose issuer certificate TTL as a prometheus metric by @n-oden in #13615
- build(deps): bump golang.org/x/net from 0.34.0 to 0.35.0 by @dependabot in #13645
- build(deps): bump serialize-javascript from 6.0.1 to 6.0.2 in /web/app by @dependabot in #13647
- build(deps): bump miniz_oxide from 0.8.3 to 0.8.4 by @dependabot in #13651
- proxy: v2.279.0 by @l5d-bot in #13652
- build(deps): bump openssl-src from 300.4.1+3.4.0 to 300.4.2+3.4.1 by @dependabot in #13650
- build(deps): bump the clap group with 2 updates by @dependabot in #13649
- build(deps): bump golang.org/x/tools from 0.29.0 to 0.30.0 by @dependabot in #13644
- build(deps): bump github.com/evanphx/json-patch from 5.9.0+incompatible to 5.9.11+incompatible by @dependabot in #13608
- proxy: v2.280.0 by @l5d-bot in #13653
- fix(cli): Don't require gateway CRDs in linkerd install by @adleong in #13603
New Contributors
- @ScottBrenner made their first contribution in #13594
Full Changelog: edge-25.1.2...edge-25.2.1
edge-25.1.2
Overall status: RECOMMENDED
Cautions
This release changes the format of the Link resource's probeSpec.period, which means that Links created by edge-25.1.1 will not work with edge-25.1.2. Additionally, the ability to query by authority in linkerd viz stat has been removed.
Changes
This release updates OpenTelemetry trace labels to follow current HTTP semantic conventions, reduces load on the Kubernetes API server when a multicluster setup mirrors a lot of Services, and allows the CNI updateStrategy to be configured (thanks, Shane Starcher!), fixing issue 13031. It also requires the Link resource's probeSpec.period to be a GEP-2257 duration string, which means that Links created by edge-25.1.1 will not work as of this release: if you try to edit or redeploy those Links, you'll get a validation error if you don't fix the probeSpec.period. Finally, this release removes the ability to query by authority in linkerd viz stat.
What's Changed
- build(deps): bump valuable from 0.1.0 to 0.1.1 by @dependabot in #13572
- build(deps): bump github.com/prometheus/common from 0.61.0 to 0.62.0 by @dependabot in #13571
- build(deps): bump the kube group with 7 updates by @dependabot in #13570
- build(deps): bump serde_json from 1.0.135 to 1.0.137 by @dependabot in #13575
- build(deps): bump ipnet from 2.10.1 to 2.11.0 by @dependabot in #13576
- build(deps): bump cc from 1.2.9 to 1.2.10 by @dependabot in #13574
- build(deps): bump DavidAnson/markdownlint-cli2-action from 19.0.0 to 19.1.0 by @dependabot in #13577
- build(deps-dev): bump eslint-plugin-react from 7.37.3 to 7.37.4 in /web/app by @dependabot in #13573
- build(deps): bump actions/setup-go from 5.2.0 to 5.3.0 by @dependabot in #13582
- build(deps): bump the clap group with 2 updates by @dependabot in #13580
- build(deps): bump github.com/briandowns/spinner from 0.0.0-20190212173954-5cf08d0ac778 to 1.23.2 by @dependabot in #13581
- feat(helm): allow cni updateStrategy to be configurable by @sstarcher in #13562
- fix(service-mirror): don't restart cluster watch upon Link status updates by @alpeb in #13579
- viz: Prohibit authority resource targets in stat commands by @zaharidichev in #13578
- fix(multicluster)!: Link's probeSpec.period should be formatted as duration by @alpeb in #13586
- proxy: v2.276.0 by @l5d-bot in #13590
New Contributors
- @sstarcher made their first contribution in #13562
Full Changelog: edge-25.1.1...edge-25.1.2
edge-25.1.1
Overall status: NOT RECOMMENDED, use edge-25.1.2 instead
Cautions
Link resources created by this release won't work with edge-25.1.2, so we recommend that you go directly to edge-25.1.2 rather than upgrading to this release. Additionally, this release requires that the Kubernetes API server be able to use TLS v1.3. That's been supported since Kubernetes v1.19, and Linkerd currently requires at least Kubernetes v1.22, so this shouldn't be an issue for anyone. Finally, this release also validates that proxy.runAsRoot be set if proxyInit.closeWaitTimeoutSecs is set -- this was a functional requirement anyway, but we now validate it at install time.
Changes
Welcome to 2025! This first release of the year bumps the minimum TLS version when talking to the API server to v1.3 (see the CAUTIONS above), adds proper iptables support for RHEL nodes, allows Linkerd to talk to running Pods which haven't passed readiness checks yet (thanks, Tuomo!), and allows specifying both podAnnotations per deployment (thanks, Takumi Sue!) and labels for the Viz dashboard (thanks, omer2500!). It also validates that proxy.runAsRoot is set if you try to set proxyInit.closeWaitTimeoutSecs, correctly handles proxy log levels with quotes, cleans up CLI output of port forwarding errors, adds the pod UID and proxy container name to the environment, fixes a bug with installing extensions with Helm in IPv6 clusters, and removes some unneeded CNI configuration values. Finally, thanks to Joakim Roubert for cleaning up some development shell scripting!
What's Changed
- proxy: v2.269.0 by @l5d-bot in #13401
- build(deps): bump libc from 0.2.165 to 0.2.166 by @dependabot in #13400
- build(deps): bump socket2 from 0.5.7 to 0.5.8 by @dependabot in #13404
- build(deps): bump bytes from 1.8.0 to 1.9.0 by @dependabot in #13403
- build(deps): bump tracing from 0.1.40 to 0.1.41 by @dependabot in #13402
- ci: pin cargo-nextest to v0.9.67 by @olix0r in #13411
- policy: Add e2e egress tests by @zaharidichev in #13390
- test(policy): update e2e_egress_network for reliability by @olix0r in #13412
- test(policy): fix assert_status_accepted to panic by @olix0r in #13413
- proxy: v2.270.0 by @l5d-bot in #13414
- chore(just): retry failures when loading pause container by @olix0r in #13415
- build(deps): bump mio from 1.0.2 to 1.0.3 by @dependabot in #13417
- build(deps): bump allocator-api2 from 0.2.20 to 0.2.21 by @dependabot in #13416
- build(deps): bump libc from 0.2.166 to 0.2.167 by @dependabot in #13418
- build(deps): bump k8s.io/endpointslice from 0.31.2 to 0.31.3 by @dependabot in #13386
- build(deps-dev): bump eslint-plugin-promise from 7.1.0 to 7.2.1 in /web/app by @dependabot in #13408
- build(deps): bump cc from 1.2.1 to 1.2.2 by @dependabot in #13423
- build(deps): bump errno from 0.3.9 to 0.3.10 by @dependabot in #13421
- build(deps): bump tracing-subscriber from 0.3.18 to 0.3.19 by @dependabot in #13422
- build(deps): bump clap from 4.5.21 to 4.5.22 by @dependabot in #13436
- build(deps): bump tokio-util from 0.7.12 to 0.7.13 by @dependabot in #13431
- refactor(policy): move policy-controller library to runtime by @olix0r in #13419
- chore: update Go code for new lints by @olix0r in #13437
- build(deps): bump tokio from 1.41.1 to 1.42.0 by @dependabot in #13438
- build(deps): bump anyhow from 1.0.93 to 1.0.94 by @dependabot in #13439
- build(deps): bump codecov/codecov-action from 5.0.7 to 5.1.1 by @dependabot in #13440
- build(deps): update linkerd/dev from v43 to v44 by @olix0r in #13428
- build(deps): bump EmbarkStudios/cargo-deny-action from 1.6.3 to 2.0.4 by @dependabot in #13424
- build(deps): bump thiserror from 1.0.68 to 2.0.4 by @dependabot in #13435
- build(deps): bump unicode-ident from 1.0.13 to 1.0.14 by @dependabot in #13359
- build(deps): bump google.golang.org/grpc from 1.67.1 to 1.68.1 by @dependabot in #13434
- build(deps): bump github.com/prometheus/common from 0.60.1 to 0.61.0 by @dependabot in #13429
- build(deps): bump github.com/emicklei/proto from 1.13.2 to 1.13.3 by @dependabot in #13430
- build(deps): bump golang.org/x/tools from 0.27.0 to 0.28.0 by @dependabot in #13433
- build(deps): bump clap from 4.5.22 to 4.5.23 by @dependabot in #13448
- build(deps): bump pest_derive from 2.7.14 to 2.7.15 by @dependabot in #13447
- build(deps): bump thiserror from 2.0.4 to 2.0.6 by @dependabot in #13446
- build(deps): bump tj-actions/changed-files from 45.0.4 to 45.0.5 by @dependabot in #13449
- build(deps-dev): bump webpack from 5.96.1 to 5.97.1 in /web/app by @dependabot in #13443
- build(deps-dev): bump @babel/preset-react from 7.25.9 to 7.26.3 in /web/app by @dependabot in #13444
- chore: group cargo dependabot updates by @olix0r in #13450
- build(deps): bump libc from 0.2.167 to 0.2.168 by @dependabot in #13453
- build(deps): bump cc from 1.2.2 to 1.2.3 by @dependabot in #13452
- build(deps): bump tokio-stream from 0.1.16 to 0.1.17 by @dependabot in #13454
- build(deps): bump url from 2.5.2 to 2.5.4 by @dependabot in #13385
- refactor(multicluster): Replace use of unstructured API with typed bindings for Link CR by @adleong in #13420
- feat(helm): Allow specifying podAnnotations per deployment by @mikutas in #13388
- Simplify cni config by @alpeb in #13407
- build(deps): bump chrono from 0.4.38 to 0.4.39 by @dependabot in #13456
- build(deps): bump nanoid from 3.3.7 to 3.3.8 in /web/app by @dependabot in #13455
- build(deps): bump serde from 1.0.215 to 1.0.216 by @dependabot in #13465
- proxy: v2.271.0 by @l5d-bot in #13468
- build(deps): bump actions/setup-go from 5.1.0 to 5.2.0 by @dependabot in #13466
- build(deps): bump k8s.io/client-go from 0.31.3 to 0.31.4 by @dependabot in #13460
- build(deps): bump softprops/action-gh-release from 2.1.0 to 2.2.0 by @dependabot in #13467
- chore(ci): simplify protoc scripts by @olix0r in #13459
- build(deps): bump k8s.io/endpointslice from 0.31.3 to 0.31.4 by @dependabot in #13463
- build(deps): bump k8s.io/kube-aggregator from 0.31.3 to 0.32.0 by @dependabot in #13470
- bin: shellscript housekeeping by @joakimr-axis in #13469
- build(deps): bump golang.org/x/crypto from 0.30.0 to 0.31.0 by @dependabot in #13471
- build(deps): bump k8s.io/endpointslice from 0.31.4 to 0.32.0 by @dependabot in #13472
- build(deps): bump k8s.io/apiextensions-apiserver from 0.31.3 to 0.32.0 by @dependabot in #13473
- build(deps): bump cni-plugin from v1.5.2 to v1.6.0 by @alpeb in #13474
- feat(linkerd-cni): add support for plain iptables commands by @alpeb in #13457
- chore: group k8s.io dependabot updates by @olix0r in #13476
- build(deps): bump google.golang.org/grpc from 1.68.1 to 1.69.0 by @dependabot in #13477
- build(deps-dev): bump webpack-dev-server from 5.1.0 to 5.2.0 in /web/app by @dependabot in #13478
- feat(viz): add option to add labels to web service by @omer2500 in https://github.com/linkerd/linkerd2/pu...
edge-24.11.8
Overall status: RECOMMENDED
Cautions
N/A
Changes
This release bumps dependencies to change Linkerd's logic around Kubernetes leases to make sure that patches don't get stuck indefinitely.
What's Changed
- build(deps): bump libc from 0.2.164 to 0.2.165 by @dependabot in #13397
- build(deps): bump itoa from 1.0.13 to 1.0.14 by @dependabot in #13398
- build(deps): bump kubert from 0.21.2 to 0.22.0 by @olix0r in #13399
Full Changelog: edge-24.11.7...edge-24.11.8