暴露 Web 控制台
Web 控制台怎么对外访问由运维在安装时决定,四种模式之间可以随时用 helm upgrade 切换。
前置条件
- SupKube 已经安装,参见 在线安装。
- 选定的访问地址必须与
auth.dex.publicURL保持一致,否则登录会在回调环节失败。
四种模式
| 模式 | 适用场景 | 访问方式 | 关键参数 |
|---|---|---|---|
| NodePort | 本地与自建机房,节点地址内网可达 | http://<节点地址>:30888/ | 默认值,无需设置 |
| LoadBalancer | 公有云,需要公网地址 | http://<外部地址>/ | service.frontend.type=LoadBalancer |
| ClusterIP | 安全敏感或气隙环境,按需访问 | 端口转发后访问 http://localhost:8080 | service.frontend.type=ClusterIP |
| Ingress | 生产,域名加 TLS | https://supkube.example.com/ | ingress.enabled=true |
注意
在 AKS、GKE、EKS 等托管集群上,节点通常没有公网地址,NodePort 从互联网不可达。公网访问请用 LoadBalancer 或 Ingress。
NodePort
默认模式,前端 Service 固定使用 service.frontend.nodePort=30888。
kubectl get nodes -o wide
取任意节点的地址,浏览器打开 http://192.0.2.10:30888/。
LoadBalancer
helm upgrade supkube supkube/supkube --reuse-values \
-n supkube \
--set service.frontend.type=LoadBalancer
kubectl -n supkube get svc supkube-frontend -w
备注
云厂商分配的地址是动态的,删除并重建 Service 会换地址。需要固定地址时,用云厂商的静态地址注解把它钉住,并同步更新 auth.dex.publicURL。
ClusterIP 加端口转发
helm upgrade supkube supkube/supkube --reuse-values \
-n supkube \
--set service.frontend.type=ClusterIP
kubectl -n supkube port-forward svc/supkube-frontend 8080:80
浏览器打开 http://localhost:8080,此时 auth.dex.publicURL 应设为 http://localhost:8080。
Ingress
需要集群中已有入口控制器(Ingress Controller),证书由您自己的注解或 cert-manager 提供。
helm upgrade supkube supkube/supkube --reuse-values \
-n supkube \
--set ingress.enabled=true \
--set ingress.className=nginx \
--set ingress.hosts[0].host=supkube.example.com \
--set ingress.hosts[0].paths[0].path=/ \
--set ingress.hosts[0].paths[0].pathType=Prefix \
--set auth.dex.publicURL=https://supkube.example.com
部署在子路径下
当 SupKube 与其他系统共用一个域名时,可以把控制台挂在子路径上。
helm upgrade supkube supkube/supkube --reuse-values \
-n supkube \
--set frontend.basePath=/supkube \
--set ingress.hosts[0].paths[0].path=/supkube \
--set auth.dex.publicURL=https://portal.example.com/supkube
frontend.basePath 会注入前端容器,由 nginx 在启动时渲染为运行期配置,前端路由与静态资源都基于该前缀。
验证方法
kubectl -n supkube get svc supkube-frontend
kubectl -n supkube get ingress
kubectl -n supkube exec deploy/supkube-dex -- printenv | grep -i issuer
浏览器访问控制台地址,跳转到登录页且地址栏的主机名与 auth.dex.publicURL 完全一致,即配置正确。