如何修复gce入口的路由配置?

时间:2019-06-03 11:04:29

标签: google-cloud-platform kubernetes-ingress

Ingress会根据请求调用随机服务,还会调用根(/)。我需要进入以调用配置服务中指定的入口,并将完整路径发送到服务(我使用MVC模式,因此我需要为应用程序提供完整路径以解析正确的控制器)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: whatever
  annotations:
    ingress.kubernetes.io/add-base-url: "true"
    ingress.kubernetes.io/rewrite-target: "/"
    kubernetes.io/ingress.class: "gce"
    kubernetes.io/ingress.global-static-ip-name: "my-static-ip-name"
spec:
  tls:
  - secretName: my-tls-secret
    hosts:
      - whatever.my-awesome-project.com
  rules:
  - host: whatever.my-awesome-project.com
    http:
      paths:
      - path: /api/whatever
        backend:
          serviceName: whatever-service
          servicePort: 80
      - path: /api/not-whatever
        backend:
          serviceName: not-whatever-service
          servicePort: 80
      - path: /images/*
        backend:
          serviceName: not-whatever-service
          servicePort: 80

1 个答案:

答案 0 :(得分:0)

根据我在您的问题中看到的内容:

1)您正在尝试将rewrite-target入口使用gce->这将无法工作。 rewrite-target是Nginx入口控制器功能。顺便说一句,从0.22.0版本开始,您应该use nginx.ingress.kubernetes.io/rewrite-target: "/"而不是ingress.kubernetes.io/rewrite-target: "/"

2)注释add-base-url在0.22.0中已删除。这也是nginx注释,而不是gce。更多信息herehere

3)另外,如果您希望使用正确的路径,我相信您不需要rewrite-target注释

从我的战俘那里应该是这样的:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: whatever
  annotations:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/ingress.global-static-ip-name: "my-static-ip-name"
spec:
  tls:
  - secretName: my-tls-secret
    hosts:
      - whatever.my-awesome-project.com
  rules:
  - host: whatever.my-awesome-project.com
    http:
      paths:
      - path: /api/whatever
        backend:
          serviceName: whatever-service
          servicePort: 80
      - path: /api/not-whatever
        backend:
          serviceName: not-whatever-service
          servicePort: 80
      - path: /images/*
        backend:
          serviceName: not-whatever-service
          servicePort: 80

很多事情取决于您使用的入口和版本。您有可能迁移到Nginx吗?