datawire/tel2Telepresence Traffic Manager & Traffic Agent (开源版) 是Telepresence工具链的核心组件镜像,包含Traffic Manager(流量管理器)和Traffic Agent(流量代理)两个核心模块。该镜像基于开源协议发布,专为Kubernetes环境设计,旨在解决微服务开发过程中“本地开发与集群环境隔离”的痛点。
kubectl(集群访问权限)和Telepresence客户端(v2.18+,用于与Manager交互,下载地址)。telepresence,用于部署Traffic Manager)。Traffic Manager需部署在Kubernetes集群中,作为流量协调中心。推荐通过Helm或kubectl部署:
bash# 添加Telepresence Helm仓库 helm repo add telepresence [***] helm repo update # 部署Traffic Manager(默认命名空间:telepresence) helm install traffic-manager telepresence/traffic-manager \ --namespace telepresence \ --create-namespace \ --set image.repository=docker.io/datawire/telepresence-traffic-manager \ # 开源版镜像地址 --set image.tag=<version> # 替换为具体版本(如v2.18.0)
通过官方Manifest部署:
bashkubectl apply -f [***] kubectl apply -f [***] # 部署Manager Deployment kubectl create namespace telepresence --dry-run=client -o yaml | kubectl apply -f - kubectl apply -n telepresence -f [***]
Traffic Agent通过Sidecar形式注入目标Pod,支持两种配置方式:
通过Pod注解触发Agent自动注入:
yaml# 目标服务Deployment示例(添加注解以启用Agent) apiVersion: apps/v1 kind: Deployment metadata: name: my-service namespace: default spec: template: metadata: annotations: telepresence.getambassador.io/inject: "true" # 启用Agent注入 telepresence.getambassador.io/agent-image: "docker.io/datawire/telepresence-traffic-agent:<version>" # 开源版Agent镜像地址 spec: containers: - name: main-container image: my-service:latest
通过telepresence客户端手动注入Agent(需先安装客户端):
bash# 拦截目标服务(自动注入Agent并配置流量规则) telepresence intercept my-service --port 8080:80 # 将集群中my-service的80端口流量转发至本地8080端口
以下为“拦截集群流量到本地服务”的完整流程:
localhost:8080)。bash# 拦截default命名空间下的my-service服务,将80端口流量转发至本地8080端口 telepresence intercept my-service --namespace default --port 8080:80
my-service.default.svc.cluster.local:80,流量将被转发至本地localhost:8080。[***]访问集群内的数据库服务(无需本地部署)。bashtelepresence leave my-service # 停止拦截,恢复集群原有流量路由
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
LOG_LEVEL | 字符串 | info | 日志级别(可选:debug/info/warn/error) |
PORT | 整数 | 8080 | Manager服务端口(集群内通信使用) |
NAMESPACE | 字符串 | telepresence | Manager部署命名空间 |
KUBE_CONFIG_PATH | 字符串 | /var/run/secrets/kubernetes.io/serviceaccount | Kubernetes API访问配置路径(容器内默认挂载) |
| 注解键 | 示例值 | 说明 |
|---|---|---|
telepresence.getambassador.io/agent-port | 9900 | Agent监听端口(用于与Manager通信) |
telepresence.getambassador.io/timeout | 30s | 流量转发超时时间 |
telepresence.getambassador.io/log-level | debug | Agent日志级别(覆盖Manager全局配置) |
注意:该方式仅用于本地功能验证,生产环境需部署至Kubernetes集群。
bashdocker run -d \ --name telepresence-manager \ -p 8080:8080 \ -e LOG_LEVEL=debug \ -e NAMESPACE=telepresence \ -v $HOME/.kube/config:/root/.kube/config:ro \ # 挂载本地kubeconfig以访问集群 docker.io/datawire/telepresence-traffic-manager:<version>
yaml# traffic-manager-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: traffic-manager namespace: telepresence spec: replicas: 1 selector: matchLabels: app: traffic-manager template: metadata: labels: app: traffic-manager spec: containers: - name: traffic-manager image: docker.io/datawire/telepresence-traffic-manager:<version> ports: - containerPort: 8080 env: - name: LOG_LEVEL value: "info" - name: PORT value: "8080" resources: limits: cpu: 200m memory: 128Mi requests: cpu: 100m memory: 64Mi
docker.io/datawire/telepresence-traffic-manager(Manager)、docker.io/datawire/telepresence-traffic-agent(Agent)manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务