同じDAGSで新しい環境を作成するときにFERNET_KEY設定が不足しています

bpgeck:

私はGoogleのクラウドで作曲(エアフロー)を使用しています。私は、新しい環境を作成し、新しいものに古い環境からの私と同じのDAGと変数を取りたいです。

これを実現するために、私は、次の操作を行います。

  • 私は私の変数のいくつかをチェックし、JSONファイルにエクスポート。
  • 私の新しい環境では、私はこれと同じJSONファイルをインポートします。
  • 私が使用gsutilして新しい環境に自分と同じのDAGをアップロード

しかし、新しい環境の中で、私のDAGのすべては、のために破壊されていますFERNET_KEY configuration is missing私の最高の推測では、これが別のFernetキーを使用して暗号化されたが、私はわからないんだし、私の変数を輸入に関連しているということです。

誰もが前に、この問題が発生していますか?もしそうなら、どのようにそれを修正しましたか?

マイケル・アンドリュース:

私は確実に次のアクションを実行することによって、作曲1.9 /風量1.10.6で問題を再現することができます:

  1. 新しい作曲クラスタを作成します。
  2. DAGをアップロードし、その参照エアフロー接続
  3. Composerで環境変数を設定
  4. 待ち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__CORE__FERNET_KEYから、環境変数airflow-schedulerairflow-workerKubernetes展開スペックポッドテンプレート:

 - 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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=12908&siteId=1