리소스 위치 제한

이 페이지에서는 Cloud Composer에서 저장한 데이터가 지정한 위치에 유지되도록 리소스 위치 제한을 구성하는 방법을 보여줍니다.

리소스 위치 제한이 지원되지 않는 리전

Cloud Composer는 바르샤바(europe-central2) 리전에서 리소스 위치 제한을 지원하지 않습니다.

위치 제한 작동 방식

Cloud Composer의 위치 제한은 Cloud Composer 환경이 생성된 프로젝트에 적용되는 조직 정책에 따라 결정됩니다. 이 정책은 프로젝트 내에서 할당되거나 조직에서 상속됩니다.

위치 제한이 사용 설정되면 정책에서 금지하는 리전에서 환경을 만들 수 없습니다. 리전이 거부 목록에 있거나 허용 목록에 없으면 이 리전에 환경을 만들 수 없습니다.

Cloud Composer는 리전 기반입니다. 환경 생성을 사용 설정하려면 정책에서 이 리전 내의 특정 영역이 아닌 전체 리전을 허용해야 합니다. 예를 들어 이 리전에 Cloud Composer 환경을 만들려면 정책에서 europe-west3 리전을 허용해야 합니다.

위치 제한은 다음에서 확인됩니다.

  • 환경 생성
  • 환경 업그레이드(작업 중에 추가 리소스가 생성되는 경우)
  • 환경 업데이트(Cloud Composer 종속 항목에 위치 제한을 적용하지 않는 이전 환경의 경우)

위에서 설명한 제한 외에도 Cloud Composer는 다음을 수행합니다.

  • 사용자가 맞춤설정한 Airflow 이미지를 리전 Artifact Registry 저장소에 저장합니다.
  • US 멀티 리전이 정책에 의해 명시적으로 금지되는 경우 Cloud Build는 사용 중지됩니다. 이 경우 사용자가 맞춤설정한 Airflow 이미지가 GKE 클러스터에 빌드됩니다.

리소스 위치 제한에 따라 비공개 IP 환경에 Python 종속 항목 설치

프로젝트의 위치 제한으로 인해 일부 도구를 사용할 수 없습니다. 특히 Python 패키지를 설치하는 데 Cloud Build를 사용할 수 없으므로 공개 인터넷에 있는 저장소에 직접 액세스할 수 없습니다.

위치 제한이 US 멀티 리전을 허용하지 않는 경우 비공개 IP Composer 환경의 Python 종속 항목을 설치하려면 다음 옵션 중 하나를 사용합니다.

  • VPC 네트워크에서 호스팅되는 비공개 PyPI 저장소를 사용합니다.
  • VPC 네트워크의 프록시 서버를 사용하여 공개 인터넷의 PyPI 저장소에 연결합니다. Cloud Storage 버킷의 /config/pip/pip.conf 파일에 프록시 주소를 지정합니다.
  • 보안 정책이 외부 IP 주소에서 VPC 네트워크에 액세스할 수 있도록 허용하는 경우 Cloud NAT를 구성할 수 있습니다.
  • Python 종속 항목을 Cloud Storage 버킷의 dags 폴더에 제공하여 로컬 라이브러리로 설치합니다. 종속 항목 트리가 클 때는 좋은 방법이 아닐 수 있습니다.

Cloud Composer 로그의 위치 제한

로그에 민감한 데이터가 포함되어 있는 경우 로그 라우터를 사용하여 Cloud Composer 로그를 리전 Cloud Storage 버킷으로 리디렉션할 수 있습니다. 이렇게 하면 로그가 Cloud Logging으로 전송되지 않습니다. 클라우드 고객 관리로부터 지원을 받으려면 Google 지원 엔지니어에게 Cloud Storage에 저장된 Cloud Composer 로그에 대한 액세스 권한을 부여해야 할 수 있습니다.

gcloud

  1. 새 Cloud Storage 버킷을 만듭니다(예: composer-logs-us-central1-example-environment).

    gsutil mb -l LOCATION gs://ENVIRONMENT_NAME
    
  2. 새 로그 싱크를 만듭니다.

    gcloud logging sinks create \
    composer-log-sink-ENVIRONMENT_NAME \
    storage.googleapis.com/BUCKET_NAME \
    --log-filter "resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"
    
  3. 이전 명령어 결과에 표시된 이 버킷의 서비스 계정에 적절한 역할을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT \
    --member="serviceAccount:serviceAccountNumber@gcp-sa-logging.iam.gserviceaccount.com" \
    --role='roles/storage.objectCreator' --condition=None
    
  4. Monitoring에서 새 환경의 로그를 제외합니다.

    gcloud logging sinks update _Default \
    --add-exclusion name=ENVIRONMENT_NAME-exclusion, \
    filter="resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"