--- title: 在本地开发和调试服务 content_template: templates/task --- {{% capture overview %}} Kubernetes 应用程序通常由多个独立的服务组成,每个服务都在自己的容器中运行。 在远端的 Kubernetes 集群上开发和调试这些服务可能很麻烦,需要[在运行的容器上打开 shell](/docs/tasks/debug-application-cluster/get-shell-running-container/),然后在远端 shell 中运行您所需的工具。 `telepresence` 是一种工具,用于在本地轻松开发和调试服务,同时将服务代理到远程 Kubernetes 集群。 使用 `telepresence` 可以为本地服务使用自定义工具(如调试器和 IDE),并提供对 Configmap、Secrets 和远程集群上运行的服务的完全访问。 * Kubernetes 集群安装完毕 * 配置好 `kubectl` 与集群交互 * [Telepresence](https://www.telepresence.io/reference/install) 安装完毕 {{% /capture %}} {{% capture steps %}} 打开终端,不带参数运行 `telepresence`,以打开 `telepresence` shell。这个 shell 在本地运行,使您可以完全访问本地文件系统。 `telepresence` shell 的使用方式多种多样。 例如,在你的笔记本电脑上写一个 shell 脚本,然后直接在 shell 中实时运行它。 您也可以在远端 shell 上执行此操作,但这样可能无法使用首选的代码编辑器,并且在容器终止时脚本将被删除。 ## 开发和调试现有的服务 在 Kubernetes 上开发应用程序时,通常对单个服务进行编程或调试。 服务可能需要访问其他服务以进行测试和调试。 一种选择是使用连续部署管道,但即使最快的部署管道也会在程序或调试周期中引入延迟。 使用 `--swap-deployment` 选项将现有部署与 Telepresence 代理交换。交换允许您在本地运行服务并能够连接到远端的 Kubernetes 集群。远端的集群中的服务现在就可以访问本地运行的实例。 到运行 telepresence 并带有 `--swap-deployment` 选项,请输入: `telepresence --swap-deployment $DEPLOYMENT_NAME` 这里的 $DEPLOYMENT_NAME 是您现有的部署名称。 运行此命令将生成 shell。在 shell 中,启动您的服务。 然后,您就可以在本地对源代码进行编辑、保存并能看到更改立即生效。您还可以在调试器或任何其他本地开发工具中运行服务。 {{% /capture %}} {{% capture whatsnext %}} 如果您对实践教程感兴趣,请查看[本教程](https://cloud.google.com/community/tutorials/developing-services-with-k8s),其中介绍了在 Google Kubernetes Engine 上本地开发 Guestbook 应用程序。 Telepresence 有[多种代理选项](https://www.telepresence.io/reference/methods),以满足您的各种情况。 要了解更多信息,请访问 [Telepresence 网站](https://www.telepresence.io)。 {{% /capture %}}