问题描述
我正在 Kind 集群上试用 Tekton,并成功配置了 Tekton Dashboard 以使用 Ingress 规则。但是我没有专用域名,以后也不太可能有。这个 Tekton 实例将通过另一个 Nginx 暴露在另一个域的子路径上。
但是 Tekton Dashboard 似乎不适用于子路径位置。使用 Ingress path: /
公开的 Tekton Dashboard 运行良好,但如果我将其更改为 path: /tekton
,则不起作用。
那么,它是否设计为仅在根路径下工作?不支持在子路径上工作?
附言 我也将使用 Kind 集群进行生产,因为我无法访问 Kubernetes 集群。这是一项小型服务,我们不需要规模,只需要 CI/CD 即代码。现在似乎所有新的 CI/CD 实现都是为 Kubernetes 设计的。
解决方法
Tekton Dashboard 确实支持在子路径上公开,它会尝试检测要使用的基本 URL 并相应地进行调整。例如,如果您针对目标集群在本地运行 kubectl proxy
,则可以访问位于 http://localhost:8001/api/v1/namespaces/tekton-pipelines/services/tekton-dashboard:http/proxy/
有关您遇到的问题的更多详细信息将有助于调试,例如仪表盘版本?有什么负载吗?入口控制器和配置?浏览器控制台/网络选项卡等中的任何错误
,您还可以使用以下 Ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tekton-dashboard
namespace: tekton-pipelines
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/configuration-snippet: |
rewrite ^(/[a-z1-9\-]*)$ $1/ redirect;
spec:
rules:
- http:
paths:
- path: /tekton-dashboard(/|$)(.*)
pathType: Prefix
backend:
service:
name: tekton-dashboard
port:
number: 9097