베하~
안녕하세요 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. 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에서 지원이 안되는 코드가 있음
- Airflow CLI changes in 2.0 (차 후에 확인해도 마이그레이션 시 에러는 나지 않아 생략 가능)
3. 스냅샷을 찍기 위해 Cloud Composer 1 환경에서 DAG 일시중지
python3 composer_dags.py --environment cmp-002 \\
--project PROJECT_ID \\
--location COMPOSER_1_LOCATION \\
--operation pause
- COMPOSER_1_ENV를 Cloud Composer 1 환경 이름으로 바꿉니다.
- PROJECT_ID를 프로젝트 ID로 바꿉니다.
- COMPOSER_1_LOCATION을 환경이 위치한 리전으로 바꿉니다.
- composer_dags.py는 아래의 링크에서 다운을 받을 수 있습니다.
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
'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 |
댓글