Как адаптироваться к изменению пути kubernetes в Python Flask маршрутах - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть приложение Python Flask, которое я развернул в IBM Kubernetes Service. В моем развертывании YAML указан path: /, который обрабатывается в моем коде с помощью @app.route('/'). Это отлично работает. Затем я попытался переместить приложение, изменив значение path: / на path: /foo в своем развертывании YAML. Я ожидал, что запрос, поступающий в мое приложение, все еще будет приходить как /, но он приходит как /foo. В конечном итоге я пытаюсь проявить гибкость при развертывании приложения без изменения исходного кода. Я не вижу способа ни в Kubernetes, ни в Flask создать такой уровень косвенности. Я что-то упустил?

Оригинальный YAML:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  tls:
  - hosts:
      - my....us-east.containers.appdomain.cloud
    secretName: my...
  rules:
  - host: my....us-east.containers.appdomain.cloud
    http:
      paths:
       - path: /
         backend:
           serviceName: my-service
           servicePort: 5000

1 Ответ

1 голос
/ 17 февраля 2020

Необходимо проверить содержание вашего ingress определения yaml.

Вот пример yaml определения с перезаписью

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /something(/|$)(.*) 

Например, приведенное выше определение входа приведет к следующим перезаписи:

rewrite.bar.com/something rewrites to rewrite.bar.com/
rewrite.bar.com/something/ rewrites to rewrite.bar.com/
rewrite.bar.com/something/new rewrites to rewrite.bar.com/new

Вы можете проверить Nginx Ingress controller Переписать аннотации здесь . Вы также можете настроить входящую маршрутизацию с аннотациями в IBM Cloud, следуя документации здесь

...