Commit Graph

99 Commits

Author SHA1 Message Date
Nathan Murthy 84d8fa6639 Use more descriptive CSS variable names (#135) (#147)
* Use more descriptive CSS variable names (#135)

Signed-off-by: Nathan Murthy <drip.dr0p.dr0p@gmail.com>

* Decouple the names of the colors from their use

Signed-off-by: Nathan Murthy <drip.dr0p.dr0p@gmail.com>

* Rename a few more root CSS color var names

Signed-off-by: Nathan Murthy <drip.dr0p.dr0p@gmail.com>

* Update more CSS color vars referenced elsewhere

Signed-off-by: Nathan Murthy <drip.dr0p.dr0p@gmail.com>
2018-01-17 11:23:12 -08:00
Kevin Lingerfelt fd3cfcb5d9
Move healthcheck proto to separate file, use throughout (#150)
* Move healthcheck proto to separate file, use throughout

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>

* Remove Check message from healthcheck.proto

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>

* Standardize healthcheck protobuf import name

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>
2018-01-17 11:15:38 -08:00
Risha Mars 9d552bccb1
Revive searchbar: Add autocomplete search bar back into sidebar (#158)
* Add autocomplete search bar back into sidebar

Signed-off-by: Risha Mars <mars@buoyant.io>

* Use getPodsByDeployment

Signed-off-by: Risha Mars <mars@buoyant.io>
2018-01-17 11:03:42 -08:00
Risha Mars 14cba8870e
Revive scatterplot: re-add scatterplot to Deployments page (#144)
* Revive scatterplot: re-add scatterplot to Deployments page

Tried to make some UI improvements to address previous problems:

* added a hover bar and tooltip that displays all of the nodes under the bar, 
in descending order of successRate (to correspond with their order in the chart)
* the tooltip looked weird in the empty state so I also added the max/min latencies 
observed there

Also cleans up the Deployments page a little when there are not any "least healthy deployments".

* Previously, the sidebar tooltip would still render the last
highlighted nodes' information when the dots updated. Fix that
by selecting a datapoint to highlight when the dots update.

* Add overlay tooltip with names of highlighted nodes

* Align the node labels with the node, except in cases of label overlap


Signed-off-by: Risha Mars <mars@buoyant.io>
2018-01-17 10:10:59 -08:00
Eliza Weisman 2b20a8bb10
Use cargo:rerun-if-changed to avoid recompiling protos (#160)
As @seanmonstar noticed, the build script will currently re-compile all the protobufs regardless of whether or not they have changed, making the build much slower. 

This PR modifies it to emit `cargo:rerun-if-changed=` for all the protobuf files, so they will only be regenerated if one of them changes.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2018-01-17 09:23:27 -08:00
Phil Calçado 612bd0f7a0
Add --verbose option to CLI (#154)
* Use stdout as writer for tap command

fixes #136

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Add --log-level to command line

Signed-off-by: Phil Calcado <phil@buoyant.io>
2018-01-17 12:06:43 -05:00
Phil Calçado 4daa007256
Use stdout as writer for tap command (#152)
fixes #136

Signed-off-by: Phil Calcado <phil@buoyant.io>
2018-01-17 11:19:22 -05:00
Andrew Seigner ac242bd9b9
Introduce BUILD.md (#137)
Our build instructions were scattered across a few README's.

This consolidates all instructions relevant to Conduit development into
a single BUILD.md.

Fixes #134

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2018-01-16 23:19:53 -08:00
Zhu Guihua 1ba375b71c fix typo error (#153)
Signed-off-by: Guihua Zhu <z.zhuguihua@gmail.com>
2018-01-16 11:20:21 -05:00
Phil Calçado e328db7e87
Adds conduit-api check for status command (#140)
* Abstract Conduit API client from protobuf interface to add new features

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Consolidate mock api clients

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Add simple implementation of healthcheck for conduit api

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Change NextSteps to FriendlyMessageToUser

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Add grpc check for status on the client

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Add simple server-side check for Conduit API

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Fix feedback from PR

Signed-off-by: Phil Calcado <phil@buoyant.io>
2018-01-12 15:35:22 -05:00
Franziska von der Goltz de4ab1d807
add ability to add flash to latest datapoint on line graph. (#127)
* add ability to add flash to latest datapoint on line graph based on passed down prop.
- added flash to all graphs except the sparklines

Signed-off-by: Franziska von der Goltz <franziska@vdgoltz.eu>
2018-01-12 09:58:36 -08:00
Risha Mars 1cf9da8ee7
Add /paths page that displays metrics by path, add ability to sort Table (#133)
* Add /paths page that shows rollup metrics by path
* Clean up ApiHelpers a bit

Adds ability to sort by column in the tabbed metrics table (to make a TabbedMetricsTable sortable, set sortable={true})

Adds a page, accessible via /paths that shows a table of all paths, with their request/success/latency metrics. I haven't exposed it in the sidebar as it doesn't have design treatment.
2018-01-11 17:36:48 -08:00
Eliza Weisman 63d1a5d70d
Add Protocol field to Transports telemetry (#138)
See #132. This PR adds a protocol field to the ClientTransport and ServerTransport messages, and modifies the proxy to report a value for this field (currently, it's only ever HTTP).

Currently, HTTP/1 and HTTP/2 are collapsed into one Protocol variant, see #132 (comment). I expect that we can treat H1 as a subset of H2 as far as metrics goes.

Note that after discussing it with @klingerf, I learned that the control plane telemetry API currently does not do anything with the ClientTransport and ServerTransport messages, so beyond regenerating the protobuf-generated code, no controller changes were actually necessary. As we actually add metrics to TCP transports, we'll want to make some additions to the telemetry API to ingest these metrics. If any metrics are shared between HTTP and raw TCP transports (say, bytes sent), we'll want to differentiate between them in Prometheus. All the metrics that the control plane currently ingests from telemetry reports are likely to be HTTP-specific (requests, responses, response latencies), or at least, do not apply to raw TCP.

Actually adding metrics to raw TCP transports will probably have to wait until there are raw TCP transports implemented in the proxy...

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2018-01-11 16:00:38 -08:00
Kevin Lingerfelt 1dc1c00a2a
Upgrade k8s.io/client-go to v6.0.0 (#122)
* Sort imports

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>

* Upgrade k8s.io/client-go to v6.0.0

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>

* Make k8s store initialization blocking with timeout

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>
2018-01-11 10:22:37 -08:00
Andrew Seigner 1d1b3c5cd4
Fail the build if dep images are out of sync. (#123)
Previously if dependencies changed but dep image SHAs were not updated,
the build could succeed, creating docker images with indeterminate
dependencies.

This change checks the dependency image SHAs hard-coded in Dockerfile's
against the current source tree. If the SHAs do not match, the build
fails.

Fixes #118

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2018-01-10 11:14:41 -08:00
Risha Mars 00844913f5
Upgrade React, ant, enzyme (#109)
* Upgrade ant to 3.1.0

* Adjust styles for updated ant

- Locale is enUS by default now, so removing our config
- Adjust table styles

* Upgrade react and react-dom to 16.2.0

* Upgrade enzyme to 3.3.0, fix tests accordingly
2018-01-10 10:10:59 -08:00
Andrew Seigner 1ceaf3874a
Fix web and public-api log info messages. (#129)
The existing startup/shutdown log info messages had spacing issues and
used fmt.

Update the log messages to use logrus for consistency, and fix spacing
issues.

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2018-01-09 16:14:56 -08:00
Dennis Adjei-Baah 2b22d4bc63
Add Go vetting to Travis CI configuration (#128)
* Fix go vet warning in various go source files

Signed-off-by: Dennis Adjei-Baah <dennis@buoyant.io>
2018-01-09 15:21:41 -08:00
Andrew Seigner 0ee38e46f8
Add note to run dep ensure prior to go build. (#124)
We have example commands for building our go components locally, but we
did not mention a prerequisite step of getting all dependencies.

Add note to run `dep ensure && dep prune`.

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2018-01-09 11:04:39 -08:00
clemensw b1831cd415 [proxy] Fix rendering for top-level rustdoc (#113)
Signed-off-by: clemensw <clemensw@users.noreply.github.com>
2018-01-08 15:40:12 -08:00
Andrew Seigner caeb83a526
Fix Go and Proxy dependency image SHAs (#117)
The image tags for gcr.io/runconduit/go-deps and
gcr.io/runconduit/proxy-deps were not updating to account for all
changes in those images.

Modify SHA generation to include all files that affect the base
dependency images. Also add instructions to README.md for updating
hard-coded SHAs in Dockerfile's.

Fixes #115

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2018-01-08 11:19:49 -08:00
Eliza Weisman 90b5ddfb00
Change Cargo.lock to trigger deps image rebuild (#116)
Because whether or not to build a new deps image is based on the SHA of Cargo.lock, changes to the deps Dockerfile will not cause a new deps image to be built. Because of this, the current proxy deps Docker image is based on the wrong Rust version, breaking the build. See #115 for details on this issue.

I've appended a newline to Cargo.lock to change the lockfile's SHA and trigger a rebuild of the deps Docker image on CI. I've also added a comment in the Dockerfile noting that it is necessary to do this when changing that file.

Signed-off-by: Eliza Weisman eliza@buoyant.io
2018-01-08 10:29:51 -08:00
Andrew Seigner 9eb5cc69f3
Add instructions to run web locally (#114)
The web README.md mentions running locally, but it's not explicit about
how to connect to public-api.

Add notes on various ways to connect a local web to a public-api
process.

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2018-01-05 15:52:37 -08:00
Eliza Weisman 2bd9f99f6b
Require Rust 1.23 in proxy Dockerfile-deps (#105)
After merging #104, Conduit will not build against pre-1.23 Rust versions. This PR updates the Dockerfile to require this version. This should fix the build on master.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2018-01-05 13:54:38 -08:00
Phil Calçado 120dbce49d
second iteration of status subcommand: check Kubernetes API #92 (#108)
Signed-off-by: Phil Calcado <phil@buoyant.io>
2018-01-05 13:32:41 -08:00
Risha Mars 38f44fcdb7
Apply fixes from 110 to Dockerfile-bin (#111)
pkg needs to be copied over in Dockerfile-bin as well

Signed-off-by: Risha Mars <mars@buoyant.io>
2018-01-05 10:57:08 -08:00
Risha Mars 80ecdc13c2
Copy over /pkg to container (#110)
Signed-off-by: Risha Mars <mars@buoyant.io>
2018-01-05 10:12:29 -08:00
Eliza Weisman 67d4b56253
Remove `AsciiExt` import (#104)
Since the methods on this trait were moved to direct implementations on the
implementing types, this produces an unused import warning with the latest
(1.23) Rust standard library. As we set `deny(warnings)`, this breaks the build.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2018-01-04 10:49:13 -08:00
Phil Calçado 709de5a7b0
Moves k8s and conduit client code to /pkg (#103)
* Rename constructor functions from MakeXyz to NewXyz

As it is more commonly used in the codebase

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Make Conduit client depend on KubernetesAPI

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Move Conduit client and k8s logic to standard go package dir for internal libs

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Move dependencies to /pkg

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Make conduit client more testable

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Remove unused config object

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Add more test cases for marhsalling

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Move client back to controller

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Sort imports

Signed-off-by: Phil Calcado <phil@buoyant.io>
2018-01-04 10:10:10 -08:00
Risha Mars fa49de6ff4
Make TabbedMetricsTable in charge of fetching timeseries (#89)
* Make TabbedMetricsTable in charge of fetching timeseries

All of the parent components in charge of fetching timeseries data
don't actually use them, but pass them to this table. It would simplify
a lot of the parents if this component handled the ts fetching too.

This introduces a urlsForResource helper in ApiHelpers to allow
us to consolidate url generating in the app to one place. It also
associates the appropriate groupBy for various fetches.

Signed-off-by: Risha Mars <mars@buoyant.io>
2018-01-03 16:55:56 -08:00
Franziska von der Goltz a7306113d2
increase test coverage for ServiceMesh component (#85)
* increased test coverage for ServiceMesh component

Signed-off-by: Franziska von der Goltz <franziska@vdgoltz.eu>
2018-01-03 09:50:29 -08:00
Andrew Seigner 449f306aeb
Implement client-side version checking (#79)
Previously Conduit would render an iframe, received from
versioncheck.conduit.io.

Modify the client to retrieve the latest released version, via CORS.

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2018-01-02 16:07:50 -08:00
Christopher Schmidt ce69c2e534 returns rs name in case of there's no deployment runconduit/conduit#80 (#81)
Signed-off-by: Christopher Schmidt <fakod666@googlemail.com>
2018-01-02 11:24:09 -08:00
Brian Smith 02176d8d16
Remove default controller URL from proxy. (#48)
Previously there was a default controller URL in the proxy. This
default was never used for any proxy injected by `conduit inject` and
it was the wrong default when using the proxy outside of Kubernetes.
Also more generally this is such an important setting in terms of
correctness and security that it was dangerous to let it be implied in
any context.

Remove the default, requiring that it be set in order for the proxy to
start.
2018-01-02 08:44:27 -10:00
Sky Ao 238c54414b correct typo: Enviroment -> Environment (#100)
Signed-off-by: Sky Ao <aoxiaojian@gmail.com>
2017-12-29 10:14:48 -08:00
Andrew Seigner 7edea726e6
Add shell completion command to cli (#97)
Cobra supports bash and zsh completion code generation, but our cli
project was not leveraging it.

Add a 'completion' command to the conduit cli, which outputs bash and
zsh completion code.

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2017-12-28 14:24:06 -08:00
Phil Calçado c76b705fce
first iteration of status subcommand: check Kubectl #92 (#96)
* Add framework for healthcheck in CLI

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Add self-checked for kubectl

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Clear formatting code

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Removed ununsed objects from status

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Removed ununsed parameter

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Ignore errored self checkers

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Make the check error by default

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Log error, format changes

Signed-off-by: Phil Calcado <phil@buoyant.io>
2017-12-28 14:03:18 -05:00
Andrew Seigner 9ce12ee15c
Add local development section to README.md (#93)
README.md currently documents how to get started with a released version
of Conduit, but not how to build and deploy from source.

This change adds a section to enable building and deploying from source,
it assumes working Go and Minikube environments.

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2017-12-27 11:42:46 -08:00
Phil Calçado c0ccdfabfc
Skip tests known to be flaky when they fail (#95)
We need to address the flaky checks, but for now it is better to have these skipped than a build with false negatives.

Signed-off-by: Phil Calcado <phil@buoyant.io>
2017-12-27 14:42:36 -05:00
Andrew Seigner 365d0eec36
Add instructions for running Web against K8s (#94)
The README.md in the Web project describes building and running the Web
service locally, against a public API server in Docker.

Add instructions for running the Web Service locally against a public
API Server in Kubernetes.

Signed-off-by: Andrew Seigner <andrew@sig.gy>
2017-12-27 11:42:23 -08:00
Phil Calçado 31e9846f62
Make several CLI commands testable (#86)
* Add func to rsolve kubectl-like names to canonical names

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Refactor API instantiation

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Make version command testable

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Make get command testable

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Add tests for api utils

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Make stat command testable

Signed-off-by: Phil Calcado <phil@buoyant.io>

* Make tap command testablë

Signed-off-by: Phil Calcado <phil@buoyant.io>
2017-12-27 14:10:41 -05:00
Kevin Lingerfelt 41e6edfbfb
Add contributing doc and DCO file (#88)
* Add contributing doc and DCO file

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>

* Fix small typos

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>
2017-12-22 14:54:27 -08:00
Risha Mars 4389a1e312
Bind this.handleApiError in PodDetail (#84) 2017-12-22 13:54:34 -08:00
Christopher Schmidt bcf61e1bfb adding RBAC stuff for Prometheus (#83)
* adding RBAC stuff for Prometheus, fixes runconduit/conduit#82
Signed-off-by: Christopher Schmidt fakod666@gmail.com

* fixed ident
Signed-off-by: Christopher Schmidt fakod666@gmail.com
2017-12-22 13:45:56 -08:00
Risha Mars 8cf1bdbee3
Consolidate api calling from the UI; Start surfacing API errors (#65)
* Adds an ApiHelpers module that wraps our api calls to the server

* Adds ability to display error messages from the server
2017-12-21 15:18:35 -08:00
Phil Calçado 78d7b22e1c
Add more information to async test failures (#73) 2017-12-22 10:01:34 +11:00
Sean McArthur 8e2dd66bfa
disable push promises in proxy (#70) 2017-12-21 14:41:17 -08:00
Franziska von der Goltz 405db65a18
refactored incomplete-mesh messaging to be stored in CopyUtils.jsx (#78) 2017-12-21 10:51:54 -08:00
Brian Smith 2729fa02bc
Stop using "default" as default service namespace (#61)
Previously the destinations service would look for services in the
"default" namespace if the service name didn't have at least two
labels. However, the "default" namespace is almost always the wrong
namespace. The only reasonable default namespace is the namespace of
the client service, which isn't given to the destinations service.
Therefore it shouldn't try to default the namespace.

Accordingly, stop defaulting the namespace to "default".

Validated by manually testing the emojivoto service before and after
the proxy implemented namespace defaulting itself.
2017-12-20 10:44:24 -10:00
Kevin Lingerfelt a8e75115ab
Prepare the repo for the v0.1.1 release (#75)
* Prepare the repo for the v0.1.1 release

* Add changelog

* Changelog updates, wrap at 100 characters
2017-12-20 10:51:53 -08:00