Skip to content

release: bump Teleport fork to v18.10.0 - #8

Closed
felipeasantos wants to merge 2057 commits into
release/v18.2.4from
release/v18.10.0
Closed

release: bump Teleport fork to v18.10.0#8
felipeasantos wants to merge 2057 commits into
release/v18.2.4from
release/v18.10.0

Conversation

@felipeasantos

@felipeasantos felipeasantos commented Jul 15, 2026

Copy link
Copy Markdown

Summary

Adds release/v18.10.0 branch to the Loadsmart Teleport fork by rebasing our 5 CI/build-wrapper commits onto upstream gravitational/teleport@v18.10.0.

This is the source branch that will be tagged v18.10.0 to trigger the CircleCI pipeline that publishes distroless images to ECR (platform/teleport:18.10.0 and platform/teleport:18.10.0-arm64).

Context

  • Ticket: PLATFORM-7647
  • Current control plane at teleport.loadsmart.io: 18.2.4
  • Target: 18.10.0 (latest stable, released 2026-07-07)
  • Same-major bump (18.x → 18.x), single-step upgrade allowed per Teleport compatibility docs

What's in this branch

Upstream v18.10.0 with our 5 Loadsmart commits reapplied on top (identical to the pattern used for release/v18.2.4):

  1. ci: add pipeline to build/push distroless images to loadsmart registry (#1)
  2. chore: add release script (#2)
  3. ci: add separate jobs for arm64 and amd64 distroless builds (#3)
  4. ci: fix branch filters (#4)
  5. add missing libs to the dockerfile distroless to make tctl work

Cherry-pick conflicts resolved

Two conflicts occurred on commit #1, both resolved by keeping the Loadsmart version (identical to release/v18.2.4):

  • .circleci/config.yml: upstream deleted the file, we keep our ECR build pipeline
  • build.assets/Makefile (build-binaries target): upstream added REQUIRE_HOST_ARCH, LOG_GROUP_START/END, and OS/ARCH/RUNTIME parameterisation. We keep the simpler scl enable invocation that's been building v18.0.0 through v18.2.4 successfully.

build.assets/charts/Dockerfile-distroless had no conflict, verified identical between upstream v18.2.4 and v18.10.0.

Verification

  • All 5 cherry-picks applied cleanly after the first conflict resolution
  • Fork-specific files present: .circleci/config.yml, Dockerfile distroless with libpam0g libaudit1 libcap-ng0 libfido2-1 libcbor0.8 libudev1 zlib1g libs
  • Makefile:VERSION=18.10.0 confirmed

Next steps (out of this PR)

  1. Merge this PR into release/v18.2.4 (or approve pushing tag directly on branch)
  2. Push tag v18.10.0 on release/v18.10.0 HEAD → CircleCI publishes platform/teleport:18.10.0 + :18.10.0-arm64 to ECR
  3. Infrastructure PR bumps dev/locals.tf first (per Felipe's plan to apply dev cluster first), then production and remaining 9 agent envs
  4. access-hub PR: no code change required, but re-plan/apply expected to show role-default drift from Terraform provider v18 behaviour

Risk

Low. Fork commits are pure CI/build wrappers, no Teleport source patches. Same shape as prior fork releases.

tele-lion and others added 30 commits June 1, 2026 16:59
…ional#67273)

* Add shared UserDisplayName component

* Remove vertical alignment from UserDisplayName component and add missing license header to index file

* Refactor UserDisplayName component to use variables for rendering primary, secondary, and username values

* Refactor UserDisplayName component: update test descriptions, simplify secondary value rendering, and adjust type exports

* Enhance UserDisplayName stories: add layout variants and improve layout examples

* added a playground story

* inline UserDisplayNameProps interface into function parameters
…ravitational#67288)

* Use session params in regular session.

* Add regression test.
…67297)

* docs: adding agentic identity in feature matrix

* post-meeting: Chris W. edits

* organizing Beams in per-feature structure to match rest of the tables

* Firecracker and beam lifecycle details
)

Backport of gravitational#66987 to branch/v18.

Stagger expiry times so items land in different lease buckets,
eliminating the per-run sleep overhead which caused the test to
exceed the Flaky Tests Detector timeout.
Fixes an off-by-one error in the `tsh dmi-read` output parser and adds tests for same.

Backports:  gravitational#66992
As an empty challenge is never legal, this patch tightens the `devicetrust`
signer and verifier to explicitly reject them.

Changelog: Tightened signature handling in Device Trust
It was observed in cloud that proxies will hang on deletion if they lose
connection to auth prior to being terminated. This will cause pods to
hang until the termination grace period is hit which can be quite long
in some cases. Testing this in cloud allowed disconnected proxies to
exit quickly when terminated.
…t advertise tools version (gravitational#67379)

* Connect: Improve error message for pre-v17 clusters that may not advertise tools version

* Drop `advertised an empty tools version`
The resource ref generator was not properly handling API_HYBRID protobuf
files. When protoc generates code for API_HYBRID protos (configured in
buf-go.gen.yaml), it creates two versions:

1. Regular .pb.go files with exported struct fields (build tag: !protoopaque)
2. _protoopaque.pb.go files with xxx_hidden_* fields (build tag: protoopaque)

The generator was randomly picking up whichever file it encountered first.
When it selected the protoopaque variant, all struct fields were unexported
(starting with xxx_hidden_), causing them to be filtered out during
documentation generation, resulting in empty or incomplete reference pages.

This change adds a filter to skip _protoopaque.pb.go files during the
source code walk, ensuring the generator only processes regular .pb.go
files that contain properly exported fields with full documentation.

This fix enables proper documentation generation for all API_HYBRID
resources, including bot_instance and other protobuf-based resources.

This is a temporary change, we must convert resource geneneration to use
proto as source instead of go structs otherwise we will never be able to migrate
to proto opaque api.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
…oard in the Web UI SSH Terminal (gravitational#67276)

* Add `web_terminal_copy_mode` role option (gravitational#66597)

* block copying in the web terminal if role option is present (gravitational#66944)
* Add ui interaction event protos

* make grpc

* Add userEventService method

* Fix signature

* Fix username field

it would have been logging the hash of ""

* Fix type for v18
Replace anonymous sync.Mutex embedding in instancesCache with a named mu
field so Lock/Unlock/TryLock are no longer promoted onto the type.
Removes a latent self-deadlock foot-gun and the accidental sync.Locker
implementation. No behavioral change.
…#67373)

* Add Networking Reference Troubleshooting section

See gravitational#62997

Edit the Networking Reference to add a Troubleshooting section covering
three common networking errors when setting up a Teleport cluster:

- Connection reset by peer
- First record does not look like a TLS handshake
- Authentication handshake failed (teleport.cluster.local)

* Edit Networking Reference connection reset section

Make the guidance more general and explain the origin for users who may
not be familiar with TCP fundamentals.

* Clarify the Networking reference

Responds to **zmb3** feedback:

- Don't use code style to refer to a Teleport process.
- Use a broader level of detail for the "connection reset" discussion.
- Remove incorrect indication that that the Proxy Service has a SAN.
…ational#67339)

* kube: dedupe SPDY streams, guard nil resize

(cherry picked from commit a8adb71)

* kube: cancellable notify send in waitStreamReply

(cherry picked from commit f87f3e1)

* kube: simplify resizeQueue nil-safe test

(cherry picked from commit b2bc67a)

* kube: baseline goleak before test

(cherry picked from commit 0bb5eb2)

* drop goleak test on backport
* [v18] Docs: Okta Integration Network

* Fix the groups mapping example
* docs: add Redshift DBeaver connection guide

* Update docs/pages/connect-your-client/third-party/gui-clients.mdx

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

---------

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>
rosstimothy and others added 25 commits June 30, 2026 14:40
The function was left around until teleport.e used
scopes.Features. The last usage has since been converted
and is now safe for removal.
* Desktop Access: Plumb Directory IDs through TDPB (gravitational#68033)

* Add DirectoryID to shared directory responses and plumb them through to the RDP client.

* Add 'multidirectory_sharing_supported' advertisement to TDPB ServerHello.

* Desktop Access: Support Multiple Devices in Filesystem Backend (gravitational#68034)

* Refactor filesystem backend to separate file caches and response handlers by directory/device_id. Add cancellation for pending requests when a directory needs to be removed, and work around idiosyncratic server behavior when removing filesystem devices that have open file handles.

* Remain backwards compatible with older clients that don't set a 'DirectoryId' in their shared directory response messages by converting DirectoryId '0' to '2'.

* Turn down some warnings and remove extraneous logs.

* Drop 'tombstone' terminology.

* Rework request cancellation. When a device is removed from the filesystem backend, the remove function returns a list of 'cancellation pdus' which need to be sent to cancel pending IO requests. The caller up at the RDP client level can write those directory to the write stream. This fixes a potential deadlock that could occur in the previous implementation due to cancellation requsts potentially filling the rdpdr channel.

* remove dead code

* Seems that we need to response to DirectoryNotifyChange requests rather than ignore them. Also, we must respond to 'ServerDriveQueryInformationRequest' requests with a 'CANCELLED' status if the device is marked for deletion.

* Use a read interceptor to fix the DirectoryID field on incoming SharedDirectoryResponse messages so that the audit handlers see these correct IDs.

* Rework device removal so that we hold the x224_lock while removing both the TeleportRdpdr's device handle and the top level rdpdr instance's device handle. This way the two instances are removed atomically, and the rdpdr backend can't dispatch any IO request for a device that we've just removed a directory context for (which would cause a fatal error).

* Remove dead code and fix spelling.

* Fix spelling

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

---------

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Desktop Access: Support Multi-Directory Sharing and Removal (gravitational#65952)

* Update audit cache and handlers to match shared directory read/write respponses based on (deviceId, completionId) tuples rather than just the completionId. (gravitational#68156)

* Desktop Access: Drop Shared Directory Removal (gravitational#68260)

* Mark directory removal as unsupported for now

* Get rid of the remove/eject button from the multi-directory sharing menu. We're omitting support for removal for now.

---------

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
…ravitational#67728) (gravitational#68235)

* Adjust ScopedRoleAssignment to refer to scoped Bot using SQN (gravitational#67728)

* Adjust ScopedRoleAssignment to refer to scoped Bot using SQN

* Adjust godocs to avoid triggering linter

* fix scopes docs

* gofmt
…tational#68217)

* kube: guard force_terminate close with sync.Once

* kube: make force_terminate test deterministic

* kube: group forceTerminateOnce with forceTerminate
…on (gravitational#68228)

Ensure that the EKSAuditLogWatcher fully completes before
initializeAndWatchAccessGraph() completes, including the fetchers
spawned by the watcher.

This is done by adding the run of the EKSAuditLogWatcher to the
waitgroup the initialize function uses to wait for the grpc connection
to complete. The function does not return until this waitgroup is
finished.

Also add a WaitGroup to the EKSAuditLogWatcher to keep track of all the
fetchers spawned so that the EKSAuditLogWatcher.Run() function does not
return until all the fetchers have completed. This stops the fetchers
from trying to use a closed grpc connection during cleanup.
* Make `VnetContext` tests depend on action order rather than no of calls

* Explain the idea behind acknowledgement/dismissal being "sticky"

* Update Jest mock outside of `act`
…ravitational#67277) (gravitational#68222)

* chore: removed cloud city background and beams config refactor

* chore: removed unneeded styling
* Add AppClient CA (gravitational#66273)

* feat: introduce app_client CA

* Apply suggestions from code review

Co-authored-by: Krzysztof Skrzętnicki <krzysztof.skrzetnicki@goteleport.com>

* fix(tctl): app client info being shown for other CAs due to fallthrough

* Apply suggestions from code review

Co-authored-by: Alan Parra <12500300+codingllama@users.noreply.github.com>

* refactor(cryptosuites): update legacy algo

---------

Co-authored-by: Krzysztof Skrzętnicki <krzysztof.skrzetnicki@goteleport.com>
Co-authored-by: Alan Parra <12500300+codingllama@users.noreply.github.com>

* `tbot` add `trust_domains` option for supported services (gravitational#66587)

* feat: tbot trust_domains option for supported services

* test(workloadidentity): adjust test assertion

* Apply suggestions from code review

Co-authored-by: Dan Upton <daniel@floppy.co>

* refactor: code review suggestions

* chore(workloadidentity): fix lint

---------

Co-authored-by: Dan Upton <daniel@floppy.co>

* Add `IssueTeleportWorkloadIdentity` RPC (gravitational#66691)

* feat(workloadidentityv1): issue teleport workload identity

* refactor(workloadidentityv1): code review suggestions

* refactor(workloadidentityv1): code review suggestions

* chore(workloadidentityv1): clarify comment

* Apply suggestions from code review

Co-authored-by: Noah Stride <noah@noahstride.co.uk>

* chore(workloadidentityv1): code review suggestions and update

---------

Co-authored-by: Noah Stride <noah@noahstride.co.uk>

* App service use upstream TLS options (gravitational#66454)

* feat: app service use upstream tls options

* refactor: code review suggestions

* refactor(upstreamtls): code review suggestions

* test(app): provide missing transport options

* chore(app): fix lint

* Implement app access managed client certificates (gravitational#67701)

* feat(app): issue client certificates for downstream connections

* chore(upstreamtls): code review suggestions

* chore(upstreamtls): use opaque grpc api

* chore: docs lint and missing insecure flag

---------

Co-authored-by: Krzysztof Skrzętnicki <krzysztof.skrzetnicki@goteleport.com>
Co-authored-by: Alan Parra <12500300+codingllama@users.noreply.github.com>
Co-authored-by: Dan Upton <daniel@floppy.co>
Co-authored-by: Noah Stride <noah@noahstride.co.uk>
#1)

* add terraform config

* add circleci config

* fix build errors

* include terraform lock file to the gitignore

* add disclaimer to the README

* Update CODEOWNERS

* update circleci to build and push the distroless image

* add PR template

* disable atlantis
* add release script

* remove sentinel job to prevent patch conflicts

* update README

* ensure version string is prefixed with 'v' if missing
* fix branch filters

* add comment to ecr module

* add allowed_pull_account ids comment
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (4)
  • alpha
  • beta
  • main
  • master

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository: loadsmart/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a8a5d761-2953-4fd4-a331-55c601b01b83

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v18.10.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@loadsmart-atlantis

Copy link
Copy Markdown

Ran Plan for 3 projects:

  1. dir: examples/aws/terraform/ecs-agent workspace: default
  2. dir: examples/resources/terraform workspace: default
  3. dir: examples/terraform-starter workspace: default

1. dir: examples/aws/terraform/ecs-agent workspace: default

Plan Failed: Pull request must be approved according to the project's approval rules before running plan.


2. dir: examples/resources/terraform workspace: default

Plan Failed: Pull request must be approved according to the project's approval rules before running plan.


3. dir: examples/terraform-starter workspace: default

Plan Failed: Pull request must be approved according to the project's approval rules before running plan.


Plan Summary

3 projects, 0 with changes, 0 with no changes, 3 failed

@felipeasantos

Copy link
Copy Markdown
Author

Closing per the documented release process (loadsmart/release.sh) which pushes the branch and tag directly without a PR. The release/v18.10.0 branch stays on origin as the tag target. Cherry-pick review notes preserved in this PR for reference.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.