Skip to content

Releases: linkerd/linkerd2

edge-23.5.3

26 May 00:52
edge-23.5.3
66a459f

Choose a tag to compare

edge-23.5.3

This edge release includes fixes for several bugs related to HTTPRoute handling.

  • Fixed an issue where the namespace field on HTTPRoute backendRefs was
    ignored, and the backend Service would always be assumed to be in the
    namespace as the parent Service
  • Fixed an issue where default authorizations generated for readiness and
    liveness probes would fail if the probe path included URI query parameters
  • Fixed the proxy not using gRPC response classification for gRPC requests to
    destinations without ServiceProfiles

edge-23.5.2

19 May 13:00
edge-23.5.2
d94ca5a

Choose a tag to compare

edge-23.5.2

This edge release adds some minor improvements in the MeshTLSAuthentication CRD
and the extensions charts, and fixes an issue with linkerd multicluster check.

  • Added tolerations and nodeSelector support in extensions namespace-metadata
    Jobs (thanks @pssalman!)
  • Patched the MeshTLSAuthentication CRD to force providing at least one
    identity/identityRef
  • Fixed the linkerd multicluster check command failing in the presence of lots
    of mirrored services

edge-23.5.1

12 May 18:20
edge-23.5.1
1540120

Choose a tag to compare

edge-23.5.1

This edge release introduces the ability to configure the proxy's discovery cache
timeouts via annotations. While most users will not need to do this, it can be
useful to improve the mesh's resilience to control plane failures. This release
also includes a number of other important improvements and bug fixes.

  • Added -o json flag for the linkerd multicluster gateways command (thanks
    @hiteshwani29)
  • Added missing label linkerd.io/extension to certain resources to ensure they
    pruned when appropriate (thanks @ClementRepo)
  • Fixed a memory leak in the service mirror controller
  • Improved validation of the --to and --from flags for the linkerd viz stat
    command (thanks @pranoyk)
  • Fixed an issue with W3C trace context propagation which caused proxy spans to
    be siblings rather than children of their original parent (thanks
    @whiskeysierra)
  • Updated the Linkerd CNI plugin base docker image from Debian to Alpine
  • Fixed an issue where specifying a remote_write config would cause the
    Prometheus config to be invalid (thanks @hiteshwani29)
  • Added the ability to configure the proxy's discovery cache timeouts with the
    config.linkerd.io/proxy-outbound-discovery-cache-unused-timeout and
    config.linkerd.io/proxy-inbound-discovery-cache-unused-timeout annotations
  • Fixed the linkerd viz check command so that it will wait until the viz
    extension becomes ready
  • Fixed an issue where meshed pods could not communicate with themselves through
    a ClusterIP Service

stable-2.13.3

08 May 22:45

Choose a tag to compare

stable-2.13.3

This stable release improves compatibility with ArgoCD by changing the Linkerd
control plane to create Lease resources at runtime rather than including them
in the Helm chart. It also addresses a CVE by upgrading an underlying
dependency.

  • Upgraded the policy controller's h2 dependency to address CVE-2023-26964
  • Fixed an issue where the server_port_subscribers metric exposed by the
    Destination controller was sometimes absent
  • Removed the policy-controller-write Lease from the control plane Helm chart
    in favor of creating it at runtime
  • Updated the proxy-injector to pass opaque port lists to the proxy as ranges
    rather than individually, greatly reducing the size of proxy manifests when
    large opaque port ranges are set
  • Fixed an issue where the proxy was performing protocol detection on ports
    marked as opaque
  • Improved backwards compatibility between 2.13 proxies and 2.12 control planes

edge-23.4.3

27 Apr 22:29
edge-23.4.3
b106d3b

Choose a tag to compare

edge-23.4.3

This edge release improves compatibility with ArgoCD by changing the Linkerd
control plane to create Lease resources at runtime rather than including them
in the Helm chart. It also addresses a CVE by upgrading an underlying
dependency.

  • Upgraded h2 dependency to address CVE-2023-26964
  • Fixed an issue where server_port_subscribers metric in the Destination
    controller was sometimes absent
  • Removed the policy-controller-write Lease from the control plane Helm chart in
    favor of creating it at runtime
  • Updated the proxy-injector to pass opaque port lists to the proxy as ranges
    rather than individually, greatly reducing the size of proxy manifests when
    large opaque port ranges are set
  • Fixed an issue where the proxy was performing protocol detection on ports
    marked as opaque
  • Improved backwards compatibility between 2.13 proxies and 2.12 control planes

stable-2.13.2

25 Apr 17:48
stable-2.13.2
381b375

Choose a tag to compare

stable-2.13.2

This stable release fixes an incompatibility issue with the AWS CNI addon in EKS
that was forbidding pods to acquire networking after scaling up nodes (thanks
@frimik!). It also includes security updates for dependencies.

  • CNI

    • Fixed incompatibility issue with AWS CNI addon in EKS, that was forbidding
      pods to acquire networking after scaling up nodes. (thanks @frimik!)
  • CLI

    • Added a missing label to the HttpRoute CRD so that to ensure it can be
      removed by the linkerd uninstall command
  • Proxy

    • Updated the dependency on h2 to fix a potential crash in the HTTP/2
      implementation.
    • Changed the proxy's default log level to silence warnings from
      trust_dns_proto that are generally spurious
  • Extensions

    • Bumped Prometheus image to v2.43.0
    • Fixed Jaeger Helm chart installation failure (CLI was unaffected).

stable-2.12.5

24 Apr 20:03
stable-2.12.5
1b04e03

Choose a tag to compare

stable-2.12.5

This stable release fixes an incompatibility issue with the AWS CNI addon in EKS
that was forbidding pods to acquire networking after scaling up nodes (thanks
@frimik!). It also includes security updates for dependencies.

  • Detached the linkerd-cni plugin's version from linkerd's and bumped to v1.1.1
    to fix incompatibility with EKS' AWS CNI addon
  • Bumped the memory limit for the no-op init container to 25Mi to address issues
    on OKE environments
  • Updated h2 dependency in the policy controller to include a patch for a
    theoretical denial-of-service vulnerability discovered in CVE-2023-26964
  • Updated openssl dependency in the policy controller, addressing
    RUSTSEC-2023-0022, RUSTSEC-2023-0023 and RUSTSEC-2023-0024

edge-23.4.2

21 Apr 19:20
edge-23.4.2
7963acb

Choose a tag to compare

edge-23.4.2

This edge release contains a number of bug fixes.

  • CLI

    • Fixed linkerd uninstall issue for HttpRoute
    • The linkerd diagnostics policy command now displays outbound policy when
      the target resource is a Service
  • CNI

    • Fixed incompatibility issue with AWS CNI addon in EKS, that was
      forbidding pods to acquire networking after scaling up nodes.
      (thanks @frimik!)
    • Added --set flag to install-cni plugin (thanks @amit-62!)
  • Control Plane

    • Fixed an issue where the policy controller always used the default
      cluster.local domain
    • Send Opaque protocol hint for opaque ports in destination controller
  • Helm

    • Fixed an issue in the viz Helm chart where the namespace metadata template
      would throw unexpected argument found errors
    • Fixed Jaeger chart installation failure
  • Multicluster

    • Remove namespace field from cluster scoped resources to fix pruning
  • Proxy

    • Updated h2 dependency to include a patch for a theoretical
      denial-of-service vulnerability discovered in CVE-2023-26964
    • Handle Opaque protocol hints on endpoints
    • Changed the proxy's default log level to silence warnings from
      trust_dns_proto that are generally spurious.
    • Added outbound_http_balancer_endpoints metric
    • Fixed missing route_ metrics for requests with ServiceProfiles
  • Viz

    • Bump prometheus image to v2.43.0
    • Add the kubelet NetworkAuthentication back since it is used by the
      linkerd viz allow-scrapes subcommand.

stable-2.13.1

14 Apr 18:42
59a40f5

Choose a tag to compare

stable-2.13.1

This stable release fixes an issue in the policy controller where a non-default
cluster domain would return incorrect authorities in the outbound policy API.
Additionally, this release updates a proxy dependency to fix CVE-2023-2694.

  • Proxy

    • Updated h2 dependency to include a patch for a theoretical
      denial-of-service vulnerability discovered in CVE-2023-26964
  • Control Plane

    • Fixed an issue where the policy controller always used the default
      cluster.local domain
  • Helm

    • Fixed an issue in the viz Helm chart where the namespace metadata template
      would throw unexpected argument found errors

stable-2.13.0

11 Apr 02:16
stable-2.13.0
775dc9f

Choose a tag to compare

stable-2.13.0

This release introduces client-side policy to Linkerd, including dynamic routing
and circuit breaking. Gateway API HTTPRoutes
can now be used to configure policy for outbound (client) proxies as well as
inbound (server) proxies, by creating HTTPRoutes with Service resources as their
parentRef. See the Linkerd documentation for tutorials on dynamic request
routing
and circuit breaking. New functionality for debugging HTTPRoute-based
policy is also included in this release, including new proxy metrics and the
ability to display outbound policies in the linkerd diagnostics policy CLI
command.

In addition, this release adds network-validator, a new init container to be
used when CNI is enabled. network-validator ensures that local iptables rules
are working as expected. It will validate this before linkerd-proxy starts.
network-validator replaces the noop container, runs as nobody, and drops
all capabilities before starting.

Finally, this release includes a number of bugfixes, performance improvements,
and other smaller additions.

Upgrade notes: Please see the upgrade instructions.

  • CRDs

    • HTTPRoutes may now have Service parents, to configure outbound policy
    • Updated HTTPRoute version from v1alpha1 to v1beta2
  • CLI

    • Added a new linkerd prune command to the CLI (including most extensions) to
      remove resources which are no longer part of Linkerd's manifests
    • Added additional shortnames for Linkerd policy resources (thanks @javaducky!)
    • The linkerd diagnostics policy command now displays outbound policy when
      the target resource is a Service
  • Control Plane

    • The policy controller now discovers outbound policy configurations from
      HTTPRoutes that target Services.
    • Added OutboundPolicies API, for use by linkerd-proxy to route
      outbound traffic
    • Added Prometheus /metrics endpoint to the admin server, with process
      metrics
    • Fixed QueryParamMatch parsing for HTTPRoutes
    • Added the policy status controller which writes the status field to
      HTTPRoutes when a parent reference Server accepts or rejects it
    • Added KubeAPI server ports to ignoreOutboundPorts of proxy-injector
    • No longer apply waitBeforeExitSeconds to control plane, viz and jaeger
      extension pods
    • Added support for the internalTrafficPolicy of a service (thanks @yc185050!)
    • Added block chomping to strip trailing new lines in ConfigMap (thanks @avdicl!)
    • Added protection against nil dereference in resources helm template
    • Added support for Pod Security Admission (Pod Security Policy resources are
      still supported but disabled by default)
    • Lowered non-actionable error messages in the Destination log to debug-level
      entries to avoid triggering false alarms (thanks @siddharthshubhampal!)
    • Fixed an issue with EndpointSlice endpoint reconciliation on slice deletion;
      when using more than one slice, a NoEndpoints event would be sent to the
      proxy regardless of the amount of endpoints that were still available
      (thanks @utay!)
    • Improved diagnostic log messages
    • Fixed sending of spurious profile updates
    • Removed unnecessary Namespaces access from the destination controller RBAC
    • Added the server_port_subscribers metric to track the number of subscribers
      to Server changes associated with a pod's port
    • Added the service_subscribers metric to track the number of subscribers to
      Service changes
    • Fixed a small memory leak in the opaque ports watcher
  • Proxy

    • Use the new OutboundPolicies API, supporting Gateway API-style routes
      in the outbound proxy
    • Added support for dynamic request routing based on HTTPRoutes
    • Added HTTP circuit breaking
    • Added outbound_route_backend_http_requests_total,
      outbound_route_backend_grpc_requests_total, and
      outbound_http_balancer_endpoints metrics
    • Changed the proxy's behavior when traffic splitting so that only services
      that are not in failfast are used. This will enable the proxy to manage
      failover without external coordination
    • Updated tokio (async runtime) in the proxy which should reduce CPU usage,
      especially for proxy's pod local (i.e in the same network namespace)
      communication
  • linkerd-proxy-init

    • Changed proxy-init iptables rules to be idempotent upon init pod
      restart (thanks @jim-minter!)
    • Improved logging in proxy-init and linkerd-cni
    • Added a proxyInit.privileged setting to control whether the proxy-init
      initContainer runs as a privileged process
  • CNI

    • Added static and dynamic port overrides for CNI eBPF to work with socket-level
      load balancing
    • Added network-validator init container to ensure that iptables rules are
      working as expected
    • Added a resources field in the linkerd-cni chart (thanks @jcogilvie!)
  • Viz

    • Added tap.ignoredHeaders Helm value to the linkerd-viz chart. This value
      allows users to specify a comma-separated list of header names which will be
      ignored by Linkerd Tap (thanks @ryanhristovski!)
    • Removed duplicate SecurityContext in Prometheus manifest
    • Added new flag --viz-namespace which avoids requiring permissions for
      listing all namespaces in linkerd viz subcommands (thanks @danibaeyens!)
    • Removed the TrafficSplit page from the Linkerd viz dashboard (thanks
      @h-dav!)
    • Introduced new values in the viz chart to allow for arbitrary annotations
      on the Service objects (thanks @sgrzemski!)
    • Added an optional AuthorizationPolicy to authorize Grafana to Prometheus
      in the Viz extension
  • Multicluster

    • Removed duplicate AuthorizationPolicy for probes from the multicluster
      gateway Helm chart
    • Updated wording for linkerd-multicluster cluster when it fails to probe a
      remote gateway mirror
    • Added multicluster gateway nodeSelector and tolerations helm parameters
    • Added new configuration options for the multicluster gateway:
      • gateway.deploymentAnnotations
      • gateway.terminationGracePeriodSeconds (thanks @bunnybilou!)
      • gateway.loadBalancerSourceRanges (thanks @Tyrion85!)
  • Extensions

    • Removed dependency on the curlimages/curl 3rd-party image used to initialize
      extensions namespaces metadata (so they are visible by linkerd check),
      replaced by the new extension-init image
    • Converted ServerAuthorization resources to AuthorizationPolicy resources
      in Linkerd extensions
    • Removed policy resources bound to admin servers in extensions (previously
      these resources were used to authorize probes but now are authorized by
      default)
    • Fixed the link to the Jaeger dashboard the in viz dashboard (thanks
      @eugenegoncharuk!)
    • Updated linkerd-jaeger's collector to expose port 4318 in order support HTTP
      alongside gRPC (thanks @uralsemih!)
  • Among other dependency updates, the no-longer maintained ghodss/yaml library
    was replaced with sigs.k8s.io/yaml (thanks @Juneezee!)

This release includes changes from a massive list of contributors! A special
thank-you to everyone who helped make this release possible: