我正在研究一个设置,我可以根据路径访问 Jenkins 的不同安装。 即/prod 需要生产 Jenkins 和/其他一些其他 Jenkins。
我创建以下入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
app: jenkins
namespace: jenkins
name: jenkins-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /login
# nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
# nginx.ingress.kubernetes.io/cors-allow-headers: Authorization, origin, accept
# nginx.ingress.kubernetes.io/cors-allow-methods: GET, OPTIONS
# nginx.ingress.kubernetes.io/enable-cors: "true"
spec:
rules:
# - host: "jenkins"
- http:
paths:
- backend:
serviceName: jenkins-svc
servicePort: 8080
path: /prod
使用上面,我可以在/prod 上访问 Jenkins,但单击任何链接都会将我从 Jenkins 中导航出来。(问题是单击任何链接后/prod 没有附加到它并且事情不起作用(
我必须使用什么注释才能完成这项工作。
尝试添加类似 -
nginx.ingress.kubernetes.io/app-root: /prod
因此,如果服务器的根路径与/
不同,则app-route
注释会将/prod 视为根路径。
因为你想根据路径访问不同的 Jenkins,你可以像这样
- apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: swagger-ui
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-body-size: 50m
nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"
nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: swagger-staging-ingress
spec:
rules:
- host: developer.test.example.io
http:
paths:
- backend:
serviceName: svc-1
servicePort: 80
path: /prod(/|$)(.*)
- backend:
serviceName: svc-2
servicePort: 80
path: /stag(/|$)(.*)
如果有任何请求developer.test.example.io/stag
重定向到svc-2
如果/prod
,它将被重定向到svc-1
。