主题
08 公网接入(frp + 公网 Traefik)
8.1 访问链路
浏览器 https://ai-ear.cn:9010
→ 公网机 8.153.84.140 Traefik(entryPoint ep9010,TLS 证书 ai-ear.cn)
→ 127.0.0.1:19010(frps 隧道端口)
→ frp 隧道(token 认证,serverAddr 8.153.84.140:7000)
→ 宿主机 192.168.122.1 frpc 代理 jenkins-web-30880
→ RKE2 集群 NodePort 192.168.122.23:30880
→ Service jenkins:8080 → jenkins-08.2 配置过程
1) 宿主机(192.168.122.1,即本机)frpc
宿主机已有 frpc(/etc/frp/frpc.toml,systemd frpc.service),追加代理:
toml
# Jenkins (RKE2 集群 NodePort 30880) → 公网 19010 → Traefik ep9010
[[proxies]]
name = "jenkins-web-30880"
type = "tcp"
localIP = "192.168.122.23"
localPort = 30880
remotePort = 19010bash
sudo systemctl restart frpc说明:最初实现为集群内 frpc Deployment(随 Jenkins 漂移,HA 更优,清单曾位于
deploy/jenkins/frpc.yaml),后按现有基础架构惯例迁移到宿主机 frpc,集群内副本已删除。 如需恢复集群内 frpc 模式,参考 git 历史或本文 8.3 节。
2) 公网机 Traefik(8.153.84.140)
静态配置 /etc/traefik/traefik.yaml 增加入口(沿用现有 ep9xxx 模式):
yaml
entryPoints:
ep9010:
address: ":9010"动态配置 /etc/traefik/dynamic.yaml 增加路由与服务:
yaml
http:
routers:
svc-9010:
entryPoints: [ep9010]
rule: "Host(`ai-ear.cn`)"
service: svc-19010
tls: {}
services:
svc-19010:
loadBalancer:
servers:
- url: "http://127.0.0.1:19010"bash
systemctl restart traefik # 新增 entryPoint 需重启(秒级中断)
ss -tlnp | grep 9010 # 确认监听3) Jenkins Root URL
deploy/jenkins/values.yaml 中设置(JCasC unclassified.location.url 由 chart 模板生成):
yaml
controller:
jenkinsUrl: "https://ai-ear.cn:9010/"helm upgrade 后生效,确保邮件/链接/Webhook 中的地址正确。
8.3 备选:集群内 frpc(HA 更优)
yaml
# deploy/jenkins/frpc.yaml(已按惯例改用宿主机 frpc,此处存档)
# ConfigMap frpc.toml: serverAddr=8.153.84.140:7000, proxy jenkins-web tcp
# localIP=jenkins.jenkins.svc.cluster.local localPort=8080 remotePort=19010
# Deployment: image 192.168.122.156:30000/jenkins/frpc:0.69.1- 优点:frpc 随集群调度,单点故障自愈;直连 ClusterIP 不依赖某个节点 NodePort。
- 注意:frps 端 proxy 名需全局唯一,迁移时先删旧副本避免
proxy already exists。 - 镜像 snowdreamtech/frpc:0.69.1 默认 entrypoint 即
frpc -c /etc/frp/frpc.toml,不要传 args。
8.4 验证
bash
curl -k -o /dev/null -w "%{http_code}\n" https://ai-ear.cn:9010/login # 200
curl -k -u 'admin:xxx' -g 'https://ai-ear.cn:9010/api/json?tree=jobs[name]'