0.97 (January 25, 2019)
Backwards incompatible changes:
- A successful Telepresence session now exits with the return code of your process. This should make it easier to use Telepresence in scripts. (#886)
- Telepresence should no longer crash if the terminal width is unavailable. (#901)
- The container method now outputs the same helpful text about which ports are exposed as the other methods do. (#235)
- Telepresence tries to detect Kubernetes in Docker Desktop and work around networking issues the same way as for Minikube. Thanks to Rohan Singh for the patch. (#736)
- Support for OpenShift has been brought up to date. Thanks to Bartosz Majsak for the patch.
- Telepresence masks (hides) Kubernetes access tokens in the log file. Previously, access tokens would be logged when running in verbose mode. Thanks to Bartosz Majsak for the patch. (#889)
- Telepresence has native packages for the recently-released Fedora 29 and Ubuntu Cosmic. (#876)
0.96 (December 14, 2018)
- When using the container method, all outgoing traffic is directed to the cluster.
It is no longer necessary or meaningful to use
- Telepresence shows more information when a background process dies unexpectedly, including the last few lines of output. If this happens during startup, the output is included in the crash report. (#842)
- Telepresence is less likely to get confused by network setups that have IPv6 enabled. (#783)
- Telepresence outputs a warning if cluster and client versions differ greatly. (#426)
- Instead of crashing, Telepresence reports an error when
0.95 (December 6, 2018)
- Telepresence no longer ignores the context argument when checking whether the selected namespace exists. (#787)
- Telepresence functions in more restrictive cluster environments because the proxy pod no longer tries to modify the filesystem. (#848)
- When a background process dies unexpectedly, Telepresence will notice much sooner. This is particularly helpful during session start, as Telepresence can sometimes avoid waiting through a long timeout before crashing. (#590)
- Cleanup of background processes is more robust to individual failures. (#586)
- The container method no longer uses
socatto connect the local container to the cluster, relying on
sshport forwarding instead. If you've had trouble with Telepresence's use of the Docker bridge interface (typically
docker0on Linux, unavailable on Windows), this change avoids all of that. This is technically a breaking change, as ports 38022 and 38023 are used by the new machinery. Those ports are now unavailable for user code. In practice, most users should not notice a difference. (#726)
./builddevelopment script no longer exists. Its functionality has been merged into the Makefile. See
make helpfor the new usage information. (#839)
0.94 (November 12, 2018)
- Telepresence no longer crashes at launch for OpenShift/MiniShift users. Thanks to Tom Ellis for the patch. (#781)
- When a new version is available, Telepresence will tell you at the end of the session. (#285)
0.93 (October 4, 2018)
- Telepresence reports an error message when the specified namespace is not found. (#330)
- The container method no longer crashes when no ports are exposed. (#750)
- Telepresence detects that it is running as root and suggests the user not launch Telepresence under sudo if there is trouble talking to the cluster. Thanks to Rohan Gupta for the patch. (#460)
0.92 (August 21, 2018)
- Fixed the
bash--norctypo introduced in 0.91. (#738)
0.91 (August 17, 2018)
- Conntrack, iptables, and a few other dependencies are automatically found on more Linux distributions now. (#278)
- Telepresence no longer crashes in the presence of an empty or corrupted cache file. (#713)
0.90 (June 12, 2018)
- Fixed a regression in the Telepresence executable mode bits in packages. (#682)
- Fixed other packaging-related issues.
0.89 (June 11, 2018)
- When launching the user's container (when using the container method), if the
sudo, Telepresence now uses
sudo -Eto ensure that environment variables get passed through to the container. This fixes a regression caused by the fix for multi-line environment variables (#301). (#672)
0.88 (May 16, 2018)
- Various points in the Kubernetes stack have timeouts for idle connections. This includes the Kubelet, the API server, or even an ELB that might be in front of everything. Telepresence now avoids those timeouts by periodically sending data through its open connections. In some cases, this will prevent sessions from ending abruptly due to a lost connection. (#573)
0.87 (May 11, 2018)
- Telepresence can optionally emit the remote environment as a JSON blob or as a
.env-format file. Use the
--env-fileoptions respectively to specify the desired filenames. See https://docs.docker.com/compose/env-file/ for information about the limitations of the Docker Compose-style
.envfile format. (#608)
- Telepresence can now transfer complex environment variable values without truncating or mangling them. (#597)
- The container method now supports multi-line environment variable values. (#301)
- Telepresence avoids running afoul of lifecycle hooks when swapping a deployment. (#587)
0.86 (April 26, 2018)
- By default, the Telepresence proxy runs in the cluster as an unprivileged user; as built, the proxy image gives up root privileges. However, when the proxy needs to bind to privileged ports, it must run as root. Instead of using the security context feature of Kubernetes to gain root, Telepresence now uses a different image that does not give up root privileges. This allows Telepresence to run in clusters that lock down the Kubernetes security context feature. (#617)
0.85 (April 23, 2018)
- You can set
$TELEPRESENCE_ROOTto a known path using the
--mount=/known/pathargument. See the volumes documentation for example usage. (#454)
- Turn off volume support entirely with
The swap-deployment operation works differently now.
The original method saved a copy of the deployment manifest, deleted the deployment, and then created a deployment for Telepresence. To clean up, it deleted the Telepresence deployment and recreated the original deployment using the saved manifest. The problem with this approach was that an outside system managing known deployments could clobber the Telepresence deployment, causing the user's Telepresence session to crash mysteriously.
The new method creates a separate deployment for Telepresence with the same labels as the original deployment and scales down the original deployment to zero replicas. Services will find the new deployment the same way they found the original, via label selectors. To clean up, it deletes the Telepresence deployment and scales the original deployment back to its previous replica count.
An outside system managing known deployments should not touch the Telepresence deployment; it may scale up the original and steal requests from the Telepresence session, but at least that session won't crash mysteriously as it would before. (#575)
0.84 (April 20, 2018)
- This release fixes startup checks for cluster access to avoid crashing or quitting unnecessarily when sufficient access is available.
0.83 (April 16, 2018)
- Telepresence requires fewer cluster permissions than before. The required permissions are now documented for Kubernetes. (#568)
0.82 (April 11, 2018)
- When using the vpn-tcp method, DNS queries from the domain search path no longer yield NXDOMAIN. Unfortunately, the expected follow-up query does not occur under some network conditions. This change fixes a DNS regression introduced in 0.79. (#578)
0.81 (April 6, 2018)
- This release corrects a race condition in subprocess output capture when using the
0.79 (April 6, 2018)
- Telepresence now supports IPv4 reverse lookups when using
- No more crash when Telepresence cannot write to its log file. (#459)
- Fixed remaining instances of logfile content that was not time and origin stamped.
As a side-effect, the
stamp-telepresencecommand has been removed. (#390)
- The commands that Telepresence launches have always been recorded in the logfile. Now they are formatted so they can be copy-pasted into your terminal in most cases.
- The beginning of the logfile contains more information about your local and cluster setup to aid with bug reports and troubleshooting.
- The crash reporter does a better job of capturing relevant information and tries to avoid missing the end of the logfile. (#446) (#466)
- When using the vpn-tcp method, DNS queries from the domain search path (the search list in
/etc/resolv.conf) now yield NXDOMAIN instead of implicitly stripping off the search suffix. The resolver library will eventually query for the bare name (without the search suffix), at which point Telepresence DNS will return the expected IP address in the cluster. (#192)
0.78 (March 29, 2018)
- Telepresence starts roughly five seconds faster on every invocation thanks to some basic caching of cluster information.
The cache is stored in
~/.cache/telepresenceand is cleared automatically after twelve hours. Delete the contents of that directory to clear the cache manually.
- When using the container method, Telepresence waits longer for networking to start before giving up. This may help users who sometimes experience higher latency between their local network and their Kubernetes cluster. (#340) (#539)
0.77 (March 26, 2018)
- Updates to the release process.
0.76 (March 25, 2018)
- Added the ability to specify
--init=falseflag when using
--docker-runThanks to GitHub user CMajeri for the patch. (#481)
- Telepresence now makes a greater effort to account for local DNS search domain configuration when bridging DNS to Kubernetes when using
- Telepresence should no longer get confused looking for the route to the host when using the container method. (#532)
- A new end-to-end test suite setup will help us reduce the cycle time associated with testing Telepresence. We added documentation introducing developers to Telepresence end-to-end test development. (#400)
- Improved cleanup of our testing cluster used by CI.
- Reduced the verbosity of DNS lookup failures in the logs. (#497)
0.75 (January 30, 2018)
- Telepresence correctly handles the
-p) Docker option by incorporating it into the
dockerinvocation that sets up networking. (#387)
- The end of startup and the beginning of shutdown are now both clearly indicated in
- Environment and testing setup is no longer entangled with TravisCI setup.
buildscripts are used by continuous integration and can be used by developers as well. (#374)
- Continuous integration operations, specifically testing, have been moved to CircleCI. The release process remains on TravisCI, at least for this release. (#397) (#417)
0.73 (December 28, 2017)
--also-proxyfeature supports specifying IP ranges (in CIDR notation) in addition to hostnames and individual IPs. (#375)
- Telepresence source code is no longer one giant Python file. This will allow for quicker development going forward. (#377)
- Telepresence source code conforms to
yapfformatting. The lint stage of the CI pipeline enforces this. (#368)
0.72 (December 12, 2017)
- The Telepresence source tree is organized more like a typical Python project. This will allow for quicker development going forward. (#344)
- Telepresence has native packages for Ubuntu Xenial, Zesty, and Artful, and for Fedora 26 and 27. (#269)
- An install script is included for installing Telepresence from source. (#347)
0.71 (November 1, 2017)
- Telepresence no longer crashes on deployments containing Services of type ExternalName. Thanks to Niko van Meurs for the patch. (#324, #329)
- The anonymous usage information reported by Telepresence now includes the operation (e.g., "swap-deployment") and method (e.g., "vpn-tcp") used. This will help us focus development resources.
- Telepresence is no longer packaged for Ubuntu 16.10 (Yakkety Yak) as that release has reached end of life.
0.68 (October 12, 2017)
- Telepresence no longer crashes when the deployment has multi-line environment variables. (#301)
- Telepresence now sets a CPU limit on its Kubernetes pods. (#287)
- Deployments that do not use the default service account (and thus don't automatically have access to service account credentials for the k8s API) are now supported. Thanks to Dino Hensen for the patch. (#313, #314)
- Telepresence documentation uses GitBook.
0.67 (September 21, 2017)
- The macOS Homebrew installation no longer assumes that you have Homebrew installed in the default location (
/usr/local). It also no longer requires
virtualenvto be installed.
- The Telepresence logfile now has time and source stamps for almost every line. This will help us diagnose problems going forward.
- Clarified which support binaries are being looked for and where on startup.
- The website now has a community page.
- Cleaned up some links (HTTP vs HTTPS, avoid redirection).
0.65 (August 29, 2017)
- Avoid a dependency conflict in the macOS Homebrew installation by dropping the required dependency on
socat. You will still need to install
socatif you want to use
--method container, but installing it separately from Telepresence appears to work fine. Thanks to Dylan Scott for chasing this down. (#275)
0.64 (August 23, 2017)
make build-k8s-proxy-minikubeto work on macOS. Same for Minishift.
- Documented macOS limitations with
--method inject-tcpdue to System Integrity Protection. Thanks to Dylan Scott for the detailed write-up. (#268)
- The website has TLS enabled
- Telepresence reports anonymous usage information during startup
0.63 (July 31, 2017)
- Fixed regression in
--swap-deploymentwhere it would add a proxy container instead of replacing the existing one. (#253)
0.62 (July 26, 2017)
- Support for Linux distributions using systemd-resolved, like Ubuntu 17.04 and Arch, now works when there is no search domain set. Thanks to Vladimir Pouzanov for the bug report, testing, and useful suggestions. (#242)
- Better method for bypassing DNS caching on startup, which should be more robust.
- Instead of hardcoding /16, using a better heuristic for guessing the IP range for Services. Thanks to Vladimir Pouzanov for the bug report. (#243)
- SIGHUP now clean ups resources the same way SIGTERM and hitting Ctrl-C do. (#184)
0.61 (July 19, 2017)
- Environment variables created using ConfigMaps and Secrets (using
envFrom) are now made available to the local process. Thanks to Tristan Pemble for the bug report. (#230)
0.60 (July 18, 2017)
- When using
--swap-deployment, ports listed in the existing Deployment are automatically forwarded. Thanks to Phil Lombardi and Rafi Schloming for the feature request. (#185)
- Switched to upstream
sshuttleinstead of using forked version.
0.59 (July 18, 2017)
- When using
--swap-deployment, many more container options that would break
telepresenceare swapped out. Thanks to Jonathan Wickens for the bug report. (#226)
0.58 (July 13, 2017)
- Fixed regression that broke Docker on OS X. Thanks to Vincent van der Weele for the bug report. (#221)
0.57 (July 6, 2017)
- Fix DNS lookups on macOS in
vpn-tcpmode. Thanks to number101010 for the bug report. (#216)
0.56 (July 5, 2017)
--helpnow includes some examples. (#189)
--docker-runcontainer no longer gets environment variables from the host, only from the remote pod. (#214)
0.55 (June 30, 2017)
--methodis now optional, defaulting to "vpn-tcp", or "container" when
--docker-runis used. (#206)
- If no deployment method (
--new-deploymentis used by default with a randomly generated name. (#170)
0.54 (June 28, 2017)
--method vpn-tcpnow works on minikube and minishift. As a result we now recommend using it as the default method. (#160)
- Support more versions of Linux in container mode. Thanks to Henri Koski for bug report and patch. (#202)
0.53 (June 27, 2017)
--exposecan now expose a different local port than the one used on the cluster side. (#180)
- Fix regression where exposing ports <1024 stopped working. (#194)
- Fix regression where tools like
pingweren't hidden on Mac in
0.52 (June 21, 2017)
- Telepresence can now be used to proxy Docker containers, by using
--method containertogether with
--docker-run. Thanks to Iván Montes for the feature request and initial testing. (#175)
0.51 (June 13, 2017)
sshconfig is not used, in case it has options that break Telepresence. Thanks to KUOKA Yusuke for the bug report, and Iván Montes for debugging and the patch to fix it. (#174)
0.50 (June 8, 2017)
- If no
current-contextis set in the Kubernetes config, then give a nice error message indicating the need for passing
telepresence. Thanks to Brandon Philips for the bug report. (#164)
ocwill not be used unless we're sure we're talking to an OpenShift server. This is useful for Kubernetes users who happen to have a
ocbinary that isn't the OpenShift client. Thanks to Brandon Philips for the bug report. (#165)
0.49 (June 7, 2017)
- Backwards incompatible change: Telepresence now supports a alternative to
LD_PRELOAD, a VPN-like connection using sshuttle. As a result the
telepresencecommand line now has an extra required argument
- Added shortcuts for a number of the command line arguments.
0.48 (May 25, 2017)
--swap-deploymentnow works in more cases on OpenShift, in particular when
oc new-appwas used.
0.47 (May 23, 2017)
--swap-deploymentallows replacing an existing Deployment with Telepresence, and then swapping back on exiting the
telepresencecommand line. (#9)
0.46 (May 16, 2017)
- Preliminary support for OpenShift Origin. Thanks to Eli Young for lots of help figuring out the necessary steps. (#132)
- Pods created with
--new-deploymentare now looked up using a unique ID, preventing issues where a pod from a previous run was mistakenly used. (#94)
0.45 (May 8, 2017)
- The Kubernetes-side container used by Telepresence no longer runs as root. This will make support for OpenShift Origin easier, as well as other environments that don't want containers running as root. Thanks to Eli Young for the patch.
- Increased connection timeout from 3 seconds to 10 seconds, in the hopes of reducing spurious disconnects. (#88)
- Common commands that won't work under Telepresence, like
nslookup, will now fail with an appropriate error messages. (#139)
0.44 (May 4, 2017)
telepresencefails with a better error if a too-old version of Python is used. Thanks to Victor Gdalevich for the bug report. (#136)
telepresenceautomatic bug reporting code is triggered by errors during parsing command line arguments.
- If namespace was set using
kubectl config set-contextit will no longer cause Telepresence to break. Thanks to spiddy for the bug report. (#133)
0.43 (May 3, 2017)
--runlets you run a command directly as an alternative to running a shell, e.g.
telepresence --new-deployment test --run python3 myapp.py.
telepresencestarts up much faster by polling more frequently and reducing unnecessary sleeps.
0.42 (April 28, 2017)
~/.bashrcis no longer loaded by the Telepresence shell, to ensure it doesn't break when e.g.
kubectlis run there. Thanks to discopalevo for the bug report. (#126)
- Log files are written to original path, not wherever you happen to
- Better error messages when a custom Deployment is missing or misconfigured. (#121)
0.41 (April 26, 2017)
- Telepresence can run on Windows using the Windows Subsystem for Linux.
- Telepresence now sets a RAM limit on its Kubernetes pods.
- Telepresence Kubernetes pod exits faster.
Releases 0.31 to 0.40 were spent debugging release automation.
0.30 (April 19, 2017)
- Telepresence can now be installed via Homebrew on OS X.
0.29 (April 13, 2017)
- Fix surprising error about
umountwhen shutting down on Linux.
0.28 (April 13, 2017)
- Remote volumes are now accessible by the local process. (#78)
0.27 (April 12, 2017)
--contextoption allows choosing a
kubectlcontext. Thanks to Svend Sorenson for the patch. (#3)
- Telepresence no longer breaks if compression is enabled in
~/.ssh/config. Thanks to Svend Sorenson for the bug report. (#97)
0.26 (April 6, 2017)
Backwards incompatible changes:
- New requirements: openssh client and Python 3 must be installed for Telepresence to work. Docker is no longer required.
- Docker is no longer required to run Telepresence. (#78)
- Local servers just have to listen on localhost (127.0.0.1) in order to be accessible to Kubernetes; previously they had to listen on all interfaces. (#77)
0.25 failed the release process due to some sort of mysterious mistake.
0.24 (April 5, 2017)
KUBECONFIGenvironment variable will now be respected, so long as it points at a path inside your home directory. (#84)
- Errors on startup are noticed, fixing issues with hanging indefinitely in the "Starting proxy..." phase. (#83)
0.23 (April 3, 2017)
- Telepresence no longer uses lots of CPU busy-looping. Thanks to Jean-Paul Calderone for the bug report.
0.22 (March 30, 2017)
- Telepresence can now interact with any Kubernetes namespace, not just the default one. (#74)
Backwards incompatible changes:
- Running Docker containers locally (
--docker-run) is no longer supported. This feature will be reintroduced in the future, with a different implementation, if there is user interest. Add comments here if you're interested.
0.21 (March 28, 2017)
- Telepresence exits when connection is lost to the Kubernetes cluster, rather than hanging.
- Telepresence notices when the proxy container exits and shuts down. (#24)
0.20 (March 27, 2017)
- Telepresence only copies environment variables explicitly configured in the
Deployment, rather than copying all environment variables.
- If there is more than one container Telepresence copies the environment variables from the one running the
datawire/telepresence-k8simage, rather than the first one. (#38)
0.19 (March 24, 2017)
- Fixed another issue with
--run-shellon OS X.
0.18 (March 24, 2017)
--run-shellon OS X, allowing local processes to be proxied.
- Kubernetes-side Docker image is now smaller. (#61)
- When using
--run-shell, allow access to the local host. Thanks to Jean-Paul Calderone for the bug report. (#58)
0.17 (March 21, 2017)
- Fix problem with tmux and wrapping when using
--run-shell. Thanks to Jean-Paul Calderone for the bug report. (#51)
- Fix problem with non-login shells, e.g. with gnome-terminal. Thanks to Jean-Paul Calderone for the bug report. (#52)
- Use the Deployment's namespace, not the Deployment's spec namespace since that may not have a namespace set. Thanks to Jean-Paul Calderone for the patch.
- Hide torsocks messages. Thanks to Jean-Paul Calderone for the bug report. (#50)
0.16 (March 20, 2017)
--run-shellon OS X, hopefully temporarily, since it has issues with System Integrity Protection.
- Fix Python 3 support for running
0.14 (March 20, 2017)
--run-shell, which allows proxying against local processes. (#1)
0.13 (March 16, 2017)
- Increase time out for pods to start up; sometimes it takes more than 30 seconds due to time to download image.
0.12 (March 16, 2017)
- Better way to find matching pod for a Deployment. (#43)
0.11 (March 16, 2017)
- Fixed race condition that impacted
0.10 (March 15, 2017)
- Fixed race condition the first time Telepresence is run against a cluster. (#33)
0.9 (March 15, 2017)
- Telepresence now detects unsupported Docker configurations and complain. (#26)
- Better logging from Docker processes, for easier debugging. (#29)
- Fix problem on OS X where Telepresence failed to work due to inability to share default location of temporary files. (#25)
0.8 (March 14, 2017)
- Basic logging of what Telepresence is doing, for easier debugging.
- Check for Kubernetes and Docker on startup, so problems are caught earlier.
- Better error reporting on crashes. (#19)
- Fixed bug where combination of
--detachbroke Telepresence on versions of Docker older than 1.13. Thanks to Jean-Paul Calderone for reporting the problem. (#18)