bpg*_*eck 6 python python-3.x airflow google-cloud-composer
我在 Google Cloud 中使用 Composer (Airflow)。我想创建一个新环境,并将旧环境中相同的 DAG 和变量带到新环境中。
为此,我执行以下操作:
gsutil相同的 DAG 并将其上传到新环境但是,在新环境中,由于FERNET_KEY configuration is missing. 我最好的猜测是,这与导入使用单独的 Fernet 密钥加密的变量有关,但我不确定。
有没有人遇到过这个问题?如果是这样,你是如何解决的?
小智 7
通过执行以下操作,我可以在 Composer 1.9 / Airflow 1.10.6 中可靠地重现该问题:
airflow-scheduler并airflow-worker重新启动除了 之外FERNET_KEY configuration is missing,该问题还表现为以下 Airflow 错误横幅:
Broken DAG: [/home/airflow/gcs/dags/MY_DAG.py] in invalid literal for int() with base 10: 'XXX'
Run Code Online (Sandbox Code Playgroud)
Broken DAG: [/home/airflow/gcs/dags/MY_DAG.py] Expecting value: line 1 column 1 (char 0)
Run Code Online (Sandbox Code Playgroud)
这个问题的根源是,添加一个新的环境变量,消除了AIRFLOW__CORE__FERNET_KEY从环境变量airflow-scheduler和airflow-workerKubernetes部署规格波德模板:
- name: AIRFLOW__CORE__FERNET_KEY
valueFrom:
secretKeyRef:
key: fernet_key
name: airflow-secrets
Run Code Online (Sandbox Code Playgroud)
作为一种解决方法,可以应用 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)"
Run Code Online (Sandbox Code Playgroud)
注意:此补丁也必须应用于airflow-worker.
| 归档时间: |
|
| 查看次数: |
2770 次 |
| 最近记录: |