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 稳定版仓库

helm repo add apache-airflow https://airflow.apache.org
helm repo update

创建命名空间

export NAMESPACE=example-namespace
kubectl create namespace $NAMESPACE

安装图表

export RELEASE_NAME=example-release
helm install $RELEASE_NAME apache-airflow/airflow --namespace $NAMESPACE

使用以下代码安装包含示例 DAG 的图表

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 开始,Virtualenv 也可以被缓存。

实现此目标的最佳方法是构建您自己的自定义镜像。

向镜像添加 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 镜像的更多详细信息,请参阅 构建镜像

此条目有帮助吗?