您现在的位置是:首页 > 文章详情

Telepresence 2.24:推出 Docker Compose 扩展

日期:2025-09-11点击:3

Telepresence 2.24 现已发布,此次更新带来了强大的 Docker Compose 扩展,让用户直接从本地 Compose 文件镜像并交互 Kubernetes 服务。

此次更新让用户在熟悉的 docker compose 工作流程中,充分利用 Telepresence 的集群连接能力。无论是本地代理远程服务,还是用本地代码替换集群容器,这些扩展都简化了调试、测试和迭代,且对集群影响极小。

什么是 Telepresence Docker Compose 扩展?

核心是 x-tele 扩展,你可以添加到 compose.yaml 或 compose.override.yaml 文件中。Telepresence 通过新命令 telepresence compose 处理这些扩展,作为 docker compose 的增强替代,负责连接 Kubernetes 集群,修改网络、卷挂载和环境变量,然后传回优化后的配置给 Docker Compose。

扩展分两种类型:

顶层扩展

定义全局配置,如集群连接和卷挂载策略。例如:

  • Connections:指定命名空间、子网等,连接本地和集群。
  • Mounts:控制挂载策略(本地、远程或只读)。

服务级扩展

针对每个服务,定义本地 Compose 服务如何交互远程 Kubernetes 服务。支持类型包括:

类型

行为描述

类似 CLI 命令

connect

让服务访问集群 DNS 和路由

telepresence connect

proxy

用代理替代本地服务,代理远程集群服务

wiretap

接收远程服务镜像流量用于观察

telepresence wiretap

ingest

共享远程容器的环境变量和卷

telepresence ingest

intercept

处理远程服务拦截流量,支持环境变量/卷共享

telepresence intercept

replace

用本地服务完全替换远程容器

telepresence replace

所有服务扩展都隐含 connect

实战:从 Emojivoto 入手

准备工作

  • 克隆代码库:git clone https://github.com/telepresenceio/emojivoto.git
  • 本地运行:cd emojivoto && docker compose up (访问 http://localhost:8080)
  • 部署到 Kubernetes:kubectl apply -k kustomize/deployment
  • 查看 Pod 状态:kubectl -n emojivoto get pod

示例 1:本地代理远程服务

假设你不想本地运行 "voting" 服务,而是从集群代理它。compose.override.yaml 添加:

x-tele:
  connections:
    - namespace: emojivoto
services:
  voting:
    x-tele:
      type: proxy

运行 telepresence compose up。此时本地环境无缝访问远程投票服务。Vote-bot 仍然投票,但日志显示“Proxied service voting”,本地没有运行投票服务。

总结:让 Compose 服务调用远程集群资源,无需全部本地运行,适合依赖复杂的应用。

示例 2:用本地服务替换远程服务

反过来,让远程服务调用你本地的 "emoji" 和 "voting" 实现。

更新 compose.override.yaml

x-tele:
  connections:
    -namespace:emojivoto
services:
emoji:
    x-tele:
      type:replace
voting:
    x-tele:
      type:replace
vote-bot:
    profiles:
      -notEnabled# Optional: Disable local vote-bot

用 telepresence compose up,远程的 emoji 和 voting pod 被流量代理替换,流量转发到本地容器。投票数据通过自动远程挂载同步,http://localhost:8080 显示和远程应用相同的排行榜。

如果想调整卷挂载(例如用本地卷):

x-tele:
  connections:
    - namespace: emojivoto
  mounts:
    - volume: data
      policy: local

总结:适合在类生产环境快速替换代码,无需重新部署,加快调试和开发速度。

为何这改变了本地开发?

  • 高效:不再手动拦截或代理,Compose 文件定义一切。
  • 一致:本地镜像 Kubernetes 服务,测试更准确。
  • 灵活:轻松处理复杂场景,如卷同步和端口映射。
  • 最小集群影响:操作临时且可撤销,使用 telepresence compose down

无论是独立开发者还是团队,这些扩展让 Telepresence 成为 Kubernetes 工作流中不可或缺的工具。

其他重要改进

  • 自动移除 Traffic-Agent
    新增 Helm Chart agent.maxIdleTime 配置,控制流量代理空闲多久后自动从 Pod 移除,减少集群运行容器数。

  • 集群服务启动浏览器
    新增命令 telepresence serve <service>,启动浏览器访问指定服务。配合 telepresence connect --docker 使用时,会在本地随机端口暴露该服务。

  • Prometheus 指标去除客户端标签
    Helm Chart 添加 prometheus.dropClientLabel,支持 GDPR 合规,防止指标中暴露个人数据。

  • Prometheus 指标前缀 "telepresence_"
    避免指标冲突,更易于在监控系统中搜索。

  • 完整 CLI 参考
    文档新增完整 man 页式命令参考

原文链接:https://www.oschina.net/news/371529
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章