Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.
Go to file
Brian Smith f931dec3b3
Proxy: Completely replace current set of destinations on reconnect (#632)
Previosuly, when the proxy was disconnected from the Destination
service and then reconnects, the proxy would not forget old, outdated
entries in its cache of endpoints. If those endpoints had been removed
while the proxy was disconnected then the proxy would never become
aware of that.

Instead, on the first message after a reconnection, replace the entire
set of cached entries with the new set, which may be empty.

Prior to this change, the new test
outbound_destinations_reset_on_reconnect_followed_by_no_endpoints_exists
passed already
but outbound_destinations_reset_on_reconnect_followed_by_add_none
and outbound_destinations_reset_on_reconnect_followed_by_remove_none
failed. Now all these tests pass.

Fixes #573

Signed-off-by: Brian Smith <brian@briansmith.org>
2018-03-29 16:50:08 -10:00
.github Add a newline to dco.yml (#254) 2018-02-01 15:16:02 -08:00
bin Add tests/utils/scripts for running integration tests (#608) 2018-03-27 15:06:55 -07:00
cli Update Grafana dashboards to use new proxy metrics (#637) 2018-03-29 13:00:01 -07:00
controller Higher velocity metrics from simulate-proxy (#635) 2018-03-28 13:30:02 -07:00
doc Add pod_name to Prometheus labels (#649) 2018-03-29 11:07:35 -07:00
grafana Update docker-compose environment to match prod (#609) 2018-03-23 17:00:39 -07:00
pkg Move injected data from env var to k8s labels (#605) 2018-03-23 16:11:34 -07:00
proto Add the NoEndpoints message to the Destination API (#564) 2018-03-27 10:45:41 -10:00
proxy Proxy: Completely replace current set of destinations on reconnect (#632) 2018-03-29 16:50:08 -10:00
proxy-init Add tests/utils/scripts for running integration tests (#608) 2018-03-27 15:06:55 -07:00
test Add tests/utils/scripts for running integration tests (#608) 2018-03-27 15:06:55 -07:00
testutil Add tests/utils/scripts for running integration tests (#608) 2018-03-27 15:06:55 -07:00
web remove toggle sorting functionality from TableComponent (#630) 2018-03-28 18:01:34 -07:00
.dockerignore Use bin/dep in Dockerfile-go-deps. (#324) 2018-02-12 13:32:08 -10:00
.editorconfig Add links to each deployment name in the Conduit dashboard (#44) 2017-12-19 15:40:24 -08:00
.gcp.json.enc Fix docker-build stage in CI (#21) 2017-12-08 00:52:06 -06:00
.gitattributes Stop collapsing Cargo.lock in GitHub PR reviews. (#551) 2018-03-13 10:17:33 -07:00
.gitignore Allow bin/dep wrapper script for dep to work on Windows. (#271) 2018-02-05 09:24:18 -10:00
.prometheus.dev.yml Higher velocity metrics from simulate-proxy (#635) 2018-03-28 13:30:02 -07:00
.travis.yml Actually skip flaky tests on CI and in Docker (#626) 2018-03-26 17:11:06 -07:00
BUILD.md Add tests/utils/scripts for running integration tests (#608) 2018-03-27 15:06:55 -07:00
CHANGES.md Update release notes for v0.3.1. (#574) 2018-03-15 08:50:09 -10:00
CONTRIBUTING.md Add contributing doc and DCO file (#88) 2017-12-22 14:54:27 -08:00
Cargo.lock proxy: Update h2 to 0.1.3 (#640) 2018-03-29 09:22:54 -07:00
Cargo.toml Patch prost-derive 0.3.2 to current master to prune dependencies. (#526) 2018-03-07 10:27:00 -10:00
DCO Add contributing doc and DCO file (#88) 2017-12-22 14:54:27 -08:00
Dockerfile-base Introducing Conduit, the ultralight service mesh 2017-12-05 00:24:55 +00:00
Dockerfile-go-deps Use Go 1.10.0 to build Go components. (#408) 2018-02-21 14:31:29 -10:00
Gopkg.lock Add tests/utils/scripts for running integration tests (#608) 2018-03-27 15:06:55 -07:00
Gopkg.toml Optimize Prometheus queries (#298) 2018-02-09 10:55:07 -08:00
LICENSE Introducing Conduit, the ultralight service mesh 2017-12-05 00:24:55 +00:00
README.md update readme: experimental -> alpha, and minor tweaks (#391) 2018-02-19 15:41:04 -08:00
TEST.md Add tests/utils/scripts for running integration tests (#608) 2018-03-27 15:06:55 -07:00
docker-compose.yml fix grafana CrashLoopBackoff on image 5.0.3 (#646) 2018-03-29 09:36:11 -07:00

README.md

conduit

Build Status GitHub license Slack Status

🎈 Welcome to Conduit! 👋

Conduit is an ultralight service mesh for Kubernetes. It features a minimalist control plane written in Go, and a native proxy data plane written in Rust that boasts the performance of C without the heartbleed.

Conduit is alpha. It is capable of proxying all TCP traffic, and reporting top-line metrics (success rates, latencies, etc) for all HTTP, HTTP/2, and gRPC traffic. It currently does not work with websockets or with HTTP tunneling--see the --skip-outbound-ports flag for how to exclude these types of traffic.

Get involved

Documentation

View Conduit docs for more a more comprehensive guide to getting started, or view the full Conduit roadmap.

Getting started with Conduit

  1. Install the Conduit CLI with curl https://run.conduit.io/install | sh .

  2. Add $HOME/.conduit/bin to your PATH.

  3. Install Conduit into your Kubernetes cluster with: conduit install | kubectl apply -f -.

  4. Verify that the installation succeeded with conduit check.

  5. Explore the Conduit controller with conduit dashboard.

  6. Optionally, install a demo application to run with Conduit.

  7. Add your own service to the Conduit mesh!

Working in this repo

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

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.

License

Conduit is copyright 2018 Buoyant, Inc. 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.