我有一个运行4个服务的Kubernetes集群。 Nginx是其中一项服务,它将充当外部和内部通信的代理。 另一个服务是Flask应用程序,用户可以从中登录。登录后,用户将移至用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"
,但这也不起作用。
如何将用户从flask重定向回nginx?
答案 0 :(得分:0)
除非您已经配置了dns或http://nginx/user?username
文件,否则hosts
这行行无法在群集外使用。而且kubernetes不会将外部IP /端口传递给Pod。 Flask pod可以访问内部go服务。但是您需要的是Nginx外部IP。
您可以将Nginx服务的外部IP硬编码到flask中,或者让kubernetes将其作为环境变量传递,然后像读取它一样。
...
redirect(os.envirton['EXTERNAL_IP'] + '/go_service')
...
然后让Nginx处理对go服务的请求。