- Notifications
You must be signed in to change notification settings - Fork275
A purpose-built proxy for the Linkerd service mesh. Written in Rust.
License
linkerd/linkerd2-proxy
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This repo contains the transparent proxy component ofLinkerd2.While the Linkerd2 proxy is heavily influenced bythe Linkerd 1.Xproxy, it comprises an entirely new codebase implemented in theRust programming language.
This proxy's features include:
- Transparent, zero-config proxying for HTTP, HTTP/2, and arbitrary TCP protocols.
- AutomaticPrometheus metrics export for HTTP and TCP traffic;
- Transparent, zero-config WebSocket proxying;
- Automatic, latency-aware, layer-7load balancing;
- Automatic layer-4 load balancing for non-HTTP traffic;
- Automatic Mutual TLS;
- An on-demand diagnostic
tap
API.
This proxy is primarily intended to run on Linux in containerizedenvironments likeKubernetes, though it may also work on otherUnix-like systems (like macOS).
The proxy supports service discovery via DNS and thelinkerd2Destination
gRPC API.
The Linkerd project is hosted by the Cloud Native Computing Foundation(CNCF).
We usejust-cargo
which provide a thin wrapper aroundjust
andcargo
.
We recommend that you use the includedDev Container
to avoid settingup the complex development environment by hand.
Ajustfile
is provided to automate most build tasks. It providesthe following recipes:
just build
-- Compiles the proxy on your local system usingcargo
just test
-- Runs unit and integration tests on your local system usingcargo
just docker
-- Builds a Docker container image that can be used for testing.
Usually,Cargo, Rust's package manager, is used to build and test thisproject. If you don't have Cargo installed, we suggest getting it viahttps://rustup.rs/.
A Devcontainer is provided for use with Visual Studio Code. It includes all ofthe tooling needed to build and test the proxy.
This project is broken into many small libraries, orcrates, so thatcomponents may be compiled & tested independently. The following cratetargets are especially important:
linkerd2-proxy
contains the proxy executable;linkerd2-app-integration
contains the proxy's integration tests;linkerd2-app
bundles thelinkerd2-app-inbound
andlinkerd2-app-outbound
crates so that they may be run by the executable orintegration tests.
This project is for everyone. We ask that our users and contributors take a fewminutes to review ourcode of conduct.
We test our code by way of fuzzing and this is described inFUZZING.md.
A third party security audit focused on fuzzing Linkerd2-proxy was performed byAda Logics in 2021. Thefull report can be found inthedocs/reports/
directory.
linkerd2-proxy is copyright 2018 the linkerd2-proxy authors. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not usethese files except in compliance with the License. You may obtain a copy of theLicense at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributedunder the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES ORCONDITIONS OF ANY KIND, either express or implied. See the License for thespecific language governing permissions and limitations under the License.
About
A purpose-built proxy for the Linkerd service mesh. Written in Rust.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.