将kubernetes服务传递给Flask中的变量

时间:2019-10-22 21:02:54

标签: nginx flask

我有一个运行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?

1 个答案:

答案 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服务的请求。