【 TiDB 使用环境】测试环境
【 TiDB 版本】v7.1.0。 operator版本为1.4.6
【复现路径】
【遇到的问题:问题现象及影响】
如何通过统一域名不同url访问多个集群的dashabord服务,例如:
域名为: www.tidb-dashboard.com
集群一的ns为:aaa
集群二的ns为:bbb
集群三的ns为:ccc
访问集群一的dashboard服务:http://www.tidb-dashboard.com/dashboard/aaa
访问集群二的dashboard服务:http://www.tidb-dashboard.com/dashboard/bbb
访问集群三的dashboard服务:http://www.tidb-dashboard.com/dashboard/ccc
嗯,思路是这样的,nginx转发到ingress,再由ingress转发到service,
中间涉及到url裁剪和dashboard的http pash,测试了几个方案,没测通。
我是人间不清醒
(唐强)
6
嗯,这样也可以,但最好是把dashboard放前边,我们这边有格式要求
我是人间不清醒
(唐强)
9
呢莫不爱吃鱼
11
使用Ingress或者nginx都可以实现,看你架构了。
liyuntang
(Liyuntang)
13
这个方案就是我们正在测试的方案,dashborad的path prefix不生效,导致该方案不通
你们的通吗
liyuntang
(Liyuntang)
14
nginx配置不负责,核心点不在这理,核心点在dashboard的http path上
liyuntang
(Liyuntang)
15
这个方案在代理单个dashboard服务时可行,代理多个集群时需要根据“/dashboar/cluster_id”做转发,这是时候就不行了
呢莫不爱吃鱼
16
http {
server {
listen 80;
server_name www.tidb-dashboard.com;
location /dashboard/aaa {
proxy_pass http://aaa-tidb-dashboard-service; # aaa集群dashboard地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /dashboard/bbb {
proxy_pass http://bbb-tidb-dashboard-service; # bbb集群dashboard地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /dashboard/ccc {
proxy_pass http://ccc-tidb-dashboard-service; # ccc集群dashboard地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
这么写不行吗?为什么要去匹配集群ID呢?直接匹配地址不行吗?
liyuntang
(Liyuntang)
17
这个方案需要维护nginx配置,灵活性略有欠缺,
我们目前的方案是nginx匹配“/dashboard”路径,将“/dashboard”开头的请求全部转发到后端ingress,再由ingress匹配“/dashboard/cluster_id”,将请求转发到不同的tidb集群的dashboard服务上
这样的话,后期维护少很多
1 个赞
liyuntang
(Liyuntang)
18
我们公司别的部门有的在用这个方案,需要有个程序实施监听k8s中namespace的变化,以便增加或删除相关的配置