使用 kind 快速入門¶
本文將向您展示如何在 Kind 上使用 Helm Chart 安裝 Airflow
安裝 kind 並建立叢集¶
我們推薦使用 Kubernetes 1.20+ 進行測試,例如
kind create cluster --image kindest/node:v1.21.1
確認它已啟動
kubectl cluster-info --context kind-kind
新增 Airflow Helm Stable Repo¶
helm repo add apache-airflow https://airflow.apache.tw
helm repo update
建立名稱空間¶
export NAMESPACE=example-namespace
kubectl create namespace $NAMESPACE
安裝 Chart¶
export RELEASE_NAME=example-release
helm install $RELEASE_NAME apache-airflow/airflow --namespace $NAMESPACE
使用以下程式碼安裝包含示例 DAG 的 Chart
export NAMESPACE=example-namespace
helm install $RELEASE_NAME apache-airflow/airflow \
--namespace $NAMESPACE \
--set-string "env[0].name=AIRFLOW__CORE__LOAD_EXAMPLES" \
--set-string "env[0].value=True"
這可能需要幾分鐘。確認 Pod 已啟動。
kubectl get pods --namespace $NAMESPACE
helm list --namespace $NAMESPACE
執行以下命令將 Airflow UI 埠轉發到 https://:8080/ 以確認 Airflow 正常工作。
kubectl port-forward svc/$RELEASE_NAME-webserver 8080:8080 --namespace $NAMESPACE
擴充套件 Airflow 映象¶
Apache Airflow 社群釋出的 Docker 映象,是 Apache Airflow 的 reference images。然而,當您嘗試使用它時,您可能想新增自己的 DAG、定製依賴、包或甚至定製提供者。
注意
建立定製映象意味著您還需要維護一定程度的自動化,因為當您想要安裝的包或 Airflow 升級時,您需要重新建立映象。請不要忘記保留這些指令碼。另請記住,當您執行純 Python 任務時,您可以使用 Python Virtualenv 函式,它將在執行時動態地獲取並安裝 Python 依賴項。從 Airflow 2.8.0 開始,Virtualenvs 也可以被快取。
實現這一點的最佳方法是構建您自己的定製映象。
將 DAG 新增到映象中¶
建立一個專案
mkdir my-airflow-project && cd my-airflow-project mkdir dags # put dags here cat <<EOM > Dockerfile FROM apache/airflow COPY . . EOM
然後構建映象
docker build --pull --tag my-dags:0.0.1 .
將映象載入到 kind 中
kind load docker-image my-dags:0.0.1
升級 Helm 部署
helm upgrade $RELEASE_NAME apache-airflow/airflow --namespace $NAMESPACE \ --set images.airflow.repository=my-dags \ --set images.airflow.tag=0.0.1
將 apt 包新增到映象中¶
以下示例新增 vim apt 包。
建立一個專案
mkdir my-airflow-project && cd my-airflow-project cat <<EOM > Dockerfile FROM apache/airflow USER root RUN apt-get update \ && apt-get install -y --no-install-recommends \ vim \ && apt-get autoremove -yqq --purge \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* USER airflow EOM
然後構建映象
docker build --pull --tag my-image:0.0.1 .
將映象載入到 kind 中
kind load docker-image my-image:0.0.1
升級 Helm 部署
helm upgrade $RELEASE_NAME apache-airflow/airflow --namespace $NAMESPACE \ --set images.airflow.repository=my-image \ --set images.airflow.tag=0.0.1
將 PyPI 包新增到映象中¶
以下示例新增 lxml PyPI 包。
建立一個專案
mkdir my-airflow-project && cd my-airflow-project cat <<EOM > Dockerfile FROM apache/airflow RUN pip install --no-cache-dir lxml EOM
然後構建映象
docker build --pull --tag my-image:0.0.1 .
將映象載入到 kind 中
kind load docker-image my-image:0.0.1
升級 Helm 部署
helm upgrade $RELEASE_NAME apache-airflow/airflow --namespace $NAMESPACE \ --set images.airflow.repository=my-image \ --set images.airflow.tag=0.0.1
進一步擴充套件和定製映象¶
有關如何擴充套件和定製 Airflow 映象的更多詳細資訊,請參閱 構建映象。