diff --git a/.travis.yml b/.travis.yml index 71c3c6867dc16..615b6b953964d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,7 +57,7 @@ jobs: install: - cd web/app && yarn && yarn webpack script: - - yarn karma start --single-run + - yarn karma start --single-run --reporters dots - language: generic script: diff --git a/CHANGES.md b/CHANGES.md index 2061a0b1606ba..40dd40d80cdb6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,31 @@ +## v0.2.0 + +This is a big milestone! With this release, Conduit adds support for HTTP/1.x and raw TCP traffic, +meaning it should "just work" for most applications that are running on Kubernetes without +additional configuration. + +* Data plane + * Conduit now transparently proxies all TCP traffic, including HTTP/1.x and HTTP/2. + (See caveats below.) +* Command-line interface + * Improved error handling for the `tap` command + * `tap` also now works with HTTP/1.x traffic +* Dashboard + * Minor UI appearance tweaks + * Deployments now searchable from the dashboard sidebar + +Caveats: +* Conduit will automatically work for most protocols. However, applications that use WebSockets, + HTTP tunneling/proxying, or protocols such as MySQL and SMTP, will require some additional + configuration. See the [documentation](https://conduit.io/adding-your-service/#protocol-support) + for details. +* Conduit doesn't yet support external DNS lookups. These will be addressed in an upcoming release. +* There are known issues with Conduit's telemetry pipeline that prevent it from scaling beyond a + few nodes. These will be addressed in an upcoming release. +* Conduit is still in alpha! Please help us by + [filing issues and contributing pull requests](https://github.com/runconduit/conduit/issues/new). + + ## v0.1.3 * This is a minor bugfix for some web dashboard UI elements that were not rendering correctly. @@ -30,7 +58,7 @@ Conduit 0.1.1 is focused on making it easier to get started with Conduit. * The `conduit tap` command output has been reformatted to be line-oriented, making it easier to parse with common UNIX command line utilities. * Conduit now supports routing of non-fully qualified domain names. -* The web UI has improved support for large deployments and deployments that don’t have any +* The web UI has improved support for large deployments and deployments that don't have any inbound/outbound traffic. ## v0.1.0 diff --git a/Cargo.lock b/Cargo.lock index 2b6c16a3b7488..2ab4c9575ce69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -123,7 +123,7 @@ dependencies = [ [[package]] name = "conduit-proxy" -version = "0.1.3" +version = "0.2.0" dependencies = [ "abstract-ns 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -131,7 +131,7 @@ dependencies = [ "domain 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-mpsc-lossy 0.1.3", + "futures-mpsc-lossy 0.2.0", "h2 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -156,7 +156,7 @@ dependencies = [ "tower-grpc-build 0.1.0 (git+https://github.com/tower-rs/tower-grpc)", "tower-h2 0.1.0 (git+https://github.com/tower-rs/tower-h2)", "tower-reconnect 0.1.0 (git+https://github.com/tower-rs/tower)", - "tower-router 0.1.3", + "tower-router 0.2.0", "tower-util 0.1.0 (git+https://github.com/tower-rs/tower)", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "futures-mpsc-lossy" -version = "0.1.3" +version = "0.2.0" dependencies = [ "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1053,7 +1053,7 @@ dependencies = [ [[package]] name = "tower-router" -version = "0.1.3" +version = "0.2.0" dependencies = [ "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/README.md b/README.md index f8f82d74a72c9..c19982be93995 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ minutes to review our [code of conduct][coc]. ## License -Copyright 2017, Buoyant Inc. All rights reserved. +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 diff --git a/futures-mpsc-lossy/Cargo.toml b/futures-mpsc-lossy/Cargo.toml index fad332a2c9f5c..9eec24a665556 100644 --- a/futures-mpsc-lossy/Cargo.toml +++ b/futures-mpsc-lossy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "futures-mpsc-lossy" -version = "0.1.3" +version = "0.2.0" authors = ["Oliver Gould "] publish = false diff --git a/proxy/Cargo.toml b/proxy/Cargo.toml index 026a9099afe51..f4dd8be844511 100644 --- a/proxy/Cargo.toml +++ b/proxy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "conduit-proxy" -version = "0.1.3" +version = "0.2.0" authors = ["Oliver Gould "] publish = false diff --git a/proxy/Dockerfile b/proxy/Dockerfile index d3246025ad472..de52bbcf7cc25 100644 --- a/proxy/Dockerfile +++ b/proxy/Dockerfile @@ -5,7 +5,7 @@ ## Build the rust proxy into a binary. # # If the RELEASE arg is set and non-empty, a release artifact is built. -FROM gcr.io/runconduit/proxy-deps:423ffcd1 as build +FROM gcr.io/runconduit/proxy-deps:fb72d14b as build WORKDIR /usr/src/conduit # Ranked roughly from least to most likely to change. Cargo.lock is the least likely # because it is supposed to be cached in the deps base image. diff --git a/tower-router/Cargo.toml b/tower-router/Cargo.toml index b573bd480a726..9f59cf03b9568 100644 --- a/tower-router/Cargo.toml +++ b/tower-router/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-router" -version = "0.1.3" +version = "0.2.0" authors = ["Carl Lerche "] publish = false diff --git a/web/app/css/service-mesh.css b/web/app/css/service-mesh.css index 5886fadc4eb41..5c07f3c150cc1 100644 --- a/web/app/css/service-mesh.css +++ b/web/app/css/service-mesh.css @@ -8,6 +8,7 @@ } & .metric { float: right; + text-align: right; } } @@ -15,7 +16,8 @@ width: 131px; } -.incomplete-mesh-message, .complete-mesh-message { +.mesh-completion-message { + margin-top: calc(4 * var(--base-width)); background-color: var(--royalblue); color: white; padding: var(--base-width); @@ -25,6 +27,10 @@ border-radius: var } +.service-mesh-table { + margin-top: 18px; +} + /* styles for the StatusTable */ td .status-dot { float: left; diff --git a/web/app/js/components/DeploymentSummary.jsx b/web/app/js/components/DeploymentSummary.jsx index 9ade0fcb6a420..74db88f7e3a8b 100644 --- a/web/app/js/components/DeploymentSummary.jsx +++ b/web/app/js/components/DeploymentSummary.jsx @@ -26,12 +26,12 @@ export default class DeploymentSummary extends React.Component { flashLastDatapoint={true} />
-
Current requests
+
Request rate
{metricToFormatter["REQUEST_RATE"](this.props.data.requestRate)}
-
Current success
+
Success rate
{metricToFormatter["SUCCESS_RATE"](this.props.data.successRate)}
diff --git a/web/app/js/components/DeploymentsList.jsx b/web/app/js/components/DeploymentsList.jsx index 960a2fc04d9ea..d8b51989380dc 100644 --- a/web/app/js/components/DeploymentsList.jsx +++ b/web/app/js/components/DeploymentsList.jsx @@ -214,7 +214,7 @@ export default class DeploymentsList extends React.Component { { !this.state.loaded ? :
-

All deployments

+

Deployments

{ _.isEmpty(this.state.metrics) ? : diff --git a/web/app/js/components/LatencyOverview.jsx b/web/app/js/components/LatencyOverview.jsx index f8c7b087b84cf..21345b5e0b821 100644 --- a/web/app/js/components/LatencyOverview.jsx +++ b/web/app/js/components/LatencyOverview.jsx @@ -160,7 +160,7 @@ export default class MultiLineGraph extends React.Component { return (
{ - _.map(["P99", "P95", "P50"], latency => { + _.map(["P50", "P95", "P99"], latency => { let ts = this.props.data[latency]; let lat = metricToFormatter["LATENCY"](_.get(_.last(ts), 'value', [])); return ( diff --git a/web/app/js/components/ResourceMetricsOverview.jsx b/web/app/js/components/ResourceMetricsOverview.jsx index 5e12e5c01b3c4..83c18cc9fba92 100644 --- a/web/app/js/components/ResourceMetricsOverview.jsx +++ b/web/app/js/components/ResourceMetricsOverview.jsx @@ -12,14 +12,14 @@ export default class ResourceMetricsOverview extends React.Component { diff --git a/web/app/js/components/ServiceMesh.jsx b/web/app/js/components/ServiceMesh.jsx index 959c334b01042..584b3336ccabc 100644 --- a/web/app/js/components/ServiceMesh.jsx +++ b/web/app/js/components/ServiceMesh.jsx @@ -267,7 +267,7 @@ export default class ServiceMesh extends React.Component { renderAddDeploymentsMessage() { if (this.deployCount() === 0) { return ( -
+
No deployments detected. {incompleteMeshMessage()}
); @@ -275,19 +275,19 @@ export default class ServiceMesh extends React.Component { switch (this.unaddedDeploymentCount()) { case 0: return ( -
+
All deployments have been added to the service mesh.
); case 1: return ( -
+
1 deployment has not been added to the service mesh. {incompleteMeshMessage()}
); default: return ( -
+
{this.unaddedDeploymentCount()} deployments have not been added to the service mesh. {incompleteMeshMessage()}
); diff --git a/web/app/js/components/TabbedMetricsTable.jsx b/web/app/js/components/TabbedMetricsTable.jsx index dc125a4100770..0daa8343b4bb7 100644 --- a/web/app/js/components/TabbedMetricsTable.jsx +++ b/web/app/js/components/TabbedMetricsTable.jsx @@ -99,9 +99,9 @@ const metricToColumns = baseCols => { successRate: (resource, pathPrefix) => [baseCols.resourceName(resource, pathPrefix), baseCols.successRate], latency: (resource, pathPrefix) => [ baseCols.resourceName(resource, pathPrefix), - baseCols.latencyP99, + baseCols.latencyP50, baseCols.latencyP95, - baseCols.latencyP50 + baseCols.latencyP99 ] }; };