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 新增至您的映像檔

  1. 建立專案

    mkdir my-airflow-project && cd my-airflow-project
    mkdir dags  # put dags here
    cat <<EOM > Dockerfile
    FROM apache/airflow
    COPY . .
    EOM
    
  2. 然後建置映像檔

    docker build --pull --tag my-dags:0.0.1 .
    
  3. 將映像檔載入到 kind

    kind load docker-image my-dags:0.0.1
    
  4. 升級 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 套件。

  1. 建立專案

    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
    
  2. 然後建置映像檔

    docker build --pull --tag my-image:0.0.1 .
    
  3. 將映像檔載入到 kind

    kind load docker-image my-image:0.0.1
    
  4. 升級 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 套件。

  1. 建立專案

    mkdir my-airflow-project && cd my-airflow-project
    cat <<EOM > Dockerfile
    FROM apache/airflow
    RUN pip install --no-cache-dir lxml
    EOM
    
  2. 然後建置映像檔

    docker build --pull --tag my-image:0.0.1 .
    
  3. 將映像檔載入到 kind

    kind load docker-image my-image:0.0.1
    
  4. 升級 Helm 部署

    helm upgrade $RELEASE_NAME apache-airflow/airflow --namespace $NAMESPACE \
        --set images.airflow.repository=my-image \
        --set images.airflow.tag=0.0.1
    

進一步擴充和自訂映像檔

請參閱建置映像檔以取得有關如何擴充和自訂 Airflow 映像檔的更多詳細資訊。

這個條目有幫助嗎?