이 가이드에서는 Helm을 사용하여 AKS(Azure Kubernetes Service)에 Apache Airflow를 배포합니다. AKS 클러스터를 설정하고, Helm을 설치하고, Helm 차트를 사용하여 Airflow를 배포하고, Airflow UI를 탐색하는 방법을 알아봅니다.
Important
오픈 소스 소프트웨어는 AKS 설명서와 샘플 전반에서 언급되어 있습니다. 배포하는 소프트웨어는 AKS 서비스 수준 계약, 제한된 보증 및 Azure 지원 제외됩니다. AKS와 함께 오픈 소스 기술을 사용하는 경우 각 커뮤니티 및 프로젝트 유지 관리자에서 사용할 수 있는 지원 옵션을 참조하여 계획을 개발합니다.
예를 들어 Ray GitHub 리포지 토리는 응답 시간, 목적 및 지원 수준에 따라 달라지는 여러 플랫폼을 설명합니다.
Microsoft는 AKS에 배포하는 오픈 소스 패키지를 빌드하는 역할을 담당합니다. 해당 책임에는 컨테이너 이미지의 이진 파일에 대한 제어와 함께 빌드, 스캔, 서명, 유효성 검사 및 핫픽스 프로세스의 완전한 소유권이 포함됩니다. 자세한 내용은 AKS에 대한 취약성 관리 및 AKS 지원 적용 범위를 참조하세요.
Apache Airflow란?
Apache Airflow 는 일괄 처리 지향 워크플로를 개발, 예약 및 모니터링하기 위해 빌드된 오픈 소스 플랫폼입니다. 유연한 Python 프레임워크를 통해 Airflow를 사용하면 거의 모든 기술과 원활하게 통합되는 워크플로를 디자인할 수 있습니다. Airflow에서 DAG(Directed Acyclic Graph)로 표현되는 Python 워크플로를 정의해야 합니다. 어디에서나 Airflow를 배포할 수 있으며 배포 후 Airflow UI에 액세스하고 워크플로를 설정할 수 있습니다.
공기 흐름 아키텍처
상위 수준에서 Airflow에는 다음이 포함됩니다.
- DAG, 작업 인스턴스, XComs 등의 상태를 추적하는 메타데이터 데이터베이스입니다.
- 모니터링 및 관리를 위한 Airflow UI를 제공하는 웹 서버입니다.
- DAG 및 작업 인스턴스를 트리거하는 스케줄러입니다.
- 작업 인스턴스의 실행을 처리하는 실행기입니다.
- 작업을 수행하는 작업자입니다.
- CLI(명령줄 인터페이스)와 같은 기타 구성 요소입니다.
프로덕션을 위한 공기 흐름 분산 아키텍처
Airflow의 모듈식 분산 아키텍처는 프로덕션 워크로드에 다음과 같은 몇 가지 주요 이점을 제공합니다.
- 문제 분리: 각 구성 요소는 고유한 역할을 하므로 시스템을 단순하고 유지 관리할 수 있습니다. 스케줄러는 DAG 및 작업 예약을 관리하고 작업자는 작업을 실행하여 각 파트가 특정 기능에 집중하도록 합니다.
- 확장성: 워크로드가 증가함에 따라 아키텍처를 통해 쉽게 스케일링할 수 있습니다. 여러 스케줄러 또는 작업자를 동시에 실행하고 증가하는 수요를 수용하기 위해 자동 크기 조정을 위해 호스트된 데이터베이스를 활용할 수 있습니다.
- 안정성: 구성 요소가 분리되므로 단일 스케줄러 또는 작업자의 실패로 인해 시스템 전체 가동 중단이 발생하지 않습니다. 중앙 집중식 메타데이터 데이터베이스는 전체 시스템에서 일관성과 연속성을 보장합니다.
- 확장성: 아키텍처는 유연하므로 실행기 또는 큐 서비스와 같은 구성 요소를 필요에 따라 교환하고 사용자 지정할 수 있습니다.
이 디자인은 복잡한 데이터 파이프라인을 관리하는 데 있어 크기 조정, 안정성 및 유연성을 위한 강력한 기반을 제공합니다.
공기 흐름 실행기
Airflow 프로덕션을 준비할 때 매우 중요한 디자인 결정은 올바른 실행기를 선택하는 것입니다. 태스크를 실행할 준비가 되면 실행기는 실행을 관리해야 합니다. 실행기는 작업을 수행하는 작업자 풀과 상호 작용합니다. 가장 일반적으로 사용되는 실행기는 다음과 같습니다.
- LocalExecutor: 호스트 시스템에서 태스크 인스턴스를 병렬로 실행합니다. 이 실행기는 테스트에 적합하지만 더 큰 워크로드에 대해 제한된 확장성을 제공합니다.
- CeleryExecutor: Celery 풀을 사용하여 여러 컴퓨터에 작업을 분산하여 다른 노드에서 작업자를 실행하여 수평 확장성을 제공합니다.
- KubernetesExecutor: Kubernetes의 Airflow 배포에 맞게 조정된 이 실행기는 Kubernetes 클러스터 내에서 작업자 Pod를 동적으로 시작합니다. 뛰어난 확장성을 제공하고 강력한 리소스 격리를 보장합니다.
Airflow를 프로덕션으로 전환함에 따라 크기 조정 작업자가 필수가 되어 KubernetesExecutor가 요구 사항에 가장 적합합니다. 그러나 로컬 테스트의 경우 LocalExecutor가 가장 간단한 옵션입니다.
다음 단계
참가자
Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 원래 그것을 썼다:
- Don High | 수석 고객 엔지니어
- Satya Chandragiri | 선임 디지털 클라우드 솔루션 설계자
- Erin Schaffer | 콘텐츠 개발자 2
Azure Kubernetes Service