Linkerd Edge Release Roundup: March 2024

Cover

With the changes to Linkerd’s release model, edge releases have clearly become more important! In light of that, we’ll be doing these Edge Release Roundup posts every month, to help keep everyone up to date on the latest and greatest. Going forward, we’ll cover everything since the previous roundup, but for this first post of the new series, we’ll take a longer look back, and tackle all the edge releases from February to the present.

Major Process Changes

There have been two significant changes in the edge release process that we want to highlight.

  1. Automated Edge Releases

    As of edge-24.2.5, we’ve automated the process of creating edge releases. While this is mostly an internal process change, it also means that you may see edge releases where the release notes are just a bunch of commit logs (especially from dependabot). We’ll still make additional callouts for more significant changes, though.

  2. Helm Chart Release Numbers

    As of edge-24.3.1, we’re changing the versioning scheme for our Helm charts to match the date-oriented scheme for the edge releases themselves. The only difference is that the Helm chart uses a four-digit year number – for example, the Helm charts for edge-24.3.1 has version 2024.3.1. This should simplify things for everyone.

Community Contributions

We couldn’t do what we do without the Linkerd community, and this batch of releases is definitely no exception. Huge thanks to Aurel Canciu, Adam Toy, Rui Chen, Michael Bell, and Jan Kantert for their contributions! You’ll find more information about all of these contributions in the release-by-release details below.

Breaking Changes

There is a breaking change in edge-24.2.4.

Up through edge-24.2.3, the ExternalWorkload CRD (version v1alpha1) specified the identity that an external workload should use as the meshTls stanza. In edge-24.2.4, we updated ExternalWorkload to v1beta1 and changed the spelling of this stanza to meshTLS (note the capitalization) to better align with the rest of our CRDs. Unfortunately, in the process we also broke the v1alpha1 ExternalWorkload CRD: anyone using ExternalWorkload in edge-24.2.3 would find that edge-24.2.4 didn’t honor those ExternalWorkloads.

We don’t think that this will have affected anyone in practice, but this section will list all the breaking changes we know of, whether we think they could affect anyone or not.

The Releases

From the feature perspective, recent edge releases have been focused on automating the edge release process, and on improving mesh expansion. We’ve also fixed quite a few things and, of course, each edge release has many dependency updates.

edge-24.2.1 (changelog)

This edge release improves the performance and stability of the destination controller and the ExternalWorkloads EndpointSlice controller.

  • The destination controller can ride through outdated Server CRDs in Pod-to-Pod multicluster, and it will only process Server updates for workloads actually affected by the Server.
  • EndpointSlices generated for ExternalWorkloads have better names, and leader election is improved for the controller generating them.
  • ExternalWorkloads can have at most one IPv4 address and one IPv6 address.

edge-24.2.2 (changelog)

This edge release introduces Helm configuration for liveness and readiness probe timings (thanks to Jan Kantert!), and addresses some issues in the destination controller.

  • We fixed a race condition that could panic the destination controller (issue 12010).
  • Also, when a Server that marks a port as opaque no longer selects any resource, the resource’s opaqueness will correctly revert to the default (issue 11995).

edge-24.2.3 (changelog)

This edge release supports configuring the MutatingWebhookConfig timeout (thanks, Michael Bell!) and fixes a few issues:

  • We added a counter of items dropped from the destination controller work queue, to help identify controller overloading.
  • We fixed a spurious linkerd check error for container images with digests.
  • We fixed a bug where Linkerd wouldn’t correctly update policy after deleting policy resources.

edge-24.2.4 (changelog)

This edge release introduces the v1beta1 ExternalWorkload CRD, with the more correctly named meshTLS stanza. This is a breaking change; ExternalWorkload v1alpha1 is no longer supported. It also updated the proxy to address some logging and metrics inconsistencies.

edge-24.2.5 (changelog)

This release includes support for Go 1.22 (thanks Rui Chen!) and updates the proxy again.

edge-24.3.1 (changelog)

As noted earlier, this is the release that changes the Helm versioning scheme. It also adds support for setting loadBalancerClass when required (thanks, Adam Toy!).

edge-24.3.2 (changelog)

Last but not least, this release fixes the Helm chart to correctly supporting setting repairController resources (issue 12100 – thanks, Aurel Canciu!). It additionally moves invalid token logs to INFO level (rather than DEBUG).

Installing the Latest Edge Release

curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | sh

How to give feedback

We would be delighted to hear how these releases work out for you! You can open a GitHub issue or discussion, join us on Slack, or visit the Buoyant Linkerd Forum – all are great ways to reach us.

Looking forward to hearing from you – happy meshing!!


Linkerd generally does new edge releases weekly; watch this space to keep up-to-date. Feedback on this blog series is welcome! Just ping @flynn on the Linkerd Slack.

Suggested Blog Posts