nginx - 将 kubernetes 服务传递给 Flask 中的变量
问题描述
我有一个运行 4 个服务的 Kubernetes 集群。其中一项服务是 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))
我知道如果烧瓶在同一个命名空间中,它应该能够解析 nginx 服务名称?这是 nginx 服务:
default | nginx | http://192.168.99.104:31316
我也试过"http://nginx/user?username"
,但也没有用。如何将用户从烧瓶重定向回 nginx?
解决方案
http://nginx/user?username
除非您配置了 dns 或hosts
文件,否则此行将无法在集群外工作。此外,kubernetes 不会将外部 IP/端口传递给 pod。Flask pod 可以访问内部的 go 服务。但是你需要的是 nginx 外部 ip。
您可以将 Nginx 服务的外部 IP 硬编码到烧瓶中,或者让 kubernetes 将其作为环境变量传递,然后像这样读取它。
...
redirect(os.envirton['EXTERNAL_IP'] + '/go_service')
...
然后让 Nginx 处理对 go 服务的请求。
推荐阅读
- c# - 如何使用 C# 在 Visual Studio 中创建切换按钮?
- c# - 如何根据某些条件退出录制并在ranorex中执行其他录制模块
- image - 奇怪的预测输出(OCR CRNN)
- winapi - 为什么使用 SM_REMOTESESSION 查询成功但 WTSIsRemoteSession 失败?
- amazon-web-services - 如何在 aws-cli 中对“list-tasks”的结果进行排序?
- arrays - MongoDB $elemMatch 查找多个元素
- python - 更改熊猫中的列值应用另一个函数
- c++ - count_if 中外部值的比较
- terminal - Tmux 垂直拆分窗口并定义顶部窗格的高度
- python - 如何在我的系统上找到 MacPorts Python?