Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added RFD 0144 - Client Tools Updates #39805

Merged
merged 24 commits into from
Jan 10, 2025
Merged

Added RFD 0144 - Client Tools Updates #39805

merged 24 commits into from
Jan 10, 2025

Conversation

russjones
Copy link
Contributor

No description provided.

@github-actions github-actions bot requested review from jimbishopp and zmb3 March 25, 2024 20:26
@github-actions github-actions bot added rfd Request for Discussion size/md labels Mar 25, 2024
@bernardjkim bernardjkim self-requested a review March 25, 2024 20:26
@russjones russjones added the no-changelog Indicates that a PR does not require a changelog entry label Mar 25, 2024
@gravitational gravitational deleted a comment from github-actions bot Mar 25, 2024
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
@reedloden reedloden requested review from reedloden and jentfoo March 25, 2024 22:31
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
@russjones russjones requested a review from r0mant April 1, 2024 16:23
@russjones
Copy link
Contributor Author

russjones commented Apr 17, 2024

@sclevine @bernardjkim @r0mant @tigrato @hugoShaka I've pushed an update to reduce scope and focus on our primary use-case: Cloud.

Instead of maintaining multiple versions of client tools per-cluster, a single version of client tools will be maintained. For Cloud customers this should have no impact as most have a single cluster and even those with multiple clusters will be on the same version. For self-hosted clusters, by default this feature will be turned off with auto mode removed.

I think this will be a much simpler implementation. We can come back around to supporting multiple versions (and self-hosted use case) in the future.

rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
rfd/0144-client-tools-updates.md Show resolved Hide resolved

Inspiration drawn from https://go.dev/doc/toolchain.

### Implementation
Copy link
Contributor

@hugoShaka hugoShaka Apr 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we build some kind of observability around this and use this as a success criteria?

  • for the Teleport admins, so they know which tools versions their users have. For example recording the teleport client version on login, and when an update happens. (with prometheus metric)
  • for cloud operations, so we know what's the tenant state and can send the apropriate communications/do the right maintenances (with prometheus metrics as well)
  • for product decision so we can measure the tool update adoption for customers with dial-home (with the existing posthog analytics):
    • report the versions of teleport tools
    • report if automatic tool update is enabled
    • report the OS distribution (mac/windows/linux, and which major version)
    • report if the version is automatic, or pinned

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, definitely planning on adding observability. I'll update the RFD a bit later in development on exact metrics, but all of the above sound reasonable.

We'll have to do something to avoid duplicates and preserve anonymity, we can follow a similar approach to what we do for product metrics.

rfd/0144-client-tools-updates.md Outdated Show resolved Hide resolved
* Add changes proposed for client autoupdate
* Add proxy flag and CDN info
Comment on lines +101 to +104
All archive downloads are targeted to the `cdn.teleport.dev` endpoint and depend
on the operating system, platform, and edition. Where edition must be identified
by the original client tools binary, URL pattern:
`https://cdn.teleport.dev/teleport-{, ent-}v15.3.0-{linux, darwin, windows}-{amd64,arm64,arm,386}-{fips-}bin.tar.gz`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the implementation PRs, did you take into account the fact that dev tag builds along with release candidates, alphas, and betas are served from a different domain? This has been a problem for Connect My Computer and other components:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll create issue for this one, as far as I understand for first version we going to support stable versions only

Comment on lines +55 to +56
The original client tools binaries won't be overwritten. Instead, an additional
binary will be downloaded and stored in `~/.tsh/bin` with `0755` permissions.
Copy link
Member

@ravicious ravicious Nov 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does that mean we don't have to worry about auto-update overriding the bundled version of tsh that has been symlinked by Teleport Connect?

Say I install Connect v16 on macOS and symlink the bundled tsh to PATH. I then upgrade my cluster to v17. When I log in with the symlinked tsh outside of Connect, it's going to download tsh v17, place it in ~/.tsh/bin and reexecute the command. But then when Connect calls tsh again with TELEPORT_TOOLS_VERSION=off, it's just going to use the v16 version, do I understand this correctly?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ravicious yes, TELEPORT_TOOLS_VERSION=off disables re-execution and update

@vapopov
Copy link
Contributor

vapopov commented Jan 10, 2025

I am going to merge the RFD if there are no objections

@vapopov vapopov added this pull request to the merge queue Jan 10, 2025
Merged via the queue into master with commit f6544ed Jan 10, 2025
41 checks passed
@vapopov vapopov deleted the rjones/client-tools branch January 10, 2025 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no-changelog Indicates that a PR does not require a changelog entry rfd Request for Discussion size/md
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants