Releases: linkerd/linkerd2
edge-19.3.3
This is an edge release of Linkerd! The latest stable release is stable-2.2.1.
To install this edge release, run: curl https://run.linkerd.io/install-edge | sh
Significant Update
This edge release introduces a new TLS Identity system into the default Linkerd
installation, replacing tls=optional and the linkerd-ca controller. Now,
proxies generate ephemeral private keys into a tmpfs directory and dynamically
refresh certificates, authenticated by Kubernetes ServiceAccount tokens, via the
newly-introduced Identity controller.
Now, all meshed HTTP communication is private and authenticated by default.
- CLI
- Changed
installto accept or generate an issuer Secret for the Identity
controller - Changed
installto fail in the case of a conflict with an existing
installation; this can be disabled with the--ignore-clusterflag - Changed
injectto require fetching a configuration from the control plane;
this can be disabled with the--ignore-clusterand--disable-identity
flags, though this will prevent the injected pods from participating in mesh
identity - Removed the
--tls=optionalflag from thelinkerd installcommand, since
TLS is now enabled by default - Added the ability to adjust the Prometheus log level
- Changed
- Proxy
- Fixed a stream leak between the proxy and the control plane that could
cause thelinkerd-controllerpod to use an excessive amount of memory - Introduced per-proxy private key generation and dynamic certificate renewal
- Added a readiness check endpoint on
:4191/readyso that Kubernetes doesn't
consider pods ready until they have acquired a certificate from the Identity
controller - The proxy's connect timeouts have been updated, especially to improve
reconnect behavior between the proxy and the control plane
- Fixed a stream leak between the proxy and the control plane that could
- Web UI
- Added TCP stats to the Linkerd Pod Grafana dashboard
- Fixed the behavior of the Top query 'Start' button if a user's query returns
no data - Added stable sorting for table rows
- Fixed an issue with the order of tables returned from a Top Routes query
- Added text wrap for paths in the modal for expanded Tap query data
- Internal
- Improved the
bin/go-runscript for the build process so that on failure,
all associated background processes are terminated
- Improved the
Special thanks to @liquidslr for many useful UI and log changes, and to @mmalone
and @sourishkrout at @smallstep for collaboration and advice on the Identity
system!
edge-19.3.2
This is an edge release of Linkerd! The latest stable release is stable-2.2.1.
To install this edge release, run: curl https://run.linkerd.io/install-edge | sh
- Controller
- Breaking change Removed support for running the control plane in
single-namespace mode, which was severely limited in the number of features
it supported due to not having access to cluster-wide resources - Updated automatic proxy injection and CLI injection to support overriding
inject defaults via pod spec annotations - Added a new public API endpoint for fetching control plane configuration
- Breaking change Removed support for running the control plane in
- CLI
- Breaking change Removed the
--api-portflag from theinjectand
installcommands, since there's no benefit to running the control plane's
destination API on a non-default port (thanks, @paranoidaditya) - Introduced the
linkerd metricscommand for fetching proxy metrics - Updated the
linkerd routescommand to display rows for routes that are not
receiving any traffic - Updated the
linkerd dashboardcommand to serve the dashboard on a fixed
port, allowing it to leverage browser local storage for user settings
- Breaking change Removed the
- Web UI
- New Added a Community page to surface news and updates from linkerd.io
- Fixed a quoting issue with service profile downloads (thanks, @liquidslr!)
- Added a Grafana dashboard and web tables for displaying Job stats
(thanks, @Pothulapati!) - Updated sorting of route table to move default routes to the bottom
- Added TCP stat tables on the namespace landing page and resource detail page
edge-19.3.1
This is an edge release of Linkerd! The latest stable release is stable-2.2.1.
To install this edge release, run: curl https://run.linkerd.io/install-edge | sh
- CLI
- Introduced a check for NET_ADMIN in
linkerd check - Fixed permissions check for CRDs
- Included kubectl version check as part of
linkerd check(thanks @yb172!) - Added TCP stats to the stat command, under the
-o wideand-o jsonflags
- Introduced a check for NET_ADMIN in
- Controller
- Updated the
mutatingwebhookconfigurationso that it is recreated when the
proxy injector is restarted, so that the MWC always picks up the latest
config template during version upgrade
- Updated the
- Proxy
- Increased the inbound/router cap on MAX_CONCURRENT_STREAMS
- The
l5d-remote-ipheader is now set on inbound requests and outbound
responses
- Web UI
- Fixed sidebar not updating when resources were added/deleted (thanks
@liquidslr!) - Added filter functionality to the metrics tables
- Fixed sidebar not updating when resources were added/deleted (thanks
- Internal
- Added more log errors to the integration tests
- Removed the GOPATH dependence from the CLI dev environment
- Consolidated injection code from CLI and admission controller code paths
edge-19.2.5
This is an edge release of Linkerd! The latest stable release is stable-2.2.1.
To install this edge release, run: curl https://run.linkerd.io/install-edge | sh
- CLI
- Updated
linkerd checkto ensure hint URLs are displayed for RPC checks
- Updated
- Controller
- Updated the auto-inject admission controller webhook to respond to UPDATE
events for deployment workloads - Updated destination service to return TLS identities only when the
destination pod is TLS-aware and is in the same controller namespace - Lessen klog level to improve security
- Updated control-plane components to query Kubernetes at startup to determine
authorized namespaces and if ServiceProfile support is available - Modified the stats payload to include the following TCP stats:
tcp_open_connections,tcp_read_bytes_total,tcp_write_bytes_total
- Updated the auto-inject admission controller webhook to respond to UPDATE
- Proxy
- Fixed issue with proxy falling back to filesystem polling due to improperly
sized inotify buffer
- Fixed issue with proxy falling back to filesystem polling due to improperly
- Web UI
- Removed 'Help' hierarchy and surfaced links on navigation sidebar
- Added a Debug page to the web dashboard, allowing you to introspect service discovery state
- Updated the resource detail page to start displaying a table with TCP stats
- Internal
- Enabled the following linters:
unparam,unconvert,goimports,
goconst,scopelint,unused,gosimple - Bumped base Docker images
- Enabled the following linters:
stable-2.2.1
This stable release polishes some of the CLI help text and fixes two issues that
came up since the stable-2.2.0 release. If you're upgrading from stable-2.1.0 or
earlier, be sure to check out the Upgrade Guide.
To install this release, run: curl https://run.linkerd.io/install | sh
Full release notes:
- CLI
- Fixed handling of kubeconfig server urls that include paths
- Updated the description of the
--proxy-auto-injectflag to indicate that
it is no longer experimental - Updated the
profilehelp text to match the other commands - Added the "ep" alias for the
endpointscommand
- Controller
- Stopped logging an error when a route doesn't specify a timeout
edge-19.2.4
This is an edge release of Linkerd! The latest stable release is stable-2.2.0.
To install this edge release, run:
curl https://run.linkerd.io/install-edge | sh
- CLI
- Implemented
--proxy-cpu-limitand--proxy-memory-limitfor setting the
proxy resources limits (--proxy-cpuand--proxy-memorywere deprecated in
favor ofproxy-cpu-requestandproxy-memory-request) (thanks @TwinProduction!) - Updated the
injectanduninjectsubcommands to issue warnings when
resources lack aKindproperty (thanks @Pothulapati!) - Unhid the
install-cnicommand and its flags, and tweaked their descriptions - Fixed handling of kubeconfig server urls that include paths
- Updated the description of the
--proxy-auto-injectflag to indicate that
it is no longer experimental - Updated the
profilehelp text to match the other commands - Added the "ep" alias for the
endpointscommand (also @Pothulapati!) - Added a validator for the
--proxy-log-levelflag - Fixed sporadic (and harmless) race condition error in
linkerd check
- Implemented
- Controller
- Instrumented clients in the control plane connecting to Kubernetes, thus
providing better visibility for diagnosing potential problems with those
connections - Stopped logging an error when a route doesn't specify a timeout
- Renamed the "linkerd-proxy-api" service to "linkerd-destination"
- Bumped Prometheus to version 2.7.1 and Grafana to version 5.4.3
- Instrumented clients in the control plane connecting to Kubernetes, thus
- Web UI
- Modified the Grafana variable queries to use a TCP-based metric, so that
if there is only TCP traffic then the dropdowns don't end up empty - Ensured that all the tooltips in Grafana displaying the series are shared
across all the graphs
- Modified the Grafana variable queries to use a TCP-based metric, so that
- Internals
- Added the flags
-updateand-pretty-diffto tests to allow overwriting
fixtures and to print the full text of the fixtures upon mismatches - Introduced golangci-lint tooling, using
.golangci.ymlto centralize
the config - Added a
-coverparameter to track code coverage in go tests
(more info in TEST.md) - Added integration tests for
single-namespace - Renamed a function in a test that was shadowing a go built-in function
(thanks @huynq0911!)
- Added the flags
stable-2.2.0
Announcing Linkerd 2.2 🎈
This stable release introduces automatic request retries and timeouts, and graduates auto-inject to be a fully-supported (non-experimental) feature. It adds several new CLI commands, including logs and endpoints, that provide diagnostic visibility into Linkerd's control plane. Finally, it introduces two exciting experimental features: a cryptographically-secured client identity header, and a CNI plugin that avoids the need for NET_ADMIN kernel capabilities at deploy time.
For more details, see the announcement blog post:
https://blog.linkerd.io/2019/02/12/announcing-linkerd-2-2/
To install this release, run: curl https://run.linkerd.io/install | sh
Upgrade notes: The default behavior for proxy auto injection and service profile ownership has changed as part of this release. Please see the upgrade instructions for more details.
Special thanks to: @alenkacz, @codeman9, @jonrichards, @radu-matei, @yeya24, and @zknill
Full release notes:
- CLI
- Improved service profile validation when running
linkerd checkin order to
validate service profiles in all namespaces - Added the
linkerd endpointscommand to introspect Linkerd's service
discovery state - Added the
--tapflag tolinkerd profileto generate service profiles
using the route results seen during the tap - Added support for the
linkerd.io/inject: disabledannotation on pod specs
to disable injection for specific pods when runninglinkerd inject - Added support for
basePathin OpenAPI 2.0 files when runninglinkerd profile --open-api - Increased
linkerd checkclient timeout from 5 seconds to 30 seconds to fix
issues for clusters with slow API servers - Updated
linkerd routesto no longer return rows forExternalName
services in the namespace - Broadened the set of valid URLs when connecting to the Kubernetes API
- Added the
--protoflag tolinkerd profileto output a service profile
based on a Protobuf spec file - Fixed CLI connection failures to clusters that use self-signed certificates
- Simplified
linkerd installso that setting up proxy auto-injection
(flag--proxy-auto-inject) no longer requires enabling TLS (flag--tls) - Added links for each
linkerd checkfailure, pointing to a relevant section
in our new FAQ page with resolution steps for each case - Added optional
linkerd install-spcommand to generate service profiles for
the control plane, providing per-route metrics for control plane components - Removed
--proxy-bind-timeoutflag fromlinkerd installand
linkerd inject, as the proxy no longer accepts this environment variable - Improved CLI appearance on Windows systems
- Improved
linkerd checkoutput, fixed bug with--single-namespace - Fixed panic when
linkerd routesis called in single-namespace mode - Added
linkerd logscommand to surface logs from any container in the
Linkerd control plane - Added
linkerd uninjectcommand to remove the Linkerd proxy from a
Kubernetes config - Improved
linkerd injectto re-inject a resource that already has a Linkerd
proxy - Improved
linkerd routesto list all routes, including those without
traffic - Improved readability in
linkerd checkandlinkerd injectoutputs - Adjusted the set of checks that are run before executing CLI commands, which
allows the CLI to be invoked even when the control plane is not fully ready - Fixed reporting of injected resources when the
linkerd injectcommand is
run onListtype resources with multiple items - Updated the
linkerd dashboardcommand to use port-forwarding instead of
proxying when connecting to the web UI and Grafana - Added validation for the
ServiceProfileCRD - Updated the
linkerd checkcommand to disallow setting both the--preand
--proxyflags simultaneously - Added
--routesflag to thelinkerd topcommand, for grouping table rows
by route instead of by path - Updated Prometheus configuration to automatically load
*_rules.ymlfiles - Removed TLS column from the
linkerd routescommand output - Updated
linkerd installoutput to use non-default service accounts,
emptyDirvolume mounts, and non-root users - Removed cluster-wide resources from single-namespace installs
- Fixed resource requests for proxy-injector container in
--hainstalls
- Improved service profile validation when running
- Controller
- Fixed issue with auto-injector not setting the proxy ID, which is required
to successfully locate client service profiles - Added full stat and tap support for DaemonSets and StatefulSets in the CLI,
Grafana, and web UI - Updated auto-injector to use the proxy log level configured at install time
- Fixed issue with auto-injector including TLS settings in injected pods even
when TLS was not enabled - Changed automatic proxy injection to be opt-in via the
linkerd.io/inject
annotation on the pod or namespace - Move service profile definitions to client and server namespaces, rather
than the control plane namespace - Added
linkerd.io/created-byannotation to the linkerd-cni DaemonSet - Added a 10 second keepalive default to resolve dropped connections in Azure
environments - Improved node selection for installing the linkerd-cni DaemonSet
- Corrected the expected controller identity when configuring pods with TLS
- Modified klog to be verbose when controller log-level is set to
debug - Added support for retries and timeouts, configured directly in the service
profile for each route - Added an experimental CNI plugin to avoid requiring the NET_ADMIN capability
when injecting proxies - Improved the API for
ListPods - Fixed
GetProfilesAPI call not returning immediately when no profile
exists (resulting in proxies logging warnings) - Blocked controller initialization until caches have synced with kube API
- Fixed proxy-api handling of named target ports in service configs
- Added parameter to stats API to skip retrieving prometheus stats
- Fixed issue with auto-injector not setting the proxy ID, which is required
- Web UI
- Updated navigation to link the Linkerd logo back to the Overview page
- Fixed console warnings on the Top page
- Grayed-out the tap icon for requests from sources that are not meshed
- Improved resource detail pages to show all resource types
- Fixed stats not appearing for routes that have service profiles installed
- Added "meshed" and "no traffic" badges on the resource detail pages
- Fixed
linkerd dashboardto maintain proxy connection when browser open fails - Fixed JavaScript bundling to avoid serving old versions after upgrade
- Reduced the size of the webpack JavaScript bundle by nearly 50%
- Fixed an indexing error on the top results page
- Restored unmeshed resources in the network graph on the resource detail page
- Adjusted label for unknown routes in route tables, added tooltip
- Updated Top Routes page to persist form settings in URL
- Added button to create new service profiles on Top Routes page
- Fixed CLI commands displayed when linkerd is running in non-default
namespace
- Proxy
- Modified the way in which canonicalization warnings are logged to reduce the
overall volume of error logs and make it clearer when failures occur - Added TCP keepalive configuration to fix environments where peers may
silently drop connections - Updated the
GetandGetProfilesAPIs to accept aproxy_idparameter in
order to return more tailored results - Removed TLS fallback-to-plaintext if handshake fails
- Added the ability to override a proxy's normal outbound routing by adding an
l5d-override-dstheader - Added
LINKERD2_PROXY_DNS_CANONICALIZE_TIMEOUTenvironment variable to
customize the timeout for DNS queries to canonicalize a name - Added support for route timeouts in service profiles
- Improved logging for gRPC errors and for malformed HTTP/2 request headers
- Improved log readability by moving some noisy log messages to more verbose
log levels - Fixed a deadlock in HTTP/2 stream reference counts
- Updated the proxy-init container to exit with a non-zero exit code if
initialization fails, making initialization errors much more visible - Fixed a memory leak due to leaked UDP sockets for failed DNS queries
- Improved configuration of the PeakEwma load balancer
- Improved handling of ports configured to skip protocol detection when the
proxy is running with TLS enabled
- Modified the way in which canonicalization warnings are logged to reduce the
edge-19.2.3
This is an edge release of Linkerd! The latest stable release is stable-2.1.0.
To install this edge release, run:
curl https://run.linkerd.io/install-edge | sh
- Controller
- Fixed issue with auto-injector not setting the proxy ID, which is required
to successfully locate client service profiles
- Fixed issue with auto-injector not setting the proxy ID, which is required
- Web UI
- Updated navigation to link the Linkerd logo back to the Overview page
- Fixed console warnings on the Top page
edge-19.2.2
This is an edge release of Linkerd! The latest stable release is stable-2.1.0.
To install this edge release, run:
curl https://run.linkerd.io/install-edge | sh
- CLI
- Improved service profile validation when running
linkerd checkin order to
validate service profiles in all namespaces
- Improved service profile validation when running
- Controller
- Added stat and tap support for StatefulSets in the CLI, Grafana, and web UI
- Updated auto-injector to use the proxy log level configured at install time
- Fixed issue with auto-injector including TLS settings in injected pods even
when TLS was not enabled
- Proxy
- Modified the way in which canonicalization warnings are logged to reduce the
overall volume of error logs and make it clearer when failures occur
- Modified the way in which canonicalization warnings are logged to reduce the
edge-19.2.1
This is an edge release of Linkerd! The latest stable release is stable-2.1.0.
To install this edge release, run:
curl https://run.linkerd.io/install-edge | sh
- Controller
- Breaking change Changed automatic proxy injection to be opt-in via the
linkerd.io/injectannotation on the pod or namespace. More info:
https://linkerd.io/2/proxy-injection/ - Breaking change
ServiceProfiles are now defined in client and server
namespaces, rather than the control plane namespace.ServiceProfiles
defined in the client namespace take priority over ones defined in the
server namespace - Added
linkerd.io/created-byannotation to the linkerd-cni DaemonSet
(thanks @codeman9!) - Added a 10 second keepalive default to resolve dropped connections in Azure
environments - Improved node selection for installing the linkerd-cni DaemonSet (thanks
@codeman9!) - Corrected the expected controller identity when configuring pods with TLS
- Modified klog to be verbose when controller log-level is set to
Debug
- Breaking change Changed automatic proxy injection to be opt-in via the
- CLI
- Added the
linkerd endpointscommand to introspect Linkerd's service
discovery state - Added the
--tapflag tolinkerd profileto generate aServiceProfile
by using the route results seen during the tap - Added support for the
linkerd.io/inject: disabledannotation on pod specs
to disable injection for specific pods when runninglinkerd inject - Added support for
basePathin OpenAPI 2.0 files when runninglinkerd profile --open-api - Increased
linkerd checkclient timeout from 5 seconds to 30 seconds to fix
issues for clusters with a slower API server linkerd routeswill no longer return rows forExternalNameservices in
the namespace- Broadened set of valid URLs when connecting to the Kubernetes API
- Improved
ServiceProfilefield validation inlinkerd check
- Added the
- Proxy
- Added TCP keepalive configuration to fix environments where peers may
silently drop connections - The
GetandGetProfilesAPI now accept aproxy_idparameter in order
to return more tailored results - Removed TLS fallback-to-plaintext if handshake fails
- Added TCP keepalive configuration to fix environments where peers may