2024-04-28 02:04:58 发布
网友
我正在谷歌云中使用Composer(气流)。我想创建一个新环境,并将旧环境中相同的DAG和变量带到新环境中
为了实现这一点,我将执行以下操作:
gsutil
然而,在新的环境中,由于FERNET_KEY configuration is missing,我的所有DAG都被破坏了。我最好的猜测是,这与导入使用单独的Fernet密钥加密的变量有关,但我不确定
FERNET_KEY configuration is missing
以前有人遇到过这个问题吗?如果是,您是如何修复的
我们在FERNET_键上也犯了同样的错误。我认为新版本(composer-1.9.0)中有一个bug。他们说Fernet密钥现在存储在Kubernetes Secrets中,而不是配置映射中 即使重新输入您的连接,它们也无法正常工作否
他们已经解决了版本1.9.1中的问题:
https://cloud.google.com/composer/docs/release-notes
根据文档,Fernet Key是由Composer生成的,它是唯一的。可以从Composer气流配置(Composer bucket -> airflow.cfg)中检索fernet key值。您需要检查fernet_key是否存在
Composer bucket -> airflow.cfg
fernet key
fernet_key
由于二进制卷展中的竞争条件,可能导致在Web服务器中设置新的fernet密钥,从而使元数据数据库中以前加密的值无法解密,因此存在一个已知问题
您可以尝试的是在Admin -> Variables下的气流UI中重新创建key Composer对象路径
Admin -> Variables
通过执行以下操作,我可以可靠地重现Composer 1.9/1.10.6中的问题:
airflow-scheduler
airflow-worker
除了FERNET_KEY configuration is missing之外,该问题还通过以下错误横幅表现出来:
Broken DAG: [/home/airflow/gcs/dags/MY_DAG.py] in invalid literal for int() with base 10: 'XXX'
Broken DAG: [/home/airflow/gcs/dags/MY_DAG.py] Expecting value: line 1 column 1 (char 0)
问题的根本原因是添加新的环境变量会从airflow-scheduler和airflow-workerKubernetes部署规范Pod模板中删除AIRFLOW__CORE__FERNET_KEY环境变量:
AIRFLOW__CORE__FERNET_KEY
- name: AIRFLOW__CORE__FERNET_KEY valueFrom: secretKeyRef: key: fernet_key name: airflow-secrets
作为一种解决方法,可以应用Kubernetes部署规范修补程序:
$ cat config/composer_airflow_scheduler_fernet_key_patch.yaml spec: template: spec: containers: - name: airflow-scheduler env: - name: AIRFLOW__CORE__FERNET_KEY valueFrom: secretKeyRef: key: fernet_key name: airflow-secrets $ kubectl patch deployment airflow-scheduler namespace=$AIRFLOW_ENV_GKE_NAMESPACE patch "$(cat config/composer_airflow_scheduler_fernet_key_patch.yaml)"
注意:此修补程序还必须应用于airflow-worker
我们在FERNET_键上也犯了同样的错误。我认为新版本(composer-1.9.0)中有一个bug。他们说Fernet密钥现在存储在Kubernetes Secrets中,而不是配置映射中 即使重新输入您的连接,它们也无法正常工作否
他们已经解决了版本1.9.1中的问题:
https://cloud.google.com/composer/docs/release-notes
根据文档,Fernet Key是由Composer生成的,它是唯一的。可以从Composer气流配置(
Composer bucket -> airflow.cfg
)中检索fernet key
值。您需要检查fernet_key
是否存在由于二进制卷展中的竞争条件,可能导致在Web服务器中设置新的fernet密钥,从而使元数据数据库中以前加密的值无法解密,因此存在一个已知问题
您可以尝试的是在
Admin -> Variables
下的气流UI中重新创建key Composer对象路径通过执行以下操作,我可以可靠地重现Composer 1.9/1.10.6中的问题:
airflow-scheduler
和airflow-worker
重新启动除了
FERNET_KEY configuration is missing
之外,该问题还通过以下错误横幅表现出来:问题的根本原因是添加新的环境变量会从
airflow-scheduler
和airflow-worker
Kubernetes部署规范Pod模板中删除AIRFLOW__CORE__FERNET_KEY
环境变量:作为一种解决方法,可以应用Kubernetes部署规范修补程序:
注意:此修补程序还必须应用于
airflow-worker
相关问题 更多 >
编程相关推荐