我的公司使用
git-sync
将压缩的 dags 同步到气流。我们使用气流舵图来部署气流。我想知道我是否可以让气流只拾取特定文件夹中的压缩包,例如 git 分支中的dags-dev
,而不是所有压缩包?
这里有一些参考可能有用。
气流舵图值文件。 https://github.com/helm/charts/blob/master/stable/airflow/values.yaml
我们的 dags 代码如下所示:
dags:
doNotPickle: true
git:
url: <git url>
ref: master
gitSync:
enabled: true
image:
repository: <some repo>
tag: 1.0.7
refreshTime: 60
initContainer:
enabled: true
image:
repository: <some repo>
tag: 1.0.7
Airflow git 同步配置如下所示:
AIRFLOW__KUBERNETES__DAGS_VOLUME_SUBPATH: repo # must match AIRFLOW__KUBERNETES__GIT_SUBPATH
AIRFLOW__KUBERNETES__GIT_REPO: <git repo>
AIRFLOW__KUBERNETES__GIT_BRANCH: master
AIRFLOW__KUBERNETES__GIT_DAGS_FOLDER_MOUNT_POINT: /opt/airflow/dags
AIRFLOW__KUBERNETES__GIT_USER: <some user>
AIRFLOW__KUBERNETES__GIT_PASSWORD: <some password>
AIRFLOW__KUBERNETES__GIT_SYNC_CONTAINER_REPOSITORY: gitlab.beno.ai:4567/eng/external-images/k8s.gcr.io/git-sync
AIRFLOW__KUBERNETES__GIT_SYNC_CONTAINER_TAG: v3.1.1
您可以定义要忽略的文件夹/文件列表,使用
.airflowignore
文件
https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#airflowignore
这个实现好像不支持git subpath,另外如果你看subpath方法后面,有一个git clone,然后是目录过滤。作为 git 用于部分克隆的新功能,git-sparse-checkout 仍处于试验阶段。
因此,一种解决方案是利用 dags-path 指向存储库中的子目录。
###################################
# Airflow - DAGs Configs
###################################
dags:
## the airflow dags folder
##
path: /opt/airflow/dags/repo/dir
注意:我建议从这个转移到生产工作负载的任何其他维护的气流实施,因为它现在已存档并且将不再打补丁。
# bitnami airflow helm values.yaml reference
repositories:
- repository: https://gitlab.com/repo.git
## Branch from repository to checkout
##
branch: "master"
## An unique identifier for repository, must be unique for each repository
##
name: "dags"
## Path to a folder in the repository containing the dags
##
path: ""