使用 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 网站指南。
在提出添加额外第三方链接的更改之前,您应该阅读 内容指南。