Kubernetes Nginx Ingress无法正确重定向到路径路由服务

时间:2019-10-17 11:30:04

标签: kubernetes

我正在将Ingress用于kubernetes。我的入口是kubernetes nginx入口。并且路由配置不起作用,并且在https部分中的每个请求中重定向了我的根路径。所有配置均在下面

给出
cat frontapi-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: swagger-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: preprod-ops.kblab.local
    http:
      paths:
      - backend:
          serviceName: kb-workplace
          servicePort: 8080
        path: /
      - backend:
          serviceName: gw-branch
          servicePort: 8443
        path: /api
$ cat swagger-portal.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: swagger-portal
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: preprod-ops.kblab.local
    http:
      paths:
      - backend:
          serviceName: swagger-portal
          servicePort: 9001
        path: /swagger-portal

上面的配置可以与http config正常使用,但是,下面的配置不能与https config一起使用。仅有效,可迅速调整门户

$cat frontapi-ingress-https.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/secure-verify-ca-secret: preprod.kblab.local
    kubernetes.io/ingress.class: nginx
  generation: 1
  name: app-ingress
spec:
  rules:
  - host: preprod.kblab.local
    http:
      paths:
      - backend:
          serviceName: gw-branch
          servicePort: 8443
        path: /api
      - backend:
          serviceName: kb-workplace
          servicePort: 8080
        path: /
      - backend:
          serviceName: acs-alfresco
          servicePort: 8080
        path: /acs
  tls:
  - hosts:
    - preprod.kblab.local
  - secretName: preprod.kblab.local

$ cat swagger-portal-https.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: swagger-portal
spec:
  rules:
  - host: preprod.kblab.local
    http:
      paths:
      - backend:
          serviceName: swagger-portal
          servicePort: 9001
        path: /swagger-portal/a
  tls:
  - hosts:
    - preprod.kblab.local
  - secretName: preprod.kblab.local

谢谢。

1 个答案:

答案 0 :(得分:1)

您正在swagger-portal-https.yaml入口上设置nginx.ingress.kubernetes.io/rewrite-target: /批注,这显式暗示了重定向到根路径。

如果要保留请求路径,则需要删除此注释。