From 3900d24b5a83c729eda3a2c7435c4e69a7463b19 Mon Sep 17 00:00:00 2001 From: Jan Fuhrer Date: Wed, 18 Dec 2024 09:31:56 +0100 Subject: [PATCH] docs: update teleport documentation --- docs/access/teleport/client-installation.md | 8 +++--- docs/access/teleport/k8s-client.md | 27 ++++++++++++++++--- docs/access/teleport/k8s-openlens.md | 1 + docs/assets/images/teleport_tsh_download.png | Bin 16191 -> 0 bytes 4 files changed, 28 insertions(+), 8 deletions(-) delete mode 100644 docs/assets/images/teleport_tsh_download.png diff --git a/docs/access/teleport/client-installation.md b/docs/access/teleport/client-installation.md index 0b801aa..68bdad3 100644 --- a/docs/access/teleport/client-installation.md +++ b/docs/access/teleport/client-installation.md @@ -16,6 +16,7 @@ Teleport Connect is a desktop application that allows you to connect to a Telepo ## TSH Client + The TSH Client is a command line tool that allows you to connect to a Teleport cluster and access resources. It is available for Linux, macOS, and Windows. It includes the following commands: @@ -23,11 +24,10 @@ It includes the following commands: - `tsh login` - log in to a Teleport cluster - `tsh ssh` - connect to a node or a cluster - `tsh db` - connect to a database + - `tsh kube` - connect to a Kubernetes cluster - `tsh status` - show the status of the Teleport cluster -!!! info "Make sure to select `tsh client` from the dropdown menu" +[Install instructinos TSH Client :fontawesome-solid-download:](https://goteleport.com/docs/connect-your-client/tsh/#installing-tsh){ .md-button } + -
- ![Teleport](../../assets/images/teleport_tsh_download.png) -
diff --git a/docs/access/teleport/k8s-client.md b/docs/access/teleport/k8s-client.md index 9105e17..fb02488 100644 --- a/docs/access/teleport/k8s-client.md +++ b/docs/access/teleport/k8s-client.md @@ -1,14 +1,15 @@ # Accessing Kubernetes Clusters using the Teleport Connect Client -You can use the Teleport Connect client to access Kubernetes clusters. +You can use the Teleport Connect client or the `tsh` binary to access Kubernetes clusters. ## Prerequisites -- Teleport Connect Client installed on your local machine. See [Installing Teleport Connect Client](/access/teleport/client-installation/) for instructions. +- Teleport Connect Client or TSH Client installed on your local machine. See [Installing Teleport Client](/access/teleport/client-installation/) for instructions. - Kubectl installed on your local machine. See [Installing kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) for instructions. +- You must be in a Teleport Role that allows access to Kubernetes clusters. +## Accessing a Kubernetes Cluster using Teleport Connect -## Accessing a Kubernetes Cluster Launch the Teleport Connect Client and sign in with your account. Choose the register `Kubes` and select `Connect` to connect to the Kubernetes cluster. @@ -19,4 +20,22 @@ A new terminal window will open with the `kubectl` context set to the Kubernetes Now you can run `kubectl` commands to access the Kubernetes cluster. -![Teleport Connect K8s](../../assets/images/teleport_connect_k8s_terminal.png) \ No newline at end of file +![Teleport Connect K8s](../../assets/images/teleport_connect_k8s_terminal.png) + +## Accessing Kubernetes Clusters using tsh + +You can use the Teleport CLI `tsh` to access Kubernetes clusters directly in your terminal. + +```bash +TELEPORT_URL=teleport.example.com +TELEPORT_USER=your-teleport-user + +# Login to the Teleport cluster +tsh login --proxy=$TELEPORT_URL --auth=local --user=$TELEPORT_USER $TELEPORT_URL + +# Print available Kubernetes clusters +tsh kube ls + +# Connect to a Kubernetes cluster +tsh kube login +``` diff --git a/docs/access/teleport/k8s-openlens.md b/docs/access/teleport/k8s-openlens.md index b2d625d..c6fd630 100644 --- a/docs/access/teleport/k8s-openlens.md +++ b/docs/access/teleport/k8s-openlens.md @@ -9,6 +9,7 @@ You can use the Teleport Connect client to access Kubernetes clusters with OpenL - OpenLens installed on your local machine. See [OpenLens Releases](https://github.com/MuhammedKalkan/OpenLens/releases) for download. ## Configuring OpenLens to use Teleport Connect + Launch the Teleport Connect Client and sign in with your account. Choose the register `Kubes` and select `Connect` to connect to the Kubernetes cluster. diff --git a/docs/assets/images/teleport_tsh_download.png b/docs/assets/images/teleport_tsh_download.png deleted file mode 100644 index 26fd8f0b88d03cc0a313c1c61566a31a9aa6e3fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16191 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 W$MWoBF!1|!9Mxx9iskYz1OEq4bQDDZ