Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.
Go to file
Matei David 983fc55abc
Introduce new external endpoints controller (#11905)
For mesh expansion, we need to register an ExternalWorkload's service
membership. Service memberships describe which Service objects an
ExternalWorkload is part of (i.e. which service can be used to route
traffic to an external endpoint).

Service membership will allow the control plane to discover
configuration associated with an external endpoint when performing
discovery on a service target.

To build these memberships, we introduce a new controller to the
destination service, responsible for watching Service and
ExternalWorkload objects, and for writing out EndpointSlice objects for
each Service that selects one or more external endpoints.

As a first step, we add a new externalworkload module and a new controller in the
that watches services and workloads. In a follow-up change, 
the ExternalEndpointManager will additionally perform
the necessary reconciliation by writing EndpointSlice objects.

Since Linkerd's control plane may run in HA, we also add a lease object
that will be used by the manager. When a lease is claimed, a flag is
turned on in the manager to let it know it may perform writes.

A more compact list of changes:
* Add a new externalworkload module
* Add an EndpointsController in the module along with necessary mechanisms to watch resources.
* Add RBAC rules to the destination service:
  * Allow policy and destination to read ExternalWorkload objects
  * Allow destination to create / update / read Lease objects

---------

Signed-off-by: Matei David <matei@buoyant.io>
2024-01-17 12:15:28 +00:00
.devcontainer dev: v42 (#11563) 2023-11-03 13:55:06 -07:00
.github build(deps): bump tj-actions/changed-files from 41.0.1 to 41.1.1 (#11935) 2024-01-15 15:48:39 -08:00
audits add Trail of Bits audit; reorganize into audits/ (#8735) 2022-06-24 13:34:56 -07:00
bin Introduce bindings for ExternalWorkload resources (#11888) 2024-01-08 14:04:20 +00:00
charts Introduce new external endpoints controller (#11905) 2024-01-17 12:15:28 +00:00
cli Introduce new external endpoints controller (#11905) 2024-01-17 12:15:28 +00:00
controller Introduce new external endpoints controller (#11905) 2024-01-17 12:15:28 +00:00
grafana [grafana] update datasource (#11017) 2023-07-21 14:13:04 -07:00
jaeger policy: regenerate Server go bindings (#11920) 2024-01-15 11:09:31 +02:00
multicluster policy: regenerate Server go bindings (#11920) 2024-01-15 11:09:31 +02:00
pkg Introduce new external endpoints controller (#11905) 2024-01-17 12:15:28 +00:00
policy-controller Index ExternalWorkload resources in the policy controller (#11940) 2024-01-17 10:43:43 +00:00
policy-test Index ExternalWorkload resources in the policy controller (#11940) 2024-01-17 10:43:43 +00:00
proto Remove legacy upgrade and it's references (#7309) 2021-11-29 20:08:58 +05:30
proxy-identity Replace usage of io/ioutil package (#9613) 2022-10-13 12:10:58 -05:00
test policy: regenerate Server go bindings (#11920) 2024-01-15 11:09:31 +02:00
testutil inject: Configure proxy stream lifetime limits (#11837) 2023-12-27 16:24:33 -08:00
viz policy: regenerate Server go bindings (#11920) 2024-01-15 11:09:31 +02:00
web build(deps-dev): bump @babel/runtime from 7.23.6 to 7.23.8 in /web/app (#11931) 2024-01-15 15:40:57 -08:00
.dockerignore dev: Add a reusable action-dev-check script (#9185) 2022-08-16 18:14:37 -07:00
.editorconfig Add PodDisruptionBudgets to control plane (#5398) (#5406) 2021-01-06 09:19:15 -05:00
.gitattributes Update gitattributes to improve PR file visilibity (#6767) 2021-08-30 14:52:53 -07:00
.gitignore Upload code coverage of unit tests to codecov (#6321) 2021-06-23 10:15:01 -06:00
.golangci.yml dev: v42 (#11563) 2023-11-03 13:55:06 -07:00
.helmdocsignore
.markdownlint.yaml
.proxy-version proxy: v2.219.0 (#11841) 2023-12-27 14:00:35 -08:00
ADOPTERS.md Add Pangea Cyber to adopters (#11410) 2023-09-25 15:21:50 -07:00
BUILD.md doc: update BUILD (#10579) 2023-03-20 17:42:35 -07:00
CHANGES.md edge-24.1.1 (#11922) 2024-01-12 18:12:22 +00:00
CODE_OF_CONDUCT.md build(deps): bump DavidAnson/markdownlint-cli2-action from 9.0.0 to 10.0.1 (#10843) 2023-05-02 10:08:28 -07:00
CONTRIBUTING.md Spelling (#6215) 2021-06-07 15:16:59 -06:00
Cargo.lock Index ExternalWorkload resources in the policy controller (#11940) 2024-01-17 10:43:43 +00:00
Cargo.toml dev: v42 (#11563) 2023-11-03 13:55:06 -07:00
DCO
Dockerfile-debug dev: v42 (#11563) 2023-11-03 13:55:06 -07:00
Dockerfile-proxy proxy: 2.213.0 (#11631) 2023-11-17 10:55:29 -05:00
EXTENSIONS.md Fix `linkerd check --output` flag description (#11145) 2023-07-24 11:24:34 -07:00
GOVERNANCE.md add preamble to GOVERNANCE.md (#6008) 2021-04-12 17:49:20 -05:00
LICENSE
MAINTAINERS.md Update MAINTAINERS.md (#11719) 2023-12-11 04:52:46 -05:00
README.md Fix github-actions-badge in the README.md file (#11028) 2023-06-20 15:48:27 -07:00
RELEASE.md Incorporate links to fixed issues in the release notes (#11177) 2023-08-03 08:57:24 -05:00
ROADMAP.md Update roadmap (#7413) 2021-12-13 16:11:32 -05:00
SECURITY.md Update SECURITY.md (#11670) 2023-11-30 11:26:26 -08:00
STEERING.md add STEERING.md (#5607) 2021-01-27 09:39:32 -06:00
TEST.md dev: Update markdowlint-cli2 to v0.5.1 (#9166) 2022-08-15 12:59:59 -07:00
deny.toml deps: Update Rust kube ecosystem (#11873) 2024-01-03 11:06:05 -08:00
go.mod build(deps): bump github.com/evanphx/json-patch (#11933) 2024-01-15 15:51:13 -08:00
go.sum build(deps): bump github.com/evanphx/json-patch (#11933) 2024-01-15 15:51:13 -08:00
justfile Allow overriding of POLICY_TEST_CONTEXT (#11641) 2023-11-27 17:32:43 -08:00
rust-toolchain.toml dev: v42 (#11563) 2023-11-03 13:55:06 -07:00
tools.go Update to dev:v39 with Go 1.19 (#10336) 2023-02-16 08:25:42 -08:00

README.md

Linkerd

Linkerd

CII Best Practices GitHub Actions Status GitHub license Go Report Card Go Reference 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 Thursday of the month at 9am Pacific / 4pm UTC.

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

Steering Committee meetings

We host regular online meetings for the Linkerd Steering Committee. All are welcome to attend, but audio and video participation is limited to Steering Committee members and maintainers. These meetings are currently scheduled on an ad-hoc basis and announced on the linkerd-users mailing list.

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

See SECURITY.md for our security policy, including how to report vulnerabilities.

Linkerd undergoes periodic third-party security audits and we publish the results here.

License

Copyright 2023 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.