pip install 'apache-airflow[celery]'
HiveOperator
를 사용할 경우 hive cli, MySqlOperator
를 사용할 경우 PYTHONPATH
가 잡혀있어야하는 등DAGS_FOLDER
를 통해 DAG 파일 접근의존성 설치
pip install 'apache-airflow[cncf.kubernetes]'
airflow scheduler 에서 프로세스로 실행
metadata database 로 RDBMS 필요
KubernetesExecutor 를 위한 worker namespace, worker image 와 같은 정보들을 config 에 설정 필요
executor 는 계속 떠있고, task 마다 worker pod 가 실행되는 방식
config
airflow.cfg
의 kubernetes_executor
섹션 내에 pod template 을 위한 pod_template_file
설정 필요base
: metadata.name
: template name---
apiVersion: v1
kind: Pod
metadata:
name: placeholder-name
spec:
containers:
- env:
- name: AIRFLOW__CORE__EXECUTOR
value: LocalExecutor
# Hard Coded Airflow Envs
- name: AIRFLOW__CORE__FERNET_KEY
valueFrom:
secretKeyRef:
name: RELEASE-NAME-fernet-key
key: fernet-key
- name: AIRFLOW__DATABASE__SQL_ALCHEMY_CONN
valueFrom:
secretKeyRef:
name: RELEASE-NAME-airflow-metadata
key: connection
- name: AIRFLOW_CONN_AIRFLOW_DB
valueFrom:
secretKeyRef:
name: RELEASE-NAME-airflow-metadata
key: connection
image: dummy_image
imagePullPolicy: IfNotPresent
name: base
volumeMounts:
- mountPath: "/opt/airflow/logs"
name: airflow-logs
- mountPath: /opt/airflow/airflow.cfg
name: airflow-config
readOnly: true
subPath: airflow.cfg
restartPolicy: Never
securityContext:
runAsUser: 50000
fsGroup: 50000
serviceAccountName: "RELEASE-NAME-worker-serviceaccount"
volumes:
- emptyDir: {}
name: airflow-logs
- configMap:
name: RELEASE-NAME-airflow-config
name: airflow-config
CeleryExecutor
는 별도로 Redis 가 필요하지만, KubernetesExecutor
는 별도 component 불필요KubernetesExecutor
가 유용CeleryKubernetesExecutor
를 사용할경우 celery 와 kubernetes executor 둘 모두 사용 가능kubernetes
queue 로 보내 실행하는 것도 가능