환경 업그레이드

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

이 페이지에서는 사용자 환경을 새로운 Airflow 버전으로 업그레이드하는 방법을 설명합니다.

업그레이드 작업 설명

Cloud Composer 3에서는 사용자 환경의 Cloud Composer 버전을 관리하지 않습니다.

  • Cloud Composer가 사용자 환경의 인프라 구성요소를 자동으로 업그레이드합니다. 이러한 구성요소는 Cloud Composer 기능과 관련이 있으며 Airflow의 작동 방법 또는 Airflow DAG 실행 방법을 변경하지 않습니다.
  • Cloud Composer는 Airflow 버전과 빌드, Airflow 구성요소 또는 Airflow 워크로드와 밀접하게 관련된 구성요소를 자동으로 업그레이드하지 않습니다. 이것들은 인프라 구성요소가 자동으로 업그레이드될 때 변경되지 않습니다.
  • 새로운 Airflow 버전 또는 빌드수동으로 업그레이드할 수 있습니다.

예를 들어 업그레이드를 수행하지 않고 여러 개월 동안 동일한 Airflow 버전 및 빌드를 사용할 수 있고, 사용자 환경에 최신 Cloud Composer 업데이트, 수정 사항, 환경 인프라 구성요소의 개선 사항을 적용할 수 있습니다. 나중에 새로운 Airflow 버전 또는 빌드로 이동하도록 결정했을 때 사용자 환경에서 Airflow 버전을 업그레이드합니다.

Airflow 버전 업그레이드 정보

사용자 환경에서 Airflow 버전 또는 빌드 변경은 다음과 같은 방법으로 수행됩니다.

  • 사용자가 환경의 Airflow 버전(및 빌드)을 제어합니다. 사용자 환경을 다른 Airflow 버전으로 전환하도록 선택했을 때 Airflow 버전 업그레이드 작업을 수행할 수 있습니다. 예를 들어 현재 Airflow 버전 및 빌드가 더 이상 지원되지 않는 경우에 이렇게 할 수 있습니다.

  • Cloud Composer는 지정된 Airflow 버전 및 빌드를 사용하여 사용자 환경의 Airflow 구성요소를 다시 배포합니다.

  • Cloud Composer는 업그레이드 전에 환경에 커스텀 PyPI 패키지 또는 Airflow 구성 옵션 재정의와 같은 Airflow 구성이 있었던 경우 Airflow 구성 변경사항을 적용합니다.

  • Cloud Composer는 새 Cloud SQL 데이터베이스를 가리키도록 Airflow airflow_db 연결을 업데이트합니다.

Airflow 버전을 변경해도 환경 버킷의 URL 또는 Airflow 웹 서버와 같은 사용자 환경의 리소스에 연결하는 방법은 변경되지 않습니다.

자동 인프라 업그레이드 작업 정보

Cloud Composer는 자동 인프라 업그레이드 작업을 주기적으로 실행합니다.

  • 자동 인프라 업그레이드 작업은 환경에 지정된 유지보수 기간 중에 주기적으로 실행됩니다.

  • Cloud Composer 3에서는 자동 인프라 업그레이드를 사용 중지할 수 없습니다. 해당 환경에 대해 커스텀 유지보수 기간을 지정하여 자동 업그레이드가 실행될 수 있는 기간을 제어할 수 있습니다.

  • 이 작업은 다른 장기 실행 작업과 마찬가지로 Google Cloud 콘솔 및 환경에 표시됩니다. 작업이 실행 중이면 환경 수준에서 다른 작업을 시작할 수 없지만 Airflow DAG는 계속 실행할 수 있습니다.

  • 경우에 따라 자동 인프라 업그레이드로 인해 Airflow 구성요소가 다시 시작될 수 있습니다. 이러한 재시작 중에는 24시간의 유예 기간을 두고 Airflow 작업자가 정상적으로 종료됩니다. 완료하는 데 24시간 이상 걸리는 작업이 있는 경우에는 지연 가능한 연산자를 사용하는 것이 좋습니다. 업그레이드로 인해 환경 모니터링과 같은 환경의 인프라 구성요소를 단기간 동안 사용할 수 없게 될 수도 있습니다.

업그레이드 작업의 제한사항

업그레이드 작업에는 다음과 같은 제한사항이 있습니다.

  • 이전 버전 또는 Airflow 빌드로 다운그레이드할 수는 없습니다.

  • Airflow 데이터베이스에 16GB가 넘는 데이터가 포함된 경우 환경을 업그레이드할 수 없습니다. Airflow 데이터베이스 크기가 16GB를 초과하면 업그레이드 중 경고가 표시됩니다. 이 경우 데이터베이스 유지보수를 수행하여 데이터베이스 크기를 줄입니다.

  • XCom 메커니즘을 사용하여 파일을 전송하는 경우 Airflow 가이드라인에 따라 사용해야 합니다. XCom을 사용하여 큰 파일이나 다수의 파일을 전송하면 Airflow 데이터베이스 성능이 영향을 받고 스냅샷을 로드하거나 환경을 업그레이드할 때 오류가 발생할 수 있습니다. 대용량 데이터를 전송하려면 Cloud Storage와 같은 대안을 사용하는 것이 좋습니다.

시작하기 전에

  • 필요한 경우 환경을 다시 만들 수 있도록 환경의 새 스냅샷을 만드는 것이 좋습니다.

  • 계정에 환경 업그레이드 작업을 트리거할 수 있는 역할이 있어야 합니다. 또한 해당 환경의 서비스 계정에 업그레이드 작업을 수행하는 데 충분한 권한이 있는 역할이 있어야 합니다. 자세한 내용은 액세스 제어를 참조하세요.

환경이 최신 상태인지 확인

사용자 환경에서 Airflow 빌드의 지원 종료 날짜가 다가오면 Cloud Composer에 경고가 표시됩니다. 이러한 경고에 따라 환경을 항상 지원되는 상태로 유지할 수 있습니다.

환경 세부정보 페이지에 지원 중단 메시지가 표시됩니다.
그림 1. 환경 세부정보 페이지에 지원 중단 메시지가 표시됩니다.

Cloud Composer는 사용자 환경의 기초가 되는 Airflow 버전 및 빌드를 추적합니다. 지원 종료 날짜가 다가오면 환경 목록 및 환경 세부정보 페이지에 경고가 표시될 수 있습니다.

사용자 환경이 최신 상태인지 확인하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경 목록에서 환경 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.

  3. 환경 구성 탭으로 이동합니다.

  4. 이미지 버전 필드에 다음 메시지 중 하나가 표시됩니다.

    • 사용 가능한 최신 버전. 환경 이미지가 완전히 지원됩니다.

    • 새 버전 사용 가능. 해당 환경 이미지가 완전히 지원되며, 이후 버전으로 업그레이드할 수 있습니다.

    • 이 버전의 지원이 ...에 만료됨 환경 이미지의 지원 기간이 곧 만료됩니다.

    • 이 버전은 ...부터 지원되지 않음 환경의 전체 지원 기간이 지났습니다.

gcloud

이 기능은 Google Cloud CLI에서 제공되지 않습니다. 대신 사용 가능한 업그레이드 보기를 통해 사용 가능한 새 버전을 확인할 수 있습니다.

API

이 기능은 API에서 제공되지 않습니다. 대신 사용 가능한 업그레이드 보기를 통해 사용 가능한 새 버전을 확인할 수 있습니다.

사용 가능한 업그레이드 보기

업그레이드할 수 있는 Cloud Composer 버전을 보려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경 목록에서 환경 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.

  3. 환경 구성 탭으로 이동하고 이미지 버전 업그레이드를 클릭합니다.

  4. 사용 가능한 버전 목록을 보려면 Cloud Composer 이미지 버전 드롭다운 메뉴를 클릭합니다.

gcloud

gcloud composer environments list-upgrades \
  ENVIRONMENT_NAME \
  --location LOCATION

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION: 환경이 위치한 리전

예를 들면 다음과 같습니다.

gcloud composer environments list-upgrades example-environment \
  --location us-central1

API

위치에 사용 가능한 버전을 볼 수 있습니다. 이렇게 하려면 imageVersions.list API 요청을 생성합니다.

예를 들면 다음과 같습니다.

// GET https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/imageVersions

업그레이드 전 PyPI 패키지 충돌 확인

환경에 설치된 PyPI 패키지가 새 Airflow 버전 또는 빌드로 사전 설치된 패키지와 충돌하는지 확인할 수 있습니다.

검사가 성공하면 현재 버전과 지정된 버전 사이에 PyPI 패키지 종속 항목 충돌이 없는 것입니다. 하지만 다른 이유로 인해 업그레이드 작업이 실패할 수도 있습니다.

콘솔

사용자 환경의 업그레이드 확인을 실행하려면 다음을 수행하세요.

  1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경 목록에서 환경 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.

  3. 환경 구성 탭으로 이동하고 이미지 버전 항목을 찾아서 업그레이드를 클릭합니다.

  4. 환경 버전 업그레이드 대화상자의 새 버전 드롭다운 목록에서 업그레이드하려는 Airflow 버전 또는 빌드를 선택합니다.

  5. PyPI 패키지 호환성 섹션에서 충돌 확인을 클릭합니다.

  6. 검사가 완료될 때까지 기다립니다. PyPI 패키지 종속 항목 충돌이 있으면 표시된 오류 메시지에 충돌하는 패키지 및 패키지 버전에 대한 세부정보가 포함됩니다.

gcloud

환경에 대한 업그레이드 확인을 실행하려면 업그레이드하려는 Airflow 버전 또는 빌드로 environments check-upgrade 명령어를 실행합니다.

gcloud composer environments check-upgrade \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --airflow-version VERSION

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION을 환경이 있는 리전으로 바꿉니다.
  • VERSION을 업그레이드할 새로운 Airflow 버전 및 빌드(airflow-x.y.z-build.t 형식)로 바꿉니다. 모든 버전 별칭을 사용할 수도 있습니다.

예를 들면 다음과 같습니다.

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --airflow-version airflow-2.9.3-build.7

출력 예시:

Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-3-airflow-2.9.3-build.7. Operation [projects/example-project/locations/
us-central1/operations/04d0e8b2-...]...done.
...

Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1.CheckUpgradeResponse
buildLogUri: https://console.cloud.google.com/cloud-build/builds/79738aa7-...
containsPypiModulesConflict: CONFLICT
pypiConflictBuildLogExtract: |-
The Cloud Build image build failed: Build failed; check build logs for
details. Full log can be found at https://console.cloud.google.com/
cloud-build/builds/79738aa7-...
Error details: tensorboard 2.2.2 has requirement
setuptools>=41.0.0, but you have setuptools 40.3.0.

또는 업그레이드 검사를 비동기적으로 실행할 수 있습니다. --async 인수를 사용하여 비동기 호출을 수행하고 gcloud composer operations describe 명령어로 결과를 확인합니다.

API

environments.checkUpgrade API 요청을 생성합니다.

imageVersion 필드에 이미지 버전을 지정합니다.

{
  "imageVersion": "VERSION"
}

VERSIONcomposer-3-airflow-x.y.z-build.t 형식의 업그레이드할 새 버전으로 바꿉니다.

환경 업그레이드

환경을 새로운 Airflow 버전 또는 빌드로 업그레이드하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경 목록에서 환경 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.

  3. 환경 구성 탭으로 이동합니다.

  4. 이미지 버전 항목을 찾아 업그레이드를 클릭합니다.

  5. 이미지 버전 드롭다운 메뉴에서 업그레이드하려는 대상 Airflow 버전 또는 빌드를 선택합니다.

  6. 업그레이드를 클릭합니다.

gcloud

gcloud composer environments update \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --airflow-version VERSION

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION을 환경이 있는 리전으로 바꿉니다.
  • VERSION을 업그레이드할 새로운 Airflow 버전 및 빌드(airflow-x.y.z-build.t 형식)로 바꿉니다. 모든 버전 별칭을 사용할 수도 있습니다.

예를 들면 다음과 같습니다.

gcloud composer environments update
  example-environment \
  --location us-central1 \
  --airflow-version airflow-2.9.3-build.7

API

  1. environments.patch API 요청을 생성합니다.

  2. 이 요청의 작성 방법:

    1. updateMask 매개변수에서 config.softwareConfig.imageVersion 마스크를 지정합니다.

    2. 요청 본문의 imageVersion 필드에서 업그레이드하려는 새 버전을 지정합니다.

예를 들면 다음과 같습니다.

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.imageVersion

  {
    "config": {
      "softwareConfig": {
        "imageVersion": "composer-3-airflow-2.9.3-build.7"
      }
    }
  }

Terraform

config.software_config 블록의 image_version 필드는 사용자 환경의 Airflow 버전 및 빌드를 제어합니다. 이 필드에서 새 Airflow 버전 및 빌드를 지정합니다.

  resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "VERSION"
    }
  }
}

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION을 환경이 있는 리전으로 바꿉니다. 업그레이드하려는 새로운 Airflow 버전 및 빌드입니다(airflow-x.y.z-build.t 형식). 모든 버전 별칭을 사용할 수도 있습니다.

예를 들면 다음과 같습니다.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "airflow-2.9.3-build.7"
    }
  }
}

다음 단계