Kubernetes
Kubernetes
이 페이지는 Airflow를 Kubernetes 안에서 실행하는 방법을 간단히 안내해요. Airflow는 Kubernetes 친화적인 프로젝트를 지향하며, 많은 사용자가 Kubernetes가 주는 안정성과 자동 확장(autoscaling) 옵션을 활용하려고 Kubernetes 클러스터 안에서 Airflow를 실행하곤 해요. 공식 Helm 차트로 손쉽게 배포할 수 있고, Kubernetes Executor나 KubernetesPodOperator, 그리고 Pod mutation 훅을 활용하는 방법을 설명해요.
출처: 문서
본문
Apache Airflow는 Kubernetes에 매우 친화적인 프로젝트를 지향하며, 많은 사용자가 Kubernetes가 제공하는 향상된 안정성과 자동 확장(autoscaling) 옵션을 활용하기 위해 Kubernetes 클러스터 안에서 Airflow를 실행해요.
Kubernetes용 Helm 차트
우리는 Airflow용 공식 Helm 차트를 관리하고 있어요. 이 차트는 배포(deployment)를 정의·설치·업그레이드하는 데 도움을 줘요. Helm 차트는 커뮤니티가 관리하고 배포하는 공식 Docker 이미지와 Dockerfile을 사용해요.
Kubernetes Executor
Kubernetes Executor는 모든 Airflow Task를 Kubernetes에서 별도의 Pod로 실행할 수 있게 해줘요.
KubernetesPodOperator
KubernetesPodOperator는 Kubernetes에서 Pod를 생성할 수 있게 해줘요.
Pod Mutation Hook
Airflow 로컬 설정 파일(airflow_local_settings.py)에는 pod_mutation_hook 함수를 정의할 수 있는데, 이 함수는 Pod 객체를 Kubernetes 클라이언트에 보내 스케줄링하기 전에 변경(mutate)할 수 있는 능력을 가져요. 이 함수는 Pod 객체에 대한 참조를 단일 인자로 받으며, 그 속성들을 변경할 것으로 기대돼요.
예를 들어, KubernetesExecutor나 KubernetesPodOperator가 실행하는 모든 워커 Pod에 sidecar나 init 컨테이너를 추가하는 데 사용할 수 있어요.
로컬 설정을 구성하는 방법에 대한 자세한 내용은 로컬 설정 구성을 참고해요.
from kubernetes.client.models import V1Pod
def pod_mutation_hook(pod: V1Pod):
pod.metadata.annotations["airflow.apache.org/launched-by"] = "Tests"