【发布时间】:2019-08-15 17:36:35
【问题描述】:
我已将 Jenkins 实例部署到 Kubernetes,可从 jenkins.company.com 访问。 我想设置第二条路线 jenkins.company.com/admin 将附加一个标头,然后将请求转发到同一个服务。
我的问题是 Jenkins 主页所依赖的所有后续请求都返回 404 http 响应。
Request URL: https://jenkins.company.com/admin
Request Method: GET Status Code: 200
Request URL: https://jenkins.company.com/static/1d6021a8/css/layout-common.css
Method: GET Status Code: 404
Request URL: https://jenkins.company.com/static/1d6021a8/css/style.cssRequest
Method: GET Status Code: 404
Request URL: https://jenkins.company.com/static/1d6021a8/scripts/prototype.js
Method: GET Status Code: 404
...
我尝试了各种入口注释,但没有成功。
nginx.ingress.kubernetes.io/use-regex: "true"
with spec.rules.paths[].path 使用正则表达式试图获取重写目标值。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/auth-realm: Authentication Required - ok
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/configuration-snippet: |-
proxy_set_header User $remote_user;
nginx.ingress.kubernetes.io/rewrite-target: $1
name: jenkins-master-ingress
namespace: default
spec:
rules:
- host: jenkins.company.com
http:
paths:
- backend:
serviceName: my-jenkins
servicePort: 8080
path: /a
tls:
- secretName: my-secret
status:
loadBalancer:
ingress:
- {}
~
有趣的是,我还发现添加另一条路径可以解决所有问题,尽管我无法解释如何。添加“stati”作为路径会解除阻塞,但使用“static”或“static/(.+)”会将其中断并返回 404。
spec:
rules:
- host: jenkins.company.com
http:
paths:
- backend:
serviceName: my-jenkins
servicePort: 8080
path: /a
- backend:
serviceName: my-jenkins
servicePort: 8080
path: /stati
如何让 /static 文件通过?我的入口缺少什么?
【问题讨论】:
-
你试过用这个nginx.ingress.kubernetes.io/rewrite-target:/annotations吗?
-
是的,我上面的例子中有这个注释。
标签: nginx kubernetes kubernetes-ingress nginx-ingress