使用 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)