Как исправить настройки маршрутов для входа в gce? - PullRequest
0 голосов
/ 03 июня 2019

Вход вызывает случайные сервисы по запросам, а также вызывает root (/). Мне нужно войти, чтобы вызвать указанный в сервисе конфигурации и отправить полный путь к сервису (я использую шаблон 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 голосов
/ 03 июля 2019

Из того, что я вижу в вашем вопросе:

1) вы пытаетесь использовать rewrite-target с gce ingress -> это не сработает. rewrite-target является функцией входного контроллера nginx. Кстати, начиная с версии 0.22.0, вы должны использовать nginx.ingress.kubernetes.io/rewrite-target: "/" вместо ingress.kubernetes.io/rewrite-target: "/"

2) Аннотация add-base-url была удалена в 0.22.0. И это тоже была аннотация nginx, а не gce. Подробнее здесь и здесь .

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?

...