Передайте сервис kubernetes переменной в Flask - PullRequest
0 голосов
/ 23 октября 2019

У меня кластер Kubernetes с 4 работающими сервисами. Одним из сервисов является Nginx, который будет выступать в качестве прокси для внешних и внутренних коммуникаций. Другой сервис - это приложение для колб, из которого пользователь может войти. После входа пользователь перемещается в другое приложение, написанное на go. Я хочу перенаправить пользователя обратно в Nginx после того, как он войдет в систему, и Nginx затем проксирует его в сервис go. Проблема, с которой я сталкиваюсь, заключается в том, как перенаправить пользователя на сервис Nginx. Сервис Nginx называется просто nginx. Это мой код на python:

if usernamedata == None:
    print("Could not log in")   
else:
    if passworddata == password:
        print("Logged in")
        return redirect("http://{0}/user?username".format(nginx))

Я так понимаю, что у flask должна быть возможность разрешать имя службы nginx, если оно находится в том же пространстве имен? Вот служба nginx: default | nginx | http://192.168.99.104:31316

Я также пробовал "http://nginx/user?username", но это тоже не сработало. Как я могу перенаправить пользователя обратно в nginx из колбы?

1 Ответ

0 голосов
/ 23 октября 2019

Эта строка http://nginx/user?username не будет работать вне кластера, если вы не настроили свой файл dns или hosts. Также kubernetes не передает внешний IP / порт на стручки. Фляга имеет доступ к внутреннему сервису го. Но вам нужен внешний IP-адрес nginx.

Вы можете жестко закодировать внешний IP-адрес службы Nginx во флеш-память или попросить kubernetes передать его как переменную окружения, а затем прочитать его как.

...
redirect(os.envirton['EXTERNAL_IP'] + '/go_service')
...

Затем Nginx обработает запрос к сервису go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...