Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.
Go to file
Alejandro Pedraza 2ff70d4c7d
Changes for `stable-2.9.0` (#5174)
* Changes for `stable-2.9.0`

Only user-facing items were mentioned. There were previous edge release
notes contained a summary of a change, I preferred using that summary
instead of the more technical bullet point. Given the large list of
items, I separated into sections for easier digestion. Also, I didn't
repeat the TCP mTLS stuff (nor ARM support) below in the bullet points
as it was already well described in the summary.

## stable-2.9.0

This release extends Linkerd's zero-config mutual TLS (mTLS) support to all TCP
connections, allowing Linkerd to transparently encrypt and authenticate all TCP
connections in the cluster the moment it's installed. It also adds ARM support,
introduces a new multi-core proxy runtime for higher throughput, adds support
for Kubernetes service topologies, and lots, lots more, as described below:

* Proxy
  * Performed internal improvements for lower latencies under high concurrency
  * Reduced performance impact of logging , especially when the `debug` or
    `trace` log levels are disabled
  * Improved error handling for DNS errors encountered when discovering control
    plane addresses, which can be common during installation, before all
    components have been started, allowing linkerd to continue to operate
    normally in HA during node outages

* Control Plane
  * Added support for [topology-aware service
    routing](https://kubernetes.io/docs/concepts/services-networking/service-topology/)
    to the Destination controller; when providing service discovery updates to
    proxies the Destination controller will now filter endpoints based on the
    service's topology preferences
  * Added support for the new Kubernetes
    [EndpointSlice](https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/)
    resource to the Destination controller; Linkerd can be installed with
    `--enable-endpoint-slices` flag to use this resource rather than the
    Endpoints API in clusters where this new API is supported

* Dashboard
  * Added new Spanish translations (please help us translate into your
    language!)
  * Added new section for exposing multicluster gateway metrics

* CLI
  * Renamed the `--addon-config` flag to `--config` to clarify this flag can be
    used
  * Added fish shell completions to the `linkerd` command to set any Helm value

* Multicluster
  * Replaced the single `service-mirror` controller, with separate controllers
    that will be installed per target cluster through `linkerd multicluster
    link`
  * Changed the mechanism for mirroring services: instead of relying on
    annotations on the target services, now the source cluster should specify
    which services from the target cluster should be exported by using a label
    selector
  * Added support for creating multiple service accounts when installing
    multicluster with Helm to allow more granular revocation
  * Added a multicluster `unlink` command for removing multicluster links

* Prometheus
  * Moved Linkerd's bundled Prometheus into an add-on (enabled by default); this
    makes the Linkerd Prometheus more configurable, gives it a separate upgrade
    lifecycle from the rest of the control plane, and will allow users to
    disable the bundled Prometheus instance
  * The long-awaited Bring-Your-Own-Prometheus case has been finally addressed:
    added `global.prometheusUrl` to the Helm config to have linkerd use an
    external Prometheus instance instead of the one provided by default
  * Added an option to persist data to a volume instead of memory, so that
    historical metrics are available when prometheus is restarted
  * The helm chart can now configure persistent storage and limits

* Other
  * Added a new `linkerd.io/inject: ingress` annotation and accompanying
    `--ingress` flag to the `inject command, to configure the proxy to support
    service profiles and enable per-route metrics and traffic splits for HTTP
    ingress controllers
  * Changed the type of the injector and tap API secrets to `kubernetes.io/tls`
    so they can be provisioned by cert-manager
  * Changed default docker image repository to `ghcr.io` from `gcr.io`; **Users
    who pull the images into private repositories should take note of this
    change**
  * Introduced support for authenticated docker registries
  * Simplified the way that Linkerd stores its configuration; configuration is
    now stored as Helm values in the `linkerd-config` ConfigMap
  * Added support for Helm configuration of per-component proxy resources
    requests

This release includes changes from a massive list of contributors. A special
thank-you to everyone who helped make this release possible: --long
list, see file --

* Fixed some bad copypasta

* Apply suggestions from code review

Co-authored-by: Kevin Leimkuhler <kevin@kleimkuhler.com>

Co-authored-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
2020-11-06 12:54:06 -05:00
.github Trigger ARM int tests for edge releases as well (#5073) (#5120) 2020-10-21 14:29:13 -07:00
bin Don't skip pushing images if tag is already there (#5128) 2020-10-23 13:13:42 -05:00
charts inject: Set LINKERD2_PROXY_CORES from the cpu limit (#5170) 2020-11-03 10:02:31 -08:00
cli inject: Set LINKERD2_PROXY_CORES from the cpu limit (#5170) 2020-11-03 10:02:31 -08:00
cni-plugin Bump k8s client-go to v0.19.2 (#5002) 2020-09-28 12:45:18 -05:00
controller cli: make check return SkipError when there is no prometheus configured (#5150) 2020-10-29 19:57:11 +05:30
grafana Fixed multicluster Grafana chart (#5114) 2020-10-21 10:06:37 -05:00
pkg nit: return crtExpiry even for External Certs (#5173) 2020-11-03 13:15:53 -05:00
proto Remove dependency of linkerd-config for control plane components (#4915) 2020-10-06 22:19:18 +05:30
proxy-identity Print identity in destination client and fix proxy-identity log line (#4873) 2020-08-13 13:49:55 -07:00
test Warn when webhook certificates near expiry (#5155) 2020-10-30 11:48:51 -07:00
testutil Do not permit cluster networks to be overridden per-pod (#5111) 2020-10-21 09:34:13 -07:00
web cli: fix and update timeout warnings in profile cmd (#5122) 2020-10-27 22:08:21 +05:30
.dockerignore Migrate CI to docker buildx and other improvements (#4765) 2020-07-22 14:27:45 -05:00
.editorconfig Spelling (#4872) 2020-08-12 21:59:50 -07:00
.gcp.json.enc Add docker builds and integration tests to CI (#1303) 2018-07-11 14:01:42 -07:00
.gitattributes remove the duplicate word (#3385) 2019-09-04 20:13:55 -07:00
.gitignore Add i18n library to Linkerd dashboard (#4803) 2020-07-30 09:09:59 -07:00
.golangci.yml Upgrade golangci-lint to v1.23.8 (#4181) 2020-03-18 09:13:19 -05:00
.markdownlint.yaml Lint all markdown files in CI (#4402) 2020-05-19 23:03:50 -07:00
.proxy-version proxy: v2.118.0 (#5168) 2020-11-02 16:36:52 -08:00
ADOPTERS.md Includes Advance Latam as an adopter (#5097) 2020-10-20 14:19:38 -07:00
BUILD.md Add es translations and docs instructions to dashboard (#4866) 2020-08-14 10:50:51 -07:00
CHANGES.md Changes for `stable-2.9.0` (#5174) 2020-11-06 12:54:06 -05:00
CODE_OF_CONDUCT.md Lint all markdown files (#4403) 2020-05-19 09:59:26 -07:00
CONTRIBUTING.md Update CI and docs to reference `main` branch (#4662) 2020-06-24 12:39:22 -07:00
DCO Add contributing doc and DCO file (#88) 2017-12-22 14:54:27 -08:00
Dockerfile-debug CI: Remove Base image (#4782) 2020-07-23 17:00:12 -05:00
Dockerfile-proxy Build ARM docker images (#4794) 2020-08-05 11:14:01 -07:00
GOVERNANCE.md Lint all markdown files (#4403) 2020-05-19 09:59:26 -07:00
LICENSE Introducing Conduit, the ultralight service mesh 2017-12-05 00:24:55 +00:00
MAINTAINERS.md Lint all markdown files (#4403) 2020-05-19 09:59:26 -07:00
README.md Spelling (#4872) 2020-08-12 21:59:50 -07:00
SECURITY.md Spelling (#4872) 2020-08-12 21:59:50 -07:00
SECURITY_AUDIT.pdf Add security audit (#3008) 2019-06-28 16:04:41 -07:00
TEST.md Fix incorrect usage of --skip-kind-create flag (#5084) 2020-10-14 11:30:27 -07:00
go.mod Set FQN in profile resolutions (#5019) 2020-10-01 11:06:00 -04:00
go.sum More comprehensive injection integration test (#5049) 2020-10-14 19:31:56 +03:00
tools.go Upgrade to client-go 0.17.4 and smi-sdk-go 0.3.0 (#4221) 2020-04-01 10:07:23 -07:00

README.md

Linkerd

Linkerd

GitHub Actions Status GitHub license Go Report Card Slack Status

🎈 Welcome to Linkerd! 👋

Linkerd is an ultralight, security-first service mesh for Kubernetes. Linkerd adds critical security, observability, and reliability features to your Kubernetes stack with no code change required.

Linkerd is a Cloud Native Computing Foundation (CNCF) project.

Repo layout

This is the primary repo for the Linkerd 2.x line of development.

The complete list of Linkerd repos is:

Quickstart and documentation

You can run Linkerd on any modern Kubernetes cluster in a matter of seconds. See the Linkerd Getting Started Guide for how.

For more comprehensive documentation, start with the Linkerd docs. (The doc source code is available in the website repo.)

Working in this repo

BUILD.md includes general information on how to work in this repo.

We ❤️ pull requests! See CONTRIBUTING.md for info on contributing changes.

Get involved

Community meetings

We host regular online meetings for contributors, adopters, maintainers, and anyone else interested to connect in a synchronous fashion. These meetings usually take place the last Wednesday of the month at 9am Pacific / 4pm UTC.

We're a friendly group, so please feel free to join us!

Code of Conduct

This project is for everyone. We ask that our users and contributors take a few minutes to review our Code of Conduct.

Security

Security Audit

A third party security audit was performed by Cure53. You can see the full report here.

License

Copyright 2020 the Linkerd Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.