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.dev.org.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://127.0.0.1:8080/,以確認 Airflow 運作正常。
kubectl port-forward svc/$RELEASE_NAME-webserver 8080:8080 --namespace $NAMESPACE
擴充 Airflow 映像檔¶
Apache Airflow 社群發布的 Docker 映像檔是 Apache Airflow 的 參考 映像檔
。但是,當您嘗試使用時,您會想要新增自己的 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