# k8s Airflow HA 部署指南 本專案提供了一套基礎的高可用 (HA) Apache Airflow on k8s 部署方案。以下文件按建議閱讀與建置順序排列,請依序參考執行。 ## 1. 架構與概念 (Architecture & Concepts) 建立對整體架構的認識: 1. **[Airflow 功能介紹](01-airflow功能介紹.md)** * 了解 Airflow 的核心功能、元件 (DAG, Operator, Task) 與應用場景。 2. **[K8s Airflow HA 基礎架構說明](02-k8s-airflow-HA基礎架構說明.md)** * 詳述本專案採用的多層級 HA 架構 (Ingress, K8s Control Plane, Airflow Components, Database)。 3. **[Airflow on K8s 部署評估](03-airflow-on-k8s-deploy-evaluate.md)** * 探討不同的部署策略,以及為何選擇將 Metadata DB 部署於 Bare Metal 而非 K8s 內部的考量。 --- ## 2. 基礎設施建置 (Infrastructure Setup) 在部署 Airflow 之前,必須先準備好底層的運算與儲存資源: 1. **高可用負載平衡 (Load Balancer)** * **[Keepalived & HAProxy 安裝指南](infra/keepalived_haproxy/04-keepalived&haproxy-install-guide.md)**: **建議最先建置**。提供 VIP (`10.10.0.83`) 與負載平衡,統一管理 K8s API, DB, Web UI, Doris, RabbitMQ 的流量入口。 2. **Kubernetes 叢集建置** * **[Kubernetes 安裝指南](infra/kubernetes/05-k8s-install-guide.md)**: 基於上述 VIP 建置高可用 Control Plane。 2. **儲存系統 (Storage)** * **[NFS 安裝指南](infra/airflow/nfs/06-nfs-install-guide.md)**: 建立 NFS Server 並配置 K8s NFS CSI Driver,供 Airflow DAGs/Logs 與 RabbitMQ 使用。 --- ## 3. 外部服務建置 (External Services) Airflow 的核心元件依賴於外部資料庫與訊息佇列: 1. **Metadata Database** * **[PostgreSQL + Patroni + Etcd 安裝指南](infra/postgres/07-postgresql&patroni&etcd-install-guide.md)**: 建置高可用的 PostgreSQL 叢集作為 Airflow Metadata DB。 2. **Message Broker** * **[RabbitMQ 安裝指南](infra/airflow/rabbitmq/08-rabbitmq-install-guide.md)**: 在 K8s 上部署 RabbitMQ Cluster,作為 CeleryExecutor 的訊息中間件。 3. **Container Registry** * **[Container Registry 安裝指南](infra/registry/09-registry-install-guide.md)**: 在 `10.10.0.85:50000` 建置私有 Registry,供存放 Airflow 客製化 Image。 * (若需做HA,請參考) **[Harbor Registry 安裝指南](infra/registry/harbor-install-guide.md)**: 部署高可用 Harbor Registry (Helm),整合外部 PostgreSQL 與 NFS 儲存。 --- ## 4. Airflow 部署 (Airflow Deployment) 當上述依賴服務皆準備就緒後,即可進行 Airflow 的安裝: * **[Airflow on K8s HA 安裝指南](infra/airflow/10-airflow-install-guide.md)** * **核心文件**。整合了上述所有資源,說明如何: * 建立 Airflow 專用的 Namespace 與 Secrets。 * 建立並綁定固定的 PV/PVC (DAGs/Logs)。 * 使用 Helm Chart (配置 CeleryExecutor) 部署 Airflow。 * 驗證服務運作與 Web UI 存取。