使用telepresence在本地开发和调试服务
Kubernetes应用程序通常由多个独立的服务组成,每个服务都在自己的容器中运行。在远端的Kubernetes集群上开发和调试这些服务可能很麻烦,需要在运行的容器上打开Shell,以运行调试工具。
telepresence是一个工具,用于简化本地开发和调试服务的过程,同时可以将服务代理到远程Kubernetes集群。telepresence允许你使用使用自定义工具(例如:调试器和IDE)调试服务,并提供对Configmap、Secret和远程集群上运行的服务的完全访问。
本文档描述如何在本地使用telepresence开发和调试远程集群上运行的服务。
在开始之前
从本机连接到远程Kubernetes集群
安装telepresence后,运行telepresenceconnect来启动它的守护进程并将本地工作站连接到远程Kubernetes集群。
$ telepresence connect
Launching Telepresence Daemon
...
Connected to context default (https://)
你可以通过curl使用Kubernetes语法访问服务,例如:curl-ik
开发和调试现有的服务
在Kubernetes上开发应用程序时,通常对单个服务进行编程或调试。服务可能需要访问其他服务以进行测试和调试。一种选择是使用连续部署流水线,但即使最快的部署流水线也会在程序或调试周期中引入延迟。
使用telepresenceintercept$SERVICE_NAME--port$LOCAL_PORT:REMOTE_PORT命令创建一个“拦截器”用于重新路由远程服务流量。
环境变量:
运行此命令会告诉Telepresence将远程流量发送到的本地服务,而不是远程Kubernetes集群中的服务中。在本地编辑保存服务源代码,并在访问远程应用时查看相应变更会立即生效。还可以使用调试器或任何其他本地开发工具运行本地服务。
Telepresence是如何工作的?
Telepresence会在远程集群中运行的现有应用程序容器旁边安装流量代理sidecar。当它捕获进入Pod的所有流量请求时,不是将其转发到远程集群中的应用程序,而是路由所有流量(当创建全局拦截器时)或流量的一个子集(当创建自定义拦截器时)到本地开发环境。