我有一个问题
气流 1.10.10
Python 3.7
操作系统 redhat企业版
环境具有计算实例的GCP
Nginx 计算实例
我们正在使用(多个)气流,并通过NGINX反向代理(全部在Google Cloud Platform上提供)
我们有一个主域(example.com),该域根据其路径重定向到多个位置。 我们根据变量将位置设置为动态。我们称其为VarA和VarB。这指向运行Airflow的各个实例。 每个Web服务器部署的每个实例的Postgres数据库都是不同的。
Snippet of Nginx Conf
...
server_name example.com
location ~/airflow-<varA>-<varB>/.*
proxy_pass http://varA.example-instance.our-org.com/airflow-varB
我从此处配置的其余位置块:
https://airflow.readthedocs.io/en/stable/howto/run-behind-proxy.html
我们在airflow.cfg中启用了当前设置:
rbac = True
fernet_key = <the same for every image we build>
sercret_key = temporary_key (default)
base_url = <machine_dns_name:8080>
当我们的CI构建和部署Airflow时,我们可以正确导航到每个气流实例。问题是:
一旦我们通过导航到URL对1个实例进行身份验证
E
https://example.com/airflow-varA-varB`
我们可以浏览到我们生成的所有其他气流实例,而无需进行身份验证(每个实例的用户名和密码都不同)
构建映像时,我们使用airflow create_user
在数据库上创建第一个用户。
我尝试添加
所有方法均无效。
一种可行的方法是我将secret_key
更改为我们手动设置的内容,而不是源代码中的os.urandom(16)
,这使我们可以分别登录每个实例
但是
当我们在URL中加载另一个实例,然后单击刷新或登录到另一个实例时,它将第一个登录的实例注销。
更新:
我知道它已将其链接到ab_user
表中RBAC用户的USER_ID(由于我们创建的用户始终是用户1)
我怎么知道这是因为,如果我更改了PG数据库中的USERID,请更改ab_user_roles
以在ab_user
表中反映新的用户ID,并使该用户ID为随机整数,可以,并且我可以登录一次实例,如果我将其加载到URL中,则可以登录另一个实例,要求我登录。
Airflow不会发送任何cookie来关联用户ID,所以它如何工作?到底是Gunicorn还是Flask?
创建用户I Airflow时,我不想更改USERID,因为它不那么安全。 感谢您的帮助