-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #223 from telepresenceio/docs/v2.21.0
Docs release for 2.21.0-rc.0
- Loading branch information
Showing
71 changed files
with
7,007 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
--- | ||
title: Telepresence 2.21 | ||
description: What's new in Telepresence 2.21. | ||
slug: telepresence-2.21 | ||
authors: | ||
- name: Thomas Hallgren | ||
title: Maintainer of Telepresence OSS | ||
url: https://github.com/thallgren | ||
image_url: https://github.com/thallgren.png | ||
socials: | ||
linkedin: https://www.linkedin.com/in/thallgren/ | ||
--- | ||
|
||
Telepresence 2.21.0 has been released, and here is a walkthrough of its many new features, such as automatic VPN | ||
conflict avoidance, the new `telepresence ingest` command, and the improved docker support provided by commands like | ||
`telepresence curl` and `telepresence docker-run`. | ||
|
||
<!-- truncate --> | ||
|
||
## No More VPN Conflicts | ||
|
||
One of the most common problems for Telepresence users has been that the IP ranges used by the Kubernetes cluster that | ||
they connect to collide with IP ranges provided by other already existing networks on the workstation. Telepresence | ||
would refuse to connect when such a conflict was detected, and require that the user somehow specified how to resolve | ||
it. This is no longer the case. Starting with version 2.21.0, Telepresence will proactively resolve the conflict by | ||
moving the cluster subnets out of the way! | ||
|
||
### Virtual Network Address Translation (VNAT) | ||
The process of moving a subnet is fairly simple. The Telepresence DNS resolver will translate IPs returned by the | ||
cluster DNS resolver into an IP range that is guaranteed not to conflict, and the Telepresence Virtual Network | ||
Interface will then translate them back to their original on access. | ||
|
||
Telepresence will also ensure that any references to those IPs in the environment that is propagated when using | ||
`telepresence ingest` or `telepresence intercept` are translated as well. A local process using the environment will | ||
hence be able to use those IPs to connect to resources in the cluster. | ||
|
||
![VNAT](../static/img/vnat-dark.png#gh-dark-mode-only)![VPN Kubernetes config](../static/img/vnat.png#gh-light-mode-only) | ||
|
||
### VNAT Caveats | ||
|
||
Telepresence may not accurately detect cluster-side IP addresses being used by services running locally on a workstation | ||
in certain scenarios. This limitation arises when local services obtain IP addresses from remote sources such as | ||
databases or configmaps, or when IP addresses are sent to it in API calls. | ||
|
||
Using commands like `nslookup <svc name>` will show different IP addresses than the ones shown when using commands like | ||
`kubernetes get svc <svc name>` if the service subnet is subjected to VNAT translation. The same is true when using | ||
`nslookup <pod name>` and `kubernetes get pod -o wide`. | ||
|
||
In situations where VNAT causes problems, it can be disabled. Consult the Technical Reference documentation for more | ||
details on how to do that. | ||
|
||
## New Ingest Command | ||
|
||
The new ingest command can be thought of as a light version of intercept. It's in many respects the same thing, but | ||
without the traffic. | ||
|
||
Sometimes, intercepting network traffic to a container isn't the most efficient solution. For example, if you're working | ||
with a Kafka service that only interacts with a message broker, or if you're planning to send data to your local | ||
application through other means, just accessing the container's environment and volume mounts might be more practical. | ||
The new `telepresence ingest <workload> [--container <container name>]` command was designed for this purpose. | ||
|
||
First, `telepresence connect` establishes network access to the cluster. Then, `telepresence ingest` makes the | ||
container's environment and volume mounts available locally, allowing local processes to run, but without receiving | ||
intercepted traffic. | ||
|
||
The syntax for the ingest and intercept commands are very similar, but while the intercept will target a port to | ||
intercept (and implicitly a container), the ingest command will target a container directly. | ||
|
||
There's no conflict when several ingests of the same container, possibly on different workstations, happen | ||
simultaneously, because volumes are always mounted read-only, and everything happens on the client side. | ||
|
||
### Why the term "ingest"? | ||
I initially considered adding a `--no-traffic` option to the `intercept` command. This would allow users to invoke the | ||
command without actually intercepting traffic. However, given that "intercept" inherently implies the act of | ||
intercepting, such an option would be counterintuitive and potentially confusing. | ||
|
||
The term "ingest" was [suggested by a user](https://github.com/telepresenceio/telepresence/issues/3713), and it has a | ||
nice ring to it. The local process indeed ingests the remote container's environment and volume mounts. | ||
|
||
## Improved Docker Support | ||
|
||
The cluster network that Telepresence makes available when connecting using `telepresence connect --docker`, will be | ||
confined to the daemon container, so commands like `curl` or `nslookup` would not find the cluster resources when | ||
executed on the host. To run a curl command, you'd have to do something like: | ||
|
||
### telepresence curl | ||
|
||
```bash | ||
docker run --network container:<daemon container name> curlimages/curl <name of service> | ||
``` | ||
|
||
The command `telepresence curl` will run a standard `curl` from a docker image that shares the daemon container's | ||
network, and the above can be replaced with: | ||
|
||
```bash | ||
telepresence curl <name of service> | ||
``` | ||
|
||
### telepresence docker-run | ||
|
||
The `telepresence docker-run` will do a `docker run` and attach the daemon network. So a command like: | ||
```bash | ||
docker run --network container:<daemon container name> --rm -it jonlabell/network-tools ip route | ||
``` | ||
becomes: | ||
```bash | ||
telepresence docker-run --rm -it jonlabell/network-tools ip route | ||
``` | ||
|
||
The command will also ensure that port flags like `--publish`, `--expose` works by circumventing the Docker network | ||
limitation using ephemeral socat containers. It will even enable adding additional `--network` flags by temporarily | ||
adding them to the daemon container. | ||
|
||
The `telpresence intercept/ingest --docker-run` now also leverages this technique. | ||
|
||
## Performance Improvements | ||
|
||
This release contains several performance improvements. Most notably perhaps the rewrite of the `telepresence list` | ||
command, so that it now retrieves its data from the traffic-manager instead of doing a large number of API calls to | ||
the Kubernetes API. This makes a huge difference when the namespace contains a large number of workloads. | ||
|
||
## And there's more | ||
|
||
The release contains several other improvements such as Windows arm64 support, and the ability to exclude certain | ||
workload types to offload the traffic-manager. And, of course, a number of bugfixes. For a full list, please review the | ||
[release notes](../docs/release-notes). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Telepresence Documentation | ||
|
||
This folder contains the Telepresence documentation in a format suitable for a versioned folder in the | ||
telepresenceio/telepresence.io repository. The folder will show up in that repository when a new minor revision | ||
tag is created here. | ||
|
||
Assuming that a 2.20.0 release is pending, and that a release/v2.20.0 branch has been created, then: | ||
```console | ||
$ export TELEPRESENCE_VERSION=v2.20.0 | ||
$ make prepare-release | ||
$ git push origin {,rpc/}v2.20.0 release/v2.20.0 | ||
``` | ||
|
||
will result in a `docs/v2.20` folder with this folder's contents in the telepresenceio/telepresence.io repository. | ||
|
||
Subsequent bugfix tags for the same minor tag, i.e.: | ||
```console | ||
$ export TELEPRESENCE_VERSION=v2.20.1 | ||
$ make prepare-release | ||
$ git push origin {,rpc/}v2.20.1 release/v2.20.1 | ||
``` | ||
will not result in a new folder when it is pushed, but it will update the content of the `docs/v2.20` folder to | ||
reflect this folder's content for that tag. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
--- | ||
description: Main menu when using plain markdown. Excluded when generating the website | ||
--- | ||
# <img src="images/logo.png" height="64px"/> Telepresence Documentation | ||
raw markdown version, more bells and whistles at [telepresence.io](https://telepresence.io) | ||
|
||
- [Quick start](quick-start.md) | ||
- Install Telepresence | ||
- [Install Client](install/client.md) | ||
- [Upgrade Client](install/upgrade.md) | ||
- [Install Traffic Manager](install/manager.md) | ||
- [Cloud Provider Prerequisites](install/cloud.md) | ||
- Core concepts | ||
- [The developer experience and the inner dev loop](concepts/devloop.md) | ||
- [Making the remote local: Faster feedback, collaboration and debugging](concepts/faster.md) | ||
- [Using Telepresence with Docker](concepts/docker.md) | ||
- [Intercepts](concepts/intercepts.md) | ||
- How do I... | ||
- [Code and debug an application locally](howtos/intercepts.md) | ||
- [Work with large clusters](howtos/large-clusters.md) | ||
- [Host a cluster in Docker or a VM](howtos/cluster-in-vm.md) | ||
- Technical reference | ||
- [Architecture](reference/architecture.md) | ||
- [Client reference](reference/client.md) | ||
- [Laptop-side configuration](reference/config.md) | ||
- [Cluster-side configuration](reference/cluster-config.md) | ||
- [Using Docker for intercepts](reference/docker-run.md) | ||
- [Running Telepresence in a Docker container](reference/inside-container.md) | ||
- [Environment variables](reference/environment.md) | ||
- Intercepts | ||
- [Configure intercept using CLI](reference/intercepts/cli.md) | ||
- [Traffic Agent Sidecar](reference/intercepts/sidecar.md) | ||
- [Target a specific container](reference/intercepts/container.md) | ||
- [Volume mounts](reference/volume.md) | ||
- [DNS resolution](reference/dns.md) | ||
- [RBAC](reference/rbac.md) | ||
- [Telepresence and VPNs](reference/vpn.md) | ||
- [Networking through Virtual Network Interface](reference/tun-device.md) | ||
- [Connection Routing](reference/routing.md) | ||
- [Monitoring](reference/monitoring.md) | ||
- [FAQs](faqs.md) | ||
- [Troubleshooting](troubleshooting.md) | ||
- [Community](community.md) | ||
- [Release Notes](release-notes.md) | ||
- [Licenses](licenses.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
--- | ||
title: Community | ||
hide_table_of_contents: true | ||
--- | ||
|
||
# Community | ||
|
||
## Contributor's guide | ||
Please review our [contributor's guide](https://github.com/telepresenceio/telepresence/blob/release/v2/CONTRIBUTING.md) | ||
on GitHub to learn how you can help make Telepresence better. | ||
|
||
## Meetings | ||
Check out our community [meeting schedule](https://github.com/telepresenceio/telepresence/blob/release/v2/MEETING_SCHEDULE.md) for opportunities to interact with Telepresence developers. |
Oops, something went wrong.