gpt4 book ai didi

python - 使用相同的DAGS创建新环境时,缺少FERNET_KEY配置

转载 作者:行者123 更新时间:2023-12-03 15:24:10 28 4
gpt4 key购买 nike

我在Google Cloud中使用Composer( Airflow )。我想创建一个新环境,并将相同的DAG和变量从旧环境导入到新环境中。

为此,我执行以下操作:

  • 我检查了几个变量并将其导出到JSON文件。
  • 在新环境中,我导入了相同的JSON文件。
  • 我使用gsutil并将相同的DAG上载到新环境

  • 但是,在新环境中,由于 FERNET_KEY configuration is missing,我的所有DAG都崩溃了。我最好的猜测是,这与导入使用单独的Fernet key 加密的变量有关,但我不确定。

    有人遇到过这个问题吗?如果是这样,您如何解决?

    最佳答案

    通过执行以下操作,我可以在Composer 1.9/Airflow 1.10.6中可靠地重现该问题:

  • 创建一个新的Composer集群
  • 上载引用了 Airflow 连接的DAG
  • 在Composer中设置环境变量
  • 等待airflow-schedulerairflow-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'
    Broken DAG: [/home/airflow/gcs/dags/MY_DAG.py] Expecting value: line 1 column 1 (char 0)

    问题的根本原因是,添加新的环境变量会从 AIRFLOW__CORE__FERNET_KEYairflow-scheduler Kubernetes部署规范Pod模板中删除 airflow-worker环境变量:
     - 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

    关于python - 使用相同的DAGS创建新环境时,缺少FERNET_KEY配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60292164/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com