본문 바로가기
CSP (Cloud Service Provider)/GCP

composer 업데이트 (스냅샷을 이용한 마이그레이션)

by BTC_XOXO 2023. 6. 2.

베하~

안녕하세요 3대 5000의 man, xoxo 입니다.

지난 주에 이어 이번주에는 composer 업데이트 (스냅샷을 이용한 마이그레이션)에 대해서 알아보겠습니다.


composer 환경 구성 목표


현재 환경 버전 -> 목표 환경 버전

Composer버전 1.19.2 → Composer버전 2.1.15
Airflow버전 1.10.15→ Airflow버전 2.5.1

💡 해당 방법은 Cloud Composer 1, Airflow 1 환경에서 Cloud Composer 2, Airflow 2로 DAG, 데이터, 구성을 전송하는 방법 입니다.

  • 마이그레이션 시 기존 composer 이름을 사용하지 못함

 

작업 방법


현재 1에서 돌고 있는 dags 환경 (test 환경)

1. Airflow 2 호환성 확인

gcloud composer environments run \\
    COMPOSER_1_ENV  \\
    --location=COMPOSER_1_LOCATION \\
    upgrade_check \\
    -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \\
    --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
  • COMPOSER_1_ENV를 Airflow 1.10.15 환경의 이름으로 변경
  • COMPOSER_1_LOCATION을 환경이 위치한 리전으로 변경

 

1-1. 참조: 호환성 확인 시 발생 에러

 

Legacy UI is deprecated by default
----------------------------------
Legacy UI is deprecated. FAB RBAC is enabled by default in order to increase security.

Problems:

  1.  rbac in airflow.cfg must be explicitly set empty as RBAC mechanism is enabled by default.

command terminated with exit code 1

ERROR: (gcloud.composer.environments.run) kubectl returned non-zero status code.

아래의 사진과 같이 구성을 재정의하면 해결 완료

  • AIRFLOW 구성 재정의에서 airflow.cfg 구성 값을 변경함
    • 아래와 같이 나오면 호환성 테스트 완료
    • Not found any problems. World is beautiful. You can safely update Airflow to the new version

 

2. DAG가 Airflow 2에 맞게 준비되었는지 확인

  • Airflow 1에서 지원하던 것이 2에서 지원이 안되는 코드가 있음
 

Upgrading to Airflow 2.0+ — Airflow Documentation

 

airflow.apache.org

3. 스냅샷을 찍기 위해 Cloud Composer 1 환경에서 DAG 일시중지

python3 composer_dags.py --environment cmp-002 \\
  --project PROJECT_ID \\
  --location COMPOSER_1_LOCATION \\
  --operation pause

4. Cloud Composer 1 환경의 스냅샷 저장 후 composer 2 만들기

 

1. Cloud Composer 1 환경의 버킷 URI를 가져오기

gcloud composer environments describe COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
     --format="value(config.dagGcsPrefix)"
  • COMPOSER_1_ENV를 Cloud Composer 1 환경 이름으로 바꿉니다.
  • COMPOSER_1_LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • 결과 값을 아래와 같이 변경 작업 후 복사
    • 예를 들어 gs://us-central1-example-916807e1-bucket/dags를 gs://us-central1-example-916807e1-bucket으로 변경

2. Cloud Composer 1 환경의 스냅샷을 만듭니다.

gcloud composer environments describe COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
     --format="value(config.dagGcsPrefix)"
  • COMPOSER_1_ENV를 Cloud Composer 1 환경 이름으로 바꿉니다.
  • COMPOSER_1_LOCATION을 Cloud Composer 1 환경이 있는 리전으로 바꿉니다.
  • 위에서 복사한 버킷 이름을 Cloud Composer 1 환경 버킷의 URI로 바꿉니다.

5. Cloud Composer 2 환경에 스냅샷 로드

  • 위의 그림과 같이 스냅샷 뜬 컴포저에 들어가면 스냅샷 경로가 나오는데 복사 후 아래 명령어 진행
gcloud beta composer environments snapshots load \
  COMPOSER_2_ENV \
  --location COMPOSER_2_LOCATION \
  --snapshot-path "위에서 복사한 스냅샷 경로"

6. Cloud Composer 2 환경에서 DAG 일시중지 해제

python3 composer_dags.py --environment COMPOSER_2_ENV \
  --project PROJECT_ID \
  --location COMPOSER_2_LOCATION \
  --operation unpause
  • COMPOSER_2_ENV를 Cloud Composer 2 환경 이름으로 바꿉니다.
  • PROJECT_ID를 프로젝트 ID로 바꿉니다.
  • COMPOSER_2_LOCATION을 환경이 위치한 리전으로 바꿉니다.

마이그레이션 완료 화면

7. DAG 오류 확인 및 추후 1버전 삭제

  • 충분한 시간 모니터링 후 기존 composer 1 삭제

 


다들 위의 내용을 참고하여 composer 환경을 1에서 2로 업그레이드 하는데에 도움이 되었으면 좋겠습니다~ 

 

다음주에는 GCP composer 환경을 json 파일을 생성하여 업데이트 하는 방법을 알아보도록 하겠습니다.

 

| 참조


스냅샷을 사용하여 Cloud Composer 2(Airflow 1에서)로 환경 마이그레이션  |  Google Cloud

 

스냅샷을 사용하여 Cloud Composer 2(Airflow 1에서)로 환경 마이그레이션  |  Google Cloud

Airflow Summit 2023 9월 19일부터 21일까지 Airflow Summit 2023 컨퍼런스가 열리는 동안 Airflow 커뮤니티에 참여하여 Airflow에 대해 자세히 알아보고 전문 지식을 공유해 보세요. 접수 시작 의견 보내기 스냅

cloud.google.com

'CSP (Cloud Service Provider) > GCP' 카테고리의 다른 글

Site to Site VPN (GCP)  (0) 2023.06.09
composer 업데이트 (수동 마이그레이션)  (0) 2023.06.09
Shared VPC  (0) 2023.05.29
[GCP] BeyondCorp Enterprise  (0) 2023.05.24
GCP KMS Hands-On  (0) 2023.05.21

댓글