Airflow에서 DAG파일을 관리하고 배포하는 방식은 여러 가지가 있다. 이전에는 nfs를 pv로 활용해서 nfs스토리지에 DAG파일을 놓고 사용해봤고 더 효율적인 방법을 위해 gitsync를 설정해보자.
1. SSH 키 생성 및 GitHub 등록
Git 저장소에 안전하게 접근하기 위해 SSH 키 쌍을 생성한다.
# SSH 키 생성 (RSA 4096bit)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 생성 경로:
/root/.ssh/id_rsa_airflow - Passphrase: 입력하지 않고 엔터로 진행한다.
생성된 공개키(id_rsa_airflow.pub)의 내용을 복사하여 GitHub Repository > Settings > Deploy keys에 등록한다. 이때 Allow write access는 체크하지 않아도 무방하다.
2. SSH 개인키 Base64 인코딩
Kubernetes Secret에 키를 저장하기 위해 생성된 개인키를 Base64 형식으로 인코딩한다.
# 개인키를 한 줄의 Base64 문자열로 변환
base64 /root/.ssh/id_rsa_airflow -w 0 > temp.txt
temp.txt에 저장된 문자열은 이후 Helm Chart 설정 파일의 gitSshKey 항목에 사용된다.
3. Helm Chart 설정 (override-values.yaml)
Airflow 공식 Helm Chart를 기반으로 GitSync와 데이터베이스 설정을 구성한다. 기존 내용에 'GitSync 활성화 및 설정' 부분을 추가했다.
# Fernet Key 설정 (기존 키 복구 시 사용)
fernetKey: "********"
# KubernetesExecutor 사용
executor: "KubernetesExecutor"
# 외부 PostgreSQL 데이터베이스 연결 설정
data:
metadataSecretName: mydatabase
metadataConnection:
user: airflow
pass: airflow
protocol: postgresql
host: <DBHOST>
port: 5432
db: airflow
# 내장 PostgreSQL 비활성화
postgresql:
enabled: false
# 로그 저장소 설정 (NFS 사용)
logs:
persistence:
enabled: true
size: 50Gi
storageClassName: nfs-airflow
existingClaim: airflow-logs
# GitSync 활성화 및 설정
dags:
gitSync:
enabled: true
repo: ssh://git@github.com/yonggyunbaek/airflow-dags.git
branch: main
subPath: ""
sshKeySecret: airflow-ssh-secret
# SSH 키를 포함한 Secret 생성
extraSecrets:
airflow-ssh-secret:
data: |
gitSshKey: '<temp.txt의 Base64 인코딩 내용>'
4. 배포 및 확인
설정 파일을 적용하여 Airflow를 설치하거나 업그레이드한다.
# Helm 업그레이드 및 설치
helm upgrade --install airflow apache-airflow/airflow \
--namespace airflow \
--values ./override-values.yaml
# 볼륨 설정 변경 등으로 인한 재시작 필요 시
kubectl delete statefulset airflow-triggerer -n airflow
# 로컬 접속을 위한 포트 포워딩
kubectl port-forward svc/airflow-api-server 8080:8080 -n airflow --address 0.0.0.0
배포 완료 후 Airflow 웹 UI에 접속하면 지정한 Git 저장소의 DAG 파일들이 자동으로 로드되는 것을 확인할 수 있다.
(dag파일명과 dag_id가 달라서 이름이 같지는 않음)


'Data > Airflow' 카테고리의 다른 글
| Airflow 실습 - Upbit 분봉 데이터 수집 및 S3 적재 파이프라인 구축 (0) | 2025.12.18 |
|---|---|
| k8s Airflow 로그 지속성 설정(SSHOperator 테스트) (0) | 2025.11.19 |
| Helm으로 Airflow 배포하기 (0) | 2025.11.10 |