bpgeck:
私はGoogleのクラウドで作曲(エアフロー)を使用しています。私は、新しい環境を作成し、新しいものに古い環境からの私と同じのDAGと変数を取りたいです。
これを実現するために、私は、次の操作を行います。
- 私は私の変数のいくつかをチェックし、JSONファイルにエクスポート。
- 私の新しい環境では、私はこれと同じJSONファイルをインポートします。
- 私が使用
gsutil
して新しい環境に自分と同じのDAGをアップロード
しかし、新しい環境の中で、私のDAGのすべては、のために破壊されていますFERNET_KEY configuration is missing
。私の最高の推測では、これが別のFernetキーを使用して暗号化されたが、私はわからないんだし、私の変数を輸入に関連しているということです。
誰もが前に、この問題が発生していますか?もしそうなら、どのようにそれを修正しましたか?
マイケル・アンドリュース:
私は確実に次のアクションを実行することによって、作曲1.9 /風量1.10.6で問題を再現することができます:
- 新しい作曲クラスタを作成します。
- DAGをアップロードし、その参照エアフロー接続
- Composerで環境変数を設定
- 待ち
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-scheduler
とairflow-worker
Kubernetes展開スペックポッドテンプレート:
- 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
。