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 端口转发到 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 镜像的更多详细信息,请参阅 构建镜像

此条目是否有帮助?