Commit graph

484 commits

Author SHA1 Message Date
Hugo Shaka fb14caf70c
helm: add wait initContainer and preStop hooks (#20106)
Part of [RFD-096](https://github.com/gravitational/teleport/pull/18274): managing the major upgrades safely

This commit's main purpose is to block proxies running a new Teleport major version from connecting to auth pods running an old Teleport version.

This commit does 3 things:
- adding initContainers and preStop hooks to the `teleport-cluster` Helm chart (initContainers were designed in RFD 096, preStop was a nice additoin coming from [the wait PR](https://github.com/gravitational/teleport/pull/19277))
- fixing a bug in the `wait` command (the DNS error was not properly unwrapped and not recognized as a DNS error)
- fixing missing override support on some auth Deployment values. As a rule of thumb for future review, we should not use .Values directly and prefer using $auth and $proxy
2023-01-13 16:50:00 +00:00
Yann Toqué deb332709f feat(teleport-cluster chart): Add nodeSelector field
see https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
Levering this field allows to place pod associated with the deployment to be on the specified node

Signed-off-by: Yann Toqué <toqueyann@gmail.com>
2023-01-12 19:44:06 -05:00
Tiago Silva 3a5c1e2639
Adds a post-delete hook to delete the kube-agent state secrets (#20043)
This PR adds a `post-delete` hook that cleans the state secret that each Pod creates when it receives the identity from the Teleport Auth Server.

Fixes #20035
Fixes #18854
2023-01-12 22:27:30 +00:00
Hugo Shaka 1d43b0f76d helm: add proxy config tests 2023-01-12 16:44:22 -05:00
Hugo Shaka 59db56c278 helm: reload proxy certs automatically 2023-01-12 16:44:22 -05:00
Hugo Shaka 46e949a2f6
helm: support passing raw config in teleport-kube-agent (#20129)
This commit implements arbitrary configuration passing to Teleport, like what was done for the `teleport-cluster` in https://github.com/gravitational/teleport/pull/18857. This allows users to deploy services or set fields the chart does not support.

The huge snapshot diffs are caused by order changes in the config (the YAML export orders keys alphabetically). I validated that the old and new snapshots were strictly equivalent with the following python snippet:

```python
import yaml
import pathlib
import deepdiff

old = yaml.safe_load(Path("./config-snapshot.old").open())
new = yaml.safe_load(Path("./config-snapshot.new").open())

old_content = { k: yaml.safe_load(yaml.safe_load(v[1])["data"]["teleport.yaml"]) for (k,v) in old.items() }
new_content = { k: yaml.safe_load(yaml.safe_load(v[1])["data"]["teleport.yaml"]) for (k,v) in new.items() }

diff = deepdiff.DeepDiff(old_content, new_content)
print(diff)
```
2023-01-12 21:32:03 +00:00
Zac Bergquist d608c5e132
[auto] Update AMI IDs for 11.2.1 (#20118) 2023-01-12 20:35:07 +00:00
Hugo Shaka ab51a9b5ea
helm: support dnsConfig in teleport-kube-agent chart (#20096)
Adds support for `dnsConfig` and `dnsPolicy` configuration in the `teleport-kube-agent` chart.
2023-01-11 19:57:20 +00:00
Hugo Shaka 4ca4b54075
Deploy split proxy/auth with helm chart (#18857)
This commit refactors the `teleport-cluster` Helm chart to deploy separately proxy and auth pods.
It allows users to pass raw teleport configuration to the deployed Teleport nodes.
Finally, it removes the `custom` chart mode as the mode was broken by the split. A new `scratch` mode has been introduced.

See [the corresponding RFD](https://github.com/gravitational/teleport/pull/18274) describing the design.
2023-01-11 17:50:35 +00:00
Zac Bergquist f67da97c0b
[auto] Update AMI IDs for 11.2.0 (#19972) 2023-01-09 15:53:22 +00:00
Tiago Silva 40861809a6
Add RoleV6 resource type (#19324)
This PR includes a new Role resource version that is compatible with V5 spec.

The new resource introduces the `kubernetes_resources` definition that allows operators to limit the Kubernetes resources that each member can access. The `kubernetes_resources` entries must follow the following format: `{"kind":"<kind>", "namespace":"<namespace>","name":"<pod>"}`. Currently, it only supports objects of `kind` `pod`. Valid examples `<namespace>/<name>:
- `*/*`: matches all pods in all namespaces.
- `default/*`: matches all pods in the `default` namespace.
- `*/nginx-*`: matches every pod prefixed with `nginx-` in every namespace.

For older resource versions - V5, V4, V3 - `kubernetes_resources` is automatically populated with `{"kind":"pod","namespace":"*","name":"*"}` to keep compatibility. For the newest version, it's mandatory to define its value otherwise access to pods will be denied.

Part of #18434
2023-01-05 09:58:12 +00:00
Adam Strawson e6d2485d66
Fix issue where gcp.credentialSecretName isn't needed (#17964)
Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
2023-01-03 19:50:12 +00:00
Zac Bergquist fee0457aa0
terraform: update README.md (#19712)
Add missing roles to the tctl users add command and replace
the old admin role with the preset access and editor roles.

Signed-off-by: Zac Bergquist <zac.bergquist@goteleport.com>
Co-authored-by: Rob Langford <rob.langford1@gmail.com>
2022-12-29 16:49:20 +00:00
Roman Tkachenko 77742ed3b0
[auto] Update AMI IDs for 11.1.4 (#19661) 2022-12-23 22:56:02 +00:00
Alexey Dubkov cb0a04ea53
helm: add option to disable ClusterRole and ClusterRoleBinding (#17570)
Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
2022-12-14 17:18:31 +00:00
Noah Stride 4ec894a112
Update examples/systemd/machine-id to use best practices! (#19101)
* Update example systemd file and guide for Machine ID

* Trailing newline !

* Shorten advice

* Remove confusing comma

* Format warning nicer!
2022-12-07 10:10:50 +00:00
Roman Tkachenko 79b578457b
[auto] Update AMI IDs for 11.1.2 (#19130) 2022-12-06 23:28:12 +00:00
Hugo Shaka 207567b548
helm: use new helm-unittest plugin (#18964)
* Invoke helm plugins with correct path
* helm: breaking - change helm unittest plugin
* helm: document test plugin fork choice
* Add Makefile target checking helm plugins
2022-12-05 18:58:32 +00:00
Roman Tkachenko e3e945f15f
[auto] Update AMI IDs for 11.1.1 (#18987) 2022-12-01 23:09:24 +00:00
Roman Tkachenko 710b7d18ef
Implicitly set go version in prepare-workspace (#18953)
- Determine Go version for cache key automatically instead of hardcoding.
- Do not build ghcr CI images (etcd and buildboxes) on PRs to avoid unintended breakages.
- Only build/push them on push events which mirrors our current Drone setup. We might add ability to trigger them manually via workflow_dispatch events later.
- Add release branches pattern for buildbox images trigger as well.
- Remove packages: read permission from test jobs since buildbox images are now public.

Signed-off-by: Roman Tkachenko <roman@goteleport.com>
Co-authored-by: Victor Sokolov <gzigzigzeo@gmail.com>
2022-12-01 00:40:53 +00:00
Roman Tkachenko cda4be5273
Add Go version to GHA cache key and CI image workflow (#18877)
* Include Go version in the cache key to prevent cache reuse when upgrading Go.
* Push buildboxes to Github container registry to avoid public ECR rate limiting.

Signed-off-by: Roman Tkachenko <roman@goteleport.com>
Co-authored-by: Victor Sokolov <gzigzigzeo@gmail.com>
2022-11-30 00:25:45 +00:00
Roman Tkachenko 1126df6136
[auto] Update AMI IDs for 11.1.0 (#18865) 2022-11-29 16:33:57 +00:00
Hugo Shaka a2b5a37f94
Document Discord access plugin (#17593)
* Document Discord access plugin

* Apply suggestions from code review

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* fixup! Apply suggestions from code review

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>
2022-11-25 21:43:58 +00:00
Roman Tkachenko a6dfac72ed
Set permissions for GHA workflows (#18728) 2022-11-22 17:35:43 -08:00
Roman Tkachenko 1cb13b10d4
[auto] Update AMI IDs for 11.0.3 (#18485) 2022-11-15 14:55:26 -05:00
Hugo Shaka eb36e239e7
operator: fix unregistered CR in scheme + wrong chart clusterrole (#18367)
- operator: fix crash due to unregistered CR in scheme
- chart: fix issue in operator clusterrole
2022-11-11 05:33:36 +00:00
Hugo Shaka d7c6c5461f
operator: Add auth_connector support (#17448)
* Add auth_connector api resources

- Add the go types in `operator/apis`
- Add the OIDCConnector, SAMLConnector and GithubConnector resources to `protoc-gen-crd`
- Add `wrappers.StringValues` support to `protoc-gen-crd`
- Update crdgen test fixtures

* Regenerate CRD manifests

* Introduce the teleport reconciler abstraction

* operator: Add auth_connector resources support

- Reconcile OIDC, SAML and Github authconnectors
- Make the oidc, saml and github interfaces implement `ResourceWithOrigin`

* operator: Add standard tests for auth connectors

This Commit introduces a set of default tests that can be reused for
each controller based on `TeleportResourceReconciler`.

* Bump CRD manifests to go 1.19

* operator: make Makefile OSX friendly

* Add newKubeResource tests and fix godocs
2022-11-10 15:42:18 +00:00
Steven Martin d329ff3662
Remove note about unsupported IdP-initiated SAML (#18190) 2022-11-07 20:34:00 +00:00
Gus Luxton d54f5d7440
Add Terraform provider links to Terraform module README (#15769)
* Add Terraform provider links to Terraform module README

It's easy to confuse the Terraform modules with the Terraform provider. This PR adds a clarification to the README.

* Update README.md
2022-11-04 16:36:37 +00:00
Jakub Nyckowski bea2e89df5
Run GCI as make fix-imports (#17956)
Co-authored-by: Alan Parra <alan.parra@goteleport.com>
2022-11-04 15:46:46 +00:00
Steven Martin 098df16c5e
correct addr example (#17654) 2022-11-03 13:33:26 +00:00
Gus Luxton ad924f4065
Add callouts to docs and Helm values for Kubernetes 1.23+ on EKS (#18006)
* Add callouts to docs and Helm values for Kubernetes 1.23+ on EKS

Kubernetes 1.23 introduced a requirement for EKS clusters to use a CSI (container storage interface) driver addon to provision EBS volumes as persistent volumes. Kubernetes 1.23 is now the default for new EKS clusters and since our chart uses persistence in its default mode, it will fail to deploy on EKS without this additional driver being installed.

* Apply suggestions from code review

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>
2022-11-02 20:18:39 +00:00
Gus Luxton 5641958194
helm: Handle setting teleportVersionOverride to <11 when using v11 teleport-kube-agent chart (#18008)
* helm: Handle setting teleportVersionOverride to <11 when using v11 teleport-kube-agent chart

The instructions for adding a teleport-kube-agent in Teleport's web UI always use the latest version of the Helm
chart from the repo. This works fine when installing v11 agents, but causes errors if you set `teleportVersionOverride`
to anything <11 because config version `v3` is not supported. This will cause issues for Teleport Cloud customers trying
to add new agents following the web UI's instructions, as Cloud is not on v11 yet and won't be for a few weeks.
2022-11-02 14:28:33 +00:00
Hugo Shaka 74b9ad86a8
Fix msteams access plugin systemd unit (#17859) 2022-11-01 21:14:24 +00:00
Hugo Shaka 0d6adaa50a
Standardize systemd LimitNOFILE (#17893)
Actual LimitNOFILE varies greatly between the systems as it depends on the
systemd version and the go version used to build Teleport. The goal of this
commit is to run Teleport in the same setup, regardless of the distro nor
Teleport version.

New systemd defaults are 1024:524288, and starting with go 1.19, go process can
increase their soft limit up to the hard limmit dynamically. Old systemd
versions don't suppoprt `soft:hard` notation and old go versions don't
automatically increase up to the hard limit. For this reasons, the most
compatible setting is to set softlimit=hardlimit=524288.
2022-10-31 16:56:02 +00:00
Alex Fornuto e09671f562
remove apostrophe on non-possesive 'IDs' (#16837) 2022-10-28 19:22:53 +00:00
Roman Tkachenko 1c82953410
[auto] Update AMI IDs for 11.0.1 (#17895) 2022-10-27 20:57:24 +00:00
Roman Tkachenko 32307119e7
[auto] Update AMI IDs for 11.0.0 (#17743) 2022-10-24 23:18:09 +00:00
Hugo Shaka 284bdaba13
operator: Remove CRD shortname that was conflicting with Kubernetes (#17644) 2022-10-24 14:22:18 +00:00
Hugo Shaka a458b41143
docs: Simplify onelogin sso intructions (#17554)
Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>
2022-10-21 21:09:35 +00:00
Hugo Shaka fb52514ecb
helm: fix broken snapshot (#17680) 2022-10-21 15:58:43 -04:00
Gavin Frazar 153347e795
azure db discovery helm chart (#16867)
* Update teleport-kube-agent readme

* Add values.yaml and schema changes for azure dbs

* Add azure discovery helm lint

* Add azure discovery helm tests

* Fix schema and update snapshot

* Update lint

* Update helm chart docs reference

* Update readme

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Isaiah Becker-Mayer <isaiah@goteleport.com>

* Move yaml lint note to include snippet

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Hugo Shaka <hugo.hervieux@goteleport.com>

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Hugo Shaka <hugo.hervieux@goteleport.com>

* Add azureDatabases to list of required resources for db role in docs

* Update readme to link to docs

* Provide complete example yaml for azure db discovery helm chart

* s|dbResources|databaseResources|g in helm chart reference

* Remove --set tabs for aws and azure databases from chart reference

* Update lint to use secret as example too

* Update azure db discovery helm chart snapshot

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Alex Fornuto <alex.fornuto@goteleport.com>

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Alex Fornuto <alex.fornuto@goteleport.com>

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Alex Fornuto <alex.fornuto@goteleport.com>

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Alex Fornuto <alex.fornuto@goteleport.com>

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Alex Fornuto <alex.fornuto@goteleport.com>

* Update docs/pages/reference/helm-reference/teleport-kube-agent.mdx

Co-authored-by: Alex Fornuto <alex.fornuto@goteleport.com>

* Remove shell vars in readme since we dont provide a command

Co-authored-by: Isaiah Becker-Mayer <isaiah@goteleport.com>
Co-authored-by: Hugo Shaka <hugo.hervieux@goteleport.com>
Co-authored-by: Alex Fornuto <alex.fornuto@goteleport.com>
2022-10-20 18:20:32 +00:00
Hugo Shaka 49160f64b4
pr-buddy: helm: support join_params in teleport-kube-agent chart (#16351)
This contribution adds the following feature
- support for `joinParams` value to join using EC2 and IAM tokens

The PR contains the following fixes
- Fix previous secretName documentation that was incorect
- Reword authToken and joinParams documentation to explicit how values interact together
- Add unit test with `joinParams.method = token`
- Add unit tests checking secret creation
- Mark joinParams.method mandatory in JSONSchema
- Always use join_params to pass tokens
* Document requirements for IAM joining

Co-authored-by: Guilherme Sponda <sponda@archlinux.com.br>
Co-authored-by: Guilherme Sponda <guilherme.sponda@audibene.de>
2022-10-17 20:45:04 +00:00
Steven Martin 05548635b9
update link (#17006) 2022-10-17 19:46:44 +00:00
Tiago Silva 398b140a2b
Fix invalid quotes on hook names (#17438)
Fixes invalid quotes caused by a find and replace that went wrong.

Fixes #17437
2022-10-14 17:53:58 +00:00
Mike Wilson 3655075c80 Update JWT docs to reflect new traits in payload.
JWT payloads now contain traits. The docs and the `verify-jwt.go` utility have
been updated to reflect this.
2022-10-11 08:42:50 -04:00
Roman Tkachenko dc94159be7
Bump version in master to 12.0.0-dev (#17104) 2022-10-06 01:51:59 +00:00
Steven Martin 9fb62b503f
correct plugin name reference (#17013)
* correct plugin name

* correct plugin name
2022-10-04 19:37:49 +00:00
Tiago Silva d3bc7bd7f4
Add option to disable the ServiceAccount creation for teleport-kube-agent chart (#16876)
When assigning AWS IAM permissions to Teleport, `eksctl create iamserviceaccount` command manages the ServiceAccount lifecycle. 

This PR allows any user to configure an existing Kubernetes ServiceAccount used by the agent.

Part of #11866
2022-10-03 16:25:51 +01:00
Roman Tkachenko 4df01494b7
[auto] Update AMI IDs for 10.3.1 (#16924) 2022-10-02 19:58:39 +00:00