使用 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.org
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 端口转发到 http://localhost: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 镜像的更多详细信息,请参阅 构建镜像

本条目是否有帮助?