使用 telepresence 在本地开发和调试服务

Kubernetes 应用程序通常由多个独立的、各自在自己的容器中运行的服务组成。在远程 Kubernetes 集群上开发和调试这些服务可能会很麻烦,需要您在正在运行的容器上获取 shell才能运行调试工具。

telepresence 是一种工具,可以简化在本地开发和调试服务的过程,同时将服务代理到远程 Kubernetes 集群。使用 telepresence 允许您为本地服务使用自定义工具(如调试器和 IDE),并为该服务提供对 ConfigMap、密钥和在远程集群上运行的服务的完全访问权限。

本文档介绍如何使用 telepresence 在本地开发和调试在远程集群上运行的服务。

准备开始

  • 已安装 Kubernetes 集群
  • 已配置 kubectl 与集群通信
  • 已安装 Telepresence

将本地计算机连接到远程 Kubernetes 集群

安装 telepresence 后,运行 telepresence connect 以启动其守护程序并将本地工作站连接到集群。

$ telepresence connect
 
Launching Telepresence Daemon
...
Connected to context default (https://<cluster public IP>)

您可以使用 Kubernetes 语法(例如 curl -ik https://kubernetes.default)curl 服务。

开发或调试现有服务

在 Kubernetes 上开发应用程序时,您通常会编程或调试单个服务。该服务可能需要访问其他服务以进行测试和调试。一种选择是使用持续部署管道,但即使是最快的部署管道也会在程序或调试周期中引入延迟。

使用 telepresence intercept $SERVICE_NAME --port $LOCAL_PORT:$REMOTE_PORT 命令为重定向远程服务流量创建一个“拦截”。

其中

  • $SERVICE_NAME 是您的本地服务的名称
  • $LOCAL_PORT 是您的服务在本地工作站上运行的端口
  • $REMOTE_PORT 是您的服务在集群中监听的端口

运行此命令会告诉 Telepresence 将远程流量发送到您的本地服务,而不是远程 Kubernetes 集群中的服务。在本地编辑您的服务源代码,保存,并在访问您的远程应用程序时立即查看相应的更改生效。您还可以使用调试器或任何其他本地开发工具运行您的本地服务。

Telepresence 如何工作?

Telepresence 在远程集群中运行的现有应用程序容器旁边安装一个流量代理 sidecar。然后,它会捕获进入 Pod 的所有流量请求,而不是将其转发到远程集群中的应用程序,而是将所有流量(当您创建全局拦截时)或部分流量(当您创建个人拦截时)路由到您的本地开发环境。

下一步

如果您对动手教程感兴趣,请查看本教程,其中介绍了在 Google Kubernetes Engine 上本地开发 Guestbook 应用程序的过程。

要进一步阅读,请访问 Telepresence 网站

此页面上的项目是指提供 Kubernetes 所需功能的第三方产品或项目。Kubernetes 项目作者不对这些第三方产品或项目负责。有关详细信息,请参阅 CNCF 网站指南

在提出添加额外第三方链接的更改之前,您应该阅读内容指南

上次修改时间为 2023 年 11 月 24 日下午 4:55 PST:解决问题:#44034 (802dde6897)