Cloud Composer 개요

이 페이지에서는 Cloud Composer 환경과 Apache Airflow 배포에 사용되는 Google Cloud 제품을 간략히 설명합니다.

Cloud Composer는 Airflow에 기반을 둔 관리형 워크플로 조정 서비스입니다. Cloud Composer는 온프레미스 배포와 유사하게 여러 구성요소를 배포하여 Airflow를 실행합니다. 이 페이지에서는 Google Cloud 구성요소, 함수, 워크플로 실행 방법을 설명합니다.

또한 Cloud Composer는 온프레미스와 유사하게 특정 구성을 사용하여 워크플로를 실행합니다. Cloud Composer가 연결 또는 통신에 사용하는 구성을 변경하면 예기치 않은 결과가 발생하거나 Airflow 배포가 손상될 수 있습니다. 이 페이지에서는 중요한 환경 구성에 대해 다룹니다.

환경

Airflow는 마이크로서비스 아키텍처의 프레임워크입니다. Cloud Composer는 분산 환경에 Airflow를 배포하기 위해 여러 Google Cloud 구성요소를 프로비저닝하며, 이를 통칭해서 Cloud Composer 환경이라고 합니다.

환경은 Cloud Composer의 핵심 개념입니다. 한 프로젝트 내에 여러 개의 Cloud Composer 환경을 만들 수 있습니다. 환경은 Google Kubernetes Engine에 기반을 둔 독립 실행형 Airflow 배포입니다. 이 환경은 Airflow에 기본 제공되는 커넥터를 통해 Google Cloud 서비스와 함께 작동합니다.

지원되는 리전에서 생성된 Cloud Composer 환경은 Compute Engine 영역 내에서 실행됩니다. 간단한 사용 사례의 경우 하나의 리전에 하나의 환경을 만들 수 있습니다. 복잡한 사용 사례의 경우 단일 리전 또는 여러 리전에 여러 환경을 만들 수 있습니다. Airflow는 제품의 공개 API를 통해 다른 Google Cloud 제품과 통신합니다.

아키텍처

환경을 만들면 Cloud Composer가 Google 관리 테넌트 프로젝트와 고객 프로젝트 간에 환경 리소스를 분산시킵니다. 다음 다이어그램을 참조하세요.

테넌트 프로젝트 및 고객 프로젝트의 Cloud Composer 환경 리소스(확대하려면 클릭)
Cloud Composer 환경 리소스(확대하려면 클릭)

테넌트 프로젝트 리소스

Cloud Composer는 통합 ID 및 액세스 관리 액세스 제어 및 데이터 보안 강화를 위해 Cloud SQL 및 App Engine을 테넌트 프로젝트에 배포합니다.

Cloud SQL

Cloud SQL은 Airflow 메타데이터를 저장합니다. Cloud Composer는 환경을 만드는 데 사용된 기본 또는 지정된 커스텀 서비스 계정만 데이터베이스 액세스를 허용하여 민감한 연결 및 워크플로 정보를 보호합니다. Cloud Composer는 데이터 손실 가능성을 최소화하기 위해 Airflow 메타데이터를 매일 백업합니다.

Cloud Composer 환경을 만드는 데 사용하는 서비스 계정은 Cloud SQL 데이터베이스의 데이터에 액세스할 수 있는 유일한 계정입니다. Cloud Composer는 애플리케이션, 클라이언트 또는 기타 Google Cloud 서비스에서 Cloud SQL 데이터베이스로의 액세스를 원격으로 승인하기 위해 GKE 클러스터에 Cloud SQL 프록시를 제공합니다.

App Engine

App Engine 가변형 환경은 Airflow 웹 서버를 호스팅합니다. 기본적으로 Airflow 웹 서버는 IAP(Identity-Aware Proxy)와 통합되어 있습니다. Cloud Composer에서는 IAP 통합 세부정보가 숨겨져 있으며 Cloud Composer IAM 정책을 사용하여 웹 서버 액세스를 관리할 수 있습니다. Airflow 웹 서버에만 액세스 권한을 부여하려면 composer.user 역할을 할당하거나 개발자 환경의 다른 리소스에 대한 액세스 권한을 제공하는 다른 Cloud Composer 역할을 할당하면 됩니다. 또한 추가 액세스 제어 요구사항이 있는 조직에서 Cloud Composer는 고객 프로젝트에 자체 관리형 Airflow 웹 서버를 배포할 수 있도록 지원합니다.

고객 프로젝트 리소스

Cloud Composer는 고객 프로젝트에 Cloud Storage, Google Kubernetes Engine, Cloud Logging, Cloud Monitoring을 배포합니다.

Cloud Storage

Cloud Storage는 DAG, 플러그인, 데이터 종속 항목, 로그를 스테이징할 수 있도록 스토리지 버킷을 제공합니다. 워크플로(DAG)를 배포하려면 사용자 환경의 버킷으로 파일을 복사합니다. Cloud Composer가 작업자, 스케줄러, 웹 서버 간의 DAG 동기화 작업을 처리합니다. Cloud Storage를 사용하면 크기 제한에 대한 염려 없이 data/ 폴더와 logs/ 폴더에 워크플로 아티팩트를 저장하고 데이터 액세스를 완벽하게 제어할 수 있습니다.

Google Kubernetes Engine

기본적으로 Cloud Composer는 Airflow 스케줄러, 워커 노드, CeleryExecutor와 같은 핵심 구성요소를 GKE에 배포합니다. 또한 Cloud Composer는 확장성 및 보안 강화를 위해 별칭 IP를 사용하는 VPC 기반 클러스터도 지원합니다.

CeleryExecutor의 메시지 브로커인 Redis는 StatefulSet 애플리케이션으로 실행되므로 컨테이너를 다시 시작해도 메시지가 유지됩니다.

GKE에서 스케줄러와 작업자를 실행하면 KubernetesPodOperator를 사용하여 모든 컨테이너 작업 부하를 실행할 수 있습니다. 기본적으로 Cloud Composer는 보안 취약점으로부터 GKE 클러스터를 보호하도록 자동 업그레이드자동 복구를 사용 설정합니다.

Airflow 작업자 및 스케줄러 노드, Airflow 웹 서버는 서로 다른 서비스 계정에서 실행됩니다.

  • 스케줄러 및 작업자: 환경을 만들 때 서비스 계정을 지정하지 않으면 환경이 기본 Compute Engine 서비스 계정에서 실행됩니다.
  • 웹 서버: 서비스 계정은 환경을 만들 때 자동으로 생성되며 웹 서버 도메인에서 파생됩니다. 예를 들어 도메인이 foo-tp.appspot.com이면 서비스 계정은 foo-tp@appspot.gserviceaccount.com입니다.

환경 세부정보에서 serviceAccountairflowUri 정보를 확인할 수 있습니다.

Cloud Logging 및 Cloud Monitoring

Cloud Composer는 Cloud Logging 및 Cloud Monitoring과 통합되므로 모든 Airflow 서비스와 워크플로 로그를 중앙에서 볼 수 있습니다.

Cloud Logging의 스트리밍 특성으로 인해 Airflow 로깅 모듈 동기화를 기다릴 필요 없이 Airflow 스케줄러와 작업자가 내보낸 로그를 즉시 볼 수 있습니다. 그리고 Cloud Composer에 대한 Cloud Logging 로그는 google-fluentd를 기반으로 하므로 스케줄러와 작업자 컨테이너가 생성하는 모든 로그에 액세스할 수 있습니다. 이러한 로그는 디버깅을 크게 개선하고, 유용한 시스템 수준 및 Airflow 종속성 정보를 포함합니다.

Cloud Monitoring은 Cloud Composer에서 측정항목, 이벤트, 메타데이터를 수집하여 대시보드와 차트를 통해 유용한 정보를 생성합니다.

네트워킹 및 보안

기본적으로 Cloud Composer는 머신 통신에 기본 VPC 네트워크를 사용하는 경로 기반 GKE 클러스터를 배포합니다. Cloud Composer는 보안 및 네트워킹 유연성을 높이기 위해 다음 기능도 지원합니다.

공유 VPC

공유 VPC는 중앙 호스트 프로젝트에서 공유 네트워크 리소스 관리를 통해 프로젝트 전체에 일관된 네트워크 정책을 적용하도록 합니다.

Cloud Composer가 공유 VPC에 참여하면 Cloud Composer 환경은 서비스 프로젝트에 위치하며 다른 Google Cloud 프로젝트에 호스팅된 서비스를 호출할 수 있습니다. 서비스 프로젝트 내 리소스가 내부 IP 주소를 사용하여 프로젝트 경계를 넘어 안전하게 통신합니다. 네트워크 및 호스트 프로젝트 요구사항은 공유 VPC 구성을 참조하세요.

VPC 기반 Cloud Composer 환경

VPC 기반에서 GKE 클러스터의 Pod와 서비스 IP 주소는 VPC 네트워크 피어링을 통해 Google Cloud 네트워크 내에서 기본적으로 라우팅됩니다.

이 구성에서 Cloud Composer는 환경에 별칭 IP 주소를 사용하는 VPC 기반 GKE 클러스터를 배포합니다. VPC 전용 클러스터를 사용하면 GKE가 자동으로 보조 범위를 선택합니다. 특정 네트워킹 요구사항에 맞도록 Cloud Composer 환경 구성 중에 GKE Pod 및 GKE 서비스의 보조 범위를 구성할 수도 있습니다.

비공개 IP Cloud Composer 환경

비공개 IP를 사용하면 Cloud Composer 워크플로가 공개 인터넷으로부터 완전히 격리됩니다.

이 구성에서 Cloud Composer는 고객 프로젝트에 별칭 IP 주소를 사용하는 VPC 기반 GKE 클러스터를 배포합니다. 개발자 환경의 GKE 클러스터는 비공개 클러스터로 구성되고 Cloud SQL 인스턴스는 비공개 IP로 구성됩니다. 또한 Cloud Composer는 고객 프로젝트의 VPC 네트워크와 테넌트 프로젝트의 VPC 네트워크 간에 피어링 연결을 만듭니다.

중요한 구성 정보

  • 일부 Airflow 매개변수는 Cloud Composer 환경에 맞게 사전 구성되어 있으며, 변경할 수 없습니다. 다른 매개변수는 환경을 만들 때 구성합니다.
  • Cloud Composer가 Airflow 배포 시 사용하는 독립형 Google Cloud 제품에 적용되는 할당량 또는 한도는 Cloud Composer 환경에도 적용됩니다.
  • Cloud Composer는 워크플로를 성공적으로 실행하도록 다음 구성을 사용합니다.
    • Cloud Composer 서비스 백엔드는 구독을 사용하여 Pub/Sub를 통해 GKE 서비스 에이전트를 조정하며 Pub/Sub의 기본 동작을 사용하여 메시지를 관리합니다. .*-composer-.* 주제를 삭제하지 마세요. Pub/Sub는 프로젝트당 주제를 최대 10,000개까지 지원합니다.
    • Cloud Composer 서비스는 Cloud Logging을 사용하여 로깅을 조정합니다. Google Cloud 프로젝트의 로그 수를 제한하려면 모든 로그 수집을 중지하면 됩니다. Logging을 중지하지 마세요.
    • Cloud Composer 서비스 계정의 ID 및 액세스 관리 정책 binding을 수정하지 마세요(예: service-your-project-number@cloudcomposer-accounts.iam.gserviceaccount.com).
    • Airflow 데이터베이스 스키마를 변경하지 마세요.
  • 안정적인 Airflow 버전을 실행하는 Cloud Composer 출시 버전에는 이후 Airflow 버전에서 백포트된 Airflow 업데이트가 포함될 수 있습니다.
  • 작업자 및 스케줄러 노드는 용량이 다르며 Airflow 웹 서버와 다른 서비스 계정으로 실행됩니다. Airflow 웹 서버에서 DAG 오류를 방지하려면 웹 서버가 DAG 파싱 시 액세스할 수 없는 Google Cloud 리소스에 액세스하거나 고강도 컴퓨팅을 수행하지 마세요.
  • 환경을 삭제해도 고객 프로젝트에서 개발자 환경의 Cloud Storage 버킷, Logging 로그, Pub/Sub 주제 등 데이터는 삭제되지 않습니다. Google Cloud 계정에 비용이 청구되지 않도록 하려면 필요에 따라 데이터를 내보낸 후 삭제합니다.

다음 단계