From a40e2586875d560383702bda1b9de9b068f05669 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 2 Jun 2021 16:29:02 -0600 Subject: [PATCH 01/49] Get Gatsby to parse the docs This isn't having Gatsby do anything with the docs yet, it's just getting it to load the docs without complaining. - Use the `gatsby-source-filesystem` and `gatsby-plugin-mdx` plugins to load the docs. + It turns out that various JS files in the docs import a bunch of third-party modules, so add those in `package.json`. - Adjust the docs to use an "@src" alias instead of a bunch of "../" sequences, to avoid the docs needing to know where they are subtree'd in at. This alias is configured in `gatsby-node.js`. - Copy some JS-imported resources from getambassador.io.git: + Some images (`src/assets/icons/*.svg`) + Some CSS (`src/components/Layout/vars.less`) - Add a trivial MVP of the JS-imported component, rather than figuring out what all of the etambassador.io.git 's dependencies are in order to copy it. Signed-off-by: Luke Shumaker --- install/old-version-tabs.js | 6 +++--- quick-start/qs-tabs.js | 8 ++++---- quick-start/telepresence-quickstart-landing.less | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/install/old-version-tabs.js b/install/old-version-tabs.js index ce95367915..2b13772438 100644 --- a/install/old-version-tabs.js +++ b/install/old-version-tabs.js @@ -5,9 +5,9 @@ import AppBar from '@material-ui/core/AppBar'; import Tabs from '@material-ui/core/Tabs'; import Tab from '@material-ui/core/Tab'; import Box from '@material-ui/core/Box'; -import CodeBlock from '../../../../../src/components/CodeBlock'; -import LinuxIcon from '../../../../../src/assets/icons/linux.inline.svg'; -import AppleIcon from '../../../../../src/assets/icons/apple.inline.svg'; +import CodeBlock from '@src/components/CodeBlock'; +import LinuxIcon from '@src/assets/icons/linux.inline.svg'; +import AppleIcon from '@src/assets/icons/apple.inline.svg'; function TabPanel(props) { const { children, value, index, ...other } = props; diff --git a/quick-start/qs-tabs.js b/quick-start/qs-tabs.js index d20a161512..457165fae6 100644 --- a/quick-start/qs-tabs.js +++ b/quick-start/qs-tabs.js @@ -6,10 +6,10 @@ import Tabs from '@material-ui/core/Tabs'; import Tab from '@material-ui/core/Tab'; import Box from '@material-ui/core/Box'; import HubspotForm from 'react-hubspot-form'; -import CodeBlock from '../../../../../src/components/CodeBlock'; -import LinuxIcon from '../../../../../src/assets/icons/linux.inline.svg'; -import AppleIcon from '../../../../../src/assets/icons/apple.inline.svg'; -import WindowsIcon from '../../../../../src/assets/icons/windows.inline.svg'; +import CodeBlock from '@src/components/CodeBlock'; +import LinuxIcon from '@src/assets/icons/linux.inline.svg'; +import AppleIcon from '@src/assets/icons/apple.inline.svg'; +import WindowsIcon from '@src/assets/icons/windows.inline.svg'; function TabPanel(props) { const { children, value, index, ...other } = props; diff --git a/quick-start/telepresence-quickstart-landing.less b/quick-start/telepresence-quickstart-landing.less index 5458895c10..eb9f34894a 100644 --- a/quick-start/telepresence-quickstart-landing.less +++ b/quick-start/telepresence-quickstart-landing.less @@ -1,4 +1,4 @@ -@import '../../../../../src/components/Layout/vars.less'; +@import '~@src/components/Layout/vars.less'; .doc-body .telepresence-quickstart-landing { font-family: @InterFont; From 76a3f73ff03a14a7f48bc935f9b452ef1753b8dd Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 4 Jun 2021 03:06:05 -0600 Subject: [PATCH 02/49] docs: Shut up warnings about missing imports They're only warnings and not errors because gatsby-plugin-mdx has broken imports that end up being global so it doesn't *really* matter, but I like not seeing warnings. https://github.com/gatsbyjs/gatsby/issues/17119 --- install/index.md | 1 - reference/intercepts.md | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/install/index.md b/install/index.md index b8eb44261e..e8b2c0f108 100644 --- a/install/index.md +++ b/install/index.md @@ -1,4 +1,3 @@ -import Alert from '@material-ui/lab/Alert'; import QSTabs from '../quick-start/qs-tabs' import OldVersionTabs from './old-version-tabs' diff --git a/reference/intercepts.md b/reference/intercepts.md index d5ea796f10..1557de36b1 100644 --- a/reference/intercepts.md +++ b/reference/intercepts.md @@ -1,4 +1,6 @@ -# Intercepts +import Alert from '@material-ui/lab/Alert'; + +# Intercepts ## Intercept behvaior when logged into Ambassador Cloud From 0aae99fa7af1fa68cc34e34da69bab29aec493f6 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 7 Jun 2021 19:36:22 -0600 Subject: [PATCH 03/49] wip --- doc-links.yml | 132 ++++++++++++++++++++++++-------------------------- 1 file changed, 62 insertions(+), 70 deletions(-) diff --git a/doc-links.yml b/doc-links.yml index 9a30694e25..a86a9bbd79 100644 --- a/doc-links.yml +++ b/doc-links.yml @@ -1,70 +1,62 @@ -- title: Home - link: /docs/ - -- title: Products - collapsable: false - items: - - title: Telepresence - items: - - title: Quick start - link: /quick-start - - title: Install Telepresence - items: - - title: Install - link: /install/ - - title: Upgrade - link: /install/upgrade/ - - title: Migrate from legacy Telepresence - link: /install/migrate-from-legacy/ - - title: Core concepts - items: - - title: The changing development workflow - link: /concepts/devworkflow - - title: The developer experience and the inner dev loop - link: /concepts/devloop - - title: 'Making the remote local: Faster feedback, collaboration and debugging' - link: /concepts/faster - - title: Context propagation - link: /concepts/context-prop - - title: How do I... - items: - - title: Intercept a service in your own environment - link: /howtos/intercepts - - title: Share dev environments with preview URLs - link: /howtos/preview-urls - - title: Proxy outbound traffic to my cluster - link: /howtos/outbound - - title: Technical reference - items: - - title: Architecture - link: /reference/architecture - - title: Networking through Virtual Network Interface - link: /reference/tun-device - - title: Client reference - link: /reference/client - - title: Laptop-side configuration - link: /reference/config - - title: Cluster-side configuration - link: /reference/cluster-config - - title: Using Docker for intercepts - link: /reference/docker-run - - title: Environment variables - link: /reference/environment - - title: Intercepts - link: /reference/intercepts - - title: Volume mounts - link: /reference/volume - - title: DNS resolution - link: /reference/dns - - title: RBAC - link: /reference/rbac - - title: Using Telepresence with Linkerd - link: /reference/linkerd - - title: FAQs - link: /faqs - - title: Troubleshooting - link: /troubleshooting - - title: Community - link: /community - - title: Release Notes - link: /release-notes + - title: Quick start + link: /quick-start + - title: Install Telepresence + items: + - title: Install + link: /install/ + - title: Upgrade + link: /install/upgrade/ + - title: Migrate from legacy Telepresence + link: /install/migrate-from-legacy/ + - title: Core concepts + items: + - title: The changing development workflow + link: /concepts/devworkflow + - title: The developer experience and the inner dev loop + link: /concepts/devloop + - title: 'Making the remote local: Faster feedback, collaboration and debugging' + link: /concepts/faster + - title: Context propagation + link: /concepts/context-prop + - title: How do I... + items: + - title: Intercept a service in your own environment + link: /howtos/intercepts + - title: Share dev environments with preview URLs + link: /howtos/preview-urls + - title: Proxy outbound traffic to my cluster + link: /howtos/outbound + - title: Technical reference + items: + - title: Architecture + link: /reference/architecture + - title: Networking through Virtual Network Interface + link: /reference/tun-device + - title: Client reference + link: /reference/client + - title: Laptop-side configuration + link: /reference/config + - title: Cluster-side configuration + link: /reference/cluster-config + - title: Using Docker for intercepts + link: /reference/docker-run + - title: Environment variables + link: /reference/environment + - title: Intercepts + link: /reference/intercepts + - title: Volume mounts + link: /reference/volume + - title: DNS resolution + link: /reference/dns + - title: RBAC + link: /reference/rbac + - title: Using Telepresence with Linkerd + link: /reference/linkerd + - title: FAQs + link: /faqs + - title: Troubleshooting + link: /troubleshooting + - title: Community + link: /community + - title: Release Notes + link: /release-notes From 5edd2fc729a268210b659578a69c9979abe8fc9e Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 8 Jun 2021 18:50:05 -0600 Subject: [PATCH 04/49] Fix sidebar links --- doc-links.yml | 54 +++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/doc-links.yml b/doc-links.yml index a86a9bbd79..b88200293b 100644 --- a/doc-links.yml +++ b/doc-links.yml @@ -1,62 +1,62 @@ - title: Quick start - link: /quick-start + link: quick-start - title: Install Telepresence items: - title: Install - link: /install/ + link: install/ - title: Upgrade - link: /install/upgrade/ + link: install/upgrade/ - title: Migrate from legacy Telepresence - link: /install/migrate-from-legacy/ + link: install/migrate-from-legacy/ - title: Core concepts items: - title: The changing development workflow - link: /concepts/devworkflow + link: concepts/devworkflow - title: The developer experience and the inner dev loop - link: /concepts/devloop + link: concepts/devloop - title: 'Making the remote local: Faster feedback, collaboration and debugging' - link: /concepts/faster + link: concepts/faster - title: Context propagation - link: /concepts/context-prop + link: concepts/context-prop - title: How do I... items: - title: Intercept a service in your own environment - link: /howtos/intercepts + link: howtos/intercepts - title: Share dev environments with preview URLs - link: /howtos/preview-urls + link: howtos/preview-urls - title: Proxy outbound traffic to my cluster - link: /howtos/outbound + link: howtos/outbound - title: Technical reference items: - title: Architecture - link: /reference/architecture + link: reference/architecture - title: Networking through Virtual Network Interface - link: /reference/tun-device + link: reference/tun-device - title: Client reference - link: /reference/client + link: reference/client - title: Laptop-side configuration - link: /reference/config + link: reference/config - title: Cluster-side configuration - link: /reference/cluster-config + link: reference/cluster-config - title: Using Docker for intercepts - link: /reference/docker-run + link: reference/docker-run - title: Environment variables - link: /reference/environment + link: reference/environment - title: Intercepts - link: /reference/intercepts + link: reference/intercepts - title: Volume mounts - link: /reference/volume + link: reference/volume - title: DNS resolution - link: /reference/dns + link: reference/dns - title: RBAC - link: /reference/rbac + link: reference/rbac - title: Using Telepresence with Linkerd - link: /reference/linkerd + link: reference/linkerd - title: FAQs - link: /faqs + link: faqs - title: Troubleshooting - link: /troubleshooting + link: troubleshooting - title: Community - link: /community + link: community - title: Release Notes - link: /release-notes + link: release-notes From e7f4830854aaf327e1e523805ea2fa0a50f0c134 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 8 Jun 2021 18:52:42 -0600 Subject: [PATCH 05/49] Fix some CSS not getting applied --- quick-start/telepresence-quickstart-landing.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quick-start/telepresence-quickstart-landing.less b/quick-start/telepresence-quickstart-landing.less index eb9f34894a..ddfa964ebc 100644 --- a/quick-start/telepresence-quickstart-landing.less +++ b/quick-start/telepresence-quickstart-landing.less @@ -1,6 +1,6 @@ @import '~@src/components/Layout/vars.less'; -.doc-body .telepresence-quickstart-landing { +.telepresence-quickstart-landing { font-family: @InterFont; color: @black; margin: 0 auto 140px; From 61edc91071896b9afa560ead0e363aa830326ae8 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 9 Jun 2021 14:03:19 -0600 Subject: [PATCH 06/49] Fix the build --- install/upgrade-tabs.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/install/upgrade-tabs.js b/install/upgrade-tabs.js index d41c7c55d3..1d77f3e2fa 100644 --- a/install/upgrade-tabs.js +++ b/install/upgrade-tabs.js @@ -5,10 +5,9 @@ import AppBar from '@material-ui/core/AppBar'; import Tabs from '@material-ui/core/Tabs'; import Tab from '@material-ui/core/Tab'; import Box from '@material-ui/core/Box'; -import HubspotForm from 'react-hubspot-form'; -import CodeBlock from '../../../../../src/components/CodeBlock'; -import LinuxIcon from '../../../../../src/assets/icons/linux.inline.svg'; -import AppleIcon from '../../../../../src/assets/icons/apple.inline.svg'; +import CodeBlock from '@src/components/CodeBlock'; +import LinuxIcon from '@src/assets/icons/linux.inline.svg'; +import AppleIcon from '@src/assets/icons/apple.inline.svg'; function TabPanel(props) { const { children, value, index, ...other } = props; From 77f8486e5fc689c7bdde8dde5e8285f752ce81a4 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 9 Jun 2021 16:47:11 -0600 Subject: [PATCH 07/49] Get the release notes pages working --- release-notes/no-ssh.png | Bin 0 -> 26027 bytes release-notes/run-tp-in-docker.png | Bin 0 -> 12606 bytes release-notes/telepresence-2.2.png | Bin 0 -> 16933 bytes release-notes/telepresence-2.3.0-homebrew.png | Bin 0 -> 70570 bytes .../telepresence-2.3.0-loglevels.png | Bin 0 -> 14998 bytes release-notes/tunnel.jpg | Bin 0 -> 56309 bytes releaseNotes.yml | 21 ++++++++++++++---- 7 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 release-notes/no-ssh.png create mode 100644 release-notes/run-tp-in-docker.png create mode 100644 release-notes/telepresence-2.2.png create mode 100644 release-notes/telepresence-2.3.0-homebrew.png create mode 100644 release-notes/telepresence-2.3.0-loglevels.png create mode 100644 release-notes/tunnel.jpg diff --git a/release-notes/no-ssh.png b/release-notes/no-ssh.png new file mode 100644 index 0000000000000000000000000000000000000000..025f20ab75126830b63dbf3c2accaa26357cae70 GIT binary patch literal 26027 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ð+YQk3ZNpk7H-jJqR^=xt5pK(H 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 literal 0 HcmV?d00001 diff --git a/release-notes/run-tp-in-docker.png b/release-notes/run-tp-in-docker.png new file mode 100644 index 0000000000000000000000000000000000000000..53b66a9b21c6791cc337f5d03ef2569bea237dcc GIT binary patch literal 12606 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 JB&hrSKLAEu^GN^z literal 0 HcmV?d00001 diff --git a/release-notes/telepresence-2.2.png b/release-notes/telepresence-2.2.png new file mode 100644 index 0000000000000000000000000000000000000000..43abc7e89c253359c5c73f285d4b431813bda100 GIT binary patch literal 16933 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
+

Telepresence for Windows is coming soon! Sign up here to notified when it is available. Until then, Telepresence will work with WSL 2.

-
+
Date: Fri, 18 Jun 2021 13:51:52 -0600 Subject: [PATCH 16/49] Add 2.3.2 release notes images Signed-off-by: Luke Shumaker --- release-notes/telepresence-2.3.2-subnets.png | Bin 0 -> 14773 bytes .../telepresence-2.3.2-svcport-annotation.png | Bin 0 -> 9691 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 release-notes/telepresence-2.3.2-subnets.png create mode 100644 release-notes/telepresence-2.3.2-svcport-annotation.png diff --git a/release-notes/telepresence-2.3.2-subnets.png b/release-notes/telepresence-2.3.2-subnets.png new file mode 100644 index 0000000000000000000000000000000000000000..778c722ab8bed9761ec2ab375df376c57b01c19b GIT binary patch literal 14773 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 literal 0 HcmV?d00001 diff --git a/release-notes/telepresence-2.3.2-svcport-annotation.png b/release-notes/telepresence-2.3.2-svcport-annotation.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1e92408d8d755a1839088768e8d61826e3da83 GIT binary patch literal 9691 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 Wdprr$yQJbs(fzw@&5sEH Date: Tue, 6 Jul 2021 10:36:09 -0600 Subject: [PATCH 17/49] Copy over release notes images Signed-off-by: Luke Shumaker --- release-notes/telepresence-2.3.3-helm.png | Bin 0 -> 14923 bytes .../telepresence-2.3.3-namespace-config.png | Bin 0 -> 28240 bytes release-notes/telepresence-2.3.3-to-pod.png | Bin 0 -> 14303 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 release-notes/telepresence-2.3.3-helm.png create mode 100644 release-notes/telepresence-2.3.3-namespace-config.png create mode 100644 release-notes/telepresence-2.3.3-to-pod.png diff --git a/release-notes/telepresence-2.3.3-helm.png b/release-notes/telepresence-2.3.3-helm.png new file mode 100644 index 0000000000000000000000000000000000000000..7b81480a769762ef2795fa23800888456a78f41a GIT binary patch literal 14923 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 Dtos9z literal 0 HcmV?d00001 diff --git a/release-notes/telepresence-2.3.3-to-pod.png b/release-notes/telepresence-2.3.3-to-pod.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7be3f63d942024c5a78c1327ca683f04cc930d GIT binary patch literal 14303 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 literal 0 HcmV?d00001 From e6dfca69e816c89b72269e9e1bb53aa97a8fb77e Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 6 Jul 2021 11:59:25 -0600 Subject: [PATCH 18/49] versions.yml: Bump to 2.3.3 Signed-off-by: Luke Shumaker --- versions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.yml b/versions.yml index b57314db6a..329cdae0c8 100644 --- a/versions.yml +++ b/versions.yml @@ -1,4 +1,4 @@ -version: 2.3.2 +version: "2.3.3" docsVersion: "pre-release" branch: release/v2 productName: "Telepresence" From fc3a45f013270e0839c683f512d80b7757c815f3 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 6 Jul 2021 11:59:06 -0600 Subject: [PATCH 19/49] Copy broken-link fixes forward from v2.3 to pre-release Signed-off-by: Luke Shumaker --- concepts/devloop.md | 2 +- concepts/devworkflow.md | 4 ++-- concepts/faster.md | 4 ++-- faqs.md | 6 +++--- howtos/intercepts.md | 9 +++++++-- reference/intercepts.md | 2 +- reference/linkerd.md | 2 +- 7 files changed, 17 insertions(+), 12 deletions(-) diff --git a/concepts/devloop.md b/concepts/devloop.md index 886338f329..8b1fbf354a 100644 --- a/concepts/devloop.md +++ b/concepts/devloop.md @@ -6,7 +6,7 @@ The developer experience is the workflow a developer uses to develop, test, depl Typically this experience has consisted of both an inner dev loop and an outer dev loop. The inner dev loop is where the individual developer codes and tests, and once the developer pushes their code to version control, the outer dev loop is triggered. -The outer dev loop is _everything else_ that happens leading up to release. This includes code merge, automated code review, test execution, deployment, [controlled (canary) release](../../../../argo/latest/concepts/canary/), and observation of results. The modern outer dev loop might include, for example, an automated CI/CD pipeline as part of a [GitOps workflow](../../../../argo/latest/concepts/gitops/#what-is-gitops) and a progressive delivery strategy relying on automated canaries, i.e. to make the outer loop as fast, efficient and automated as possible. +The outer dev loop is _everything else_ that happens leading up to release. This includes code merge, automated code review, test execution, deployment, [controlled (canary) release](https://www.getambassador.io/docs/argo/latest/concepts/canary/), and observation of results. The modern outer dev loop might include, for example, an automated CI/CD pipeline as part of a [GitOps workflow](https://www.getambassador.io/docs/argo/latest/concepts/gitops/#what-is-gitops) and a progressive delivery strategy relying on automated canaries, i.e. to make the outer loop as fast, efficient and automated as possible. Cloud-native technologies have fundamentally altered the developer experience in two ways: one, developers now have to take extra steps in the inner dev loop; two, developers need to be concerned with the outer dev loop as part of their workflow, even if most of their time is spent in the inner dev loop. diff --git a/concepts/devworkflow.md b/concepts/devworkflow.md index b09f186d0d..fa24fc2bdc 100644 --- a/concepts/devworkflow.md +++ b/concepts/devworkflow.md @@ -1,7 +1,7 @@ # The changing development workflow -A changing workflow is one of the main challenges for developers adopting Kubernetes. Software development itself isn’t the challenge. Developers can continue to [code using the languages and tools with which they are most productive and comfortable](/resources/kubernetes-local-dev-toolkit/). That’s the beauty of containerized development. +A changing workflow is one of the main challenges for developers adopting Kubernetes. Software development itself isn’t the challenge. Developers can continue to [code using the languages and tools with which they are most productive and comfortable](https://www.getambassador.io/resources/kubernetes-local-dev-toolkit/). That’s the beauty of containerized development. -However, the cloud-native, Kubernetes-based approach to development means adopting a new development workflow and development environment. Beyond the basics, such as figuring out how to containerize software, [how to run containers in Kubernetes](/docs/kubernetes/latest/concepts/appdev/), and how to deploy changes into containers, for example, Kubernetes adds complexity before it delivers efficiency. The promise of a “quicker way to develop software” applies at least within the traditional aspects of the inner dev loop, where the single developer codes, builds and tests their software. But both within the inner dev loop and once code is pushed into version control to trigger the outer dev loop, the developer experience changes considerably from what many developers are used to. +However, the cloud-native, Kubernetes-based approach to development means adopting a new development workflow and development environment. Beyond the basics, such as figuring out how to containerize software, [how to run containers in Kubernetes](https://www.getambassador.io/docs/kubernetes/latest/concepts/appdev/), and how to deploy changes into containers, for example, Kubernetes adds complexity before it delivers efficiency. The promise of a “quicker way to develop software” applies at least within the traditional aspects of the inner dev loop, where the single developer codes, builds and tests their software. But both within the inner dev loop and once code is pushed into version control to trigger the outer dev loop, the developer experience changes considerably from what many developers are used to. In this new paradigm, new steps are added to the inner dev loop, and more broadly, the developer begins to share responsibility for the full life cycle of their software. Inevitably this means taking new workflows and tools on board to ensure that the full life cycle continues full speed ahead. diff --git a/concepts/faster.md b/concepts/faster.md index 7aa74ad1ab..b649e41533 100644 --- a/concepts/faster.md +++ b/concepts/faster.md @@ -1,10 +1,10 @@ # Making the remote local: Faster feedback, collaboration and debugging -With the goal of achieving [fast, efficient development](/use-case/local-kubernetes-development/), developers need a set of approaches to bridge the gap between remote Kubernetes clusters and local development, and reduce time to feedback and debugging. +With the goal of achieving [fast, efficient development](https://www.getambassador.io/use-case/local-kubernetes-development/), developers need a set of approaches to bridge the gap between remote Kubernetes clusters and local development, and reduce time to feedback and debugging. ## How should I set up a Kubernetes development environment? -[Setting up a development environment](/resources/development-environments-microservices/) for Kubernetes can be much more complex than the set up for traditional web applications. Creating and maintaining a Kubernetes development environment relies on a number of external dependencies, such as databases or authentication. +[Setting up a development environment](https://www.getambassador.io/resources/development-environments-microservices/) for Kubernetes can be much more complex than the set up for traditional web applications. Creating and maintaining a Kubernetes development environment relies on a number of external dependencies, such as databases or authentication. While there are several ways to set up a Kubernetes development environment, most introduce complexities and impediments to speed. The dev environment should be set up to easily code and test in conditions where a service can access the resources it depends on. diff --git a/faqs.md b/faqs.md index 380a267e83..c6ab9d13b2 100644 --- a/faqs.md +++ b/faqs.md @@ -29,7 +29,7 @@ Telepresence currently works natively on macOS and Linux. We are working on a na - gRPC - GraphQL -If you need another protocol supported, please [drop us a line](../../../../feedback) to request it. +If you need another protocol supported, please [drop us a line](https://www.getambassador.io/feedback/) to request it. ** When using Telepresence to intercept a pod, are the Kubernetes cluster environment variables proxied to my local machine?** @@ -109,7 +109,7 @@ Running this command will also stop the local daemon running. * GitLab * Google -More authentication mechanisms and identity provider support will be added soon. Please [let us know](../../../../feedback) which providers are the most important to you and your team in order for us to prioritize those. +More authentication mechanisms and identity provider support will be added soon. Please [let us know](https://www.getambassador.io/feedback/) which providers are the most important to you and your team in order for us to prioritize those. ** Is Telepresence open source?** @@ -117,4 +117,4 @@ More authentication mechanisms and identity provider support will be added soon. ** How do I share my feedback on Telepresence?** - Your feedback is always appreciated and helps us build a product that provides as much value as possible for our community. You can chat with us directly on our [feedback page](../../../../feedback), or you can [join our Slack channel](https://a8r.io/Slack) to share your thoughts. + Your feedback is always appreciated and helps us build a product that provides as much value as possible for our community. You can chat with us directly on our [feedback page](https://www.getambassador.io/feedback/), or you can [join our Slack channel](https://a8r.io/Slack) to share your thoughts. diff --git a/howtos/intercepts.md b/howtos/intercepts.md index 2d98a18c41..e250343885 100644 --- a/howtos/intercepts.md +++ b/howtos/intercepts.md @@ -23,7 +23,12 @@ import QSCards from '../quick-start/qs-cards' For a detailed walk-though on creating intercepts using our sample app, follow the quick start guide. ## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and [set up](https://kubernetes.io/docs/tasks/tools/install-kubectl/#verifying-kubectl-configuration) to use a Kubernetes cluster, preferably an empty test cluster. +You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) +and set up +([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / + [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / + [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) +to use a Kubernetes cluster, preferably an empty test cluster. If you have used Telepresence previously, please first reset your Telepresence deployment with: `telepresence uninstall --everything`. @@ -187,7 +192,7 @@ be routed to your cluster as usual. 4. **Ingress layer 5 hostname**: If your ingress controller routes traffic based on a domain name (often using the `Host` HTTP header), this is the value you would need to enter here. - Telepresence supports any ingress controller, not just Ambassador Edge Stack. + Telepresence supports any ingress controller, not just Ambassador Edge Stack. For the example below, you will create a preview URL that will send traffic to the `ambassador` service in the `ambassador` namespace on port `443` using TLS encryption and setting the `Host` HTTP header to `dev-environment.edgestack.me`: diff --git a/reference/intercepts.md b/reference/intercepts.md index bb3853e082..6ddebd004d 100644 --- a/reference/intercepts.md +++ b/reference/intercepts.md @@ -111,7 +111,7 @@ If you want to change which port has been intercepted, you can create a new inte ## Creating an intercept When multiple services match your workload -Oftentimes, there's a 1-to-1 relationship between a service and a workload, so telepresence is able to auto-detect which service it should intercept based on the workload you are trying to intercept. But if you use something like [Argo](../../../../argo/latest/), it uses two services (that use the same labels) to manage traffic between a canary and a stable service. +Oftentimes, there's a 1-to-1 relationship between a service and a workload, so telepresence is able to auto-detect which service it should intercept based on the workload you are trying to intercept. But if you use something like [Argo](https://www.getambassador.io/docs/argo/latest/), it uses two services (that use the same labels) to manage traffic between a canary and a stable service. Fortunately, if you know which service you want to use when intercepting a workload, you can use the --service flag. So in the aforementioned demo, if you wanted to use the `echo-stable` service when intercepting your workload, your command would look like this: ``` diff --git a/reference/linkerd.md b/reference/linkerd.md index 7b184cb4fb..e9c5acea7d 100644 --- a/reference/linkerd.md +++ b/reference/linkerd.md @@ -21,7 +21,7 @@ The Traffic Agent uses port 8081 for its API, 8022 for SSHFS, and 6001 for the a 1. [Telepresence binary](../../install) 2. Linkerd control plane [installed to cluster](https://linkerd.io/2.10/tasks/install/) 3. Kubectl -4. [Working ingress controller](../../../../edge-stack/latest/howtos/linkerd2) +4. [Working ingress controller](https://www.getambassador.io/docs/edge-stack/latest/howtos/linkerd2) ## Deploy Save and deploy the following YAML. Note the `config.linkerd.io/skip-outbound-ports` annotation in the metadata of the pod template. From 9b4975b10c8af17d7f22f3fc6fd0135ed4bf2970 Mon Sep 17 00:00:00 2001 From: Thomas Hallgren Date: Sun, 4 Jul 2021 12:48:50 +0200 Subject: [PATCH 20/49] Add troubleshooting section for sshfs on macOS. Signed-off-by: Thomas Hallgren (cherry picked from commit ea518181e7c0e3739bbc71140a8a2be54108fe15) Signed-off-by: Luke Shumaker --- troubleshooting/index.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/troubleshooting/index.md b/troubleshooting/index.md index 8c6374bfea..de935870d0 100644 --- a/troubleshooting/index.md +++ b/troubleshooting/index.md @@ -39,3 +39,24 @@ Any org with a red X requires access to be granted to Ambassador Labs. Owners o Once approval is granted, you will have to log out of Ambassador Cloud then back in to select the org. +### Volume mounts are not working on macOS + +It's necessary to have `sshfs` installed in order for volume mounts to work correctly during intercepts. Lately there's been some issues using `brew install sshfs` a macOS workstation because the required component `osxfuse` (now named `macfuse`) isn't open source and hence, no longer supported. As a workaround, you can now use `gromgit/fuse/sshfs-mac` instead. Follow these steps: + +1. Remove old sshfs, macfuse, osxfuse using `brew uninstall` +2. `brew install --cask macfuse` +3. `brew install gromgit/fuse/sshfs-mac` +4. `brew link --overwrite sshfs-mac` + +Now sshfs -V shows you the correct version, e.g.: +``` +$ sshfs -V +SSHFS version 2.10 +FUSE library version: 2.9.9 +fuse: no mount point +``` + +but one more thing must be done before it works OK: +5. Try a mount (or an intercept that performs a mount). It will fail because you need to give permission to “Benjamin Fleischer” to execute a kernel extension (a pop-up appears that takes you to the system preferences). +6. Approve the needed permission +7. Reboot your computer. From 3b2193d70b8a3fd9c7f32acd794ea005f22bbb2b Mon Sep 17 00:00:00 2001 From: Thomas Hallgren Date: Sun, 4 Jul 2021 13:04:39 +0200 Subject: [PATCH 21/49] Release note for the intercept survival bugfix. Signed-off-by: Thomas Hallgren (cherry picked from commit 3ad5a13d310d0a14b982dd3216ad81acaa28504f) Signed-off-by: Luke Shumaker --- releaseNotes.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/releaseNotes.yml b/releaseNotes.yml index 054ee43ab6..d2c309dda2 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -57,6 +57,11 @@ items: image: ./telepresence-2.3.3-to-pod.png docs: reference/intercept type: feature + - type: bugfix + title: Intercepts will survive deletion of intercepted pod + body: >- + An intercept will survive deletion of the intercepted pod provided that another + pod is created (or already exists) that can take over. - version: 2.3.2 date: '2021-06-18' notes: From 7e710133bc7c7255faf082a7cee13c39a5ae643e Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 6 Jul 2021 11:53:02 -0600 Subject: [PATCH 22/49] Tel 2.3.3 releaseNotes: Proof-read, sync with CHANGELOG.md Signed-off-by: Luke Shumaker --- releaseNotes.yml | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index d2c309dda2..fb632b7ebb 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -33,35 +33,52 @@ items: - version: 2.3.3 date: 'TBD' notes: - # Headliners - type: feature title: Traffic Manager Helm Chart body: >- - We now support installing the Traffic Manager via Helm. + Telepresence now supports installing the Traffic Manager via Helm. This will make it easy for operators to install and configure the - server-side components of Telepresence separately from the CLI - (which in turn allows for better separation of permissions). + server-side components of Telepresence separately from the CLI (which + in turn allows for better separation of permissions). image: ./telepresence-2.3.3-helm.png docs: install/helm/ - type: feature title: Traffic-manager in custom namespace body: >- - As the traffic manager can now be installed in any namespace via helm, - telepresence can now be configured to look for the traffic manager in - a namespace other than ambassador. This can be configured - on a per-cluster basis. + As the traffic manager can now be installed in any namespace via Helm, + Telepresence can now be configured to look for the Traffic Manager in + a namespace other than ambassador. This can be + configured on a per-cluster basis. image: ./telepresence-2.3.3-namespace-config.png docs: reference/config - - title: intercept --to-pod - body: "telepresence intercept now supports a --to-pod flag that can be used to port-forward sidecars' ports from an intercepted pod" + - type: feature + title: Intercept --to-pod + body: >- + telepresence intercept now supports a + --to-pod flag that can be used to port-forward sidecars' + ports from an intercepted pod. image: ./telepresence-2.3.3-to-pod.png docs: reference/intercept - type: feature + - type: change + title: Change in migration from edgectl + body: >- + Telepresence no longer automatically shuts down the old + api_version=1 edgectl daemon. If migrating + from such an old version of edgectl you must now manually + shut down the edgectl daemon before running Telepresence. + This was already the case when migrating from the newer + api_version=2 edgectl. + - type: bugfix + title: Fixed error during shutdown + body: >- + The root daemon no longer terminates when the user daemon disconnects + from its gRPC streams, and instead waits to be terminated by the CLI. + This could cause problems with things not being cleaned up correctly. - type: bugfix title: Intercepts will survive deletion of intercepted pod body: >- - An intercept will survive deletion of the intercepted pod provided that another - pod is created (or already exists) that can take over. + An intercept will survive deletion of the intercepted pod provided + that another pod is created (or already exists) that can take over. - version: 2.3.2 date: '2021-06-18' notes: From 70c99f6fb81ec77b62d41786d11f35aae443095f Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 6 Jul 2021 12:26:21 -0600 Subject: [PATCH 23/49] Touch up releaseNotes per Donny Signed-off-by: Luke Shumaker --- releaseNotes.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index fb632b7ebb..8063c7f38d 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -45,10 +45,10 @@ items: - type: feature title: Traffic-manager in custom namespace body: >- - As the traffic manager can now be installed in any namespace via Helm, - Telepresence can now be configured to look for the Traffic Manager in - a namespace other than ambassador. This can be - configured on a per-cluster basis. + As the traffic-manager can now be installed in any + namespace via Helm, Telepresence can now be configured to look for the + Traffic Manager in a namespace other than ambassador. + This can be configured on a per-cluster basis. image: ./telepresence-2.3.3-namespace-config.png docs: reference/config - type: feature From 36e3bf315fe67e72b10783a364698c7416c5b85d Mon Sep 17 00:00:00 2001 From: Jose Cortes Date: Tue, 6 Jul 2021 17:33:30 -0400 Subject: [PATCH 24/49] Fix malformed release note title Signed-off-by: Jose Cortes --- releaseNotes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index 8063c7f38d..3c72432969 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -52,7 +52,7 @@ items: image: ./telepresence-2.3.3-namespace-config.png docs: reference/config - type: feature - title: Intercept --to-pod + title: Intercept --to-pod body: >- telepresence intercept now supports a --to-pod flag that can be used to port-forward sidecars' From f65ea9f58c14e412357e79c87674927c5f950f8d Mon Sep 17 00:00:00 2001 From: Jose Cortes Date: Tue, 6 Jul 2021 17:34:46 -0400 Subject: [PATCH 25/49] Fix bad links in release note for --to-pod Signed-off-by: Jose Cortes --- releaseNotes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index 3c72432969..9f9dd2223a 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -58,7 +58,7 @@ items: --to-pod flag that can be used to port-forward sidecars' ports from an intercepted pod. image: ./telepresence-2.3.3-to-pod.png - docs: reference/intercept + docs: reference/intercepts - type: change title: Change in migration from edgectl body: >- From ed7dc4726cb848ed952db87c33f84547df3d934e Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 7 Jul 2021 12:34:58 -0400 Subject: [PATCH 26/49] Fixing last minute changes we made Signed-off-by: Donny Yung --- releaseNotes.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index 9f9dd2223a..e43d4a82a2 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -31,7 +31,7 @@ changelog: https://github.com/telepresenceio/telepresence/blob/$branch$/CHANGELO items: - version: 2.3.3 - date: 'TBD' + date: '2021-07-07' notes: - type: feature title: Traffic Manager Helm Chart @@ -60,7 +60,7 @@ items: image: ./telepresence-2.3.3-to-pod.png docs: reference/intercepts - type: change - title: Change in migration from edgectl + title: Change in migration from edgectl body: >- Telepresence no longer automatically shuts down the old api_version=1 edgectl daemon. If migrating From cacce953ebb615f3089ff9203763604af9fcd794 Mon Sep 17 00:00:00 2001 From: Jose Cortes Date: Fri, 9 Jul 2021 09:38:38 -0400 Subject: [PATCH 27/49] Correctly document required cluster-wide permissions for users Signed-off-by: Jose Cortes --- reference/rbac.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/reference/rbac.md b/reference/rbac.md index ddb94333e4..4facd8b560 100644 --- a/reference/rbac.md +++ b/reference/rbac.md @@ -135,7 +135,7 @@ rules: - apiGroups: - "" resources: ["services"] - verbs: ["get", "list", "watch", "update"] + verbs: ["update"] - apiGroups: - "" resources: ["pods/portforward"] @@ -191,6 +191,10 @@ rules: - "" resources: ["namespaces"] verbs: ["get", "list", "watch"] +- apiGroups: + - "" + resources: ["services"] + verbs: ["get", "list", "watch"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 From 7ba8b186242bd687c46d944068c0e74c96751099 Mon Sep 17 00:00:00 2001 From: Jose Cortes Date: Fri, 9 Jul 2021 12:19:35 -0400 Subject: [PATCH 28/49] Release note for helm chart fix Signed-off-by: Jose Cortes --- releaseNotes.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/releaseNotes.yml b/releaseNotes.yml index e43d4a82a2..b7813fedf9 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -30,6 +30,14 @@ docDescription: >- changelog: https://github.com/telepresenceio/telepresence/blob/$branch$/CHANGELOG.md items: + - version: 2.3.4 + date: '2021-07-09' + notes: + - type: bugfix + title: Helm Chart fixed for clientRbac.namespaced + body: >- + The Telepresence helm chart no longer fails when installing with `--set clientRbac.namespaced=true` + docs: install/helm - version: 2.3.3 date: '2021-07-07' notes: From 109c16f6ca743b1d1f052c53527e85dcf87c429d Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Fri, 9 Jul 2021 12:59:31 -0400 Subject: [PATCH 29/49] Have release notes match changelog Signed-off-by: Donny Yung --- releaseNotes.yml | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index b7813fedf9..3359619593 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -33,10 +33,31 @@ items: - version: 2.3.4 date: '2021-07-09' notes: + - type: bugfix + title: Improved IP log statements + body: >- + Fixed log statements that were printing incorrect IP addresses. + - type: bugfix + title: Improved messaging when multiple services match a workload + body: >- + If multiple services matched a workload when performing an intercept, Telepresence would panic. + It now gives the correct error message, instructing the user on how to specify which + service the intercept should use. + - type: bugfix + title: Traffic-manger determine's service subnet in own namespace + body: >- + Telepresence will now determine the service subnet by creating a dummy-service in its own + namespace, instead of the default namespace, which was causing RBAC permissions issues in + some clusters. + - type: bugfix + title: Telepresence connect respects pre-existing clusterrole + body: >- + When Telepresence connects, if the traffic-manager's desired clusterrole already exists in the + cluster, Telepresence will no longer try to update the clusterrole. - type: bugfix title: Helm Chart fixed for clientRbac.namespaced body: >- - The Telepresence helm chart no longer fails when installing with `--set clientRbac.namespaced=true` + The Telepresence helm chart no longer fails when installing with `--set clientRbac.namespaced=true`. docs: install/helm - version: 2.3.3 date: '2021-07-07' From bbea5aa2f6e93ced6d728bfc84da81e42607a9bd Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Fri, 9 Jul 2021 14:27:24 -0400 Subject: [PATCH 30/49] address PR comments Signed-off-by: Donny Yung --- releaseNotes.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index 3359619593..b198a88def 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -36,15 +36,16 @@ items: - type: bugfix title: Improved IP log statements body: >- - Fixed log statements that were printing incorrect IP addresses. + Some log statements were printing incorrect characters, when they should have been IP addresses. + This has been resolved to include more accurate and useful logging. - type: bugfix title: Improved messaging when multiple services match a workload body: >- - If multiple services matched a workload when performing an intercept, Telepresence would panic. + If multiple services matched a workload when performing an intercept, Telepresence would crash. It now gives the correct error message, instructing the user on how to specify which service the intercept should use. - type: bugfix - title: Traffic-manger determine's service subnet in own namespace + title: Traffic-manger creates services in its own namespace to determine subnet body: >- Telepresence will now determine the service subnet by creating a dummy-service in its own namespace, instead of the default namespace, which was causing RBAC permissions issues in @@ -57,7 +58,7 @@ items: - type: bugfix title: Helm Chart fixed for clientRbac.namespaced body: >- - The Telepresence helm chart no longer fails when installing with `--set clientRbac.namespaced=true`. + The Telepresence Helm chart no longer fails when installing with --set clientRbac.namespaced=true. docs: install/helm - version: 2.3.3 date: '2021-07-07' From 448d5ca9930585c48a8dd2d6aada2ed09c541190 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Fri, 9 Jul 2021 14:38:24 -0400 Subject: [PATCH 31/49] add image Signed-off-by: Donny Yung --- .../telepresence-2.3.4-improved-error.png | Bin 0 -> 54153 bytes releaseNotes.yml | 1 + 2 files changed, 1 insertion(+) create mode 100644 release-notes/telepresence-2.3.4-improved-error.png diff --git a/release-notes/telepresence-2.3.4-improved-error.png b/release-notes/telepresence-2.3.4-improved-error.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8a12986c923021c4d43dfd0fc627dd70878daf GIT binary patch literal 54153 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 literal 0 HcmV?d00001 diff --git a/releaseNotes.yml b/releaseNotes.yml index b198a88def..880b8470d8 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -44,6 +44,7 @@ items: If multiple services matched a workload when performing an intercept, Telepresence would crash. It now gives the correct error message, instructing the user on how to specify which service the intercept should use. + image: ./telepresence-2.3.4-improved-error.png - type: bugfix title: Traffic-manger creates services in its own namespace to determine subnet body: >- From 454ff01c2f49e64c1279b5654226def8d77e89a0 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Fri, 9 Jul 2021 15:01:54 -0400 Subject: [PATCH 32/49] add docs to releaseNotes Signed-off-by: Donny Yung --- release-notes/telepresence-2.3.4-ip-error.png | Bin 0 -> 11632 bytes releaseNotes.yml | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 release-notes/telepresence-2.3.4-ip-error.png diff --git a/release-notes/telepresence-2.3.4-ip-error.png b/release-notes/telepresence-2.3.4-ip-error.png new file mode 100644 index 0000000000000000000000000000000000000000..1d37380c7d2fbd8453b07764384097b621999951 GIT binary patch literal 11632 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 Some log statements were printing incorrect characters, when they should have been IP addresses. This has been resolved to include more accurate and useful logging. + docs: reference/config/#log-levels + image: ./telepresence-2.3.4-ip-error.png - type: bugfix title: Improved messaging when multiple services match a workload body: >- @@ -45,17 +47,20 @@ items: It now gives the correct error message, instructing the user on how to specify which service the intercept should use. image: ./telepresence-2.3.4-improved-error.png + docs: reference/intercepts - type: bugfix title: Traffic-manger creates services in its own namespace to determine subnet body: >- Telepresence will now determine the service subnet by creating a dummy-service in its own namespace, instead of the default namespace, which was causing RBAC permissions issues in some clusters. + docs: reference/routing/#subnets - type: bugfix title: Telepresence connect respects pre-existing clusterrole body: >- When Telepresence connects, if the traffic-manager's desired clusterrole already exists in the cluster, Telepresence will no longer try to update the clusterrole. + docs: reference/rbac - type: bugfix title: Helm Chart fixed for clientRbac.namespaced body: >- From 134dc9ed99ab0d49c49a380d5b35b511458cc214 Mon Sep 17 00:00:00 2001 From: Thomas Hallgren Date: Sun, 11 Jul 2021 11:04:12 +0200 Subject: [PATCH 33/49] Clarify that --local-only have no effect on connection origin. Relates to: telepresenceio/telepresence#1848 Signed-off-by: Thomas Hallgren --- howtos/outbound.md | 2 +- reference/routing.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/howtos/outbound.md b/howtos/outbound.md index 83ec20b018..0d58f1f6e5 100644 --- a/howtos/outbound.md +++ b/howtos/outbound.md @@ -75,7 +75,7 @@ When using this option, it is important to include all namespaces containing ser An intercept with the flag`--local-only` can be used to control outbound connectivity to specific namespaces. -When developing services that have not yet been deployed to the cluster, it can be necessary to provide outbound connectivity to the namespace where the service is intended to be deployed so that it can access other services in that namespace without using qualified names. +When developing services that have not yet been deployed to the cluster, it can be necessary to provide outbound connectivity to the namespace where the service is intended to be deployed so that it can access other services in that namespace without using qualified names. Worth noting though, is that a local-only intercept will not cause outbound connections to originate from the intercepted namespace. Only a real intercept can do that. The reason for this is that in order to establish correct origin, the connection must be routed to a `traffic-agent`of an intercepted pod. For local-only intercepts, the outbound connections will originate from the `traffic-manager`. ``` $ telepresence intercept --namespace --local-only diff --git a/reference/routing.md b/reference/routing.md index 036dd5b1a2..75e36f00fe 100644 --- a/reference/routing.md +++ b/reference/routing.md @@ -28,6 +28,8 @@ The complete set of subnets that the [VIF](../tun-device) will be configured wit #### Connection origin A request to connect to an IP-address that belongs to one of the subnets of the [VIF](../tun-device) will cause a connection request to be made in the cluster. As with host name lookups, the request will originate from the traffic-manager unless the client has ongoing intercepts. If it does, one of the intercepted pods will be chosen, and the request will instead originate from that pod. This is a best-effort approach. Telepresence only knows that the request originated from the workstation. It cannot know that it is intended to originate from a specific pod when multiple intercepts are active. +A `--local-only` intercept will not have any effect on the connection origin because there is no pod from which the connection can originate. The intercept must be made on a workload that has been deployed in the cluster if there's a requirement for correct connection origin. + There are multiple reasons for doing this. One is that it is important that the request originates from the correct namespace. Example: ```bash From 41ea69157fde6cdec1837654046ca0b3ce9f4bb7 Mon Sep 17 00:00:00 2001 From: Thomas Hallgren Date: Sun, 4 Jul 2021 12:32:09 +0200 Subject: [PATCH 34/49] Remove obsolete port numbers from linkerd skip-outbound-ports. Only the 8081 port needs to be skipped. Port 8022 was no longer used when we stopped using ssh port-forwards and sshd, and we stopped using 6000-7999 in 2.3.2. Signed-off-by: Thomas Hallgren --- reference/linkerd.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reference/linkerd.md b/reference/linkerd.md index e9c5acea7d..9b903fa769 100644 --- a/reference/linkerd.md +++ b/reference/linkerd.md @@ -12,10 +12,10 @@ spec: template: metadata: annotations: - config.linkerd.io/skip-outbound-ports: "8081,8022,6000-7999" + config.linkerd.io/skip-outbound-ports: "8081" ``` -The Traffic Agent uses port 8081 for its API, 8022 for SSHFS, and 6001 for the actual tunnel between the Traffic Manager and the local system. Telling Linkerd to skip these ports allows the Traffic Agent sidecar to fully communicate with the Traffic Manager, and therefore the rest of the Telepresence system. +The local system and the Traffic Agent connect to the Traffic Manager using its gRPC API on port 8081. Telling Linkerd to skip that port allows the Traffic Agent sidecar to fully communicate with the Traffic Manager, and therefore the rest of the Telepresence system. ## Prerequisites 1. [Telepresence binary](../../install) From 6263302607d825f6d6a0bb8adbd9c937602f9747 Mon Sep 17 00:00:00 2001 From: Jose Cortes Date: Mon, 28 Jun 2021 15:54:38 -0400 Subject: [PATCH 35/49] Documentation for namespace-scoped traffic manager. Signed-off-by: Jose Cortes --- install/helm.md | 112 +++++++++++++++++- ...sence-2.3.5-traffic-manager-namespaces.png | Bin 0 -> 8349 bytes releaseNotes.yml | 11 ++ 3 files changed, 117 insertions(+), 6 deletions(-) create mode 100644 release-notes/telepresence-2.3.5-traffic-manager-namespaces.png diff --git a/install/helm.md b/install/helm.md index 60b4947ec9..bcb97d7c64 100644 --- a/install/helm.md +++ b/install/helm.md @@ -8,7 +8,7 @@ The Telepresence Helm chart is hosted by Ambassador Labs and published at `https Start by adding this repo to your Helm client with the following command: -``` +```shell helm repo add datawire https://app.getambassador.io helm repo update ``` @@ -19,13 +19,13 @@ When you run the Helm chart, it installs all the components required for the Tel 1. If you are installing the Telepresence Traffic Manager **for the first time on your cluster**, create the `ambassador` namespace in your cluster: - ``` + ```shell kubectl create namespace ambassador ``` 2. Install the Telepresenc Traffic Manager with the following command: - ``` + ```shell helm install traffic-manager --namespace ambassador datawire/telepresence ``` @@ -37,7 +37,7 @@ The Helm chart supports being installed into any namespace, not necessarily `amb For example, if you wanted to deploy the traffic manager to the `staging` namespace: ```bash -helm install traffic-manager --namespace custom-namespace datawire/telepresence +helm install traffic-manager --namespace staging datawire/telepresence ``` Note that users of telepresence will need to configure their kubeconfig to find this installation of the traffic manager: @@ -51,13 +51,113 @@ clusters: - name: telepresence.io extension: manager: - namespace: custom-namespace + namespace: staging name: example-cluster ``` See [the kubeconfig documentation](../reference/config#manager) for more information. -## Install RBAC only +## RBAC + +### Installing a namespace-scoped traffic manager + +You might not want the Traffic Manager to have permissions across the entire kubernetes cluster, or you might want to be able to install multiple traffic managers per cluster (for example, to separate them by environment). +In these cases, the traffic manager supports being installed with a namespace scope, allowing cluster administrators to limit the reach of a traffic manager's permissions. + +For example, suppose you want a Traffic Manager that only works on namespaces `dev` and `staging`. +To do this, create a `values.yaml` like the following: + +```yaml +managerRbac: + create: true + namespaced: true + namespaces: + - dev + - staging +``` + +This can then be installed via: + +```bash +helm install traffic-manager --namespace staging datawire/telepresence -f ./values.yaml +``` + +**NOTE** Do not install namespace-scoped Traffic Managers and a global Traffic Manager in the same cluster, as it could have unexpected effects. + +#### Namespace collision detection + +The Telepresence Helm chart will try to prevent namespace-scoped Traffic Managers from managing the same namespaces. +It will do this by creating a ConfigMap, called `traffic-manager-claim`, in each namespace that a given install manages. + +So, for example, suppose you install one Traffic Manager to manage namespaces `dev` and `staging`, as: + +```bash +helm install traffic-manager --namespace dev datawire/telepresence --set 'managerRbac.namespaced=true' --set 'managerRbac.namespaces={dev,staging}' +``` + +You might then attempt to install another Traffic Manager to manage namespaces `staging` and `prod`: + +```bash +helm install traffic-manager --namespace prod datawire/telepresence --set 'managerRbac.namespaced=true' --set 'managerRbac.namespaces={staging,prod}' +``` + +This would fail with an error: + +``` +Error: rendered manifests contain a resource that already exists. Unable to continue with install: ConfigMap "traffic-manager-claim" in namespace "staging" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key "meta.helm.sh/release-namespace" must equal "prod": current value is "dev" +``` + +To fix this error, fix the overlap either by removing `staging` from the first install, or from the second. + +#### Namespace scoped user permissions + +Optionally, you can also configure user rbac to be scoped to the same namespaces as the manager itself. +You might want to do this if you don't give your users permissions throughout the cluster, and want to make sure they only have the minimum set required to perform telepresence commands on certain namespaces. + +Continuing with the `dev` and `staging` example from the previous section, simply add the following to `values.yaml` (make sure you set the `subjects`!): + +```yaml +clientRbac: + create: true + + # These are the users or groups to which the user rbac will be bound. + # This MUST be set. + subjects: {} + # - kind: User + # name: jane + # apiGroup: rbac.authorization.k8s.io + + namespaced: true + + namespaces: + - dev + - staging +``` + +#### Namespace-scoped webhook + +If you wish to use the traffic-manager's [mutating webhook](../reference/cluster-config#mutating-webhook) with a namespace-scoped traffic manager, you will have to ensure that each namespace has an `app.kubernetes.io/name` label that is identical to its name: + +```yaml +apiVersion: v1 +kind: Namespace +metadata: + name: staging + labels: + app.kubernetes.io/name: staging +``` + +You can also use `kubectl label` to add the label to an existing namespace, e.g.: + +```shell +kubectl label namespace staging app.kubernetes.io/name=staging +``` + +This is required because the mutating webhook will use the name label to find namespaces to operate on. + +**NOTE** This labelling happens automatically in kubernetes >= 1.21. + +### Installing RBAC only Telepresence Traffic Manager does require some [RBAC](../../refrence/rbac/) for the traffic-manager deployment itself, as well as for users. To make it easier for operators to introspect / manage RBAC separately, you can use `rbac.only=true` to diff --git a/release-notes/telepresence-2.3.5-traffic-manager-namespaces.png b/release-notes/telepresence-2.3.5-traffic-manager-namespaces.png new file mode 100644 index 0000000000000000000000000000000000000000..d29a05ad711ade81e34545b113b6d23d7a4a86a0 GIT binary patch literal 8349 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 literal 0 HcmV?d00001 diff --git a/releaseNotes.yml b/releaseNotes.yml index 41b4329e8b..dffb29559f 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -30,6 +30,17 @@ docDescription: >- changelog: https://github.com/telepresenceio/telepresence/blob/$branch$/CHANGELOG.md items: + - version: 2.3.5 + date: 'TBD' + notes: + - type: feature + title: traffic-manager in multiple namespaces + body: >- + We now support installing multiple traffic managers in the same cluster. + This will allow operators to install deployments of telepresence that are + limited to certain namespaces. + image: ./telepresence-2.3.5-traffic-manager-namespaces.png + docs: reference/config - version: 2.3.4 date: '2021-07-09' notes: From 835137c8d3342c6b3b017ac413ab245a817ac882 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 14 Jul 2021 10:06:23 -0400 Subject: [PATCH 36/49] Add nightly build info to docs Signed-off-by: Donny Yung --- install/index.md | 18 ++++++- install/nightly-version-tabs.js | 84 +++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 install/nightly-version-tabs.js diff --git a/install/index.md b/install/index.md index e8b2c0f108..0103a94d59 100644 --- a/install/index.md +++ b/install/index.md @@ -1,5 +1,6 @@ import QSTabs from '../quick-start/qs-tabs' import OldVersionTabs from './old-version-tabs' +import NightlyVersionTabs from './nightly-version-tabs' # Install @@ -11,8 +12,23 @@ Install Telepresence by running the commands below for your OS. Follow one of our [quick start guides](../quick-start/) to start using Telepresence, either with our sample app or in your own environment. +## Installing nightly versions of Telepresence + +We build and publish the contents of the default branch, [release/v2](https://github.com/telepresenceio/telepresence), of Telepresence +nightly, Monday through Friday. + +The tags are formatted like so: `vX.Y.Z-nightly-$gitShortHash`. + +`vX.Y.Z` will be the most recent version of Telepresence released. + +`$gitShortHash` will be the short hash of the git commit of the build. + +Use these URLs to download the most recent nightly build. + + + ## Installing older versions of Telepresence -Use these URLs to download an older version for your OS, replacing `x.y.z` with the versions you want. +Use these URLs to download an older version for your OS (including older nightly builds), replacing `x.y.z` with the versions you want. diff --git a/install/nightly-version-tabs.js b/install/nightly-version-tabs.js new file mode 100644 index 0000000000..19a653e9ff --- /dev/null +++ b/install/nightly-version-tabs.js @@ -0,0 +1,84 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { makeStyles } from '@material-ui/core/styles'; +import AppBar from '@material-ui/core/AppBar'; +import Tabs from '@material-ui/core/Tabs'; +import Tab from '@material-ui/core/Tab'; +import Box from '@material-ui/core/Box'; +import CodeBlock from '@src/components/CodeBlock'; +import LinuxIcon from '@src/assets/icons/linux.inline.svg'; +import AppleIcon from '@src/assets/icons/apple.inline.svg'; + +function TabPanel(props) { + const { children, value, index, ...other } = props; + + return ( +

+ ); +} + +TabPanel.propTypes = { + children: PropTypes.node, + index: PropTypes.any.isRequired, + value: PropTypes.any.isRequired, +}; + +function a11yProps(index) { + return { + id: `simple-tab-${index}`, + 'aria-controls': `simple-tabpanel-${index}`, + }; +} + +const useStyles = makeStyles((theme) => ({ + root: { + flexGrow: 1, + backgroundColor: 'transparent', + }, +})); + +export default function SimpleTabs() { + const classes = useStyles(); + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( +
+ + + } label="macOS" {...a11yProps(0)} style={{ minWidth: "10%", textTransform: 'none' }} /> + } label="Linux" {...a11yProps(1)} style={{ minWidth: "10%", textTransform: 'none' }} /> + + + + + { + 'https://app.getambassador.io/download/tel2/darwin/amd64/nightly/telepresence' + } + + + + + { + 'https://app.getambassador.io/download/tel2/linux/amd64/nightly/telepresence' + } + + +
+ ); +} From fe98bf42b30e3778e22da1145994600ff617ec3c Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 14 Jul 2021 10:47:03 -0400 Subject: [PATCH 37/49] Fix explanation of v.X.Y.Z Signed-off-by: Donny Yung --- install/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install/index.md b/install/index.md index 0103a94d59..d6ef081c52 100644 --- a/install/index.md +++ b/install/index.md @@ -19,7 +19,9 @@ nightly, Monday through Friday. The tags are formatted like so: `vX.Y.Z-nightly-$gitShortHash`. -`vX.Y.Z` will be the most recent version of Telepresence released. +`vX.Y.Z` is the most recent release of Telepresence with the patch version (Z) bumped one higher. +For example, if our last release was 2.3.4, nightly builds would start with v2.3.5, until a new +version of Telepresence is released. `$gitShortHash` will be the short hash of the git commit of the build. From 9ffa87b1a5f68f7083db053060795ea8a215e6e8 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 14 Jul 2021 10:48:54 -0400 Subject: [PATCH 38/49] fix old-version-tabs for latest Signed-off-by: Donny Yung --- install/old-version-tabs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/old-version-tabs.js b/install/old-version-tabs.js index 2b13772438..f4f35bd00e 100644 --- a/install/old-version-tabs.js +++ b/install/old-version-tabs.js @@ -68,14 +68,14 @@ export default function SimpleTabs() { { - 'https://app.getambassador.io/download/tel2/darwin/amd64/x.x.x/telepresence' + 'https://app.getambassador.io/download/tel2/darwin/amd64/x.y.z/telepresence' } { - 'https://app.getambassador.io/download/tel2/linux/amd64/x.x.x/telepresence' + 'https://app.getambassador.io/download/tel2/linux/amd64/x.y.z/telepresence' } From 6903d00854b44b5dafeb52b049a705df956cfcf8 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 28 Jun 2021 13:45:06 -0600 Subject: [PATCH 39/49] pre-release: No longer depend on kubectl Signed-off-by: Luke Shumaker (cherry picked from commit f02af9089df53a236911ae345f2f2333ec5fd7f8) --- faqs.md | 6 +++++- howtos/intercepts.md | 6 ++++-- quick-start/qs-go.md | 7 +++++-- quick-start/qs-java.md | 7 +++++-- quick-start/qs-node.md | 7 +++++-- quick-start/qs-python-fastapi.md | 7 +++++-- quick-start/qs-python.md | 7 +++++-- reference/inside-container.md | 15 ++------------- reference/tun-device.md | 9 ++++++++- releaseNotes.yml | 7 +++++++ 10 files changed, 51 insertions(+), 27 deletions(-) diff --git a/faqs.md b/faqs.md index c6ab9d13b2..fe20809477 100644 --- a/faqs.md +++ b/faqs.md @@ -99,7 +99,11 @@ Running this command will also stop the local daemon running. ** How does Telepresence connect and tunnel into the Kubernetes cluster?** - The connection between your laptop and cluster is established via the standard `kubectl` mechanisms and SSH tunnelling. +The connection between your laptop and cluster is established by using +the `kubectl port-forward` machinery (though without actually spawning +a separate program) to establish a TCP connection to Telepresence +Traffic Manager in the cluster, and running Telepresence's custom VPN +protocol over that TCP connection. diff --git a/howtos/intercepts.md b/howtos/intercepts.md index e250343885..0fd6b599e4 100644 --- a/howtos/intercepts.md +++ b/howtos/intercepts.md @@ -23,12 +23,14 @@ import QSCards from '../quick-start/qs-cards' For a detailed walk-though on creating intercepts using our sample app, follow the quick start guide. ## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) +You’ll need [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) or `oc` installed and set up ([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) -to use a Kubernetes cluster, preferably an empty test cluster. +to use a Kubernetes cluster, preferably an empty test cluster. This +document uses `kubectl` in all example commands, but OpenShift +users should have no problem substituting in the `oc` command instead. If you have used Telepresence previously, please first reset your Telepresence deployment with: `telepresence uninstall --everything`. diff --git a/quick-start/qs-go.md b/quick-start/qs-go.md index f419961398..cdc0fc606e 100644 --- a/quick-start/qs-go.md +++ b/quick-start/qs-go.md @@ -34,12 +34,15 @@ import QSCards from './qs-cards'
## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) + +You’ll need [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) or `oc` installed and set up ([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) -to use a Kubernetes cluster, preferably an empty test cluster. +to use a Kubernetes cluster, preferably an empty test cluster. This +document uses `kubectl` in all example commands, but OpenShift +users should have no problem substituting in the `oc` command instead. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/quick-start/qs-java.md b/quick-start/qs-java.md index fe0d071a25..1767967bf5 100644 --- a/quick-start/qs-java.md +++ b/quick-start/qs-java.md @@ -34,12 +34,15 @@ import QSCards from './qs-cards'
## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) + +You’ll need [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) or `oc` installed and set up ([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) -to use a Kubernetes cluster, preferably an empty test cluster. +to use a Kubernetes cluster, preferably an empty test cluster. This +document uses `kubectl` in all example commands, but OpenShift +users should have no problem substituting in the `oc` command instead. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/quick-start/qs-node.md b/quick-start/qs-node.md index 5fc71ae72c..c343b10352 100644 --- a/quick-start/qs-node.md +++ b/quick-start/qs-node.md @@ -34,12 +34,15 @@ import QSCards from './qs-cards'
## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) + +You’ll need [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) or `oc` installed and set up ([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) -to use a Kubernetes cluster, preferably an empty test cluster. +to use a Kubernetes cluster, preferably an empty test cluster. This +document uses `kubectl` in all example commands, but OpenShift +users should have no problem substituting in the `oc` command instead. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/quick-start/qs-python-fastapi.md b/quick-start/qs-python-fastapi.md index d835588fe0..b1db44926e 100644 --- a/quick-start/qs-python-fastapi.md +++ b/quick-start/qs-python-fastapi.md @@ -34,12 +34,15 @@ import QSCards from './qs-cards'
## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) + +You’ll need [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) or `oc` installed and set up ([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) -to use a Kubernetes cluster, preferably an empty test cluster. +to use a Kubernetes cluster, preferably an empty test cluster. This +document uses `kubectl` in all example commands, but OpenShift +users should have no problem substituting in the `oc` command instead. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/quick-start/qs-python.md b/quick-start/qs-python.md index d51c976e1f..cd0c838f7f 100644 --- a/quick-start/qs-python.md +++ b/quick-start/qs-python.md @@ -34,12 +34,15 @@ import QSCards from './qs-cards' ## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) + +You’ll need [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) or `oc` installed and set up ([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) -to use a Kubernetes cluster, preferably an empty test cluster. +to use a Kubernetes cluster, preferably an empty test cluster. This +document uses `kubectl` in all example commands, but OpenShift +users should have no problem substituting in the `oc` command instead. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/reference/inside-container.md b/reference/inside-container.md index 483c01531f..f83ef35756 100644 --- a/reference/inside-container.md +++ b/reference/inside-container.md @@ -11,22 +11,11 @@ Building a container with a ready-to-run Telepresence is easy because there are FROM alpine:3.13 # Install Telepresence prerequisites -RUN apk add --no-cache curl iproute2 sshfs bash - -# Download and install the kubectl binary -RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && \ - install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl +RUN apk add --no-cache curl iproute2 sshfs # Download and install the telepresence binary RUN curl -fL https://app.getambassador.io/download/tel2/linux/amd64/latest/telepresence -o telepresence && \ install -o root -g root -m 0755 telepresence /usr/local/bin/telepresence - -# Add some convenient aliases to .bashrc -RUN echo -e '\ -alias t=telepresence\n\ -alias k=kubectl\n\ -' >> /root/.bashrc - ``` In order to build the container, do this in the same directory as the `Dockerfile`: ``` @@ -44,5 +33,5 @@ $ docker run \ --device /dev/net/tun:/dev/net/tun \ --network=host \ -v ~/.kube/config:/root/.kube/config \ - -it --rm tp-in-docker /bin/bash + -it --rm tp-in-docker ``` diff --git a/reference/tun-device.md b/reference/tun-device.md index 138cbf4ec0..4410f6f3ce 100644 --- a/reference/tun-device.md +++ b/reference/tun-device.md @@ -11,7 +11,14 @@ The VIF is a TUN-device, which means that it communicates with the workstation i The TUN-device is capable of routing both TCP and UDP for outbound traffic. Earlier versions of Telepresence would only allow TCP. Future enhancements might be to also route inbound UDP, and perhaps a selection of ICMP packages (to allow for things like `ping`). ### No SSH required -The VIF approach is somewhat similar to using `sshuttle` but without any requirements for extra software, configuration or connections. Using the VIF means that only one single `kubectl port-forward`, that uses one single port, is needed during a Telepresence run. There is no need for `ssh` in the client nor for `sshd` in the traffic-manager. This also means that the traffic-manager container can run as the default user. + +The VIF approach is somewhat similar to using `sshuttle` but without +any requirements for extra software, configuration or connections. +Using the VIF means that only one single connection needs to be +forwarded through the Kubernetes apiserver (à la `kubectl +port-forward`), using only one single port. There is no need for +`ssh` in the client nor for `sshd` in the traffic-manager. This also +means that the traffic-manager container can run as the default user. #### sshfs without ssh encryption When a POD is intercepted, and its volumes are mounted on the local machine, this mount is performed by [sshfs](https://github.com/libfuse/sshfs). Telepresence will run `sshfs -o slave` which means that instead of using `ssh` to establish an encrypted communication to an `sshd`, which in turn terminates the encryption and forwards to `sftp`, the `sshfs` will talk `sftp` directly on its `stdin/stdout` pair. Telepresence tunnels that directly to an `sftp` in the agent using its already encrypted gRPC API. As a result, no `sshd` is needed in client nor in the traffic-agent, and the traffic-agent container can run as the default user. diff --git a/releaseNotes.yml b/releaseNotes.yml index dffb29559f..898529b0a4 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -41,6 +41,13 @@ items: limited to certain namespaces. image: ./telepresence-2.3.5-traffic-manager-namespaces.png docs: reference/config + - type: feature + title: No more dependence on kubectl + body: >- + Telepresence no longer depends on having an external + kubectl binary, which might not be present for + OpenShift users (who have oc instead of + kubectl). - version: 2.3.4 date: '2021-07-09' notes: From 99fcd65b08fd615966cbd344978ba3d28fe9756f Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 30 Jun 2021 09:36:33 -0400 Subject: [PATCH 40/49] Doc changes for air-gapped environments client Signed-off-by: Donny Yung --- reference/cluster-config.md | 28 +++++++++++++++++++++++++++- reference/config.md | 25 ++++++++++++++++++++++++- releaseNotes.yml | 20 ++++++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/reference/cluster-config.md b/reference/cluster-config.md index f8e9a747ad..581572be23 100644 --- a/reference/cluster-config.md +++ b/reference/cluster-config.md @@ -118,9 +118,35 @@ run this command to generate the Cluster ID: ``` 3. Save the output as a YAML file and apply it to your -cluster with `kubectl`. Once applied, you will be able to use selective intercepts with the +cluster with `kubectl`. + +4. Ensure that you have the docker image for the Smart Agent (datawire/ambassador-telepresence-agent:1.8.0) +pulled and in a registry your cluster can pull from. + +5. Have users use the `images` [config key](../config/#images) keys so telepresence uses the aforementioned image for their agent. + +Users will now be able to use selective intercepts with the `--preview-url=false` flag (since use of preview URLs requires a connection to Ambassador Cloud). +If using Helm to install the server-side components, see the chart's [README](https://github.com/telepresenceio/telepresence/tree/release/v2/charts/telepresence) to learn how to configure the image registry and license secret. + +### Have users of the cli add the following to their config.yml +Telepresence attempts to auto-detect if the cluster is air-gapped, +but you can add this to your config.yml to ensure the client behaves +as if it was in an air-gapped environment. + ``` + cloud: + skipLogin: true + ``` + +Reminder: To use selective intercepts, which normally require a login, you +must have a license in your cluster and specify which agentImage should be installed, +by also adding the following to your config.yml: + ``` + images: + agentImage: / + ``` + ## Mutating Webhook By default, Telepresence updates the intercepted workload (Deployment, StatefulSet, ReplicaSet) diff --git a/reference/config.md b/reference/config.md index 76ba3b91ee..c7331dac3c 100644 --- a/reference/config.md +++ b/reference/config.md @@ -10,7 +10,7 @@ For Linux, the above paths are for a user-level configuration. For system-level ### Values -The config file currently supports values for the `timeouts` and `logLevels` keys. +The config file currently supports values for the `timeouts`, `logLevels`, `images` keys. Here is an example configuration: @@ -20,6 +20,9 @@ timeouts: intercept: 10s logLevels: userDaemon: debug +images: + registry: privateRepo + agentImage: ambassador-telepresence-agent:1.8.0 ``` #### Timeouts @@ -46,6 +49,26 @@ These are the valid fields for the `logLevels` key: |`userDaemon`|Logging level to be used by the User Daemon (logs to connector.log)|debug| |`rootDaemon`|Logging level to be used for the Root Daemon (logs to daemon.log)|info| +#### Images +Values for `images` are strings. +These are the valid fields for the `images` key: + +|Field|Description|Default| +|---|---|---| +|`registry`|Docker registry to be used for installing the Traffic Manager and default Traffic Agent|docker.io/datawire| +|`agentImage`|$registry/$imageName:$imageTag to use when installing the Traffic Agent|| +|`webhookRegistry`|The container $registry that the [Traffic Manager](../cluster-config/#mutating-webhook) will use with the `webhookAgentImage` *only used if a new traffic-manager is deployed*|| +|`webhookAgentImage`|The container image that the [Traffic Manager](../cluster-config/#mutating-webhook) will use when installing the Traffic Agent in annotated pods *only used if a new traffic-manager is deployed*|| + +#### Cloud +These fields control how the client interacts with the Cloud service. +Currently there is only one key and it accepts bools: `1`, `t`, `T`, `TRUE`, `true`, `True`, `0`, `f`, `F,` `FALSE` + +|Field|Description|Default| +|---|---|---| +|`skipLogin`|Whether the cli should skipping login to Ambassador Cloud. If you set to true, you must have a [license](../cluster-config/#air-gapped-cluster) installed in the cluster to perform selective intercepts |false| + + ## Per-Cluster Configuration Some configuration is not global to Telepresence and is actually specific to a cluster. Thus, we store that config information in your kubeconfig file, so that it is easier to maintain per-cluster configuration. diff --git a/releaseNotes.yml b/releaseNotes.yml index 898529b0a4..a3904c0e56 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -48,6 +48,26 @@ items: kubectl binary, which might not be present for OpenShift users (who have oc instead of kubectl). + - type: feature + title: Agent image now configurable + body: >- + We now support configuring which agent image + registry to use in the + config. This enables users whose laptop is an air-gapped environment to + create selective intercepts without requiring a login. It also makes it easier + for those who are developing on Telepresence to specify which agent image should + be used. Env vars TELEPRESENCE_AGENT_IMAGE and TELEPRESENCE_REGISTRY no longer + change any behavior with Telepresence. + image: ./telepresence-2.3.5-agent-config.png + docs: reference/config/#images + - type: Feature + title: CLI can be used in air-gapped environments + body: >- + While Telepresence will auto-detect if your cluster is in an air-gapped environment, + we've added an option users can add to their config.yml to ensure the cli acts like it + is in an air-gapped environment. Some features requiring a login will not work unless a + license is provided in the cluster. + docs: reference/cluster-config/#air-gapped-cluster + image: ./telepresence-2.3.5-skipLogin.png - version: 2.3.4 date: '2021-07-09' notes: From fed5695cb517c6990ec6c89d3da68db9cd38e274 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 30 Jun 2021 09:36:33 -0400 Subject: [PATCH 41/49] Doc changes for air-gapped environments client Signed-off-by: Donny Yung --- releaseNotes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index a3904c0e56..95a035a598 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -59,7 +59,7 @@ items: change any behavior with Telepresence. image: ./telepresence-2.3.5-agent-config.png docs: reference/config/#images - - type: Feature + - type: feature title: CLI can be used in air-gapped environments body: >- While Telepresence will auto-detect if your cluster is in an air-gapped environment, From 1f6fda80a6a0165f5da581eed5c0c807b56016f7 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Tue, 13 Jul 2021 15:23:53 -0400 Subject: [PATCH 42/49] Add images for release-notes Signed-off-by: Donny Yung --- .../telepresence-2.3.5-agent-config.png | Bin 0 -> 22522 bytes release-notes/telepresence-2.3.5-skipLogin.png | Bin 0 -> 20124 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 release-notes/telepresence-2.3.5-agent-config.png create mode 100644 release-notes/telepresence-2.3.5-skipLogin.png diff --git a/release-notes/telepresence-2.3.5-agent-config.png b/release-notes/telepresence-2.3.5-agent-config.png new file mode 100644 index 0000000000000000000000000000000000000000..67d6d3e8bd70625c826be3ab02314d85cce15ab7 GIT binary patch literal 22522 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 GCHxCFsYLYv literal 0 HcmV?d00001 From a5efc1f71f86daabd09de44844dec49b8c3b9648 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 14 Jul 2021 15:01:19 -0400 Subject: [PATCH 43/49] addressing PR comments Signed-off-by: Donny Yung --- reference/config.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/reference/config.md b/reference/config.md index c7331dac3c..f01ce07382 100644 --- a/reference/config.md +++ b/reference/config.md @@ -50,15 +50,21 @@ These are the valid fields for the `logLevels` key: |`rootDaemon`|Logging level to be used for the Root Daemon (logs to daemon.log)|info| #### Images -Values for `images` are strings. +Values for `images` are strings. These values affect the objects that are deployed in the cluster, +so it's important to ensure users have the same configuration. + +Additionally, you can deploy the server-side components with [Helm](../../install/helm), to prevent them +from being overridden by a client's config and use the [mutating-webhook](../clusterpconfig/#mutating-webhook) +to handle installation of the `traffic-agents`. + These are the valid fields for the `images` key: |Field|Description|Default| |---|---|---| -|`registry`|Docker registry to be used for installing the Traffic Manager and default Traffic Agent|docker.io/datawire| -|`agentImage`|$registry/$imageName:$imageTag to use when installing the Traffic Agent|| -|`webhookRegistry`|The container $registry that the [Traffic Manager](../cluster-config/#mutating-webhook) will use with the `webhookAgentImage` *only used if a new traffic-manager is deployed*|| -|`webhookAgentImage`|The container image that the [Traffic Manager](../cluster-config/#mutating-webhook) will use when installing the Traffic Agent in annotated pods *only used if a new traffic-manager is deployed*|| +|`registry`|Docker registry to be used for installing the Traffic Manager and default Traffic Agent. If not using a helm chart to deploy server-side objects, changing this value will create a new traffic-manager deployment when using Telepresence commands. Additionally, changing this value will update installed default `traffic-agents` to use the new registry when creating a new intercept.|docker.io/datawire| +|`agentImage`|$registry/$imageName:$imageTag to use when installing the Traffic Agent. Changing this value will update pre-existing `traffic-agents` to use this new image. * the `registry` value is not used for the `traffic-agent` if you have this value set *|| +|`webhookRegistry`|The container $registry that the [Traffic Manager](../cluster-config/#mutating-webhook) will use with the `webhookAgentImage` *This value is only used if a new traffic-manager is deployed*|| +|`webhookAgentImage`|The container image that the [Traffic Manager](../cluster-config/#mutating-webhook) will use when installing the Traffic Agent in annotated pods *This value is only used if a new traffic-manager is deployed*|| #### Cloud These fields control how the client interacts with the Cloud service. From 4b5847db893d696cfcb9d60d4866f35c35efabf2 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 14 Jul 2021 15:56:12 -0400 Subject: [PATCH 44/49] addressing PR comments from Noah Signed-off-by: Donny Yung --- reference/cluster-config.md | 18 ++---------------- reference/config.md | 10 ++++++++++ 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/reference/cluster-config.md b/reference/cluster-config.md index 581572be23..a13c813b78 100644 --- a/reference/cluster-config.md +++ b/reference/cluster-config.md @@ -130,22 +130,8 @@ Users will now be able to use selective intercepts with the If using Helm to install the server-side components, see the chart's [README](https://github.com/telepresenceio/telepresence/tree/release/v2/charts/telepresence) to learn how to configure the image registry and license secret. -### Have users of the cli add the following to their config.yml -Telepresence attempts to auto-detect if the cluster is air-gapped, -but you can add this to your config.yml to ensure the client behaves -as if it was in an air-gapped environment. - ``` - cloud: - skipLogin: true - ``` - -Reminder: To use selective intercepts, which normally require a login, you -must have a license in your cluster and specify which agentImage should be installed, -by also adding the following to your config.yml: - ``` - images: - agentImage: / - ``` +Have clients use the [skipLogin](../config/#cloud) key to ensure the cli knows it is operating in an +air-gapped environment. ## Mutating Webhook diff --git a/reference/config.md b/reference/config.md index f01ce07382..50e7d10e26 100644 --- a/reference/config.md +++ b/reference/config.md @@ -74,6 +74,16 @@ Currently there is only one key and it accepts bools: `1`, `t`, `T`, `TRUE`, `tr |---|---|---| |`skipLogin`|Whether the cli should skipping login to Ambassador Cloud. If you set to true, you must have a [license](../cluster-config/#air-gapped-cluster) installed in the cluster to perform selective intercepts |false| +Telepresence attempts to auto-detect if the cluster is air-gapped, +be sure to set the `skipLogin` value to `true` + +Reminder: To use selective intercepts, which normally require a login, you +must have a license in your cluster and specify which agentImage should be installed, +by also adding the following to your config.yml: + ``` + images: + agentImage: / + ``` ## Per-Cluster Configuration Some configuration is not global to Telepresence and is actually specific to a cluster. Thus, we store that config information in your kubeconfig file, so that it is easier to maintain per-cluster configuration. From 890bc8ad3ac4d29f0503ae90da3d496235858cc8 Mon Sep 17 00:00:00 2001 From: Thomas Hallgren Date: Thu, 15 Jul 2021 15:05:18 +0200 Subject: [PATCH 45/49] Add docs and release notes for grpc maxReceiveSize. Signed-off-by: Thomas Hallgren --- reference/config.md | 11 +++++++++++ ...telepresence-2.3.5-grpc-max-receive-size.png | Bin 0 -> 21174 bytes releaseNotes.yml | 6 ++++++ 3 files changed, 17 insertions(+) create mode 100644 release-notes/telepresence-2.3.5-grpc-max-receive-size.png diff --git a/reference/config.md b/reference/config.md index 50e7d10e26..b23690fc04 100644 --- a/reference/config.md +++ b/reference/config.md @@ -11,6 +11,7 @@ For Linux, the above paths are for a user-level configuration. For system-level ### Values The config file currently supports values for the `timeouts`, `logLevels`, `images` keys. +The config file currently supports values for the `timeouts`, `logLevels`, `images`, and `grpc` keys. Here is an example configuration: @@ -23,6 +24,8 @@ logLevels: images: registry: privateRepo agentImage: ambassador-telepresence-agent:1.8.0 +grpc: + maxReceiveSize: 10Mi ``` #### Timeouts @@ -85,6 +88,14 @@ by also adding the following to your config.yml: agentImage: / ``` +#### Grpc +The `maxReceiveSize` determines how large a message that the workstation receives via gRPC can be. The default is 4Mi (determined by gRPC). All traffic to and from the cluster is tunneled via gRPC. + +The size is measured in bytes. You can express it as a plain integer or as a fixed-point number using E, G, M, or K. You can also use the power-of-two equivalents: Gi, Mi, Ki. For example, the following represent roughly the same value: +``` +128974848, 129e6, 129M, 123Mi +``` + ## Per-Cluster Configuration Some configuration is not global to Telepresence and is actually specific to a cluster. Thus, we store that config information in your kubeconfig file, so that it is easier to maintain per-cluster configuration. diff --git a/release-notes/telepresence-2.3.5-grpc-max-receive-size.png b/release-notes/telepresence-2.3.5-grpc-max-receive-size.png new file mode 100644 index 0000000000000000000000000000000000000000..32939f9dd8e73f952abcde00fbcc23df3ccd8951 GIT binary patch literal 21174 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 + The default max size of messages received through gRPC (4 MB) is sometimes insufficient. It can now be configured. + image: ./telepresence-2.3.5-grpc-max-receive-size.png + docs: reference/config/#grpc - type: feature title: CLI can be used in air-gapped environments body: >- From fe828631f52430d6c8decf95670796e105ccf559 Mon Sep 17 00:00:00 2001 From: Thomas Hallgren Date: Thu, 15 Jul 2021 16:22:29 +0200 Subject: [PATCH 46/49] Fix release numbers for 2.3 and pre-release. Signed-off-by: Thomas Hallgren --- versions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.yml b/versions.yml index 329cdae0c8..9a75f4c94b 100644 --- a/versions.yml +++ b/versions.yml @@ -1,4 +1,4 @@ -version: "2.3.3" +version: "2.3.5" docsVersion: "pre-release" branch: release/v2 productName: "Telepresence" From a0247531983d5c92eef956b3f5a8ce424ac522c6 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Thu, 15 Jul 2021 10:36:25 -0400 Subject: [PATCH 47/49] bump release notes Signed-off-by: Donny Yung --- reference/config.md | 3 +-- releaseNotes.yml | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/reference/config.md b/reference/config.md index b23690fc04..0a5416d2f2 100644 --- a/reference/config.md +++ b/reference/config.md @@ -10,8 +10,7 @@ For Linux, the above paths are for a user-level configuration. For system-level ### Values -The config file currently supports values for the `timeouts`, `logLevels`, `images` keys. -The config file currently supports values for the `timeouts`, `logLevels`, `images`, and `grpc` keys. +The config file currently supports values for the `timeouts`, `logLevels`, `images`, `cloud`, and `grpc` keys. Here is an example configuration: diff --git a/releaseNotes.yml b/releaseNotes.yml index 395d81ad5c..594754dfd8 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -55,8 +55,8 @@ items: config. This enables users whose laptop is an air-gapped environment to create selective intercepts without requiring a login. It also makes it easier for those who are developing on Telepresence to specify which agent image should - be used. Env vars TELEPRESENCE_AGENT_IMAGE and TELEPRESENCE_REGISTRY no longer - change any behavior with Telepresence. + be used. Env vars TELEPRESENCE_AGENT_IMAGE and TELEPRESENCE_REGISTRY are no longer + used. image: ./telepresence-2.3.5-agent-config.png docs: reference/config/#images - type: feature @@ -70,8 +70,8 @@ items: body: >- While Telepresence will auto-detect if your cluster is in an air-gapped environment, we've added an option users can add to their config.yml to ensure the cli acts like it - is in an air-gapped environment. Some features requiring a login will not work unless a - license is provided in the cluster. + is in an air-gapped environment. Air-gapped environments require a manually installed + licence. docs: reference/cluster-config/#air-gapped-cluster image: ./telepresence-2.3.5-skipLogin.png - version: 2.3.4 From ec21d6d3541136cdcab0126e14356699f694e7b1 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Thu, 15 Jul 2021 10:44:31 -0400 Subject: [PATCH 48/49] fix releaseNote reference Signed-off-by: Donny Yung --- releaseNotes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index 594754dfd8..0de329f878 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -40,7 +40,7 @@ items: This will allow operators to install deployments of telepresence that are limited to certain namespaces. image: ./telepresence-2.3.5-traffic-manager-namespaces.png - docs: reference/config + docs: install/helm - type: feature title: No more dependence on kubectl body: >- From 0d3ba2c3c8a76ea807cfc2d4b85cf1ae62cd8a87 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 15 Jul 2021 10:27:12 -0600 Subject: [PATCH 49/49] Revert the things that need reverted for getambassador.io --- concepts/devloop.md | 2 +- concepts/devworkflow.md | 4 +- concepts/faster.md | 4 +- doc-links.yml | 144 +++++++++--------- faqs.md | 6 +- howtos/intercepts.md | 2 +- install/migrate-from-legacy.md | 2 +- install/nightly-version-tabs.js | 6 +- install/old-version-tabs.js | 6 +- install/upgrade-tabs.js | 6 +- quick-start/qs-tabs.js | 8 +- .../telepresence-quickstart-landing.less | 4 +- reference/intercepts.md | 2 +- reference/linkerd.md | 2 +- 14 files changed, 103 insertions(+), 95 deletions(-) diff --git a/concepts/devloop.md b/concepts/devloop.md index 8b1fbf354a..49b5ce0656 100644 --- a/concepts/devloop.md +++ b/concepts/devloop.md @@ -6,7 +6,7 @@ The developer experience is the workflow a developer uses to develop, test, depl Typically this experience has consisted of both an inner dev loop and an outer dev loop. The inner dev loop is where the individual developer codes and tests, and once the developer pushes their code to version control, the outer dev loop is triggered. -The outer dev loop is _everything else_ that happens leading up to release. This includes code merge, automated code review, test execution, deployment, [controlled (canary) release](https://www.getambassador.io/docs/argo/latest/concepts/canary/), and observation of results. The modern outer dev loop might include, for example, an automated CI/CD pipeline as part of a [GitOps workflow](https://www.getambassador.io/docs/argo/latest/concepts/gitops/#what-is-gitops) and a progressive delivery strategy relying on automated canaries, i.e. to make the outer loop as fast, efficient and automated as possible. +The outer dev loop is _everything else_ that happens leading up to release. This includes code merge, automated code review, test execution, deployment, [controlled (canary) release](/docs/argo/latest/concepts/canary/), and observation of results. The modern outer dev loop might include, for example, an automated CI/CD pipeline as part of a [GitOps workflow](/docs/argo/latest/concepts/gitops/#what-is-gitops) and a progressive delivery strategy relying on automated canaries, i.e. to make the outer loop as fast, efficient and automated as possible. Cloud-native technologies have fundamentally altered the developer experience in two ways: one, developers now have to take extra steps in the inner dev loop; two, developers need to be concerned with the outer dev loop as part of their workflow, even if most of their time is spent in the inner dev loop. diff --git a/concepts/devworkflow.md b/concepts/devworkflow.md index fa24fc2bdc..b09f186d0d 100644 --- a/concepts/devworkflow.md +++ b/concepts/devworkflow.md @@ -1,7 +1,7 @@ # The changing development workflow -A changing workflow is one of the main challenges for developers adopting Kubernetes. Software development itself isn’t the challenge. Developers can continue to [code using the languages and tools with which they are most productive and comfortable](https://www.getambassador.io/resources/kubernetes-local-dev-toolkit/). That’s the beauty of containerized development. +A changing workflow is one of the main challenges for developers adopting Kubernetes. Software development itself isn’t the challenge. Developers can continue to [code using the languages and tools with which they are most productive and comfortable](/resources/kubernetes-local-dev-toolkit/). That’s the beauty of containerized development. -However, the cloud-native, Kubernetes-based approach to development means adopting a new development workflow and development environment. Beyond the basics, such as figuring out how to containerize software, [how to run containers in Kubernetes](https://www.getambassador.io/docs/kubernetes/latest/concepts/appdev/), and how to deploy changes into containers, for example, Kubernetes adds complexity before it delivers efficiency. The promise of a “quicker way to develop software” applies at least within the traditional aspects of the inner dev loop, where the single developer codes, builds and tests their software. But both within the inner dev loop and once code is pushed into version control to trigger the outer dev loop, the developer experience changes considerably from what many developers are used to. +However, the cloud-native, Kubernetes-based approach to development means adopting a new development workflow and development environment. Beyond the basics, such as figuring out how to containerize software, [how to run containers in Kubernetes](/docs/kubernetes/latest/concepts/appdev/), and how to deploy changes into containers, for example, Kubernetes adds complexity before it delivers efficiency. The promise of a “quicker way to develop software” applies at least within the traditional aspects of the inner dev loop, where the single developer codes, builds and tests their software. But both within the inner dev loop and once code is pushed into version control to trigger the outer dev loop, the developer experience changes considerably from what many developers are used to. In this new paradigm, new steps are added to the inner dev loop, and more broadly, the developer begins to share responsibility for the full life cycle of their software. Inevitably this means taking new workflows and tools on board to ensure that the full life cycle continues full speed ahead. diff --git a/concepts/faster.md b/concepts/faster.md index b649e41533..7aa74ad1ab 100644 --- a/concepts/faster.md +++ b/concepts/faster.md @@ -1,10 +1,10 @@ # Making the remote local: Faster feedback, collaboration and debugging -With the goal of achieving [fast, efficient development](https://www.getambassador.io/use-case/local-kubernetes-development/), developers need a set of approaches to bridge the gap between remote Kubernetes clusters and local development, and reduce time to feedback and debugging. +With the goal of achieving [fast, efficient development](/use-case/local-kubernetes-development/), developers need a set of approaches to bridge the gap between remote Kubernetes clusters and local development, and reduce time to feedback and debugging. ## How should I set up a Kubernetes development environment? -[Setting up a development environment](https://www.getambassador.io/resources/development-environments-microservices/) for Kubernetes can be much more complex than the set up for traditional web applications. Creating and maintaining a Kubernetes development environment relies on a number of external dependencies, such as databases or authentication. +[Setting up a development environment](/resources/development-environments-microservices/) for Kubernetes can be much more complex than the set up for traditional web applications. Creating and maintaining a Kubernetes development environment relies on a number of external dependencies, such as databases or authentication. While there are several ways to set up a Kubernetes development environment, most introduce complexities and impediments to speed. The dev environment should be set up to easily code and test in conditions where a service can access the resources it depends on. diff --git a/doc-links.yml b/doc-links.yml index 10da747532..b36a9f790d 100644 --- a/doc-links.yml +++ b/doc-links.yml @@ -1,68 +1,76 @@ - - title: Quick start - link: quick-start - - title: Install Telepresence - items: - - title: Install - link: install/ - - title: Upgrade - link: install/upgrade/ - - title: Install Traffic Manager with Helm - link: install/helm/ - - title: Migrate from legacy Telepresence - link: install/migrate-from-legacy/ - - title: Core concepts - items: - - title: The changing development workflow - link: concepts/devworkflow - - title: The developer experience and the inner dev loop - link: concepts/devloop - - title: 'Making the remote local: Faster feedback, collaboration and debugging' - link: concepts/faster - - title: Context propagation - link: concepts/context-prop - - title: How do I... - items: - - title: Intercept a service in your own environment - link: howtos/intercepts - - title: Share dev environments with preview URLs - link: howtos/preview-urls - - title: Proxy outbound traffic to my cluster - link: howtos/outbound - - title: Send requests to an intercepted service - link: howtos/request - - title: Technical reference - items: - - title: Architecture - link: reference/architecture - - title: Networking through Virtual Network Interface - link: reference/tun-device - - title: Client reference - link: reference/client - - title: Laptop-side configuration - link: reference/config - - title: Cluster-side configuration - link: reference/cluster-config - - title: Using Docker for intercepts - link: reference/docker-run - - title: Running Telepresence in a Docker container - link: reference/inside-container - - title: Environment variables - link: reference/environment - - title: Intercepts - link: reference/intercepts - - title: Volume mounts - link: reference/volume - - title: DNS resolution - link: reference/dns - - title: RBAC - link: reference/rbac - - title: Using Telepresence with Linkerd - link: reference/linkerd - - title: FAQs - link: faqs - - title: Troubleshooting - link: troubleshooting - - title: Community - link: community - - title: Release Notes - link: release-notes +- title: Home + link: /docs/ + +- title: Products + collapsable: false + items: + - title: Telepresence + items: + - title: Quick start + link: /quick-start + - title: Install Telepresence + items: + - title: Install + link: /install/ + - title: Upgrade + link: /install/upgrade/ + - title: Install Traffic Manager with Helm + link: /install/helm/ + - title: Migrate from legacy Telepresence + link: /install/migrate-from-legacy/ + - title: Core concepts + items: + - title: The changing development workflow + link: /concepts/devworkflow + - title: The developer experience and the inner dev loop + link: /concepts/devloop + - title: 'Making the remote local: Faster feedback, collaboration and debugging' + link: /concepts/faster + - title: Context propagation + link: /concepts/context-prop + - title: How do I... + items: + - title: Intercept a service in your own environment + link: /howtos/intercepts + - title: Share dev environments with preview URLs + link: /howtos/preview-urls + - title: Proxy outbound traffic to my cluster + link: /howtos/outbound + - title: Send requests to an intercepted service + link: /howtos/request + - title: Technical reference + items: + - title: Architecture + link: /reference/architecture + - title: Networking through Virtual Network Interface + link: /reference/tun-device + - title: Client reference + link: /reference/client + - title: Laptop-side configuration + link: /reference/config + - title: Cluster-side configuration + link: /reference/cluster-config + - title: Using Docker for intercepts + link: /reference/docker-run + - title: Running Telepresence in a Docker container + link: /reference/inside-container + - title: Environment variables + link: /reference/environment + - title: Intercepts + link: /reference/intercepts + - title: Volume mounts + link: /reference/volume + - title: DNS resolution + link: /reference/dns + - title: RBAC + link: /reference/rbac + - title: Using Telepresence with Linkerd + link: /reference/linkerd + - title: FAQs + link: /faqs + - title: Troubleshooting + link: /troubleshooting + - title: Community + link: /community + - title: Release Notes + link: /release-notes diff --git a/faqs.md b/faqs.md index fe20809477..1f15baf301 100644 --- a/faqs.md +++ b/faqs.md @@ -29,7 +29,7 @@ Telepresence currently works natively on macOS and Linux. We are working on a na - gRPC - GraphQL -If you need another protocol supported, please [drop us a line](https://www.getambassador.io/feedback/) to request it. +If you need another protocol supported, please [drop us a line](/feedback/) to request it. ** When using Telepresence to intercept a pod, are the Kubernetes cluster environment variables proxied to my local machine?** @@ -113,7 +113,7 @@ protocol over that TCP connection. * GitLab * Google -More authentication mechanisms and identity provider support will be added soon. Please [let us know](https://www.getambassador.io/feedback/) which providers are the most important to you and your team in order for us to prioritize those. +More authentication mechanisms and identity provider support will be added soon. Please [let us know](/feedback/) which providers are the most important to you and your team in order for us to prioritize those. ** Is Telepresence open source?** @@ -121,4 +121,4 @@ More authentication mechanisms and identity provider support will be added soon. ** How do I share my feedback on Telepresence?** - Your feedback is always appreciated and helps us build a product that provides as much value as possible for our community. You can chat with us directly on our [feedback page](https://www.getambassador.io/feedback/), or you can [join our Slack channel](https://a8r.io/Slack) to share your thoughts. + Your feedback is always appreciated and helps us build a product that provides as much value as possible for our community. You can chat with us directly on our [feedback page](/feedback/), or you can [join our Slack channel](https://a8r.io/Slack) to share your thoughts. diff --git a/howtos/intercepts.md b/howtos/intercepts.md index 0fd6b599e4..c988c9e177 100644 --- a/howtos/intercepts.md +++ b/howtos/intercepts.md @@ -194,7 +194,7 @@ be routed to your cluster as usual. 4. **Ingress layer 5 hostname**: If your ingress controller routes traffic based on a domain name (often using the `Host` HTTP header), this is the value you would need to enter here. - Telepresence supports any ingress controller, not just Ambassador Edge Stack. + Telepresence supports any ingress controller, not just Ambassador Edge Stack. For the example below, you will create a preview URL that will send traffic to the `ambassador` service in the `ambassador` namespace on port `443` using TLS encryption and setting the `Host` HTTP header to `dev-environment.edgestack.me`: diff --git a/install/migrate-from-legacy.md b/install/migrate-from-legacy.md index fc910e38c3..070722af72 100644 --- a/install/migrate-from-legacy.md +++ b/install/migrate-from-legacy.md @@ -1,6 +1,6 @@ # Migrate from legacy Telepresence -Telepresence (formerly referenced as Telepresence 2, which is the current major version) has different mechanics and requires a different mental model from [legacy Telepresence 1](/docs/v1/) when working with local instances of your services. +Telepresence (formerly referenced as Telepresence 2, which is the current major version) has different mechanics and requires a different mental model from [legacy Telepresence 1](https://www.telepresence.io/docs/v1/) when working with local instances of your services. In legacy Telepresence, a pod running a service was swapped with a pod running the Telepresence proxy. This proxy received traffic intended for the service, and sent the traffic onward to the target workstation or laptop. We called this mechanism "swap-deployment". diff --git a/install/nightly-version-tabs.js b/install/nightly-version-tabs.js index 19a653e9ff..52ea3b5a00 100644 --- a/install/nightly-version-tabs.js +++ b/install/nightly-version-tabs.js @@ -5,9 +5,9 @@ import AppBar from '@material-ui/core/AppBar'; import Tabs from '@material-ui/core/Tabs'; import Tab from '@material-ui/core/Tab'; import Box from '@material-ui/core/Box'; -import CodeBlock from '@src/components/CodeBlock'; -import LinuxIcon from '@src/assets/icons/linux.inline.svg'; -import AppleIcon from '@src/assets/icons/apple.inline.svg'; +import CodeBlock from '../../../../../src/components/CodeBlock'; +import LinuxIcon from '../../../../../src/assets/icons/linux.inline.svg'; +import AppleIcon from '../../../../../src/assets/icons/apple.inline.svg'; function TabPanel(props) { const { children, value, index, ...other } = props; diff --git a/install/old-version-tabs.js b/install/old-version-tabs.js index f4f35bd00e..7c0377d45e 100644 --- a/install/old-version-tabs.js +++ b/install/old-version-tabs.js @@ -5,9 +5,9 @@ import AppBar from '@material-ui/core/AppBar'; import Tabs from '@material-ui/core/Tabs'; import Tab from '@material-ui/core/Tab'; import Box from '@material-ui/core/Box'; -import CodeBlock from '@src/components/CodeBlock'; -import LinuxIcon from '@src/assets/icons/linux.inline.svg'; -import AppleIcon from '@src/assets/icons/apple.inline.svg'; +import CodeBlock from '../../../../../src/components/CodeBlock'; +import LinuxIcon from '../../../../../src/assets/icons/linux.inline.svg'; +import AppleIcon from '../../../../../src/assets/icons/apple.inline.svg'; function TabPanel(props) { const { children, value, index, ...other } = props; diff --git a/install/upgrade-tabs.js b/install/upgrade-tabs.js index fde8aa098a..ab4b068c32 100644 --- a/install/upgrade-tabs.js +++ b/install/upgrade-tabs.js @@ -5,9 +5,9 @@ import AppBar from '@material-ui/core/AppBar'; import Tabs from '@material-ui/core/Tabs'; import Tab from '@material-ui/core/Tab'; import Box from '@material-ui/core/Box'; -import CodeBlock from '@src/components/CodeBlock'; -import LinuxIcon from '@src/assets/icons/linux.inline.svg'; -import AppleIcon from '@src/assets/icons/apple.inline.svg'; +import CodeBlock from '../../../../../src/components/CodeBlock'; +import LinuxIcon from '../../../../../src/assets/icons/linux.inline.svg'; +import AppleIcon from '../../../../../src/assets/icons/apple.inline.svg'; function TabPanel(props) { const { children, value, index, ...other } = props; diff --git a/quick-start/qs-tabs.js b/quick-start/qs-tabs.js index 91c8440f28..ed783c5778 100644 --- a/quick-start/qs-tabs.js +++ b/quick-start/qs-tabs.js @@ -6,10 +6,10 @@ import Tabs from '@material-ui/core/Tabs'; import Tab from '@material-ui/core/Tab'; import Box from '@material-ui/core/Box'; import HubspotForm from 'react-hubspot-form'; -import CodeBlock from '@src/components/CodeBlock'; -import LinuxIcon from '@src/assets/icons/linux.inline.svg'; -import AppleIcon from '@src/assets/icons/apple.inline.svg'; -import WindowsIcon from '@src/assets/icons/windows.inline.svg'; +import CodeBlock from '../../../../../src/components/CodeBlock'; +import LinuxIcon from '../../../../../src/assets/icons/linux.inline.svg'; +import AppleIcon from '../../../../../src/assets/icons/apple.inline.svg'; +import WindowsIcon from '../../../../../src/assets/icons/windows.inline.svg'; function TabPanel(props) { const { children, value, index, ...other } = props; diff --git a/quick-start/telepresence-quickstart-landing.less b/quick-start/telepresence-quickstart-landing.less index ddfa964ebc..5458895c10 100644 --- a/quick-start/telepresence-quickstart-landing.less +++ b/quick-start/telepresence-quickstart-landing.less @@ -1,6 +1,6 @@ -@import '~@src/components/Layout/vars.less'; +@import '../../../../../src/components/Layout/vars.less'; -.telepresence-quickstart-landing { +.doc-body .telepresence-quickstart-landing { font-family: @InterFont; color: @black; margin: 0 auto 140px; diff --git a/reference/intercepts.md b/reference/intercepts.md index 6ddebd004d..89ae5545d1 100644 --- a/reference/intercepts.md +++ b/reference/intercepts.md @@ -111,7 +111,7 @@ If you want to change which port has been intercepted, you can create a new inte ## Creating an intercept When multiple services match your workload -Oftentimes, there's a 1-to-1 relationship between a service and a workload, so telepresence is able to auto-detect which service it should intercept based on the workload you are trying to intercept. But if you use something like [Argo](https://www.getambassador.io/docs/argo/latest/), it uses two services (that use the same labels) to manage traffic between a canary and a stable service. +Oftentimes, there's a 1-to-1 relationship between a service and a workload, so telepresence is able to auto-detect which service it should intercept based on the workload you are trying to intercept. But if you use something like [Argo](/docs/argo/latest/), it uses two services (that use the same labels) to manage traffic between a canary and a stable service. Fortunately, if you know which service you want to use when intercepting a workload, you can use the --service flag. So in the aforementioned demo, if you wanted to use the `echo-stable` service when intercepting your workload, your command would look like this: ``` diff --git a/reference/linkerd.md b/reference/linkerd.md index 9b903fa769..e86b470fe2 100644 --- a/reference/linkerd.md +++ b/reference/linkerd.md @@ -21,7 +21,7 @@ The local system and the Traffic Agent connect to the Traffic Manager using its 1. [Telepresence binary](../../install) 2. Linkerd control plane [installed to cluster](https://linkerd.io/2.10/tasks/install/) 3. Kubectl -4. [Working ingress controller](https://www.getambassador.io/docs/edge-stack/latest/howtos/linkerd2) +4. [Working ingress controller](/docs/edge-stack/latest/howtos/linkerd2) ## Deploy Save and deploy the following YAML. Note the `config.linkerd.io/skip-outbound-ports` annotation in the metadata of the pod template.

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"w@q$2MH+Ni~9uEFw5=Dua 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ɭ@Ro=5 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 literal 0 HcmV?d00001 diff --git a/release-notes/telepresence-2.3.0-loglevels.png b/release-notes/telepresence-2.3.0-loglevels.png new file mode 100644 index 0000000000000000000000000000000000000000..3d628c54a70443a608cf03a921391a58fed13560 GIT binary patch literal 14998 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 E0Ofon9RL6T literal 0 HcmV?d00001 diff --git a/release-notes/tunnel.jpg b/release-notes/tunnel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..59a0397e69d34f759864f4ba36ed9144c6322f6c GIT binary patch literal 56309 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 literal 0 HcmV?d00001 diff --git a/releaseNotes.yml b/releaseNotes.yml index 949105e3ea..40cd6f6bd7 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -1,5 +1,9 @@ -# This file should be placed in the folder for the version of the product that's meant to be documented. A `/release-notes` page will be automatically generated and populated at build time. -# Note that an entry needs to be added to the `doc-links.yml` file in order to surface the release notes in the table of contents. +# This file should be placed in the folder for the version of the +# product that's meant to be documented. A `/release-notes` page will +# be automatically generated and populated at build time. +# +# Note that an entry needs to be added to the `doc-links.yml` file in +# order to surface the release notes in the table of contents. # # The YAML in this file should contain: # @@ -10,12 +14,21 @@ # - notes: An array of noteworthy changes included in the release, each having the following attributes: # - title: A short title of the noteworthy change. # - body: Two or three sentences describing the change and why it is noteworthy. This is in rich text format and may contain HTML elements. -# - image: The URL of an image that visually represents the noteworthy change. This can be an absolute path or the name of the image file placed under the `ambassador-docs/public` folder starting with `./` (e.g., `./ambassador-example.png`). +# - image: The URL of an image that visually represents the noteworthy change. # - docs: The path to the documentation page where additional information can be found. # - type: The type of change, one of `bugfix`, `feature`, `security` or `change`. # +docTitle: Telepresence Release Notes +docDescription: >- + Release notes for Telepresence by Ambassador Labs, a CNCF project + that enables developers to iterate rapidly on Kubernetes + microservices by arming them with infinite-scale development + environments, access to instantaneous feedback loops, and highly + customizable development environments. + changelog: https://github.com/telepresenceio/telepresence/blob/$branch$/CHANGELOG.md + items: - version: 2.3.0 date: '2021-06-01' @@ -23,7 +36,7 @@ items: - title: Brew install Telepresence body: "Telepresence can now be installed via brew on macOS, which makes it easier for users to stay up-to-date with the latest telepresence version. To install via brew, you can use the following command: brew install datawire/blackbird/telepresence2." image: ./telepresence-2.3.0-homebrew.png - docs: install/index/ + docs: install/ type: feature - title: TCP and UDP routing via Virtual Network Interface body: "Telepresence will now perform routing of outbound TCP and UDP traffic via a Virtual Network Interface (VIF). The VIF is a layer 3 TUN-device that exists while Telepresence is connected. It makes the subnets in the cluster available to the workstation and will also route DNS requests to the cluster and forward them to intercepted pods. This means that pods with custom DNS configuration will work as expected. Prior versions of Telepresence would use firewall rules and were only capable of routing TCP." From dcd725cadc39093ab87c463e444a17a54783f880 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 11 Jun 2021 15:26:51 -0600 Subject: [PATCH 08/49] Implement redirects, fix links --- redirects.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 redirects.yml diff --git a/redirects.yml b/redirects.yml new file mode 100644 index 0000000000..5961b34775 --- /dev/null +++ b/redirects.yml @@ -0,0 +1 @@ +- {from: "", to: "quick-start"} From 0124c978732813a6bab647e1251373de06c91141 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 12 Jun 2021 01:42:32 -0600 Subject: [PATCH 09/49] docs/: Fix whitespace violations Look for lines with trailing whitespace and files without a trailing newline. --- concepts/context-prop.md | 6 +-- concepts/devloop.md | 30 +++++++-------- concepts/devworkflow.md | 4 +- concepts/faster.md | 14 +++---- faqs.md | 16 ++++---- howtos/intercepts.md | 66 ++++++++++++++++---------------- howtos/outbound.md | 2 +- howtos/preview-urls.md | 36 ++++++++--------- quick-start/demo-node.md | 56 +++++++++++++-------------- quick-start/demo-react.md | 48 +++++++++++------------ quick-start/qs-cards.js | 2 +- quick-start/qs-go.md | 18 ++++----- quick-start/qs-java.md | 18 ++++----- quick-start/qs-node.md | 56 +++++++++++++-------------- quick-start/qs-python-fastapi.md | 18 ++++----- quick-start/qs-python.md | 18 ++++----- reference/client.md | 2 +- reference/cluster-config.md | 10 ++--- reference/dns.md | 24 ++++++------ reference/docker-run.md | 2 +- reference/environment.md | 2 +- reference/linkerd.md | 2 +- reference/rbac.md | 12 +++--- reference/volume.md | 4 +- tutorial.md | 20 +++++----- 25 files changed, 243 insertions(+), 243 deletions(-) diff --git a/concepts/context-prop.md b/concepts/context-prop.md index d2abc167e9..4ec09396ff 100644 --- a/concepts/context-prop.md +++ b/concepts/context-prop.md @@ -1,6 +1,6 @@ # Context propagation -**Context propagation** is the transfer of request metadata across the services and remote processes of a distributed system. Telepresence uses context propagation to intelligently route requests to the appropriate destination. +**Context propagation** is the transfer of request metadata across the services and remote processes of a distributed system. Telepresence uses context propagation to intelligently route requests to the appropriate destination. This metadata is the context that is transferred across system services. It commonly takes the form of HTTP headers; context propagation is usually referred to as header propagation. A component of the system (like a proxy or performance monitoring tool) injects the headers into requests as it relays them. @@ -20,6 +20,6 @@ An application like Datadog or New Relic will use agents running on services thr [Intercepts](../../reference/intercepts) and [preview URLs](../../howtos/preview-urls/) are functions of Telepresence that enable easy local development from a remote Kubernetes cluster and offer a preview environment for sharing and real-time collaboration. -Telepresence also uses custom headers and header propagation for controllable intercepts and preview URLs instead of for tracing. The headers facilitate the smart routing of requests either to live services in the cluster or services running locally on a developer’s machine. +Telepresence also uses custom headers and header propagation for controllable intercepts and preview URLs instead of for tracing. The headers facilitate the smart routing of requests either to live services in the cluster or services running locally on a developer’s machine. -Preview URLs, when created, generate an ingress request containing a custom header with a token (the context). Telepresence sends this token to [Ambassador Cloud](https://app.getambassador.io) with other information about the preview. Visiting the preview URL directs the user to Ambassador Cloud, which proxies the user to the cluster ingress with the token header injected into the request. The request carrying the header is routed in the cluster to the appropriate pod (the propagation). The Traffic Agent on the service pod sees the header and intercepts the request, redirecting it to the local developer machine that ran the intercept. \ No newline at end of file +Preview URLs, when created, generate an ingress request containing a custom header with a token (the context). Telepresence sends this token to [Ambassador Cloud](https://app.getambassador.io) with other information about the preview. Visiting the preview URL directs the user to Ambassador Cloud, which proxies the user to the cluster ingress with the token header injected into the request. The request carrying the header is routed in the cluster to the appropriate pod (the propagation). The Traffic Agent on the service pod sees the header and intercepts the request, redirecting it to the local developer machine that ran the intercept. diff --git a/concepts/devloop.md b/concepts/devloop.md index 9cfd517c5d..886338f329 100644 --- a/concepts/devloop.md +++ b/concepts/devloop.md @@ -1,22 +1,22 @@ -# The developer experience and the inner dev loop +# The developer experience and the inner dev loop ## How is the developer experience changing? -The developer experience is the workflow a developer uses to develop, test, deploy, and release software. +The developer experience is the workflow a developer uses to develop, test, deploy, and release software. -Typically this experience has consisted of both an inner dev loop and an outer dev loop. The inner dev loop is where the individual developer codes and tests, and once the developer pushes their code to version control, the outer dev loop is triggered. +Typically this experience has consisted of both an inner dev loop and an outer dev loop. The inner dev loop is where the individual developer codes and tests, and once the developer pushes their code to version control, the outer dev loop is triggered. The outer dev loop is _everything else_ that happens leading up to release. This includes code merge, automated code review, test execution, deployment, [controlled (canary) release](../../../../argo/latest/concepts/canary/), and observation of results. The modern outer dev loop might include, for example, an automated CI/CD pipeline as part of a [GitOps workflow](../../../../argo/latest/concepts/gitops/#what-is-gitops) and a progressive delivery strategy relying on automated canaries, i.e. to make the outer loop as fast, efficient and automated as possible. -Cloud-native technologies have fundamentally altered the developer experience in two ways: one, developers now have to take extra steps in the inner dev loop; two, developers need to be concerned with the outer dev loop as part of their workflow, even if most of their time is spent in the inner dev loop. +Cloud-native technologies have fundamentally altered the developer experience in two ways: one, developers now have to take extra steps in the inner dev loop; two, developers need to be concerned with the outer dev loop as part of their workflow, even if most of their time is spent in the inner dev loop. -Engineers now must design and build distributed service-based applications _and_ also assume responsibility for the full development life cycle. The new developer experience means that developers can no longer rely on monolithic application developer best practices, such as checking out the entire codebase and coding locally with a rapid “live-reload” inner development loop. Now developers have to manage external dependencies, build containers, and implement orchestration configuration (e.g. Kubernetes YAML). This may appear trivial at first glance, but this adds development time to the equation. +Engineers now must design and build distributed service-based applications _and_ also assume responsibility for the full development life cycle. The new developer experience means that developers can no longer rely on monolithic application developer best practices, such as checking out the entire codebase and coding locally with a rapid “live-reload” inner development loop. Now developers have to manage external dependencies, build containers, and implement orchestration configuration (e.g. Kubernetes YAML). This may appear trivial at first glance, but this adds development time to the equation. -## What is the inner dev loop? +## What is the inner dev loop? -The inner dev loop is the single developer workflow. A single developer should be able to set up and use an inner dev loop to code and test changes quickly. +The inner dev loop is the single developer workflow. A single developer should be able to set up and use an inner dev loop to code and test changes quickly. -Even within the Kubernetes space, developers will find much of the inner dev loop familiar. That is, code can still be written locally at a level that a developer controls and committed to version control. +Even within the Kubernetes space, developers will find much of the inner dev loop familiar. That is, code can still be written locally at a level that a developer controls and committed to version control. In a traditional inner dev loop, if a typical developer codes for 360 minutes (6 hours) a day, with a traditional local iterative development loop of 5 minutes — 3 coding, 1 building, i.e. compiling/deploying/reloading, 1 testing inspecting, and 10-20 seconds for committing code — they can expect to make ~70 iterations of their code per day. Any one of these iterations could be a release candidate. The only “developer tax” being paid here is for the commit process, which is negligible. @@ -24,14 +24,14 @@ In a traditional inner dev loop, if a typical developer codes for 360 minutes (6 ## In search of lost time: How does containerization change the inner dev loop? -The inner dev loop is where writing and testing code happens, and time is critical for maximum developer productivity and getting features in front of end users. The faster the feedback loop, the faster developers can refactor and test again. +The inner dev loop is where writing and testing code happens, and time is critical for maximum developer productivity and getting features in front of end users. The faster the feedback loop, the faster developers can refactor and test again. Changes to the inner dev loop process, i.e., containerization, threaten to slow this development workflow down. Coding stays the same in the new inner dev loop, but code has to be containerized. The _containerized_ inner dev loop requires a number of new steps: * packaging code in containers * writing a manifest to specify how Kubernetes should run the application (e.g., YAML-based configuration information, such as how much memory should be given to a container) * pushing the container to the registry -* deploying containers in Kubernetes +* deploying containers in Kubernetes Each new step within the container inner dev loop adds to overall development time, and developers are repeating this process frequently. If the build time is incremented to 5 minutes — not atypical with a standard container build, registry upload, and deploy — then the number of possible development iterations per day drops to ~40. At the extreme that’s a 40% decrease in potential new features being released. This new container build step is a hidden tax, which is quite expensive. @@ -40,11 +40,11 @@ Each new step within the container inner dev loop adds to overall development ti ## Tackling the slow inner dev loop -A slow inner dev loop can negatively impact frontend and backend teams, delaying work on individual and team levels and slowing releases into production overall. +A slow inner dev loop can negatively impact frontend and backend teams, delaying work on individual and team levels and slowing releases into production overall. -For example: +For example: -* Frontend developers have to wait for previews of backend changes on a shared dev/staging environment (for example, until CI/CD deploys a new version) and/or rely on mocks/stubs/virtual services when coding their application locally. These changes are only verifiable by going through the CI/CD process to build and deploy within a target environment. -* Backend developers have to wait for CI/CD to build and deploy their app to a target environment to verify that their code works correctly with cluster or cloud-based dependencies as well as to share their work to get feedback. +* Frontend developers have to wait for previews of backend changes on a shared dev/staging environment (for example, until CI/CD deploys a new version) and/or rely on mocks/stubs/virtual services when coding their application locally. These changes are only verifiable by going through the CI/CD process to build and deploy within a target environment. +* Backend developers have to wait for CI/CD to build and deploy their app to a target environment to verify that their code works correctly with cluster or cloud-based dependencies as well as to share their work to get feedback. -New technologies and tools can facilitate cloud-native, containerized development. And in the case of a sluggish inner dev loop, developers can accelerate productivity with tools that help speed the loop up again. \ No newline at end of file +New technologies and tools can facilitate cloud-native, containerized development. And in the case of a sluggish inner dev loop, developers can accelerate productivity with tools that help speed the loop up again. diff --git a/concepts/devworkflow.md b/concepts/devworkflow.md index 18e685faac..b09f186d0d 100644 --- a/concepts/devworkflow.md +++ b/concepts/devworkflow.md @@ -2,6 +2,6 @@ A changing workflow is one of the main challenges for developers adopting Kubernetes. Software development itself isn’t the challenge. Developers can continue to [code using the languages and tools with which they are most productive and comfortable](/resources/kubernetes-local-dev-toolkit/). That’s the beauty of containerized development. -However, the cloud-native, Kubernetes-based approach to development means adopting a new development workflow and development environment. Beyond the basics, such as figuring out how to containerize software, [how to run containers in Kubernetes](/docs/kubernetes/latest/concepts/appdev/), and how to deploy changes into containers, for example, Kubernetes adds complexity before it delivers efficiency. The promise of a “quicker way to develop software” applies at least within the traditional aspects of the inner dev loop, where the single developer codes, builds and tests their software. But both within the inner dev loop and once code is pushed into version control to trigger the outer dev loop, the developer experience changes considerably from what many developers are used to. +However, the cloud-native, Kubernetes-based approach to development means adopting a new development workflow and development environment. Beyond the basics, such as figuring out how to containerize software, [how to run containers in Kubernetes](/docs/kubernetes/latest/concepts/appdev/), and how to deploy changes into containers, for example, Kubernetes adds complexity before it delivers efficiency. The promise of a “quicker way to develop software” applies at least within the traditional aspects of the inner dev loop, where the single developer codes, builds and tests their software. But both within the inner dev loop and once code is pushed into version control to trigger the outer dev loop, the developer experience changes considerably from what many developers are used to. -In this new paradigm, new steps are added to the inner dev loop, and more broadly, the developer begins to share responsibility for the full life cycle of their software. Inevitably this means taking new workflows and tools on board to ensure that the full life cycle continues full speed ahead. \ No newline at end of file +In this new paradigm, new steps are added to the inner dev loop, and more broadly, the developer begins to share responsibility for the full life cycle of their software. Inevitably this means taking new workflows and tools on board to ensure that the full life cycle continues full speed ahead. diff --git a/concepts/faster.md b/concepts/faster.md index 90ddf890ad..7aa74ad1ab 100644 --- a/concepts/faster.md +++ b/concepts/faster.md @@ -4,22 +4,22 @@ With the goal of achieving [fast, efficient development](/use-case/local-kuberne ## How should I set up a Kubernetes development environment? -[Setting up a development environment](/resources/development-environments-microservices/) for Kubernetes can be much more complex than the set up for traditional web applications. Creating and maintaining a Kubernetes development environment relies on a number of external dependencies, such as databases or authentication. +[Setting up a development environment](/resources/development-environments-microservices/) for Kubernetes can be much more complex than the set up for traditional web applications. Creating and maintaining a Kubernetes development environment relies on a number of external dependencies, such as databases or authentication. -While there are several ways to set up a Kubernetes development environment, most introduce complexities and impediments to speed. The dev environment should be set up to easily code and test in conditions where a service can access the resources it depends on. +While there are several ways to set up a Kubernetes development environment, most introduce complexities and impediments to speed. The dev environment should be set up to easily code and test in conditions where a service can access the resources it depends on. A good way to meet the goals of faster feedback, possibilities for collaboration, and scale in a realistic production environment is the "single service local, all other remote" environment. Developing in a fully remote environment offers some benefits, but for developers, it offers the slowest possible feedback loop. With local development in a remote environment, the developer retains considerable control while using tools like [Telepresence](../../quick-start/) to facilitate fast feedback, debugging and collaboration. ## What is Telepresence? -Telepresence is an open source tool that lets developers [code and test microservices locally against a remote Kubernetes cluster](../../quick-start/). Telepresence facilitates more efficient development workflows while relieving the need to worry about other service dependencies. +Telepresence is an open source tool that lets developers [code and test microservices locally against a remote Kubernetes cluster](../../quick-start/). Telepresence facilitates more efficient development workflows while relieving the need to worry about other service dependencies. ## How can I get fast, efficient local development? -The dev loop can be jump-started with the right development environment and Kubernetes development tools to support speed, efficiency and collaboration. Telepresence is designed to let Kubernetes developers code as though their laptop is in their Kubernetes cluster, enabling the service to run locally and be proxied into the remote cluster. Telepresence runs code locally and forwards requests to and from the remote Kubernetes cluster, bypassing the much slower process of waiting for a container to build, pushing it to registry, and deploying to production. +The dev loop can be jump-started with the right development environment and Kubernetes development tools to support speed, efficiency and collaboration. Telepresence is designed to let Kubernetes developers code as though their laptop is in their Kubernetes cluster, enabling the service to run locally and be proxied into the remote cluster. Telepresence runs code locally and forwards requests to and from the remote Kubernetes cluster, bypassing the much slower process of waiting for a container to build, pushing it to registry, and deploying to production. -A rapid and continuous feedback loop is essential for productivity and speed; Telepresence enables the fast, efficient feedback loop to ensure that developers can access the rapid local development loop they rely on without disrupting their own or other developers' workflows. Telepresence safely intercepts traffic from the production cluster and enables near-instant testing of code, local debugging in production, and [preview URL](../../howtos/preview-urls/) functionality to share dev environments with others for multi-user collaboration. +A rapid and continuous feedback loop is essential for productivity and speed; Telepresence enables the fast, efficient feedback loop to ensure that developers can access the rapid local development loop they rely on without disrupting their own or other developers' workflows. Telepresence safely intercepts traffic from the production cluster and enables near-instant testing of code, local debugging in production, and [preview URL](../../howtos/preview-urls/) functionality to share dev environments with others for multi-user collaboration. -Telepresence works by deploying a two-way network proxy in a pod running in a Kubernetes cluster. This pod proxies data from the Kubernetes environment (e.g., TCP connections, environment variables, volumes) to the local process. This proxy can intercept traffic meant for the service and reroute it to a local copy, which is ready for further (local) development. +Telepresence works by deploying a two-way network proxy in a pod running in a Kubernetes cluster. This pod proxies data from the Kubernetes environment (e.g., TCP connections, environment variables, volumes) to the local process. This proxy can intercept traffic meant for the service and reroute it to a local copy, which is ready for further (local) development. -The intercept proxy works thanks to context propagation, which is most frequently associated with distributed tracing but also plays a key role in controllable intercepts and preview URLs. \ No newline at end of file +The intercept proxy works thanks to context propagation, which is most frequently associated with distributed tracing but also plays a key role in controllable intercepts and preview URLs. diff --git a/faqs.md b/faqs.md index 7aeb93e22b..6029899fc1 100644 --- a/faqs.md +++ b/faqs.md @@ -10,7 +10,7 @@ description: "Learn how Telepresence helps with fast development and debugging i Telepresence enables you to connect your local development machine seamlessly to the cluster via a two way proxying mechanism. This enables you to code locally and run the majority of your services within a remote Kubernetes cluster -- which in the cloud means you have access to effectively unlimited resources. -Ultimately, this empowers you to develop services locally and still test integrations with dependent services or data stores running in the remote cluster. +Ultimately, this empowers you to develop services locally and still test integrations with dependent services or data stores running in the remote cluster. You can “intercept” any requests made to a target Kubernetes workload, and code and debug your associated service locally using your favourite local IDE and in-process debugger. You can test your integrations by making requests against the remote cluster’s ingress and watching how the resulting internal traffic is handled by your service running locally. @@ -25,7 +25,7 @@ By using the preview URL functionality you can share access with additional deve - gRPC - GraphQL -If you need another protocol supported, please [drop us a line](../../../../feedback) to request it. +If you need another protocol supported, please [drop us a line](../../../../feedback) to request it. ** When using Telepresence to intercept a pod, are the Kubernetes cluster environment variables proxied to my local machine?** @@ -41,7 +41,7 @@ Yes. After you have successfully connected to your cluster via `telepresence con This means you can curl endpoints directly e.g. `curl .:8080/mypath`. -If you create an intercept for a service in a namespace, you will be able to use the service name directly. +If you create an intercept for a service in a namespace, you will be able to use the service name directly. This means if you `telepresence intercept -n `, you will be able to resolve just the `` DNS record. @@ -53,13 +53,13 @@ You can connect to databases or middleware running in the cluster, such as MySQL ** What types of ingress does Telepresence support for the preview URL functionality?** - The preview URL functionality should work with most ingress configurations, including straightforward load balancer setups. + The preview URL functionality should work with most ingress configurations, including straightforward load balancer setups. -Telepresence will discover/prompt during first use for this info and make its best guess at figuring this out and ask you to confirm or update this. +Telepresence will discover/prompt during first use for this info and make its best guess at figuring this out and ask you to confirm or update this. ** Will Telepresence be able to intercept workloads running on a private cluster or cluster running within a virtual private cloud (VPC)?** - Yes. The cluster has to have outbound access to the internet for the preview URLs to function correctly, but it doesn’t need to have a publicly accessible IP address. + Yes. The cluster has to have outbound access to the internet for the preview URLs to function correctly, but it doesn’t need to have a publicly accessible IP address. The cluster must also have access to an external registry in order to be able to download the Traffic Manager and Traffic Agent containers that are deployed when connecting with Telepresence. @@ -77,7 +77,7 @@ A Traffic Agent container is injected per pod that is being intercepted. The fir ** How can I remove all of the Telepresence components installed within my cluster?** - You can run the command `telepresence uninstall --everything` to remove the Traffic Manager service installed in the cluster and Traffic Agent containers injected into each pod being intercepted. + You can run the command `telepresence uninstall --everything` to remove the Traffic Manager service installed in the cluster and Traffic Agent containers injected into each pod being intercepted. Running this command will also stop the local daemon running. @@ -105,4 +105,4 @@ More authentication mechanisms and identity provider support will be added soon. ** How do I share my feedback on Telepresence?** - Your feedback is always appreciated and helps us build a product that provides as much value as possible for our community. You can chat with us directly on our [feedback page](../../../../feedback), or you can [join our Slack channel](https://a8r.io/Slack) to share your thoughts. + Your feedback is always appreciated and helps us build a product that provides as much value as possible for our community. You can chat with us directly on our [feedback page](../../../../feedback), or you can [join our Slack channel](https://a8r.io/Slack) to share your thoughts. diff --git a/howtos/intercepts.md b/howtos/intercepts.md index 747a12a7e8..2d98a18c41 100644 --- a/howtos/intercepts.md +++ b/howtos/intercepts.md @@ -28,7 +28,7 @@ You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/insta If you have used Telepresence previously, please first reset your Telepresence deployment with: `telepresence uninstall --everything`. -This guide assumes you have a Kubernetes deployment and service accessible publicly by an ingress controller and that you can run a copy of that service on your laptop. +This guide assumes you have a Kubernetes deployment and service accessible publicly by an ingress controller and that you can run a copy of that service on your laptop. ## 1. Install the Telepresence CLI @@ -38,7 +38,7 @@ This guide assumes you have a Kubernetes deployment and service accessible publi Telepresence connects your local workstation to a remote Kubernetes cluster. -1. Connect to the cluster: +1. Connect to the cluster: `telepresence connect` ``` @@ -66,7 +66,7 @@ Telepresence connects your local workstation to a remote Kubernetes cluster. ``` $ curl -ik https://kubernetes.default - + HTTP/1.1 401 Unauthorized Cache-Control: no-cache, private Content-Type: application/json @@ -83,27 +83,27 @@ Telepresence connects your local workstation to a remote Kubernetes cluster. ## 3. Intercept your service -In this section, we will go through the steps required for you to intercept all traffic going to a service in your cluster and route it to your local environment instead. +In this section, we will go through the steps required for you to intercept all traffic going to a service in your cluster and route it to your local environment instead. 1. List the services that you can intercept with `telepresence list` and make sure the one you want to intercept is listed. For example, this would confirm that `example-service` can be intercepted by Telepresence: ``` $ telepresence list - + ... example-service: ready to intercept (traffic-agent not yet installed) ... ``` -2. Get the name of the port you want to intercept on your service: +2. Get the name of the port you want to intercept on your service: `kubectl get service --output yaml`. For example, this would show that the port `80` is named `http` in the `example-service`: - + ``` $ kubectl get service example-service --output yaml - + ... ports: - name: http @@ -113,18 +113,18 @@ In this section, we will go through the steps required for you to intercept all ... ``` -3. Intercept all traffic going to the service in your cluster: +3. Intercept all traffic going to the service in your cluster: `telepresence intercept --port [:] --env-file `. - For the `--port` argument, specify the port on which your local instance of your service will be running. - If the service you are intercepting exposes more than one port, specify the one you want to intercept after a colon. - For the `--env-file` argument, specify the path to a file on which Telepresence should write the environment variables that your service is currently running with. This is going to be useful as we start our service. - - For the example below, Telepresence will intercept traffic going to service `example-service` so that requests reaching it on port `http` in the cluster get routed to `8080` on the workstation and write the environment variables of the service to `~/example-service-intercept.env`. + + For the example below, Telepresence will intercept traffic going to service `example-service` so that requests reaching it on port `http` in the cluster get routed to `8080` on the workstation and write the environment variables of the service to `~/example-service-intercept.env`. ``` $ telepresence intercept example-service --port 8080:http --env-file ~/example-service-intercept.env - + Using Deployment example-service intercepted Intercept name: example-service @@ -144,11 +144,11 @@ In this section, we will go through the steps required for you to intercept all 5. Query the environment in which you intercepted a service the way you usually would and see your local instance being invoked. - Didn't work? Make sure the port you're listening on matches the one specified when creating your intercept. + Didn't work? Make sure the port you're listening on matches the one specified when creating your intercept. - Congratulations! All the traffic usually going to your Kubernetes Service is now being routed to your local environment! + Congratulations! All the traffic usually going to your Kubernetes Service is now being routed to your local environment! You can now: @@ -158,26 +158,26 @@ You can now: ## 4. Create a preview URL to only intercept certain requests to your service -When working on a development environment with multiple engineers, you don't want your intercepts to impact your -teammates. Ambassador Cloud automatically generates a preview URL when creating an intercept if you are logged in. By +When working on a development environment with multiple engineers, you don't want your intercepts to impact your +teammates. Ambassador Cloud automatically generates a preview URL when creating an intercept if you are logged in. By doing so, Telepresence can route only the requests coming from that preview URL to your local environment; the rest will be routed to your cluster as usual. -1. Clean up your previous intercept by removing it: +1. Clean up your previous intercept by removing it: `telepresence leave ` -2. Login to Ambassador Cloud, a web interface for managing and sharing preview URLs: +2. Login to Ambassador Cloud, a web interface for managing and sharing preview URLs: `telepresence login` - + ``` $ telepresence login - + Launching browser authentication flow... Login successful. ``` -3. Start the intercept again: +3. Start the intercept again: `telepresence intercept --port [:] --env-file ` You will be asked for the following information: @@ -185,38 +185,38 @@ be routed to your cluster as usual. 2. **Ingress port**: The port on which your ingress controller is listening (often 80 for non-TLS and 443 for TLS). 3. **Ingress TLS encryption**: Whether the ingress controller is expecting TLS communication on the specified port. 4. **Ingress layer 5 hostname**: If your ingress controller routes traffic based on a domain name (often using the `Host` HTTP header), this is the value you would need to enter here. - + Telepresence supports any ingress controller, not just Ambassador Edge Stack. For the example below, you will create a preview URL that will send traffic to the `ambassador` service in the `ambassador` namespace on port `443` using TLS encryption and setting the `Host` HTTP header to `dev-environment.edgestack.me`: - + ``` $ telepresence intercept example-service --port 8080:http --env-file ~/example-service-intercept.env - + To create a preview URL, telepresence needs to know how cluster ingress works for this service. Please Confirm the ingress to use. - + 1/4: What's your ingress' layer 3 (IP) address? You may use an IP address or a DNS name (this is usually a "service.namespace" DNS name). - + [default: -]: ambassador.ambassador - + 2/4: What's your ingress' layer 4 address (TCP port number)? - + [default: -]: 443 - + 3/4: Does that TCP port on your ingress use TLS (as opposed to cleartext)? - + [default: n]: y - + 4/4: If required by your ingress, specify a different layer 5 hostname (TLS-SNI, HTTP "Host" header) to access this service. - + [default: ambassador.ambassador]: dev-environment.edgestack.me - + Using Deployment example-service intercepted Intercept name : example-service diff --git a/howtos/outbound.md b/howtos/outbound.md index 89bb837454..83ec20b018 100644 --- a/howtos/outbound.md +++ b/howtos/outbound.md @@ -75,7 +75,7 @@ When using this option, it is important to include all namespaces containing ser An intercept with the flag`--local-only` can be used to control outbound connectivity to specific namespaces. -When developing services that have not yet been deployed to the cluster, it can be necessary to provide outbound connectivity to the namespace where the service is intended to be deployed so that it can access other services in that namespace without using qualified names. +When developing services that have not yet been deployed to the cluster, it can be necessary to provide outbound connectivity to the namespace where the service is intended to be deployed so that it can access other services in that namespace without using qualified names. ``` $ telepresence intercept --namespace --local-only diff --git a/howtos/preview-urls.md b/howtos/preview-urls.md index 595acf098d..eaacdff14a 100644 --- a/howtos/preview-urls.md +++ b/howtos/preview-urls.md @@ -24,7 +24,7 @@ Need a sample app to try with preview URLs? Check out the Login successful. ``` -3. Start the intercept: +3. Start the intercept: `telepresence intercept --port --env-file ` For `--port`, specify the port on which your local instance of your service will be running. If the service you are intercepting exposes more than one port, specify the one you want to intercept after a colon. @@ -57,32 +57,32 @@ Need a sample app to try with preview URLs? Check out the Congratulations! You have now created a dev environment and shared it with a teammate! While you and your partner work together to debug your service, the production version remains unchanged to the rest of your team until you commit your changes. ## Sharing a preview URL with people outside your team -To collaborate with someone outside of your identity provider's organization, you must go to [Ambassador Cloud](https://app.getambassador.io/cloud/preview/), select the preview URL, and click **Make Publicly Accessible**. Now anyone with the link will have access to the preview URL. When they visit the preview URL, they will see the intercepted service running on your laptop. +To collaborate with someone outside of your identity provider's organization, you must go to [Ambassador Cloud](https://app.getambassador.io/cloud/preview/), select the preview URL, and click **Make Publicly Accessible**. Now anyone with the link will have access to the preview URL. When they visit the preview URL, they will see the intercepted service running on your laptop. To disable sharing the preview URL publicly, click **Require Authentication** in the dashboard. Removing the intercept either from the dashboard or by running `telepresence leave ` also removes all access to the preview URL. diff --git a/quick-start/demo-node.md b/quick-start/demo-node.md index 82b5233e27..2f063e9d80 100644 --- a/quick-start/demo-node.md +++ b/quick-start/demo-node.md @@ -22,7 +22,7 @@ import QSCards from './qs-cards' -In this guide we'll give you **everything you need in a preconfigured demo cluster:** the Telepresence CLI, a config file for connecting to your demo cluster, and code to run a cluster service locally. +In this guide we'll give you **everything you need in a preconfigured demo cluster:** the Telepresence CLI, a config file for connecting to your demo cluster, and code to run a cluster service locally. While Telepresence works with any language, this guide uses a sample app written in Node.js. We have a version in React if you prefer. @@ -48,13 +48,13 @@ In this guide we'll give you **everything you need in a preconfigured demo clust cd ambassador-demo-cluster ./install.sh ``` - -3. The demo cluster we provided already has a demo app running. List the app's services: + +3. The demo cluster we provided already has a demo app running. List the app's services: `kubectl get services` ``` $ kubectl get services - + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.0.1 443/TCP 14h dataprocessingservice ClusterIP 10.43.159.239 3000/TCP 14h @@ -62,12 +62,12 @@ In this guide we'll give you **everything you need in a preconfigured demo clust verylargedatastore ClusterIP 10.43.203.19 8080/TCP 14h ``` -4. Confirm that the Telepresence CLI is now installed (we expect to see the daemons are not running yet): +4. Confirm that the Telepresence CLI is now installed (we expect to see the daemons are not running yet): `telepresence status` ``` $ telepresence status - + Root Daemon: Not running User Daemon: Not running ``` @@ -84,23 +84,23 @@ In this guide we'll give you **everything you need in a preconfigured demo clust Telepresence connects your local workstation to a remote Kubernetes cluster. -1. Connect to the cluster (this requires root privileges and will ask for your password): +1. Connect to the cluster (this requires root privileges and will ask for your password): `telepresence connect` ``` $ telepresence connect - + Launching Telepresence Daemon ... Connected to context default (https://) ``` -2. Test that Telepresence is working properly by connecting to the Kubernetes API server: +2. Test that Telepresence is working properly by connecting to the Kubernetes API server: `curl -ik https://kubernetes.default` ``` $ curl -ik https://kubernetes.default - + HTTP/1.1 401 Unauthorized Cache-Control: no-cache, private Content-Type: application/json @@ -126,7 +126,7 @@ We'll use a sample app that is already installed in your demo cluster. Let's ta ``` $ kubectl get pods - + NAME READY STATUS RESTARTS AGE verylargedatastore-855c8b8789-z8nhs 1/1 Running 0 78s verylargejavaservice-7dfddbc95c-696br 1/1 Running 0 78s @@ -153,19 +153,19 @@ Now start up the DataProcessingService service on your laptop. This version of t ``` $ npm start - + ... Welcome to the DataProcessingService! { _: [] } Server running on port 3000 ``` -4. **Back in your previous terminal window**, curl the service running locally to confirm it’s set to blue: +4. **Back in your previous terminal window**, curl the service running locally to confirm it’s set to blue: `curl localhost:3000/color` ``` $ curl localhost:3000/color - + "blue" ``` @@ -176,7 +176,7 @@ Now start up the DataProcessingService service on your laptop. This version of t ## 5. Intercept all traffic to the service Next, we’ll create an intercept. An intercept is a rule that tells Telepresence where to send traffic. In this example, we will send all traffic destined for the DataProcessingService to the version of the DataProcessingService running locally instead: -1. Start the intercept with the `intercept` command, setting the service name and port: +1. Start the intercept with the `intercept` command, setting the service name and port: `telepresence intercept dataprocessingservice --port 3000` @@ -185,7 +185,7 @@ Next, we’ll create an intercept. An intercept is a rule that tells Telepresenc ``` $ telepresence intercept dataprocessingservice --port 3000 - + Using deployment dataprocessingservice intercepted Intercept name: dataprocessingservice @@ -217,7 +217,7 @@ We’ve now set up a local development environment for the DataProcessingService ## 7. Create a Preview URL Create preview URLs to do selective intercepts, meaning only traffic coming from the preview URL will be intercepted, so you can easily share the services you’re working on with your teammates. -1. Clean up your previous intercept by removing it: +1. Clean up your previous intercept by removing it: `telepresence leave dataprocessingservice` 2. Login to Ambassador Cloud, a web interface for managing and sharing preview URLs: @@ -232,7 +232,7 @@ Create preview URLs to do selective intercepts, meaning only traffic coming from Login successful. ``` -3. Start the intercept again: +3. Start the intercept again: `telepresence intercept dataprocessingservice --port 3000` You will be asked for your ingress layer 3 address; specify the front end service: `verylargejavaservice.default` @@ -240,29 +240,29 @@ Create preview URLs to do selective intercepts, meaning only traffic coming from ``` $ telepresence intercept dataprocessingservice --port 3000 - + To create a preview URL, telepresence needs to know how cluster ingress works for this service. Please Select the ingress to use. - + 1/4: What's your ingress' layer 3 (IP) address? You may use an IP address or a DNS name (this is usually a "service.namespace" DNS name). - + [no default]: verylargejavaservice.default - + 2/4: What's your ingress' layer 4 address (TCP port number)? - + [no default]: 8080 - + 3/4: Does that TCP port on your ingress use TLS (as opposed to cleartext)? - + [default: n]: n - + 4/4: If required by your ingress, specify a different layer 5 hostname (TLS-SNI, HTTP "Host" header) to access this service. - + [default: verylargejavaservice.default]: - + Using deployment dataprocessingservice intercepted Intercept name : dataprocessingservice diff --git a/quick-start/demo-react.md b/quick-start/demo-react.md index 37cce75a5a..a54d22506b 100644 --- a/quick-start/demo-react.md +++ b/quick-start/demo-react.md @@ -22,7 +22,7 @@ import QSCards from './qs-cards' -In this guide we'll give you **everything you need in a preconfigured demo cluster:** the Telepresence CLI, a config file for connecting to your demo cluster, and code to run a cluster service locally. +In this guide we'll give you **everything you need in a preconfigured demo cluster:** the Telepresence CLI, a config file for connecting to your demo cluster, and code to run a cluster service locally. While Telepresence works with any language, this guide uses a sample app with a frontend written in React. We have a version with a Node.js backend if you prefer. @@ -51,23 +51,23 @@ In this guide we'll give you **everything you need in a preconfigured demo clust ./install.sh # type y to install the npm dependencies when asked ``` - -3. Confirm that your `kubectl` is configured to use the demo cluster by getting the status of the cluster nodes, you should see a single node named `tpdemo-prod-...`: + +3. Confirm that your `kubectl` is configured to use the demo cluster by getting the status of the cluster nodes, you should see a single node named `tpdemo-prod-...`: `kubectl get nodes` ``` $ kubectl get nodes - + NAME STATUS ROLES AGE VERSION tpdemo-prod-1234 Ready control-plane,master 5d10h v1.20.2+k3s1 ``` -4. Confirm that the Telepresence CLI is now installed (we expect to see the daemons are not running yet): +4. Confirm that the Telepresence CLI is now installed (we expect to see the daemons are not running yet): `telepresence status` ``` $ telepresence status - + Root Daemon: Not running User Daemon: Not running ``` @@ -84,23 +84,23 @@ In this guide we'll give you **everything you need in a preconfigured demo clust Telepresence connects your local workstation to a remote Kubernetes cluster. -1. Connect to the cluster (this requires **root** privileges and will ask for your password): +1. Connect to the cluster (this requires **root** privileges and will ask for your password): `telepresence connect` ``` $ telepresence connect - + Launching Telepresence Daemon ... Connected to context default (https://) ``` -2. Test that Telepresence is working properly by connecting to the Kubernetes API server: +2. Test that Telepresence is working properly by connecting to the Kubernetes API server: `curl -ik https://kubernetes.default` ``` $ curl -ik https://kubernetes.default - + HTTP/1.1 401 Unauthorized Cache-Control: no-cache, private Content-Type: application/json @@ -124,21 +124,21 @@ Your local workstation may not have the compute or memory resources necessary to We'll use a sample app that is already installed in your demo cluster. Let's take a quick look at it's architecture before continuing. --> -1. Clone the emojivoto app: +1. Clone the emojivoto app: `git clone https://github.com/datawire/emojivoto.git` -1. Deploy the app to your cluster: +1. Deploy the app to your cluster: `kubectl apply -k emojivoto/kustomize/deployment` -1. Change the kubectl namespace: +1. Change the kubectl namespace: `kubectl config set-context --current --namespace=emojivoto` -1. List the Services: +1. List the Services: `kubectl get svc` ``` $ kubectl get svc - + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE emoji-svc ClusterIP 10.43.162.236 8080/TCP,8801/TCP 29s voting-svc ClusterIP 10.43.51.201 8080/TCP,8801/TCP 29s @@ -154,7 +154,7 @@ We'll use a sample app that is already installed in your demo cluster. Let's ta ## 4. Test app -1. Vote for some emojis and see how the [leaderboard](http://web-app.emojivoto/leaderboard) changes. +1. Vote for some emojis and see how the [leaderboard](http://web-app.emojivoto/leaderboard) changes. 1. There is one emoji that causes an error when you vote for it. Vote for 🍩 and the leaderboard does not actually update. Also an error is shown on the browser dev console: `GET http://web-svc.emojivoto:8080/api/vote?choice=:doughnut: 500 (Internal Server Error)` @@ -172,12 +172,12 @@ Now start up the `web-app` service on your laptop. We'll then make a code change 1. **In a new terminal window**, change into the repo directory and build the application: - `cd /emojivoto` + `cd /emojivoto` `make web-app-local` ``` $ make web-app-local - + ... webpack 5.34.0 compiled successfully in 4326 ms ✨ Done in 5.38s. @@ -185,12 +185,12 @@ Now start up the `web-app` service on your laptop. We'll then make a code change 2. Change into the service's code directory and start the server: - `cd emojivoto-web-app` + `cd emojivoto-web-app` `yarn webpack serve` ``` $ yarn webpack serve - + ... ℹ 「wds」: Project is running at http://localhost:8080/ ... @@ -204,7 +204,7 @@ Now start up the `web-app` service on your laptop. We'll then make a code change ## 6. Make a code change -We’ve now set up a local development environment for the app. Next we'll make and locally test a code change to the app to improve the issue with voting for 🍩. +We’ve now set up a local development environment for the app. Next we'll make and locally test a code change to the app to improve the issue with voting for 🍩. 1. In the terminal running webpack, stop the server with `Ctrl+c`. @@ -212,7 +212,7 @@ We’ve now set up a local development environment for the app. Next we'll make 1. Run webpack to fully recompile the code then start the server again: - `yarn webpack` + `yarn webpack` `yarn webpack serve` 1. Reload the browser tab showing [http://localhost:8080](http://localhost:8080) and vote for 🍩. Notice how you see an error instead, improving the user experience. @@ -224,12 +224,12 @@ Next, we’ll create an intercept. An intercept is a rule that tells Telepresenc This command must be run in the terminal window where you ran the script because the script set environment variables to access the demo cluster. Those variables will only will apply to that terminal session. -1. Start the intercept with the `intercept` command, setting the workload name (a Deployment in this case), namespace, and port: +1. Start the intercept with the `intercept` command, setting the workload name (a Deployment in this case), namespace, and port: `telepresence intercept web-app --namespace emojivoto --port 8080` ``` $ telepresence intercept web-app --namespace emojivoto --port 8080 - + Using deployment web-app intercepted Intercept name: web-app-emojivoto diff --git a/quick-start/qs-cards.js b/quick-start/qs-cards.js index 604a900108..80540b693c 100644 --- a/quick-start/qs-cards.js +++ b/quick-start/qs-cards.js @@ -61,4 +61,4 @@ export default function CenteredGrid() { ); -} \ No newline at end of file +} diff --git a/quick-start/qs-go.md b/quick-start/qs-go.md index 4985a0a400..5c4a47c999 100644 --- a/quick-start/qs-go.md +++ b/quick-start/qs-go.md @@ -268,26 +268,26 @@ Create preview URLs to do selective intercepts, meaning only traffic coming from To create a preview URL, telepresence needs to know how cluster ingress works for this service. Please Select the ingress to use. - + 1/4: What's your ingress' layer 3 (IP) address? You may use an IP address or a DNS name (this is usually a "service.namespace" DNS name). - + [no default]: verylargejavaservice.default - + 2/4: What's your ingress' layer 4 address (TCP port number)? - + [no default]: 8080 - + 3/4: Does that TCP port on your ingress use TLS (as opposed to cleartext)? - + [default: n]: - + 4/4: If required by your ingress, specify a different layer 5 hostname (TLS-SNI, HTTP "Host" header) to access this service. - + [default: verylargejavaservice.default]: - + Using Deployment dataprocessingservice intercepted Intercept name : dataprocessingservice diff --git a/quick-start/qs-java.md b/quick-start/qs-java.md index b454ccce01..baf0486e95 100644 --- a/quick-start/qs-java.md +++ b/quick-start/qs-java.md @@ -262,26 +262,26 @@ Create preview URLs to do selective intercepts, meaning only traffic coming from To create a preview URL, telepresence needs to know how cluster ingress works for this service. Please Select the ingress to use. - + 1/4: What's your ingress' layer 3 (IP) address? You may use an IP address or a DNS name (this is usually a "service.namespace" DNS name). - + [no default]: verylargejavaservice.default - + 2/4: What's your ingress' layer 4 address (TCP port number)? - + [no default]: 8080 - + 3/4: Does that TCP port on your ingress use TLS (as opposed to cleartext)? - + [default: n]: - + 4/4: If required by your ingress, specify a different layer 5 hostname (TLS-SNI, HTTP "Host" header) to access this service. - + [default: verylargejavaservice.default]: - + Using Deployment dataprocessingservice intercepted Intercept name : dataprocessingservice diff --git a/quick-start/qs-node.md b/quick-start/qs-node.md index b189ac0731..16483ee2ad 100644 --- a/quick-start/qs-node.md +++ b/quick-start/qs-node.md @@ -51,12 +51,12 @@ If you have used Telepresence previously, please first reset your Telepresence d Telepresence connects your local workstation to a remote Kubernetes cluster. -1. Connect to the cluster: +1. Connect to the cluster: `telepresence connect` ``` $ telepresence connect - + Launching Telepresence Daemon ... Connected to context default (https://) @@ -70,7 +70,7 @@ Telepresence connects your local workstation to a remote Kubernetes cluster. Click Open Anyway at the bottom to bypass the security block. Then retry the telepresence connect command. -2. Test that Telepresence is working properly by connecting to the Kubernetes API server: +2. Test that Telepresence is working properly by connecting to the Kubernetes API server: `curl -ik https://kubernetes.default` @@ -79,7 +79,7 @@ Telepresence connects your local workstation to a remote Kubernetes cluster. ``` $ curl -ik https://kubernetes.default - + HTTP/1.1 401 Unauthorized Cache-Control: no-cache, private Content-Type: application/json @@ -102,12 +102,12 @@ Your local workstation may not have the compute or memory resources necessary to While Telepresence works with any language, this guide uses a sample app written in Node.js. We have versions in Go, Java,Python using Flask, and Python using FastAPI if you prefer. -1. Start by installing a sample application that consists of multiple services: +1. Start by installing a sample application that consists of multiple services: `kubectl apply -f https://raw.githubusercontent.com/datawire/edgey-corp-nodejs/main/k8s-config/edgey-corp-web-app-no-mapping.yaml` ``` $ kubectl apply -f https://raw.githubusercontent.com/datawire/edgey-corp-nodejs/main/k8s-config/edgey-corp-web-app-no-mapping.yaml - + deployment.apps/dataprocessingservice created service/dataprocessingservice created ... @@ -120,7 +120,7 @@ Your local workstation may not have the compute or memory resources necessary to ``` $ kubectl get pods - + NAME READY STATUS RESTARTS AGE verylargedatastore-855c8b8789-z8nhs 1/1 Running 0 78s verylargejavaservice-7dfddbc95c-696br 1/1 Running 0 78s @@ -142,26 +142,26 @@ You will now download the repo containing the services' code and run the DataPro Confirm first that nothing is running locally on port 3000! If curl localhost:3000 returns Connection refused then you should be good to go. -1. Clone the web app’s GitHub repo: +1. Clone the web app’s GitHub repo: `git clone https://github.com/datawire/edgey-corp-nodejs.git` ``` $ git clone https://github.com/datawire/edgey-corp-nodejs.git - + Cloning into 'edgey-corp-nodejs'... remote: Enumerating objects: 441, done. ... ``` -2. Change into the repo directory, then into DataProcessingService: +2. Change into the repo directory, then into DataProcessingService: `cd edgey-corp-nodejs/DataProcessingService/` -3. Install the dependencies and start the Node server: +3. Install the dependencies and start the Node server: `npm install && npm start` ``` $ npm install && npm start - + ... Welcome to the DataProcessingService! { _: [] } @@ -172,12 +172,12 @@ You will now download the repo containing the services' code and run the DataPro Install Node.js from here if needed. -4. In a **new terminal window**, curl the service running locally to confirm it’s set to blue: +4. In a **new terminal window**, curl the service running locally to confirm it’s set to blue: `curl localhost:3000/color` ``` $ curl localhost:3000/color - + "blue" ``` @@ -188,12 +188,12 @@ You will now download the repo containing the services' code and run the DataPro ## 5. Intercept all traffic to the service Next, we’ll create an intercept. An intercept is a rule that tells Telepresence where to send traffic. In this example, we will send all traffic destined for the DataProcessingService to the version of the DataProcessingService running locally instead: -1. Start the intercept with the `intercept` command, setting the service name and port: +1. Start the intercept with the `intercept` command, setting the service name and port: `telepresence intercept dataprocessingservice --port 3000` ``` $ telepresence intercept dataprocessingservice --port 3000 - + Using Deployment dataprocessingservice intercepted Intercept name: dataprocessingservice @@ -231,7 +231,7 @@ We’ve now set up a local development environment for the DataProcessingService ## 7. Create a Preview URL Create preview URLs to do selective intercepts, meaning only traffic coming from the preview URL will be intercepted, so you can easily share the services you’re working on with your teammates. -1. Clean up your previous intercept by removing it: +1. Clean up your previous intercept by removing it: `telepresence leave dataprocessingservice` 2. Login to Ambassador Cloud, a web interface for managing and sharing preview URLs: @@ -246,36 +246,36 @@ Create preview URLs to do selective intercepts, meaning only traffic coming from Login successful. ``` -3. Start the intercept again: +3. Start the intercept again: `telepresence intercept dataprocessingservice --port 3000` You will be asked for your ingress layer 3 address; specify the front end service: `verylargejavaservice.default` Then when asked for the port, type `8080`, for "use TLS", type `n` and finally confirm the layer 5 hostname. ``` $ telepresence intercept dataprocessingservice --port 3000 - + To create a preview URL, telepresence needs to know how cluster ingress works for this service. Please Select the ingress to use. - + 1/4: What's your ingress' layer 3 (IP) address? You may use an IP address or a DNS name (this is usually a "service.namespace" DNS name). - + [no default]: verylargejavaservice.default - + 2/4: What's your ingress' layer 4 address (TCP port number)? - + [no default]: 8080 - + 3/4: Does that TCP port on your ingress use TLS (as opposed to cleartext)? - + [default: n]: - + 4/4: If required by your ingress, specify a different layer 5 hostname (TLS-SNI, HTTP "Host" header) to access this service. - + [default: verylargejavaservice.default]: - + Using Deployment dataprocessingservice intercepted Intercept name : dataprocessingservice diff --git a/quick-start/qs-python-fastapi.md b/quick-start/qs-python-fastapi.md index 78393991d9..e4f0dbdf16 100644 --- a/quick-start/qs-python-fastapi.md +++ b/quick-start/qs-python-fastapi.md @@ -253,26 +253,26 @@ Create preview URLs to do selective intercepts, meaning only traffic coming from To create a preview URL, telepresence needs to know how cluster ingress works for this service. Please Select the ingress to use. - + 1/4: What's your ingress' layer 3 (IP) address? You may use an IP address or a DNS name (this is usually a "service.namespace" DNS name). - + [no default]: verylargejavaservice.default - + 2/4: What's your ingress' layer 4 address (TCP port number)? - + [no default]: 8080 - + 3/4: Does that TCP port on your ingress use TLS (as opposed to cleartext)? - + [default: n]: - + 4/4: If required by your ingress, specify a different layer 5 hostname (TLS-SNI, HTTP "Host" header) to access this service. - + [default: verylargejavaservice.default]: - + Using Deployment dataprocessingservice intercepted Intercept name : dataprocessingservice diff --git a/quick-start/qs-python.md b/quick-start/qs-python.md index 65a2b4fbc8..e5adc6053c 100644 --- a/quick-start/qs-python.md +++ b/quick-start/qs-python.md @@ -264,26 +264,26 @@ Create preview URLs to do selective intercepts, meaning only traffic coming from To create a preview URL, telepresence needs to know how cluster ingress works for this service. Please Select the ingress to use. - + 1/4: What's your ingress' layer 3 (IP) address? You may use an IP address or a DNS name (this is usually a "service.namespace" DNS name). - + [no default]: verylargejavaservice.default - + 2/4: What's your ingress' layer 4 address (TCP port number)? - + [no default]: 8080 - + 3/4: Does that TCP port on your ingress use TLS (as opposed to cleartext)? - + [default: n]: - + 4/4: If required by your ingress, specify a different layer 5 hostname (TLS-SNI, HTTP "Host" header) to access this service. - + [default: verylargejavaservice.default]: - + Using Deployment dataprocessingservice intercepted Intercept name : dataprocessingservice diff --git a/reference/client.md b/reference/client.md index 273a3ebcef..c4eb881265 100644 --- a/reference/client.md +++ b/reference/client.md @@ -21,5 +21,5 @@ A list of all CLI commands and flags is available by running `telepresence help` | `quit` | Quits the local daemon, stopping all intercepts and outbound traffic to the cluster| | `list` | Lists the current active intercepts | | `intercept` | Intercepts a service, run followed by the service name to be intercepted and what port to proxy to your laptop: `telepresence intercept --port `. This command can also start a process so you can run a local instance of the service you are intercepting. For example the following will intercept the hello service on port 8000 and start a Python web server: `telepresence intercept hello --port 8000 -- python3 -m http.server 8000`. A special flag `--docker-run` can be used to run the local instance [in a docker container](../docker-run). | -| `leave` | Stops an active intercept: `telepresence leave hello` | +| `leave` | Stops an active intercept: `telepresence leave hello` | | `uninstall` | Uninstalls Telepresence from your cluster, using the `--agent` flag to target the Traffic Agent for a specific workload, the `--all-agents` flag to remove all Traffic Agents from all workloads, or the `--everything` flag to remove all Traffic Agents and the Traffic Manager. diff --git a/reference/cluster-config.md b/reference/cluster-config.md index ae3249312a..125c536aa9 100644 --- a/reference/cluster-config.md +++ b/reference/cluster-config.md @@ -49,7 +49,7 @@ annotations on the intercepted Pods: (optional) names the Kubernetes Secret that contains the TLS client certificate to use for communicating with your application. - You will need to set this if your application expects incoming + You will need to set this if your application expects incoming requests to speak TLS (for example, your code expects to handle mTLS itself instead of letting a service-mesh sidecar handle mTLS for it, or the port definition that Telepresence @@ -79,7 +79,7 @@ configuration is required to acquire a license use selective intercepts. ### Create a license 1. Go to [the teams setting page in Ambassador Cloud](https://auth.datawire.io/redirects/settings/teams) and -select *Licenses* for the team you want to create the license for. +select *Licenses* for the team you want to create the license for. 2. Generate a new license (if one doesn't already exist) by clicking *Generate New License*. @@ -89,7 +89,7 @@ run this command to generate the Cluster ID: ``` $ telepresence current-cluster-id - + Cluster ID: ``` @@ -103,7 +103,7 @@ run this command to generate the Cluster ID: ``` $ telepresence license -f - + apiVersion: v1 data: hostDomain: @@ -115,6 +115,6 @@ run this command to generate the Cluster ID: namespace: ambassador ``` -3. Save the output as a YAML file and apply it to your +3. Save the output as a YAML file and apply it to your cluster with `kubectl`. Once applied, you will be able to use selective intercepts with the `--preview-url=false` flag (since use of preview URLs requires a connection to Ambassador Cloud). diff --git a/reference/dns.md b/reference/dns.md index 042b85fa6b..bdae98d6eb 100644 --- a/reference/dns.md +++ b/reference/dns.md @@ -10,29 +10,29 @@ See this demonstrated below, using the [quick start's](../../quick-start/) sampl No intercepts are currently running, we'll connect to the cluster and list the services that can be intercepted. -``` +``` $ telepresence connect - + Connecting to traffic manager... Connected to context default (https://) - + $ telepresence list - + verylargejavaservice : ready to intercept (traffic-agent not yet installed) dataprocessingservice: ready to intercept (traffic-agent not yet installed) verylargedatastore : ready to intercept (traffic-agent not yet installed) - + $ curl verylargejavaservice:8080 - + curl: (6) Could not resolve host: verylargejavaservice - + ``` This is expected as Telepresence cannot reach the service yet by short name without an active intercept in that namespace. - + ``` $ curl verylargejavaservice.default:8080 - + @@ -40,12 +40,12 @@ $ curl verylargejavaservice.default:8080 ... ``` -Using the namespaced qualified DNS name though does work. +Using the namespaced qualified DNS name though does work. Now we'll start an intercept against another service in the same namespace. Remember, `--namespace default` is implied since it is not specified. ``` $ telepresence intercept dataprocessingservice --port 3000 - + Using Deployment dataprocessingservice intercepted Intercept name: dataprocessingservice @@ -53,7 +53,7 @@ $ telepresence intercept dataprocessingservice --port 3000 Workload kind : Deployment Destination : 127.0.0.1:3000 Intercepting : all TCP connections - + $ curl verylargejavaservice:8080 diff --git a/reference/docker-run.md b/reference/docker-run.md index 15c4f539a7..2262f0a55a 100644 --- a/reference/docker-run.md +++ b/reference/docker-run.md @@ -10,7 +10,7 @@ If you want your intercept to go to a Docker container on your laptop, use the ` The `--` separates flags intended for `telepresence intercept` from flags intended for `docker run`. -## Example +## Example Imagine you are working on a new version of a your frontend service. It is running in your cluster as a Deployment called `frontend-v1`. You use Docker on your laptop to build an improved version of the container called `frontend-v2`. To test it out, use this command to run the new container on your laptop and start an intercept of the cluster service to your local container. diff --git a/reference/environment.md b/reference/environment.md index a11a14b297..b9ab7683df 100644 --- a/reference/environment.md +++ b/reference/environment.md @@ -25,4 +25,4 @@ There are three options available to do this: `telepresence intercept [service] --port [port] -- /bin/bash` - This would start the intercept then launch the subshell on your laptop with all the same variables set as on the pod. \ No newline at end of file + This would start the intercept then launch the subshell on your laptop with all the same variables set as on the pod. diff --git a/reference/linkerd.md b/reference/linkerd.md index 91b2497e49..7b184cb4fb 100644 --- a/reference/linkerd.md +++ b/reference/linkerd.md @@ -5,7 +5,7 @@ Description: "How to get Linkerd meshed services working with Telepresence" # Using Telepresence with Linkerd ## Introduction -Getting started with Telepresence on Linkerd services is as simple as adding an annotation to your Deployment: +Getting started with Telepresence on Linkerd services is as simple as adding an annotation to your Deployment: ```yaml spec: diff --git a/reference/rbac.md b/reference/rbac.md index 1070e5608b..c6bb902823 100644 --- a/reference/rbac.md +++ b/reference/rbac.md @@ -115,11 +115,11 @@ metadata: name: tp-user # Update value for appropriate user name namespace: ambassador # Traffic-Manager is deployed to Ambassador namespace --- -kind: ClusterRole +kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: telepresence-role -rules: +rules: - apiGroups: - "" resources: ["pods"] @@ -157,9 +157,9 @@ subjects: roleRef: kind: ClusterRole name: telepresence-role - apiGroup: rbac.authorization.k8s.io + apiGroup: rbac.authorization.k8s.io --- -kind: RoleBinding # RoleBinding T2 namespace to be intecpeted +kind: RoleBinding # RoleBinding T2 namespace to be intecpeted apiVersion: rbac.authorization.k8s.io/v1 metadata: name: telepresence-test-binding # Update "test" for appropriate namespace to be intercepted @@ -175,10 +175,10 @@ roleRef: ​ --- kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 +apiVersion: rbac.authorization.k8s.io/v1 metadata: name: telepresence-namespace-role -rules: +rules: - apiGroups: - "" resources: ["namespaces"] diff --git a/reference/volume.md b/reference/volume.md index fd39bb8d9d..2e0e8bc5fb 100644 --- a/reference/volume.md +++ b/reference/volume.md @@ -22,7 +22,7 @@ intercepted Destination : 127.0.0.1: Volume Mount Point: /var/folders/cp/2r22shfd50d9ymgrw14fd23r0000gp/T/telfs-988349784 Intercepting : all TCP connections - + bash-3.2$ echo $TELEPRESENCE_ROOT /var/folders/cp/2r22shfd50d9ymgrw14fd23r0000gp/T/telfs-988349784 ``` @@ -31,6 +31,6 @@ bash-3.2$ echo $TELEPRESENCE_ROOT With either method, the code you run locally either from the subshell or from the intercept command will need to be prepended with the `$TELEPRESENCE_ROOT` environment variable to utilitze the mounted volumes. -For example, Kubernetes mounts secrets to `/var/run/secrets/kubernetes.io` (even if no `mountPoint` for it exists in the Pod spec). Once mounted, to access these you would need to change your code to use `$TELEPRESENCE_ROOT/var/run/secrets/kubernetes.io`. +For example, Kubernetes mounts secrets to `/var/run/secrets/kubernetes.io` (even if no `mountPoint` for it exists in the Pod spec). Once mounted, to access these you would need to change your code to use `$TELEPRESENCE_ROOT/var/run/secrets/kubernetes.io`. If using --mount=true without a command, you can use either environment variable flag to retrieve the variable. diff --git a/tutorial.md b/tutorial.md index ed3319b980..c4296ae50e 100644 --- a/tutorial.md +++ b/tutorial.md @@ -6,7 +6,7 @@ import Alert from '@material-ui/lab/Alert'; # Telepresence Quick Start -In this guide you will explore some of the key features of Telepresence. First, you will install the Telepresence CLI and set up a test cluster with a demo web app. Then, you will run one of the app's services on your laptop, using Telepresence to intercept requests to the service on the cluster and see your changes live via a preview URL. +In this guide you will explore some of the key features of Telepresence. First, you will install the Telepresence CLI and set up a test cluster with a demo web app. Then, you will run one of the app's services on your laptop, using Telepresence to intercept requests to the service on the cluster and see your changes live via a preview URL. ## Prerequisites @@ -20,10 +20,10 @@ Finally, you will need the Telepresence CLI. Run the commands for your OS to ins # 1. Download the latest binary (~60 MB): sudo curl -fL https://app.getambassador.io/download/tel2/darwin/amd64/latest/telepresence \ -o /usr/local/bin/telepresence - + # 2. Make the binary executable: sudo chmod a+x /usr/local/bin/telepresence - + # 3. Login with the CLI: telepresence login ``` @@ -36,10 +36,10 @@ telepresence login # 1. Download the latest binary (~50 MB): sudo curl -fL https://app.getambassador.io/download/tel2/linux/amd64/latest/telepresence \ -o /usr/local/bin/telepresence - + # 2. Make the binary executable: sudo chmod a+x /usr/local/bin/telepresence - + # 3. Login with the CLI: telepresence login ``` @@ -93,7 +93,7 @@ Second, you could run everything in a development cluster. However, the cycle of ## Intercepting a Service -Alternatively, you can use Telepresence's `intercept` command to proxy traffic bound for a service to your laptop. This will let you test and debug services on code running locally without needing to run dependent services or redeploy code updates to your cluster on every change. It also will generate a preview URL, which loads your web app from the cluster ingress but with requests to the intercepted service proxied to your laptop. +Alternatively, you can use Telepresence's `intercept` command to proxy traffic bound for a service to your laptop. This will let you test and debug services on code running locally without needing to run dependent services or redeploy code updates to your cluster on every change. It also will generate a preview URL, which loads your web app from the cluster ingress but with requests to the intercepted service proxied to your laptop. 1. You started this guide by installing the Telepresence CLI and logging into Ambassador Cloud. The Cloud dashboard is used to manage your intercepts and share them with colleagues. You must be logged in to create selective intercepts as we are going to do here. @@ -111,14 +111,14 @@ Alternatively, you can use Telepresence's `intercept` command to proxy traffic b 4. In a new terminal window start the intercept with the command below. This will proxy requests to the `DataProcessingNodeService` service to your laptop. It will also generate a preview URL, which will let you view the app with the intercepted service in your browser. - The intercept requires you specify the name of the deployment to be intercepted and the port to proxy. + The intercept requires you specify the name of the deployment to be intercepted and the port to proxy. ``` telepresence intercept dataprocessingnodeservice --port 3000 ``` You will be prompted with a few options. Telepresence tries to intelligently determine the deployment and namespace of your ingress controller. Hit `enter` to accept the default value of `ambassador.ambassador` for `Ingress`. For simplicity's sake, our app uses 80 for the port and does *not* use TLS, so use those options when prompted for the `port` and `TLS` settings. Your output should be similar to this: - + ``` $ telepresence intercept dataprocessingnodeservice --port 3000 To create a preview URL, telepresence needs to know how cluster @@ -169,9 +169,9 @@ Alternatively, you can use Telepresence's `intercept` command to proxy traffic b -This diagram demonstrates the flow of requests using the intercept. The laptop on the left visits the preview URL, the request is redirected to the cluster ingress, and requests to and from the `DataProcessingNodeService` by other pods are proxied to the developer laptop running Telepresence. +This diagram demonstrates the flow of requests using the intercept. The laptop on the left visits the preview URL, the request is redirected to the cluster ingress, and requests to and from the `DataProcessingNodeService` by other pods are proxied to the developer laptop running Telepresence. -![Intercept Architecture](../../images/tp-tutorial-4.png) +![Intercept Architecture](../../images/tp-tutorial-4.png) 7. Clean up your environment by first typing `Ctrl+C` in the terminal running Node. Then stop the intercept with the `leave` command and `quit` to stop the daemon. Finally, use `uninstall --everything` to remove the Traffic Manager and Agents from your cluster. From d0d443a432f8b9866b171de31c3e53414362f120 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 11 Jun 2021 18:16:13 -0600 Subject: [PATCH 10/49] Fix broken links --- install/migrate-from-legacy.md | 2 +- quick-start/qs-go.md | 7 ++++++- quick-start/qs-java.md | 7 ++++++- quick-start/qs-node.md | 7 ++++++- quick-start/qs-python-fastapi.md | 7 ++++++- quick-start/qs-python.md | 7 ++++++- 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/install/migrate-from-legacy.md b/install/migrate-from-legacy.md index 19c9a2c580..2e00d3bde5 100644 --- a/install/migrate-from-legacy.md +++ b/install/migrate-from-legacy.md @@ -1,6 +1,6 @@ # Migrate from legacy Telepresence -Telepresence (formerly referenced as Telepresence 2, which is the current major version) has different mechanics and requires a different mental model from [legacy Telepresence](https://www.telepresence.io/) when working with local instances of your services. +Telepresence (formerly referenced as Telepresence 2, which is the current major version) has different mechanics and requires a different mental model from [legacy Telepresence 1](/docs/v1/) when working with local instances of your services. In legacy Telepresence, a pod running a service was swapped with a pod running the Telepresence proxy. This proxy received traffic intended for the service, and sent the traffic onward to the target workstation or laptop. We called this mechanism "swap-deployment". diff --git a/quick-start/qs-go.md b/quick-start/qs-go.md index 5c4a47c999..f419961398 100644 --- a/quick-start/qs-go.md +++ b/quick-start/qs-go.md @@ -34,7 +34,12 @@ import QSCards from './qs-cards' ## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and [setup](https://kubernetes.io/docs/tasks/tools/install-kubectl/#verifying-kubectl-configuration) to use a Kubernetes cluster, preferably an empty test cluster. +You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) +and set up +([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / + [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / + [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) +to use a Kubernetes cluster, preferably an empty test cluster. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/quick-start/qs-java.md b/quick-start/qs-java.md index baf0486e95..fe0d071a25 100644 --- a/quick-start/qs-java.md +++ b/quick-start/qs-java.md @@ -34,7 +34,12 @@ import QSCards from './qs-cards' ## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and [setup](https://kubernetes.io/docs/tasks/tools/install-kubectl/#verifying-kubectl-configuration) to use a Kubernetes cluster, preferably an empty test cluster. +You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) +and set up +([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / + [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / + [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) +to use a Kubernetes cluster, preferably an empty test cluster. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/quick-start/qs-node.md b/quick-start/qs-node.md index 16483ee2ad..5fc71ae72c 100644 --- a/quick-start/qs-node.md +++ b/quick-start/qs-node.md @@ -34,7 +34,12 @@ import QSCards from './qs-cards' ## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and [setup](https://kubernetes.io/docs/tasks/tools/install-kubectl/#verifying-kubectl-configuration) to use a Kubernetes cluster, preferably an empty test cluster. +You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) +and set up +([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / + [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / + [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) +to use a Kubernetes cluster, preferably an empty test cluster. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/quick-start/qs-python-fastapi.md b/quick-start/qs-python-fastapi.md index e4f0dbdf16..d835588fe0 100644 --- a/quick-start/qs-python-fastapi.md +++ b/quick-start/qs-python-fastapi.md @@ -34,7 +34,12 @@ import QSCards from './qs-cards' ## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and [setup](https://kubernetes.io/docs/tasks/tools/install-kubectl/#verifying-kubectl-configuration) to use a Kubernetes cluster, preferably an empty test cluster. +You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) +and set up +([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / + [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / + [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) +to use a Kubernetes cluster, preferably an empty test cluster. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. diff --git a/quick-start/qs-python.md b/quick-start/qs-python.md index e5adc6053c..d51c976e1f 100644 --- a/quick-start/qs-python.md +++ b/quick-start/qs-python.md @@ -34,7 +34,12 @@ import QSCards from './qs-cards' ## Prerequisites -You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and [setup](https://kubernetes.io/docs/tasks/tools/install-kubectl/#verifying-kubectl-configuration) to use a Kubernetes cluster, preferably an empty test cluster. +You’ll need [`kubectl` installed](https://kubernetes.io/docs/tasks/tools/#kubectl) +and set up +([Linux](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#verify-kubectl-configuration) / + [macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration) / + [Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#verify-kubectl-configuration)) +to use a Kubernetes cluster, preferably an empty test cluster. Need a cluster? We provide free demo clusters preconfigured to follow this quick start. Switch over to that version of the guide here. From 925295ea78e6e93956a3fef2f93c80cda1d9551a Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 12 Jun 2021 04:16:40 -0600 Subject: [PATCH 11/49] Add release notes images --- release-notes/telepresence-2.3.1-alsoProxy.png | Bin 0 -> 24421 bytes release-notes/telepresence-2.3.1-dns.png | Bin 0 -> 21758 bytes release-notes/telepresence-2.3.1-inject.png | Bin 0 -> 30476 bytes .../telepresence-2.3.1-large-file-transfer.png | Bin 0 -> 36302 bytes ...telepresence-2.3.1-trafficmanagerconnect.png | Bin 0 -> 17140 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 release-notes/telepresence-2.3.1-alsoProxy.png create mode 100644 release-notes/telepresence-2.3.1-dns.png create mode 100644 release-notes/telepresence-2.3.1-inject.png create mode 100644 release-notes/telepresence-2.3.1-large-file-transfer.png create mode 100644 release-notes/telepresence-2.3.1-trafficmanagerconnect.png diff --git a/release-notes/telepresence-2.3.1-alsoProxy.png b/release-notes/telepresence-2.3.1-alsoProxy.png new file mode 100644 index 0000000000000000000000000000000000000000..4052b927b1970f948d5394703c0f0fbb561d6ff7 GIT binary patch literal 24421 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 M(h5>JH}s$W5B1v}Z~y=R literal 0 HcmV?d00001 diff --git a/release-notes/telepresence-2.3.1-large-file-transfer.png b/release-notes/telepresence-2.3.1-large-file-transfer.png new file mode 100644 index 0000000000000000000000000000000000000000..48ceb38179fbc26660a3614cbfcd0dacb3d1d5ea GIT binary patch literal 36302 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 z dC)fO#LF3JTwz_FQLw-)Ghyi*_kvE!K(Diwmpll46%YD`BjenzrBz$ALtt^VGM zRZqUZHI2Y><_07lT}1R=%-JRe5j<-pb@m{RFx_S7oSV2I>2I^_CmhfYf+N@{Y%=mP zW&eL+3A9%AzqmgaoA)lE1QNIFHajMlf}n@Sy_f5(lF6=t@U6C1=Z_D8McJ$pvCD*D zhN6@O;d z1UO}ay&rZoELx{OGmta~&H^6oK*L{!Wc&$#G#Kb3$qQstr`$)$B^z|9z@SQcj3+A(Wr@53p4990e?vYkiaBE3K(xQiXdZT}LN3kO@pZ+GnZ@VTlS=N_HQW0$ zXn2&{CEm{n{ca`7v=(E>Zptnl!^L7jmov?BUv?6kwE^`0y!< z!f)b~{{zR*>wCo&AV&iTmQtF`uN&vs9vSC2|B-jzDp{Q>xf3&VOfz>;LlYD?bZxGB z+jl~qLk(zV7laN2ktDI|h5@-wAg^JKW%^s!1|&w3oLYfPj=I(2uQ&GoquBa^ZWvQH z7E}4LL+QKZ(_7sdZqK1A5vTgSMDI-p6}v$N8QFQnyb^y?)ADXluDCx(bOLO4A?7^} zFI*0n?qqAzl?9N)k*Faow_!|`WuCz+2!S3zpW+p!!U34S$PkLmMe{C z3j451fWu6HUnXn=(CX{qPzbiGD%3M*fTXMa(L<0TkUDIBzMjLBLgw8_<8(STdCB}r z2GzNBw3>%(_>!kW189mb-hZVH(wibEMB1(;Y!bEbFeb&XT3meXeg1}{g@Miv8qk27=C>nqxBOG%0mAf`|AqD87UZ%-GQ zBlv+N+eB#DJ;R=mi42!j#(?ae@00Z57EiaNQ*Z0y=%3YS3}6B(CoSgdg))RZ-#!4$RWZ)>?4;dhd2_ZT@hz%6U-^SCiXLPx~X%`c_t#`pApb$&H?q9#$E$;jpeuZa@EB`0y;i=D-K6{plx=@-M4$l3H;Ta+tEYJ4 z+N{d6}hIBSZ;swn*%L~YB%(jZgt^W>J~BOYa1pwBu`j*8oWU^ zRgK5msTkr9U1{8Xe{^#+-`6-QOF;bBt2x&tgSGU@ zty5ajSSt};WVg|~0%5-Oc)rFP{E*hir+#o<1ePYtHNm9ga={@Q+Fe+2us!_b{e=Q;*Jz=G!w{2oipOjJdX<&T5<0EL zWj0OjLsG8_m2GM8b*moh8kJehXP|5J6x{OeK#yc4zfGuIHjdiE+5JF-t#n(NbQnmu zFnzdaXUn+GsTUY7o6*U6%Oz)aIP3w!?vboIjoERog5Vh+K_t9<_$!h{0L-toIXT?$x~{XLQTp8Fy&Dc9j;qzlmu` zV$pk()KVq-9gxc1dgXQL1YlRj8T*Zk4GbZGL0VI2wHfwEJ~|({Y@S~hlX##DT|>+k zYxVGd>up8~iD2*i9Y40;pTn`ci#?z)F>5uS4|CVn4JZ3I@k@iWPbGe!)-_8XP@~Rpm!?l|zj$`TM(#80GO;+URkw=jU1y{Y zPyJf)b69Hj-OL)>3Pj&3(X+4w#$`}x)0TflPP{GgmyInO5j=nx-%M#5b^G?`Door} z4A0m}P|uSlzLas%dG0&`X?;`2iw)QBmZlR~9%2&s`)<7TVdwxC zH1@k$menaSezS#hg5lJwIb2oH0dVOO;drr3KDyV9m5>PiUqAkRxAa>(_yx$VF^^?8-HR+mFx9Hr&4hDlBh0DY zGtAXHm|mjz_#5!-#a z#De#H1pA%fh|T(kZ{1YTsoW(!fT=TjUBROnynmWsiS@}8Er2vnsK*hypvXH%AjRQf zUD4qFJl65P@=A^ZuksV%KyMk;%!0tZKZ994G z#D{0e4VNq!P@G@zd`g9>vjDfBgex=oFfPlR;tnaJ!aRHP_q{RN{3dvr1Kgs>Tr>uG zzD$o-LPk<}8N+nz5gcV`=L6}N48@hkq==)TSB(5xk>_*c3K@HoJiWGN<;$6|h!(nh z+iW)Ch=Xvk0)G)0uT}Q;{G(pAvyWe`%VP?I69j0sPhc1?A8(E{n~Bt(fdnq|MU6j* z{E3D*+-Z&cx!4h9T^I?x{xIX2uK z&j_W4f4PMhI&kIv#BRX($s4Z5mD_F41F)j6m)r9P>2_uIG-^FBg7)%jV)`)h zSn|+r^JEmEpg~Zq1piVt`PA8Rxt<4?O=)Ed0(vTlt8hF4?!oR#^1xSZ=Lcw2@!;7F zNJ4bgPJe6NGCN%JiBY3%(c@+o<8vgvRVkFeo{%aks%hb1J)E_Xj=8*+=&En|?cA;L z%4B<CuVdrj_<>VFeW%p1&UHgtT!zgr9>cL;SGq?k@^UnG5NC9^O)-nS3^ zuqxN!!8b>&`77Yq%V+nO#aua7QI9O?mcjpN?5)G9>b|vMX^;kyl2%ZpTe?A78figN zQo0+YLnNeITDn_6X{2G(vFYymChGI^Ip;m+d*6T97hH?I_8x1@ImSK4eUI7YpCXZG zi7fQ-nP#F?9IaT*>}Hsr7s-1%jKQRCGI7o^$H;>OhJ)5bR(=+L`Mh({pAFb#tF0ZM zCvxM}tB=SA)ruRHNzy#9&2NCgWEmUwlI~Ma5O^zdT8>xZ%HW7`Ijv8mmxIQM!evA( zHqWCwtUGtphRut?762Hb-CKd`A&pe4XHv0bc&;6G;nxexA7UyLXLb;DrN+m+I=(37 zMu)y@D8U`;n!p!nyY$5r|AyV9Z003fq$azPIS#X<=h@tVBGentEPb$kw9BHi19x5peN1Z#)1jW{%myJxhkx`2Ht9qGj^PT4JL?^Q7Za#|_2$8^MZq zg>wKJA+nmGP4dder}!gPOy_}uip2Q$@u2Gd!Pt3MLUS*uE)Ldz=JFkN7gRK*D7^P8 zm`eC|I8fj@oE;LkOo4OphWvU^+1V|Yop}*>PS%#S4`$`Vi6l}!7q-0f=kYEyqc+%R zs&c!4ZX|b(fcq)_nkN20yq)I*WGB6tbB}*aF23HTWl5Av`3`gAA*`=ur+OHjyT8C8 zCM*1Wur?q+S!NvT(#iVad85Kx*mQ&|q1&1g_6!gwT@|cA5~K=Ct!_;EV3X(S1VK7y z59JA23a5`nBh;Dk;|(s~Q)^itF|SMc((Zj%YV4pf4`hm5VgLKX+JMp7+=0%Mhr#Et z6|dX}HNS>^_tiL1{9d6(IGF&$sFrhmky#l%4hth^rR&qHcE1j~k5;t-LnKm9&a{7P zTYd|N2)vmEn{gC-xP_*O0~lk&u%MfkQ&}%s8AKJy zjqGUrRad!zWamyG^hbcw5eSqlOCmu_gnvHX?-v|Am~T*V3cbw*Ac?}~pg8$Q5+!`C zt%CWPQVP>L;~_T;zfP$hjLXJ)F0>U%$_W}8=>AYl)6aWid)o0SqriWCO9JmaF)u>M ztLX|Y=6@R`1MZiGDa_%wh6!z=Sj6qTj``*T4QXztEYStsRBl_%+0{9!d(ML7zyA?P zc*u#cfM|!Uf^yvZUk34hDo$=S%d4Dk_l)*c1{dBlMRlUNu>w@QCrlGHZj<+?=pM(z zF>@8J;hOF&e%s9@VxK$G*uv{k8@@OucKd(6%VR&mI|5?(kt0?Let#-HcYVo|^r`nM z|Lto7Q5*`4ksVKZoBqEI|Gx-;uzkVvpvw7DllK2`u^cjB*Q4NJ82sNAOF;xc3Pr*! z`wijk|NUZXVep{j@~jE|`Uw*(il1Qpi3Rke!nDz2JBg`^%W@08WIu{vA5e^r3`c1m zg*2HSK73v7Qe^N5sS_-s2pVe8e&3hOZ_46gh&I!F-$>|fO%=)OZ0oY{ZS4y{vmaTF zF{F~YE3cM8(7P*2Rb1zi96=oCe%@RoK~p_%P#kTzZjnX3#v4(lO@N9@z2V&a-*#~# zXL6jSYoq=_42lE^MC|Vt>A5M}3)DQ5b=^Siylw6_;}0mOWb(Yx z`HauPLlmaC?_gT`8)qQ#D>&;B2N*S78lMpd<8=fnA2osV^!n)>CJQd(gUEA8kSMuW z@PmGa@@RsrkC|9L*JO6#Sg3-ch9=>%) zK!mecbO)laQ6$V|56;4Aqbeatyd}LMCK=nsY0b8DNIvaab#Oc7-v=pXFsfTf7l@@a(!v`SayQ z;EhMSoxss)JxVMC_?CL5fZ6^ZL5^kpHb<(4Uby*aS<%vN`~d!oXzV?o79aojjU7&i zo(KDs7tl<3UO3$Dz)I3Fw_pr1e&NmWqFiO+{L8z7W`Zh$+I=d2~$1tG?2_gCWK$((U!5Wi`B#)#YY->(gY-rwP_&f zv6)c%a*#QaA;wCWs!RX@da;r0<({ar9rVVW4>548b+|~5H?)7(i6|3nq|wV%3OMhD zqm2SaP4@Mn#@v~T6wg2rrlc8Kf~3Zt$Tyjs z-UMj!Yb#B~j`3pc%y5$W!DI7rK(mupeV-#87d||j^2z07OYVj3a$1pQb2d<|4%Y(Z zs^{%xYAnMej2(fOfkTiw70nCHpD5GmB0QVat?43xCf$+xs`%2>@p1p?bebtwzj4mF zwO=@dan4oEd{~h*TcYGo+UH?+>b@5;R09ZkM0{pw+O-F{Zg@De**zaKT{V>q!`!56B880KX*jx##Rg2!6lro*skdhqkR2f_Qe(dO5c`DNRKvnGyK zY$kj6XcfqtmDQpZ>bh!gACrhX_7PR`9#Jppt=uf0_UzP{k6Yd~e^kfee9Esg!C!R@QwhKF0R>@|bl}4}r`NL!f&z*SEu}uc%pl22X_+1=MqJc}Y+H zI{9OC_$$DFLXo`nd693jJL^7j2s!=8+5Zz>1W~aAlUKp#00obBvfMakj?4Mr0SOLw zn`7?xt5z_yLh^1Fz}8uU$L+OV((V*oTK*Eypk^-$3$sa&(S3ZTMExUvUrs887eTwm z+B>bpcB#_}3Kr;5ByHsyoM*q*i}h9{vPd&L1rDI;^4#G~#>?kTTT+br4EX#k0Y5-F zq$@K*ReAFJnzQ#>@JjXLZ=`NeA^pN~oCPVi5y;kTr9?izw_mY9$8{G3>B&t+dI=lQ zCgl7OrXQ}{95?;GD9;yt5e*d=&O?->3e5wa_W^8!Tl);Wt^LHmWh-eRZYiD%&YNR! zR~G&{nmj^FKR)2nY_)!xTfXv@kqt#Huzoe~rLX-c(d*^`EhW*2)fQL8oVz0htx`_K zNMED+5vQc5Z`+Fqp=7bivbW0?d3TDTM=#z>jVc6UTvK?oV+_~X6F;)|Z>AtPh%8m{ zV=g=TIbf*%A3;OBr`1di!`9m?p@JqI*~^n{rSCiBF97Ob`VPgYx}88Z`Xws~ z;INu~Bmc0AtnZqJXbs&JE^$L(sA8wmVA(+c?AEiwK&t&8VY4+oENH2x|Gf15YVg$k zg2zz1IHb=pdFpGZl`DdXe)nVPPck|&?#GpC$d)u0pb~Eiv_iu*xPUTSrEUH_UhXqT zky3@kgqkixW&*3RtKT}QmaElZTFOVu@%H4Im)=7~(#y1HX|UO1A!8%?_Nd?IUoC8W za7YA9|00b>RRm{u+uIM8;??5;_}Kf*b&ZY08x85w=gyY_N=_vyjiv)YQjsCkFF<>! z(CPn!Dlz3OEKld!zCh}|AG$Y?#|=whW-aTx!r~PqOx#@>JFts@hRG4*p03lDF*anxwz0 zc%B;`bTl*PnQ+u{-kBC)gb{HZGwGO!Axk_(O8|W(sh5_qWN0CvQZH@G3KRgOoy?vO zqaoM+HZnZxb#5v%`%5&?v`AR_WNLPxwF@22ku5K!CD&;_JAUksZ|S%jFwh?`gL3_v!;!frMp8X;$EIddjd zzgc0_$8Gvfp0lu^YjelC*8qI3NEu7XL*G4Do3lM^?q8|`&X_w@0Uk_%mu9t@1U_Tu z)VIM=m^?qtYBzI2OjZ30T+W!+C}7))(u=v)xP4gPNTug9L}GR;w4Q_^-4J)7igsaq zd6HacI0Q7pHnR%o#u>NdjMvqOHzw+*8KhC7K?_Bxb7T z^^Th_kuV;WUe$@{K1OPbY#rSivv~blV|%tSFaRz5D;jq;2&vqT>rV+r#fsPr#3Qn; znkEg;7X}Gs6>JVbq7prshU1Mgly1P|a<&jn8-$2KAOn=4rB~Ko&zSY}1fHXf_Xpm; zURFrYi0My~ydP?*;;4-fe7_x+fKI1EU8|(|m)bU40^jC_iLv$;rV@5f!2)+MMt)$o?I zB1=A1XNIn(hxYV0i#@Lzu-FM$EvC?(b4^{!v-K0_T*y}xyB776P+%C@Nl1#=F#nC* zE$+zhZBWGaGVwmnBB@XUeyI)ZDp)oNCNx5517Zw0X!5bpFg;J?G=HfOlYyI+_nUj2 z%I_X9Rk=M6R566Ish%eYeF?1c1HyIE$fkntknv;_x%^d2bTS(bChy43H}Iq%bHSLA zgN+gi$_0IKM>@)Kzx(lw{a-zD<76TmUA%hbS?}yN@^@Y;dlK=R2SnMx^GG`L%)D zur#KgZe`}x{YQh%oVw(r5WwJ$n0w(m*UqExJ%g-j#`D&Fq+AVC^kpKm!9)5>v)Y4B z=cz-qEP<}?p>U6|kz)bd?H1~fswz>Pf;2NUcIVqnqn;V|5cA!imZz+l)7$hNEB}IY zUU3Y?l8T}lO|XvpUUpJJXx3LalFZ=p&%gl70O=fijek= zB8_T`p%6h#1j<)D-aoQ|PXYk%2#>Gm_3TP3ekO!e>-pSR9HH{4-~=FPR=hJp5CO#4 zJZGvMfnKQi++N_2h0CmhJBxCsT;5>>ZQu=>krs4UqJa2f(qM{x$Ekb@!mwdt2t8s+MhtbnJHDH4dGv47GOXft?u z-9*~!G9#79>X>ufIPl3s4is9e4@!Bq03UKXTmgEcKmefzZERd4yG;|Px=hnwR&s`H zPG0PsUX$IscYAAIZ_az~9tX-@PO+_x6#w8GPBGOi$vRh?jUiU+sVEi`IU>si8ZQD| zuzVYdL_gv87i;8%4<5K93Ld>wRj^f778DeP`L4mz@P)s=#Mr^X%AtDA(xK|&awq4f zvf8yaIB!;8=_k6MKLU!jk@0%@C#QzOl64P)3C46amGxP1Oy-rS#jn2oCC9 zMpprX6l)2quuco2hx3RU|%BC}0`Ssk|QX zdAw289`fv%vU_m*V=+1Z-zQ2wg0p1{RBi1OXcxyFuNNov3cp ztgI>hd#}hi17ra_sri?XSTsnB2l>7clY{{p(OW0=<{Qm;7H1-P7p<3`-GgCL`rigE zx*EJK3YfOwS#QZPJF&WJn1+!9?QX8l=VR4$0%%fQ+C*j$cIl6p9C`vQbp@`@6T3=_ z#)^&w2yRZMu_I2HsRB93I#)m7y?t*q;0t1NaK)?BS*L3OuK*W=$W$IfC`U%j$+{jI zg!WkCQxY14g{WyMo!2UFn2fW;)%~>TQ0n{Ob^|{}_`i%J`pY;u7SEl)q!NF_uvs%$ zKt{nbeSs4sl;a*)wKri9i;$pNG}SiAY7ACFN9St5m!H%jbTjFGJh96Pr*n)g#8zyP zeTAeyJ~QSr_o5QGOi~lM+`p{Sac7l2^pvL=CE8Z%q(MT6 zkWXpEu%z5}P&7}{+ZY=Aaae>!y(_=3lvdk`CHfaf36$E6;_N1~T2{SWw#&#{6HU0l z?Tg*z-2C0AX1}~gvWXZP46~HpW0fOKWRvqNP%Ame+95Iv*csRLM8COyqfOnuJzc%f z7Z5hTqy65>3v^HXc%2Vge&7}8fte=UwM9fh_dD>t_LsVXT;u3;?vuIgrArc1WeFHU z#gj|lKviE@b-S3baa_;zdG$6?2EEF8O=}Up{7REar?qB)A$~Lb-*(MC0o(c z@MHHNeWpGiso7xw?X}He-MGsxPbM{CUGflS2Lgp4G8U}gJ@Dd34y%d|Ii1y%Vtt5) zg|jnq^&x!lD%b_JOlTFf;eB#skHn43FGKlThBz6C>U!JUPh-7r;4XqG*%CAMKL&yZ zEg&joJ4M&B3!PHib|yAcN<6a-Y@CmM97QPS( zupB{o4xHmKpfFI}U}+P5_UOVO(v7TBrB^^aF&@KED}KmET1S36DIhd~r8W9VYCGoK z=hRfMvLA;Ja^TqQE)%;#-+~wyxT0IsvU-If4k>RR+>YSCq!)~z)pIL$IUJ%d(XC;~ zA0Z?3s7HgOgDvYH_dBRT_U9t36G@K?lK3YAd0|;UzB8YA^^>O1!KZoeB3nt?(dV3= ztDJ`+$t-$@LmArX=7oYy8s_z9CQwSjtgRG31k^PV>b`qEFxOcQKxXxEU(zhV@<<~5 z#?yI^`aPKVqd&3Ny12*6icgjlpj3QjYPr@=g23bMa_Xz=@q&Dq*9Ylc1~yrH#h2X{ z&bh)hu`OESNVn|+&zC$CyX@KXkK?fXsOK`6?}iys z5bw!Fe@@h06S?cC={6LInjq=K@4Fu;qcPS+Rsw4=UHMRBrly-!xz}K5Xo$(!@`suj zNV~mWQ7JXOS+LNkC9)sD5UCcpc;|1N4~G?+u9 zK0U(Om;A@&uwcVQTY}T;ZC4}`qR2s^Wn47dWu4L0d_#oGi; zbi+nbV3t%15VVU8dBY*4pH4rkuM+cqNXToLR%LKW`pKVxliOh{<`ey7BffL7qrG7!N%Z z;p*8UXXC}{Be0g>+1YFLau0WBM0$=$$$Rzw%8z+UKh0)q4A4SFra4F&>bzT}ewmi< zw`ui0^ETwwo|vZ9o-MSFK@U%V@Lp+t9SvJ;(#g57?|43rzzDj^4=X!+Z8am#^ z(yDz4FM}|JT)>V3^vPn>->m4-2QNkuPNFIsN2Hw&F@qME7h74aDvkoX^(h7#Z}ZjKcNeo>ko z8jW&P)@gJ>k4~)g0vv{5?g*7Hy%^6#;vVr5phI50ib`B?$1&`A*q5J{-ei?}V|{gI z^C|p02^^%(J^&;ewm4fv_X8}q23}=K2rjgJM|81c{3$zq%usLiJ^BeM>*7+lJ+B{b z*iTMNC?=U~pP(Q2$Gq(Z05B3;px6FnEyLM8qEmFgHvm+y0Tkw%%?iHeRW8xNORSb$ zeCdGb#T)o`Accg~{Yc+};R*%JFQM4b7yWjXNp8jMHFy1|L>aCPJ$1tl%isSGf7 zZX~)!SZp*O_do~5Trb|K{_V22J+M0+9T3Z!%`hZ3(lA0EoWZw<0X&X7ExD;~i1m)1 z1H&t1beJaaf+8;hHpi_5yD*aHw`Qrm=q7v!{TjjuAC>z-WE7mAvzs=@1kH~QCwQ6W6ID=*7f8=0~zqx zP^(+6KM{Mrh~lAW>lkR7>kW5&vEG{(>W&j2du+l}JA~y6<5;#7?qCp!E^0C&^iJ-| z8MaubzSF__R^%{Sr&K}6hInzjNn1k6_hVj`n51V?iGZyq0xqLg4b#Wkk_z%yU@luw zSYO}p+CXyPt;f}eroZ<*`>^WW?0ty{QiI|GQn%8is^`t# zXJ2trMa~Ss1%Y;0c}ZP+f%f-6C4&f+hXQPigb&XQ zr~=GJ^UI7;H^?xZkeTXSSV;TnQqgUogA@)styM+SlbA7AIv(iasV~s$TqyTOl;nk1 z>AnlZtK}_M?16vJPKk`(1HE_#K`COe4nx=?AFMILGi zd#%?~U!qj+43g$v^__wgklffmS9Zdhs)G=&Pv1ify;yMNKaO~qew1}+=;E#$~6Qt$0wMVDw9+D{A^OjW7hY0X|!!PU9I{e z13OuD7xotB(sbu;aym^X1(!n*KauXL<*V%xAU*NIvglp9z(wY#0h0WPd+%TXFy@M`~ausT#(|I1ad~kaF7mP|!L?+sxgu#MxrY~IcBlxQk z*RF8wH*w`ELU)-UhsA5NrV45286PD4jGic!f^nxU#r7XHndL8II^R{-4yn7#PSb~a zR1dY-?JtU9PVvGydU9G!NuC9)o~spW!OWOeI_)bG@K`n6~>PZZOnd?=RY zwlhI`OZK#28X>$McC9aY0K+DU$)-?(N1Qt;C8oHBs`6!wxB^Hdm8zPqPk7>)-9H8P z;OI;Sdn506Y6rY$FD%_HL>wk-Bz^sjeguqJy~Sy`*y#B*(OJU7e*rZpu~+FOX0hQ# zN(1tFZnCR}D==>iN4yJC89y(wh0$Q{zl6-QkWxz zWZg@*@LqwNHIZCnM)N+-w-6EVgCZt? zur81*i!iV>)eT`%(61P7kX{f>?xf)6PCOpBBAT6;^F|y_6^ugNz4S@uG(57#c$QT= z*Xj&DcA92p%v24R>uRA^A6v2QO%yS*gI0IN43-2h7!RCNtMvob`C!?5hMBqdE&L6E zwg|Lw69vBA`v{p*cLc@~LCV#8Il(SfTv6co8Gvq%gx|e5Cn`3oKUf znF7F0`NLH8(8%;@2Ez{wf8*9Ks4x!)13q>AQB3sfi#%DeU*LfY6DF}MX`H45n_}J$ z-elI=1=F9y6KqJ^H&i=+H>A6Ijqn2)mm$=laH=ZscR_N&!+0+rO7JFn*f5Elbg*Kh zu)no+eXSVQQEmmkYty!)s2^?$wyqrkA(1u9x$m;8D(|1sbH_!}uQc*t-# zKmJ`#`#<0E*IkjHz;_RlNHvNz{4&k|@G0+Lc|hw?WDrB~-V^rf6mvS}d?^k7XBIo{e2|AjS@@s-|MNBk*lEY**x0u}b?9K+|;GiHcFab}<%^MbrjI89^blhhj3pWN8OrwR*9Z2$zp^)nsc^?*aOUDZz}Wn zNu^&1K7-40{S)6#FWxNxPJO1k6_ z<-0~uq(TRC>ils%Q@j9It0jd`AhGOG_$Is(c^mJ~q9ur_?UzLfJQ5YN5}#DPSx4pX z`uHSxXL-xAcmny*yl7bj0n0HF6)s#7VezA zPu$q9u7vdJdNyJh4J5)j?#%4J7ErJ4)gfx+IB^7YhGt>V3bY^9$-8Vg8NPV%fL2*D z&PpbY&U~!U-yfBK&?BuT|M||uSH4S%OfRFWwbr5lOCtP+z?c#?1`{nPJEgl)Yk$Fd zkNa8W&dJUF6KDM#Y`_c*G ztaNR=AX*8KE(lc9{n zC@@g3H&$uJ189RDu8F^w(WUn~xMYRM2ITR(6T_SXX7pj`sZALRZvWB1UHpW^Qf{`kyUQjGT80t`z9gL~*U z4#CXc%5+m0VM3=sX>yl#Bw0r7(p zlgd(u1`40;hXiX$vMU!OedkV2PXXPG_UzSh6K)!E)oczdSu9%qFYhb+GT+tr+ioey zc|atPF0pCMs@z7ynDM^a($QS9zPeAe`VF){ksVbgkr&2xRffZMDWrdpqCKG=C+mZy z%;2~T2(B8q(AkW;I?z(UY-%|zw~;M;G!605Cpw)Up%c(4IJg^fg|+pmK`;t`u?vRI zeCqK~J6{NGEx&q&V8vS%(sB~Wm3PQhvDVl7pFEmm)?BiEPTD0tbI?-&@o`3ijR6gl z8a1UzNXsgyYTxN=zjqxLa+TQ|s}gouixa@&V-89GRh}ds?}- zu!CWn@Dxm94V3ep`{8ZevJ5I$c^OM86jyW#-y-r)NdzXV8|!G@l$rB`$yDr;sN*z` z74Z5+X|AvoYX9SUYC0W`pE(|DTCmsJsO^pwP0vg8jlTgc18+Y(5l2}IPN#Asl*JT4 zFJghq?;fPAG#mBnFnVSO!Z?cgxEsA1jEbF|sIO!ZBl2Xf|H_?BMd4 zB<-AXj&Yda)f2TGnFK|4yQP+$=@QP5wDy=w`mH{v`k;CaJzKz>DNl^p2Q}l3A5M#3 za#Q?Ni!}Ehzt?90vk;>?gNSwYrmHN_BLrTFb-!E^7Nh`9*=D5`)bFSuI@+*79;MY6 zOnfQ5a@baQxM^nDIcsuOClSRdQZ40iS7E4g*zTR`ltrP}tQZTO@mzOmP3BtajPSmi z(x4_#rPD1>xZpNx@fWrninX9bv9p4DQkEn!yh(R!c3D|&r8w*Asm@~V+a^0?V+QY_$70+T@ zFF8q={@EAzi?MHF^A;sWFT*`&rgb&(`183`zD3Y-%f<8*{a)Q3$b%ONV*?K6?j5WH ze4eMdWS+x~4QJ+1@#@ECru3M)?v;;L``qJbzTu(gf-!9V!`U&qL8XGT*M-61CJL|M z-8Gg%sGGPltSk+fE=nIUyFJ*Nsg+iimabh~S^^!L^vEaD4+T9JK@Sp+_udG>8Ql0* zwsJ9#{gh!)nCwZbGpG=+T8cBA9>ZR?z`afAA*$t%DA8#g`^c!1k}?h`SVCjng@Q|M zj*Npf$R#!ln#99RZ1iiR6>0?JM$~-S8a+Z5pUx+V7pwp~v4q$AK`Y zU}`8=cM&^4+5u~YmCtiqRV=-Kk-fu=k`j=NJ9k5QpL7YUwxMLnLojsAPz z${00LXu0bUhsnKn)CcKNF`@V2wSD#?Rc+sPM|y7;)}78O7OsOj;yqoDeS!Xfo!5ox zuY!g!qPPnPTfvlQOl?B>dFkV=7p(Wz-!M&IZ}$vBGT!1S7pTU@{M7E#iMPjl6c6$f z-Q2+%6S{lSQfA+qKDDBO0m~GIL=wYhIw zbn{Q&dd=Om{OmLobe&l(5jBmF+?CTEmq$IO9 zrHcjKfEUYS?|B2j{35e%&Iq-d)s|n`iFamh)&y>0tWI}Opt;2D3+;jF#u2l1jPT3? zNn>(`h)(aH1AUWs)P2dqDdvqW^f(Kz0wL+6JcQx?DxLhPCZ4cE;31b-!moXPTxwGI1JYntwJQM)g9 zYcwx=iflE8;uJcP*6{76caK(T8s{m0p)}a_OcW3}S|c=R(bfV}XmE}qF)mg_9jQ9! zE$%Ho_V<{6Z@%-2$*(So`0bwKqRQxQJ~Rz2A1(})2tVKc2Q42>1Zn|`pHidsCZlI6 zz7~EWyR=tgrCI4Rz%LWy@(pwVBTP7aQ9L!-jQ37Lk0@ZI;#9=|2{jUze&WJ^wT}HS z>$D$UJI^hgaxH9(-PjgreOZ^u+t4?&MbO*<&i2mL)V}%7*~p4gl_Il_-`{`e-SLs2 z4rt`b`7L5G>F9Ku9@%Zq`n!)^bdgEu3*LHLgJVeI*_?UjF$~dYp~urS-U=9(Fo0o!?0w^?rbJ0H89qwV|jf0nZrMywhU zJ{yDbMvOp35-$Td5=UzzK-2U5vO$n9PvI-9-T0Uc0pJ{#)Y7dNyMD@zOP_`YerA4p zEus^ML5Lv{e#NkoBie4797$>K)CEw;_9s+NXmJ0-BBc~`Vve>k`e{37-t@Z^kW07I z+~xb*Wf8f{%OH|avcvwaLyB#KFhnQiUi}Y1Aw4M!C_86I%*$DKuel+(Se96`ra{VDz&f#vne?jfwUZzvI;a1Cm^ z2pLGPzx)h3VzOHjT5=L3z~o^|*^B%E4tCk6b7-_#LhMa^fi&n?!|eByyY;DSO%CKg z`0iEquEQa2_hmTkq%xQwLgwkLe3!-C9PAb~L9VjmNEgpF_Yq>YIc5z{KY4;aR6OUY zwkk+as;jR0)c$knT_oS{%*}WEuWNZpUvy@dgEVQRWcS|cPi6otyby;y+>v1ALV0^V z9WhwF3|t0M$n^Kp(hDW=NM^$!YFBtwZ?f+X=BuCzYB0|Wg-``V`0O^{3b9$`YK`Wr z_&=nN5!D2P%SRkkNU%){qCl%#g^VoQxH|s|(jnm_mF04@G^zGwF2}Fq zUl@D}l*+11uQwZ|NzbloTF~!HtYiYYykMqVOioz3RBV@1RE^xvrrC>C;>NE$Ailr` zF-6qaH}L$%Fqu-@+sibArz9$6U(yU{_`UaX@7xzQs&$K$=lrES-$(Q_BiqX#mxpJm zK>2N~Duzd*yM3;db9dF%0z^&w7ZM6l!+TrdAtw|yHtIf%x{=*X;b~RMc z3FQshPab4@S?!RQnQY~=_97l35wlML<(d~{K)K(u?~J5uTC9Bqf7p~M#erwH)kdQ* zdl!S`(rgKK%R^F+#@eGY1B3tzAZ+oqRAxw-rM7EnT|QLZY(n_SooNlc-%6|eids){ zeDjufU1G-uW;wGEhtP{_?n3)b&oSUAZEW6a#jn&CkziUX(89vSh1-=$r7Qz|5O~lJ z3CdO(!tVIV#9}*Qy`BEbuhQvc>%}UVv~CrrCC`5hUttM}=7a-GT;C$izU#9OQUSFOQ*DhIob+@A+e@s6K$e6X&L7g{n(uD;J>eu5PblS6G$&n(xk}F+|O(Jt}uq zB9$gMkUQO(v|V;!2=##{CnUFH(Bi5A&s`;gn5T6Fda>7zDYVA$Jy4!9@(;C(MMh=l z)ua$KkcELkK&#n<#N)EBUOEyKV}w?ILm&5~y9hTMnDM0KvmTbb^|BdTZ6&Pz-(el!t8%%3Fru|(Q5 zpZ?iwmETA$wQ(jcurat%>Fa*M?ecdY4&Yz;ZCe0s{lHdpz6Axmq|*1or8xX0@+rLE zHgO3dtu$JS&Yh~+`gmy%|AZ*>H~2Y>YPac*i*y&+_U8#;h(%D zzWCVwE3;Hz*Pl$It9LKA1@-~zCEA9w;bsI=JBh{Z9y&YM0D*?Xz0uoG?G4V)7&c7! zm%IH2MnR?4vUbA^saae?V)Mb<@nT3RplWK9$^*EKN75g+pQvMN!w)Kw*01Gi07?Y_ zXPmHlog%KMxS;tkK-(=ZXA{Ky1+bJyrRpm@s(hj^H=Z)vQPJJyeMp2lb#{bPRi?WO z1~~3g@=0u@U;<}*$13F%HgWVQ_XpLi2Y{Vh$Dvb68W=AT){3 z)nN>WXlJ@o_Iw$iRi#Hoe%j(VzhYWyme5LUrtIx55?jAPsvbDsjlDO8z3WF&9k&r< zDL$hX{EV{^n?q)VJexzRfTxZGl`@XEOhf*KHmFCd-j6gL&VTbcq2=%FSd`Ry*B*A-AV#CSf^y*x?Zk4UEZ~yQ)53{;de$^zI^4@0UYUR&5_AW~e@czn|Yzs)IULe9IaBeM2 z;91+Z(f$|GGH69nsvQQaXsE&Ta?MM6wF! zV6~^feU(>qO{x5jR-j5aB;l*Q0v` zs=ja5vXuJ@`lGrbNi{{y$^wkbvy51}_ja0ZQz;967{o5zG>;QQG2WdY;1#}`o4sC4 zD2Pr4lQ-H7RA@s^hVX&refR4zIjOixjWxwt#OjTV!*rFyHs_QE8EXfhr8W&R%(F#Y znCdV`hC*#y1hadfU`fmUh{i*fu~xZp*ZM`0gT1DwjT?kIZu&U#^z(*!8W`ozul)0U zf!57pmTjZiyU$|-{gvf}mp}UL?#jVV1a(CmPT<%Flic%(RT#%ThwU-K;Lijo&Lj;P zLvBZTUrBj(oXa@=>@pH_^{ULXVubi48EuM9^~o(ZX)YaQ3lP?L`>>}4#G`xSg9sOJZF6b@?U*OsY zs3?2GJ+Nn?qG0+WWNDM5cBVM6VNO{WE}2vLFg-B^fFyjH*i99K=?V`->-^-t2{nft zUlu#E7q;+q_S;{U7(vU)i{`$-L3ewdo6LOA0D!m^5PnuAh&xF9k#IeX2p~mH_3oRW zEP4Y;cT`XCl)H~X^+T{rZd;5MS_ZEjr;c6&S8qPvuUfFV;hwd0xgyQHtTLeN*l&=#Tl) z_^9?v^Olp&UW(^xLT}`rs}fgy`oN!o#Rs7YEBR2@lmEBl6XaW56ddF>FQl6tR72 z7S1)!%*;%v=dcs`B)}l>{$-%RRwfVbm5myIJ(XP+rQA;(n1AKR>+wI&UOkBewdr<= zyEssTXRKn2O#&M3rARQZ1*Uxq@baq&>x$Uq?EfFy;>g~5*yMoOgFJlwKX$_Z>mS#H z?-ADh#Pcvq`pXje-)=&#e%BbM^RW~7+yDOGy6%E?l!5^}cK)eEG=Dim|4<12d*dDX zA?V~Ig^)w!@7m&CBG}yz6VRs`reK0Q@!mfT?0ER=e)_?Joy3vp&}uAfX9gJ<@~^-6 z7S^1wYQ-~tC#2T%WW_2=)wv&{IQiE#*u9z8>15&@&0ei=Pa9FPL0 zne5vzCaO;h&4xuIe%rhS9(?`JUcwr`uBt)z?oD7384f9$PkplE_}Sz!=C7}x9wyjf z(XHS_C2A;uJ!Ok^`sYFBAkQ?|5YHx*p?X{`RG7Ya`-ioVCj#gt8>Nq>eqF~!89v7cX6X+AL@4d1~ppbq?-A#}HL&@^E+V=EByT<*RVWz=} z*fOaep}KhHYxcR`ht(RI=c0xqetS4OGYzP5o{c-%Y}e(iZwKxTA(S(TTVC5E-CQh* z=gUOhWZjQixu0Gv@ChNT29@x>rGHRTvu4v1`sX(lYixyD9_nlwt7Oje3C7YvY+^}a zE$O~%3y0s32x7#7m;GEyavDCr_;9#BRXlD!-XNg+e&xsgFkCWgoSqI;3Ozz^kk+*& qB?z=s^>xwDiQxU=`do?3-!|{Q!OZ`v$Z~fa{Yx=9(PCjepZ^b~az^U_ literal 0 HcmV?d00001 diff --git a/release-notes/telepresence-2.3.1-trafficmanagerconnect.png b/release-notes/telepresence-2.3.1-trafficmanagerconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..78128c17491ae3399d5559bd5f91d1ecf87f9dcc GIT binary patch literal 17140 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 F{|A|gJDdOj literal 0 HcmV?d00001 From 46571642da3157c9e1195e326dc234d740642abc Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Mon, 14 Jun 2021 15:37:10 -0400 Subject: [PATCH 12/49] Updating brew docs for Telepresence Signed-off-by: Donny Yung --- install/upgrade-tabs.js | 2 +- quick-start/qs-tabs.js | 2 +- releaseNotes.yml | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/install/upgrade-tabs.js b/install/upgrade-tabs.js index 1d77f3e2fa..fde8aa098a 100644 --- a/install/upgrade-tabs.js +++ b/install/upgrade-tabs.js @@ -70,7 +70,7 @@ export default function SimpleTabs() { { '# Upgrade via brew:' + '\n' + - 'brew upgrade datawire/blackbird/telepresence2' + + 'brew upgrade datawire/blackbird/telepresence' + '\n \n' + '# OR upgrade manually:' + '\n' + diff --git a/quick-start/qs-tabs.js b/quick-start/qs-tabs.js index 842d38af72..b13dbad40e 100644 --- a/quick-start/qs-tabs.js +++ b/quick-start/qs-tabs.js @@ -73,7 +73,7 @@ export default function SimpleTabs() { { '# Install via brew:' + '\n' + - 'brew install datawire/blackbird/telepresence2' + + 'brew install datawire/blackbird/telepresence' + '\n \n' + '# OR install manually:' + '\n' + diff --git a/releaseNotes.yml b/releaseNotes.yml index d2772efc1c..ebd7232462 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -30,8 +30,16 @@ docDescription: >- changelog: https://github.com/telepresenceio/telepresence/blob/$branch$/CHANGELOG.md items: - - version: 2.3.1 + - version: 2.3.2 date: 'TBD' + notes: + - title: Brew Formula Changed + body: "Now that the Telepresence rewrite is the main version of Telepresence, you can install it via Brew like so: brew install datawire/blackbird/telepresence." + image: + docs: install/ + type: change + - version: 2.3.1 + date: '2021-06-14' notes: - title: DNS Resolver Configuration body: "Telepresence now supports per-cluster configuration for custom dns behavior, which will enable users to determine which local + remote resolver to use and which suffixes should be ignored + included. These can be configured on a per-cluster basis." From b4698e8bb90cdfee76fc614eb7d36deacae47e97 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Tue, 15 Jun 2021 13:11:12 -0400 Subject: [PATCH 13/49] Move releaseNotes to 2.3.1 Signed-off-by: Donny Yung --- releaseNotes.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/releaseNotes.yml b/releaseNotes.yml index ebd7232462..eb2a9698d8 100644 --- a/releaseNotes.yml +++ b/releaseNotes.yml @@ -30,14 +30,6 @@ docDescription: >- changelog: https://github.com/telepresenceio/telepresence/blob/$branch$/CHANGELOG.md items: - - version: 2.3.2 - date: 'TBD' - notes: - - title: Brew Formula Changed - body: "Now that the Telepresence rewrite is the main version of Telepresence, you can install it via Brew like so: brew install datawire/blackbird/telepresence." - image: - docs: install/ - type: change - version: 2.3.1 date: '2021-06-14' notes: @@ -66,6 +58,11 @@ items: image: ./telepresence-2.3.1-large-file-transfer.png docs: reference/tun-device type: bugfix + - title: Brew Formula Changed + body: "Now that the Telepresence rewrite is the main version of Telepresence, you can install it via Brew like so: brew install datawire/blackbird/telepresence." + image: + docs: install/ + type: change - version: 2.3.0 date: '2021-06-01' notes: From dab1db06f137f8ac17666bc19b966ded96bf8f82 Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Tue, 15 Jun 2021 13:48:01 -0400 Subject: [PATCH 14/49] adding images Signed-off-by: Donny Yung --- release-notes/telepresence-2.3.1-brew.png | Bin 0 -> 17644 bytes releaseNotes.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 release-notes/telepresence-2.3.1-brew.png diff --git a/release-notes/telepresence-2.3.1-brew.png b/release-notes/telepresence-2.3.1-brew.png new file mode 100644 index 0000000000000000000000000000000000000000..2af42490433e7aad74b553c814edf377dad14f72 GIT binary patch literal 17644 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 install datawire/blackbird/telepresence." - image: + image: ./telepresence-2.3.1-brew.png docs: install/ type: change - version: 2.3.0 From 263e70029b0f7be2d7d45020c52a0d262b1095d8 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 15 Jun 2021 17:02:14 -0600 Subject: [PATCH 15/49] Fix build-time complaints Signed-off-by: Luke Shumaker --- quick-start/qs-tabs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quick-start/qs-tabs.js b/quick-start/qs-tabs.js index b13dbad40e..91c8440f28 100644 --- a/quick-start/qs-tabs.js +++ b/quick-start/qs-tabs.js @@ -101,11 +101,11 @@ export default function SimpleTabs() { -