Commit graph

4213 commits

Author SHA1 Message Date
Sasha Klizhentas f40df845db Events and GRPC API
This commit introduces several key changes to
Teleport backend and API infrastructure
in order to achieve scalability improvements
on 10K+ node deployments.

Events and plain keyspace
--------------------------

New backend interface supports events,
pagination and range queries
and moves away from buckets to
plain keyspace, what better aligns
with DynamoDB and Etcd featuring similar
interfaces.

All backend implementations are
exposing Events API, allowing
multiple subscribers to consume the same
event stream and avoid polling database.

Replacing BoltDB, Dir with SQLite
-------------------------------

BoltDB backend does not support
having two processes access the database at the
same time. This prevented Teleport
using BoltDB backend to be live reloaded.

SQLite supports reads/writes by multiple
processes and makes Dir backend obsolete
as SQLite is more efficient on larger collections,
supports transactions and can detect data
corruption.

Teleport automatically migrates data from
Bolt and Dir backends into SQLite.

GRPC API and protobuf resources
-------------------------------

GRPC API has been introduced for
the auth server. The auth server now serves both GRPC
and JSON-HTTP API on the same TLS socket and uses
the same client certificate authentication.

All future API methods should use GRPC and HTTP-JSON
API is considered obsolete.

In addition to that some resources like
Server and CertificateAuthority are now
generated from protobuf service specifications in
a way that is fully backward compatible with
original JSON spec and schema, so the same resource
can be encoded and decoded from JSON, YAML
and protobuf.

All models should be refactored
into new proto specification over time.

Streaming presence service
--------------------------

In order to cut bandwidth, nodes
are sending full updates only when changes
to labels or spec have occured, otherwise
new light-weight GRPC keep alive updates are sent
over to the presence service, reducing
bandwidth usage on multi-node deployments.

In addition to that nodes are no longer polling
auth server for certificate authority rotation
updates, instead they subscribe to event updates
to detect updates as soon as they happen.

This is a new API, so the errors are inevitable,
that's why polling is still done, but
on a way slower rate.
2018-12-10 17:20:24 -08:00
Ev Kontsevoy 0669507e74 Added documentation regarding CA pinning
Refs #2294
2018-12-09 14:46:32 -08:00
Ev Kontsevoy 03e4c7d12d Updated U2F chapter in the documentation
Closes #2309
2018-12-09 14:46:32 -08:00
Ev Kontsevoy 2786502127 Updated "Labeling Nodes" documentation section
Closes #2263
2018-12-09 14:46:32 -08:00
Ev Kontsevoy 224c3bc148 Updated the docs (and UX a bit) for tctl get connectors
* Updated the docs (closes #2246)
* Added 'connector' as an alias to 'connectors' (closes #2425)
2018-12-09 14:46:32 -08:00
Ev Kontsevoy 22c8f9fb2b Minor edits to logging/CLI output
* Added 'text' as an example for `--format` flag for `tctl get` (it was
  missing)
* Changed DEBUG to ERROR where appropriate. Fixes #2424
2018-12-09 14:46:32 -08:00
Ev Kontsevoy 3f453bd4d8 Created version 3.1 of the docs 2018-12-09 14:46:32 -08:00
Ev Kontsevoy 17991967c2 Documented new syntax for "node_lables"
Closes #2161
2018-12-09 14:46:32 -08:00
Alexey Kontsevoy 7e8a84a130 Do not poll list of nodes from web UI 2018-12-06 14:32:14 -05:00
cove 3a2a0c6768 test state before getting public IP (#2336) 2018-12-05 15:23:56 +00:00
Alexey Kontsevoy 6106d7e525
(web) update webpack and hot-reload (#2391) 2018-11-29 18:19:01 -05:00
Russell Jones 2003ceaa0b Split kubeconfig path after extracting from environment. 2018-11-29 14:21:25 -08:00
Russell Jones b64555a8d0 Remove Teleport related entries from kubeconfig upon "tsh logout". 2018-11-29 13:48:24 -08:00
Russell Jones 6c37b4a98e Added support for "keep_alive_interval" and "keep_alive_count_max" to
control how often the server sends keep-alive messages to clients and
after how many missed keep-alive replies the server tears down the
connection to the client.
2018-11-29 13:36:43 -08:00
Alex Wolfe 4e500bb79f docs cta (#2384) 2018-11-26 13:11:21 -08:00
Cove Schneider 9449276872 fix docs typos and okta smal screenshots with unclear url 2018-11-18 11:00:00 -08:00
Abraham Ingersoll f4635f78a3 revendor golang ssh lib 2018-11-16 19:16:10 -08:00
Cove Schneider f4f539a282 fix private network masks when guessing ip 2018-11-16 16:41:16 -08:00
Russell Jones ccab010062 Advertise a minimum version for clients. 2018-11-16 16:34:19 -08:00
Alex Wolfe 340bd06672 more ux improvements 2018-11-16 14:42:04 -08:00
Roman Tkachenko c712bb4d82
Merge pull request #2372 from gravitational/roman/labels
Allow dash in resource labels (forward-port).
2018-11-16 13:45:35 -08:00
Roman Tkachenko f7424e5c95 Allow dash in resource labels. 2018-11-16 13:26:47 -08:00
Alexey Kontsevoy 44f128640a (web) sorted trusted clusters 2018-11-15 17:45:10 -05:00
Alexey Kontsevoy de16c14429 webai - return sorted trusted clusters 2018-11-15 17:45:10 -05:00
Cove Schneider 8b299e9c28 spelling cleanup 2018-11-15 12:44:51 -08:00
Abraham Ingersoll 26cbf51452
Update certbot depepdency, incl requests lib
details within https://github.com/aws/aws-cli/issues/3678, closes #2339
2018-11-15 12:12:01 -08:00
sandstrom b69c8175a4 Use nodename 2018-11-14 16:59:07 -08:00
Alexey Kontsevoy 6ec3d1632b
(docs) replace telekube with gravity 2018-11-14 16:46:18 -05:00
Russell Jones 8ce36a92fe Only update kubeconfig if the proxy supports Kubernetes. 2018-11-13 18:13:52 -08:00
Russell Jones 31d7d36bfe Make get-kubeconfig.sh cross platform. 2018-11-13 18:13:10 -08:00
Alex Wolfe a72d15ffae update to css 2018-11-12 12:56:04 -08:00
Alex Wolfe 56bf0aeb1b update css 2018-11-11 19:29:47 -08:00
Alexey Kontsevoy 8009428370 (web) better calculation of terminal container dimensions 2018-11-08 17:59:12 -05:00
Alexey Kontsevoy 90b98c678b
do not close websocket connection on empty string (#2351) 2018-11-08 17:54:59 -05:00
Russell Jones a4d996296d Extract principal from certificate and add it to the host login in the
Teleport client.
2018-11-07 13:18:20 -08:00
Russell Jones 043b9d5283 UX improvements to "tsh ls". 2018-11-05 16:52:10 -08:00
Russell Jones a2a7d15576 Add support for OpenSSH options. 2018-11-05 16:40:46 -08:00
Russell Jones f394766b76 Don't return token value in string representation of
services.ProvisionToken.
2018-11-05 15:01:24 -08:00
Russell Jones 6c4dff4961 Allow users created by external identity providers to be overwritten. 2018-11-05 15:00:59 -08:00
Russell Jones c18e33b71f Support different ready states. 2018-11-05 15:00:32 -08:00
Russell Jones 5fa05db4c3 Updated admin-guide.md. 2018-11-05 14:53:18 -08:00
Russell Jones 6f51bd129c Update admin-guide.md per #2279. 2018-11-05 14:50:28 -08:00
Russell Jones 8fb31f3b3d Updated admin-guide.md. 2018-11-05 14:32:28 -08:00
Andrew Banchich d38ce50ff1 Update admin-guide.md
Fix typo and reword to avoid confusion: from what I understand, the trusted cluster IS the main cluster.
2018-11-05 14:31:26 -08:00
Andrew Banchich 61fecbce34 Update admin-guide.md
Fix typo
2018-11-05 14:31:26 -08:00
Andrew Banchich 3427dd9c27 Update admin-guide.md
Fix sentence
2018-11-05 14:29:19 -08:00
Alexey Kontsevoy f8ef7aceb3 Merge branch 'master' of github.com:gravitational/teleport into clean 2018-11-02 15:57:31 -04:00
Alexey Kontsevoy 0a3288b608 (docs) cleanup 2018-11-02 15:56:36 -04:00
Daren Desjardins 23430df831 Fix typo in admin guide for dynamo configuration
- scheme should be dynamodb not dynamo
2018-11-02 15:56:36 -04:00
Alex Wolfe c766b748bd cleanup 2018-10-31 16:49:09 -07:00