Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.
Go to file
Eliza Weisman 7220fb5367
proxy: Reload TLS config on changes (#1056)
This PR modifies the proxy's TLS code so that the TLS config files are reloaded
when any of them has changed (including if they did not previously exist).

If reloading the configs returns an error, we log an error and continue using
the old config.

Currently, this is implemented by polling the file system for the time they
were last modified at a fixed interval. However, I've implemented this so 
that the changes are passed around as a `Stream`, and that reloading and
updating the config is in a separate function the one that detects changes.
Therefore, it should be fairly easy to plug in support for `inotify` (and 
other FS watch APIs) later, as long as we can use them to generate a 
`Stream` of changes.

Closes #369 

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2018-06-04 13:36:28 -07:00
.github Add a newline to dco.yml (#254) 2018-02-01 15:16:02 -08:00
bin Update web dockerfile to use dev deps when building prod assets (#985) 2018-05-23 10:31:53 -07:00
cli Update controller to use 'tls' metric label (#1044) 2018-06-01 16:44:33 -07:00
controller Update controller to use 'tls' metric label (#1044) 2018-06-01 16:44:33 -07:00
doc Update controller to use 'tls' metric label (#1044) 2018-06-01 16:44:33 -07:00
grafana Update controller to use 'tls' metric label (#1044) 2018-06-01 16:44:33 -07:00
pkg Add a controller namespace label to the destination service endpoints (#960) 2018-05-17 14:47:07 -07:00
proto Update controller to use 'tls' metric label (#1044) 2018-06-01 16:44:33 -07:00
proxy proxy: Reload TLS config on changes (#1056) 2018-06-04 13:36:28 -07:00
proxy-init Go: update k8s dependencies to 1.10.2 (#962) 2018-05-17 15:46:58 -07:00
test Add integration test for conduit controller stats (#998) 2018-05-24 14:40:17 -07:00
testutil Add tests/utils/scripts for running integration tests (#608) 2018-03-27 15:06:55 -07:00
web Update controller to use 'tls' metric label (#1044) 2018-06-01 16:44:33 -07:00
.dockerignore Update babel to use `env` and `react-app` as presets. (#976) 2018-05-22 17:17:44 -07:00
.editorconfig Add protobuf files to .editorconfig (#1042) 2018-05-30 15:09:38 -07: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 Link to Grafana from Conduit Dashboard (#678) 2018-04-06 10:56:42 -07:00
.prometheus.dev.yml Remove the telemetry service (#757) 2018-04-13 11:21:29 -07:00
.travis.yml proxy: Fix bench tests and require bench tests in CI (#1038) 2018-05-30 07:20:28 -07:00
BUILD.md Stop special-casing conduit controller in Grafana (#984) 2018-05-23 13:47:20 -07:00
CHANGES.md Release Notes for 0.4.1 release. (#839) 2018-04-26 13:32:41 -07:00
CONTRIBUTING.md Add contributing doc and DCO file (#88) 2017-12-22 14:54:27 -08:00
Cargo.lock proxy: Reload TLS config on changes (#1056) 2018-06-04 13:36:28 -07:00
Cargo.toml proxy: Upgrade Conduit to use the new version of Tokio (#944) 2018-05-17 16:38:15 -07: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 Go: update k8s dependencies to 1.10.2 (#962) 2018-05-17 15:46:58 -07:00
Gopkg.lock Go: update k8s dependencies to 1.10.2 (#962) 2018-05-17 15:46:58 -07:00
Gopkg.toml Go: update k8s dependencies to 1.10.2 (#962) 2018-05-17 15:46:58 -07: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 Upgrade Prometheus from 2.1.0 to 2.2.1 (#816) 2018-04-19 18:00:53 -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.