使用 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 新增到映象中

  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 映象的更多詳細資訊,請參閱 構建映象

本條目是否有幫助?