Helm デプロイとエグゼキューター選択クイズ
Chart 1.22.0 / Airflow 3.3.1 / KEDA 2.20。
1. このガイドではどの chart とリポジトリエイリアスを使いますか?
回答を表示
Apache Airflow プロジェクトの公式 chart です。リポジトリを apache-airflow として登録すると、コマンドでは apache-airflow/airflow を使います。独立したコミュニティ chart の値を混在させないでください。
2. Chart 1.22.0 の実際の Airflow/エグゼキューターのデフォルト値は何ですか?
回答を表示
Airflow 3.2.2 と CeleryExecutor です。このガイドでは 3.3.1/KubernetesExecutor のプロファイルを使うため、明示的に上書きしています。
3. Chart.yaml ではドキュメントに記載されているすべての最小バージョンが適用されますか?
回答を表示
そうとは限りません。Helm 3.19.0 以降と、互換性のある Kubernetes/Airflow を使用してください。Chart 1.16 の README では Kubernetes 1.29 以降が指定されていました。レビュー対象の 1.22 のテンプレートも 1.29 でレンダリングされましたが、これはサポートの証明にはなりません。
4. エグゼキューターだけで Redis とワーカーのリソース種別が決まりますか?
回答を表示
エグゼキューターは影響しますが、Redis/外部ブローカーの設定やワーカーの永続化も関係します。ワーカーには Deployment と StatefulSet を使えます。Celery では外部ブローカーも使用できます。
5. PostgreSQL を無効にすれば外部データベースが構成されますか?
回答を表示
いいえ。データベース、マイグレーション権限、URI/TLS、metadataSecretName などの接続参照を準備してください。この Secret を設定すると、metadataConnection は正しい接続元にはなりません。
6. アップグレード時に Fernet/API/JWT キーを再生成すべきですか?
回答を表示
通常のアップグレードでは保持してください。Fernet キーを失うと暗号化データにアクセスできなくなる可能性があり、JWT の変更は実行中のタスク認証に影響する場合があります。バックアップとローテーションは慎重に扱ってください。
7. この例ではデフォルトの admin/admin をどのように避けていますか?
回答を表示
createUserJob を無効にし、選択した FAB 認証マネージャー向けに対話型の airflow users create を使います。パスワードは 2 回入力します。ほかの認証マネージャー/SSO では、それぞれの手順が必要です。
8. KubernetesExecutor の起動には常に 1〜2 分かかりますか?
回答を表示
いいえ。イメージキャッシュ/取得、Kubernetes API/スケジューラー、ノードの利用可能性/プロビジョニング、クォータ、ランタイムの初期化を測定してください。Celery でもゼロからのスケール後にはコールドスタートがあります。
9. KubernetesExecutor で任意の GPU/CLI ワーカーイメージを使えますか?
回答を表示
ワーカーには互換性のある Airflow タスクランタイムと DAG/provider の依存関係が必要です。これは KubernetesPodOperator がワークロードイメージを使って子 Pod を起動する場合とは異なります。
10. ワーカー Pod がなくなれば、Airflow のアイドル時の総コストはゼロになりますか?
回答を表示
コントロールプレーン、データベース、ブローカー、ノード、ストレージ、ログのコストは残る場合があります。Pod ごとの実行やゼロへのスケーリングでも、総コストがゼロになったり、セキュリティが完全に分離されたりするわけではありません。
11. chart の KEDA のタイミングに関するデフォルト値と例の値は何ですか?
回答を表示
デフォルトは pollingInterval=5s、cooldownPeriod=30s です。例では 10s/300s を明示的に選択しています。ゼロへのスケーリングの cooldown と、ゼロより上での HPA スケーリング/安定化を区別してください。
12. SQL 内の worker_concurrency には何を設定すべきですか?
回答を表示
データベースの worker_concurrency という列名ではなく、chart がレンダリングした数値 (この例では 4) です。対象ワーカーのキュー/エグゼキューターについて、該当する実行中/待機中のタスク数を数えて割り、切り上げます。
13. k8s エイリアスで混合エグゼキューターのスケーリングエラーが起きることがあるのはなぜですか?
回答を表示
TaskInstance には task.executor が保存されます。chart が文字列どおりの KubernetesExecutor だけを除外している場合、k8s として保存されたタスクが Celery の件数に含まれることがあります。実際に保存される値と一致するフィルターを使ってください。
14. クエリ結果が 25 で、maxReplicaCount=20 の場合はどうなりますか?
回答を表示
最大値によってワーカー数が制限されるため、すべての需要がすぐに満たされるわけではありません。バックログ、並行数、ワーカーリソース、データベース/ブローカーの負荷、ノード容量を合わせて調べてください。
15. Airflow Pod の TLS 設定があれば、KEDA のデータベースアクセスにも十分ですか?
回答を表示
いいえ。KEDA は独立したデータベースクライアントであり、DNS、ネットワーキング、権限、互換性のある URI、CA が必要です。URI の sslrootcert パスは scaler から読み取れる必要があります。chart が自動的にコピーすることはありません。
16. KEDA は Deployment にしか使えませんか?
回答を表示
いいえ。Celery の永続化設定に応じて、この chart は Deployment または StatefulSet を対象にします。KubernetesExecutor のタスク Pod は同じレプリカプールのパターンではありませんが、それによってほかの KEDA の用途が禁止されるわけではありません。
17. Helm --wait が成功すれば、検証も完了しますか?
回答を表示
マイグレーションの成功、長時間稼働するコンポーネントの Ready、DAG の配布、ワーカーの実行、Execution API、結果、ログを確認してください。KEDA のプロファイルでは、ワークロードに応じたスケーリング、アイドル状態への復帰、復旧もテストします。
18. Helm uninstall を実行すると PostgreSQL のデータはすぐにすべて削除されますか?
回答を表示
Pod の削除と PVC/PV のデータライフサイクルは異なります。PVC の保持、StorageClass の reclaim policy、外部データベースの削除/バックアップは別々に確認してください。共有 namespace、Secret、データベースを無差別に削除しないでください。