Commit Graph
523 Commits
Author SHA1 Message Date
Gus Luxton fa26cd894f Updates to copy license correctly when using Terraform (#2591)
* Fixes for Terraform documentation and license
* Update Makefile and README
* Makefile formatting fixes
* Add build timestamps back into Jenkins
* Add BuildTimestamp into user tags
* Add region to modify-image-attribute command
* Add owner ID into list command
2019-03-07 16:05:07 +00:00
Gus Luxton 1265d4cf63 Single AMI changes for Amazon Marketplace (#2486)
* Add single AMI build/setup
* Add ACM support to Terraform and Letsencrypt support to single AMI
* Finish Letsencrypt support for Single AMI, also add ACM to Single AMI and tidy up Terraform versioning
* Fix Letsencrypt cert acquistion, reduce startup timers from 5 minutes to 3 minutes, tweaks for ACM/non-ACM in Terraform
* Remove AWS-based license from Enterprise AMI to convert to BYOL
* Tidy up - move Cloudformation into a separate subdirectory and remove old Terraform code
* Updated TIG stack to latest versions and tested
* Tidy up CloudFormation builds and improve instructions
* Fix VPC variable name
2019-01-29 18:26:32 +00:00
Brendan Germain 34f7a1f3d8 update helm chart pvc name to match deployment/pv (#2466) 2019-01-05 13:24:12 -08:00
Brendan Germain 53d2e4ddd4 add persistence to helm chart (#2465) 2019-01-04 11:29:09 -08:00
Alexander Babai f52de7678e Helm - Make license optional (#2451)
Make license optional, bump chart version.
2018-12-29 12:14:14 -08:00
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
cove 3a2a0c6768 test state before getting public IP (#2336) 2018-12-05 15:23:56 +00: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
Russell Jones 31d7d36bfe Make get-kubeconfig.sh cross platform. 2018-11-13 18:13:10 -08:00
Ev Kontsevoy 7f5e93cf87 Added an example script for retreiving a GKE certificate 2018-10-30 13:09:51 -07:00
Sasha Klizhentas 410c33b7d9 Add clustered etcd docker-compose example 2018-08-27 13:54:41 -07:00
Brendan Germain 59810b2f0b add proxytunnel as a default service to helm chart 2018-08-16 08:47:26 -07:00
Sasha Klizhentas 1f3b4e2c96 Kubernetes configuration, fetch proxy settings.
This commit moves proxy kubernetes configuration
to a separate nested block to provide more fine
grained settings:

```yaml
auth:
  kubernetes_ca_cert_path: /tmp/custom-ca
proxy:
  enabled: yes
  kubernetes:
    enabled: yes
    public_addr: [custom.example.com:port]
    api_addr: kuberentes.example.com:443
    listen_addr: localhost:3026
```

1. Kubernetes config section is explicitly enabled
and disabled. It is disabled by default.

2. Public address in kubernetes section
is propagated to tsh profile

The other part of the commit updates Ping
endpoint to send proxy configuration back to
the client, including kubernetes public address
and ssh listen address.

Clients updates profile accordingly to configuration
received from the proxy.
2018-08-06 11:57:36 -07:00
Ev Kontsevoy b2c12066a0 Updated getting started experience for systemd users
- Modified the default teleport.service to start without
  /etc/teleport.yaml
- Updated REAMDE for systemd unit
- Updated ./install script
2018-07-19 18:04:14 -07:00
Sasha Klizhentas f3488a6c76 Fix helm template typos 2018-07-18 17:23:56 -07:00
Yusuke KUOKA eac92edd20 Idiomatic helm chart for Teleport
This is a helm chart for Teleport that conforms to [helm chart best practices](https://docs.helm.sh/chart_best_practices/) and various conventions seen in the official charts repository, so that it becomes easy-to-use and flexible enough to support many deployment scenarios.

Features:

- Locally testable on minikube
- Chart values for flexible configuration, instead of sourcing the raw teleport.yaml contained in the chart
- Automatically rolling-update the pods on configuration change according to the helm best practices
- Service and deplyment ports more finely configurable
- Customizable service and ingress for exposing the proxy to the private network or the internet
  - Use service annotatinos for integration with e.g. [external-dns](https://github.com/kubernetes-incubator/external-dns)
  - Use ingress for integration with e.g.[aws-alb-ingress-controller](https://github.com/kubernetes-sigs/aws-alb-ingress-controller)
- Configurable pod annotations. Uesful for IAM integration with kube2iam/kiam for example.
- Customizable pod assignment for security and availability
2018-07-06 09:35:10 -07:00
Sasha Klizhentas cece4be212 Initial implementation of Kubernetes support
This issue updates #1986.

This is intial, experimental implementation that will
be updated with tests and edge cases prior to production 2.7.0 release.

Teleport proxy adds support for Kubernetes API protocol.
Auth server uses Kubernetes API to receive certificates
issued by Kubernetes CA.

Proxy intercepts and forwards API requests to the Kubernetes
API server and captures live session traffic, making
recordings available in the audit log.

Tsh login now updates kubeconfig configuration to use
Teleport as a proxy server.
2018-06-03 12:55:13 -07:00
Gus Luxton 8f69bc7546 Use full pathnames in tctl execution (#1972) 2018-05-25 13:29:31 -03:00
Sasha Klizhentas b9813e3c76 Switch Terraform to Dynamo
This commit replaces EFS with S3 for audit logging,
and switches to DynamoDB for events storage.

It also updates Terraform and AWS provider
2018-05-14 18:12:57 -07:00
Russell Jones c4b3089247 Update saml-connector.yaml 2018-04-19 18:09:30 -07:00
Ev Kontsevoy 1d315e518c Updated "graceful restarts" section 2018-03-11 20:18:51 -07:00
Sasha Klizhentas ebe3c1a9c1 Fix several issues with audit events.
1. Fixes several cosmetic issues with logs:

Fixes #1690, fixes #1687

2. Fixes deadlocks that were revealed during stress
testing on slow encrypted EFS system.

The following deadlock scenario was happening:

Goroutine 1:

t1. auditlock.Lock <- success
t3. diskSessionLogger.Lock <- blocked

Gorotuine 2:

t2. diskSessionLogger.Lock <- success
t4. auditLock.Lock  <- blocked

3. Update ansible upgrade scripts
to support custom binary upgrades.

4. Fix docker flow by removing deprecated
--gops-addr flag

5. Remove verbose logging lines.

6. Reduce compression efficiency to
reduce large memory load.
2018-02-15 18:28:42 -08:00
Sasha Klizhentas 11672b8493 Terraform improvements.
Fixes #1671

* Add notes about TOS agreements for AMI
* Use specific UID for Teleport instances
* Use encrypted EFS for session storage
* Default scale up auto scaling groups to amount of AZs
* Move dashboard to local file
* Fix dynamo locking bug
* Move PID writing fixing enterprise pid-file
* Add reload method for teleport units
2018-02-14 15:09:56 -08:00
Ev Kontsevoy a09e8c64ea Updated README for go-client (auth server API example) 2018-02-14 10:26:23 -08:00
Sasha Klizhentas 7b1b29be80 Add go-client initial example. 2018-02-13 18:55:24 -08:00
Sasha Klizhentas a180d405ab Add sample teleport upgrade procedure 2018-02-06 15:11:02 -08:00
Sasha Klizhentas bb9b00e451 Cache recently accessed items.
Introduce cache for items that were accessed
by proxies and nodes within 2 second window to reduce
load on database under high load.
2018-01-31 16:35:18 -08:00
Sasha Klizhentas f84e9e0fe1 Add monitoring stack.
Demo monitoring stack sets up example monitoring
infrastructure:

* All nodes, auth servers and proxies
  run telegraf alongside them, polling prometheus
  diagnostic endpoints.

* Telegraf sends the data to InfluxDB database

* Grafana sets up cluster health dashboard
watching key teleport metrics - numbers of goroutines,
number of active sessions, file descriptors and so on.
2018-01-25 13:22:43 -08:00
Sasha Klizhentas 6138f2c93a Improvements for AWS support deployments
* Fix IAM instance profiles assignments for proxy and nodes
* Add support for auth server certificate verification done by
  nodes and proxies joining the cluster.
* Fix out of order events returned by auth servers in HA mode.

In HA mode, auth server could return events out of order
in case if they were sent to multiple auth servers what confused
the user interface expecting events sorted.

This commit fixes the problem by sorting events returned
by function SearchEvents.
2018-01-23 19:41:54 -08:00
Sasha Klizhentas 324c5c95af Initial reference AWS deployment
This is MVP for HA deployment of Teleport on AWS

* Using terraform
* EFS for audit log storage
* Proxies and auth servers in auto scaling group
* NLB for frontends
* Letsencrypt
2018-01-22 13:49:28 -08:00
Sasha Klizhentas 43c2515f8c address code review comments 2017-11-13 10:10:04 -08:00
Sasha Klizhentas f2549155fd Update DynamoDB backend
* Add support for TTL
* Add support for Batch reads
* Update default values
* Use batch reads to retrieve nodes
2017-11-10 12:20:18 -08:00
Ev Kontsevoy af302a7d53 PR edits 2017-09-14 11:58:08 -07:00
Ev Kontsevoy 1231e75b25 Documentation edits
Some users noticed that 'display' field is not well-documented for the
connectors.

I also noticed that some defaults are not sensible (like "google" as the
provider)
2017-09-14 11:35:38 -07:00
Ev Kontsevoy 2f7200b112 Another typo! 2017-09-13 18:41:44 -07:00
Ev Kontsevoy 23bd85a27e Typo 2017-09-13 18:41:11 -07:00
Ev Kontsevoy 5d866f2305 Added RBAC version of 'trusted cluster' resource to examples 2017-09-13 18:38:40 -07:00
Ev Kontsevoy 47c1791437 Updated comments inside the examples 2017-09-13 18:13:08 -07:00
Ev Kontsevoy efde3681a0 Updated 'examples/resources' with more comments 2017-09-12 18:06:08 -07:00
Ev Kontsevoy 82cb0ce01d Updated resource examples 2017-09-12 10:36:32 -07:00
Ev Kontsevoy 3533903c0e Lots of documentation edits.
Minor code changes too (only comments)
2017-09-11 20:27:42 -07:00
Ev Kontsevoy 8b845d26b8 Added upstart Teleport daemon script to examples
Closes #1177
2017-08-19 20:34:13 -07:00
Ev Kontsevoy 6962f7a567 Better systemd unit 2017-08-15 18:57:20 -07:00
Ev Kontsevoy 94c35298b8 Preparation for 2.3
- Switched to new way of building Enterprise
- Removed `tctl tunnels` command (preparation for new resources)
- Removed `tctl auth ls` command (preparation for new resources)
2017-06-21 20:14:40 -07:00
Ev Kontsevoy ab6857a573 Added 'insecure' flag to etcd config
Fixes #694
2017-01-16 11:15:04 -08:00
Ev Kontsevoy 5e952e2cf2 Merge branch 'master' into ev/688 2017-01-16 00:59:28 -08:00
Ev Kontsevoy ac205ad530 Finished cleaning up storage back-ends
I hope this closes #688
2017-01-15 23:23:37 -08:00
Ev Kontsevoy d549d884bc "Cluster snapshot" became "caching AP client"
Instead of trying to achieve a full "offline" operation, this commit
honestly converts previous attempts to a "caching access point client"
behavior.

Closes #554
2016-10-16 22:04:20 -07:00
Ev Kontsevoy fb090a4e72 Intermediate commit 2016-10-14 00:10:38 -07:00
Ev Kontsevoy 1dc2d9c414 Intermediate commit where "standalone mode" kind of works
What works:

1. You have to start all 3: node, proxy and auth.
2. Login using 'tsh' (so it will create a cert)
3. Then you can shut 'auth' down.
4. Proxy and node will stay up and tsh will be able to login.

What doesn't work:

1. Auth updates are not visible to proxy/node (like new servers)
2. Not sure if "trusted clusters" will work.
2016-10-10 21:19:55 -07:00