환경 생성 문제 해결

Cloud Composer 1 | Cloud Composer 2

이 페이지에서는 Cloud Composer 환경을 만들 때 발생할 수 있는 문제에 대한 문제 해결 정보를 제공합니다.

환경 업데이트 및 업그레이드와 관련된 문제 해결 정보는 환경 업데이트 및 업그레이드 문제 해결을 참조하세요.

Cloud Composer 환경이 생성될 때 대부분의 문제는 다음과 같은 이유로 발생합니다.

  • 서비스 계정 권한 문제

  • 잘못된 방화벽, DNS 또는 라우팅 정보

  • 네트워크 관련 문제. 예를 들어 VPC 구성이 잘못되었거나, IP 주소가 충돌하거나, 네트워크 IP 범위가 너무 좁습니다.

  • 할당량 관련 문제

  • 호환되지 않는 조직 정책

환경 생성 권한 부족

계정에 권한이 부족하여 Cloud Composer가 환경을 만들 수 없으면 다음 오류 메시지가 출력됩니다.

ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: The caller
does not have permission

또는

ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: User not
authorized to act as service account <service-account-name>.
The user must be granted iam.serviceAccounts.actAs permission, included in
Owner, Editor, Service Account User role. See https://cloud.google.com/iam/docs
/understanding-service-accounts for additional details.

해결책: 액세스 제어에 설명된 대로 사용자 계정과 사용자 환경의 서비스 계정 모두에 역할을 할당합니다.

  • Cloud Composer 2의 경우 Cloud Composer 서비스 에이전트 서비스 계정(service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com)에 Cloud Composer v2 API 서비스 에이전트 확장 역할이 할당되었는지 확인합니다.

  • Google API 서비스 에이전트(PROJECT_NUMBER@cloudservices.gserviceaccount.com)에 편집자 역할이 할당되었는지 확인합니다.

  • 공유 VPC 구성의 경우 공유 VPC 안내 구성을 참조하세요.

환경의 서비스 계정에 권한이 충분하지 않음

Cloud Composer 환경을 만들 때 환경의 GKE 클러스터 노드를 실행하는 서비스 계정을 지정합니다. 이 서비스 계정에 요청된 작업에 대해 충분한 권한이 없으면 Cloud Composer가 다음 오류를 출력합니다.

Errors in: [Web server]; Error messages:
  Creation of airflow web server version failed. This may be an intermittent
  issue of the App Engine service. You may retry the operation later.
{"ResourceType":"appengine.v1.version","ResourceErrorCode":"504","ResourceError
Message":"Your deployment has failed to become healthy in the allotted time
and therefore was rolled back. If you believe this was an error, try adjusting
the 'app_start_timeout_sec' setting in the 'readiness_check' section."}

해결책: 액세스 제어에 설명된 대로 사용자 계정과 사용자 환경의 서비스 계정 모두에 역할을 할당합니다.

서비스 계정에 IAM 역할 누락에 대한 경고

환경 생성에 실패하면 Cloud Composer는 오류가 발생한 후 경고 메시지(The issue may be caused by missing IAM roles in the following Service Accounts ...)를 생성합니다.

이 경고 메시지는 가능한 오류 원인을 강조표시합니다. Cloud Composer는 프로젝트의 서비스 계정에 필요한 역할을 확인하고 이러한 역할이 없으면 이 경고 메시지를 생성합니다.

해결 방법: 경고 메시지에 언급된 서비스 계정에 필요한 역할이 있는지 확인합니다. Cloud Composer의 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.

경우에 따라 이 경고를 무시할 수 있습니다. Cloud Composer는 역할에 할당된 개별 권한을 확인하지 않습니다. 예를 들어 커스텀 IAM 역할을 사용하는 경우 경고 메시지에 언급된 서비스 계정에 이미 모든 필수 권한이 있을 수 있습니다. 이 경우에는 이 경고를 무시해도 됩니다.

환경에 선택된 VPC 네트워크가 존재하지 않음

환경을 만들 때 Cloud Composer 환경에 대해 VPC 네트워크 및 서브넷을 지정할 수 있습니다. VPC 네트워크를 지정하지 않으면 Cloud Composer 서비스가 해당 환경의 리전 및 영역으로 default VPC 및 default 서브넷을 선택합니다.

지정된 VPC 네트워크 및 서브넷이 존재하지 않으면 Cloud Composer가 다음 오류를 출력합니다.

Errors in: [GKE cluster]; Error messages:
        {"ResourceType":"gcp-types/container-v1:projects.locations.clusters","R
        esourceErrorCode":"400","ResourceErrorMessage":{"code":400,"message":"P
        roject \"<your composer project>\" has no network named \"non-existing-
        vpc\".","status":"INVALID_ARGUMENT","statusMessage":"Bad
        Request","requestPath":"https://container.googleapis.com/
        v1/projects/<your composer
        project>/locations/<zone>/clusters","httpMethod":"POST"}}

솔루션:

  • Cloud Composer 2에서는 VPC 네트워크 대신 Private Service Connect를 사용하는 환경을 만들 수 있습니다.
  • 환경을 만들기 전 새 환경의 VPC 네트워크 및 서브넷이 존재하는지 확인합니다.

잘못된 네트워크 구성

Cloud Composer 환경을 만들려면 적절한 네트워크 또는 DNS 구성이 필요합니다. 다음 안내에 따라 Google API 및 서비스에 대한 연결을 구성합니다.

공유 VPC 모드로 Cloud Composer 환경을 구성할 경우 공유 VPC 안내도 따르세요.

Cloud Composer 환경은 클러스터 노드에 서브넷을 사용하고 포드 및 서비스에 IP 범위를 사용합니다. 이러한 IP 범위 및 다른 IP 범위와의 통신을 보장하려면 다음 안내에 따라 방화벽 규칙을 구성합니다.

또한 활동에서 선택한 GCE NetworkingSubnetwork 구성 카테고리 내의 로그 항목에서 환경을 만드는 동안 오류가 보고되었는지 확인할 수 있습니다.

대규모 네트워크에서 환경을 만들 때 할당량 문제 발생

대규모 네트워크에서 Cloud Composer 환경을 만들 때 다음 할당량 제한이 발생할 수 있습니다.

  • 단일 VPC 네트워크의 최대 VPC 피어링 수에 도달했습니다.
  • 기본 및 보조 서브넷 IP 범위의 최대 수에 도달했습니다.
  • 내부 TCP/UDP 부하 분산에 대한 피어링 그룹에서 최대 전달 규칙 수에 도달했습니다.

솔루션:

호환되지 않는 조직 정책

Cloud Composer 환경을 성공적으로 만들 수 있도록 다음 정책을 올바르게 구성해야 합니다.

조직 정책 Cloud Composer 1 Cloud Composer 2
compute.disableSerialPortLogging 1.13.0 이전 버전에서 사용 중지됨, 그 외의 경우 모든 값 사용 중지해야 함
compute.requireOsLogin 사용 중지해야 함 모든 값이 허용됨
compute.vmCanIpForward VPC 기반 모드(별칭 IP 사용)가 구성되지 않은 경우 허용되어야 함(Cloud Composer 소유 GKE 클러스터에 필요) 모든 값이 허용됨
compute.vmExternalIpAccess 공개 IP 환경에서 허용되어야 함 공개 IP 환경에서 허용되어야 함
compute.restrictVpcPeering 적용할 수 없음 적용할 수 없음
compute.disablePrivateServiceConnectCreationForConsumers 모든 값이 허용됨 Private Service Connect를 사용하는 경우 'SERVICE_PRODUCERS'를 허용 안 할 수 없습니다.
compute.restrictPrivateServiceConnectProducer 모든 값이 허용됨 활성화된 경우 google.com 조직을 허용 목록에 추가

자세한 내용은 알려진 문제 페이지 및 조직 정책 제약조건을 참조하세요.

조직 또는 프로젝트 내에서 사용되는 서비스 제한

조직 또는 프로젝트 관리자는 gcp.restrictServiceUsage 조직 정책 제약조건을 사용하여 프로젝트에서 사용할 수 있는 Google 서비스를 제한할 수 있습니다.

이 조직 정책을 사용하는 경우 Cloud Composer에 필요한 모든 서비스를 허용하는 것이 중요합니다.

400 오류 메시지: Airflow 웹 서버를 배포할 수 없습니다.

이 오류는 겹치는 IP 범위로 인해 비공개 IP 환경의 GKE 클러스터를 만들지 못해서 발생할 수 있습니다.

솔루션: 로그에서 해당 환경의 클러스터에 있는 오류를 찾고 GKE 오류 메시지를 기준으로 문제를 해결합니다.

Cloud Build가 환경 이미지를 빌드하지 못함

Cloud Build 서비스 계정(PROJECT_NUMBER@cloudbuild.gserviceaccount.com)에 프로젝트의 Cloud Build 서비스 계정(roles/cloudbuild.builds.builder) 역할이 없는 경우 권한 관련 오류로 인해 환경을 만들거나 업데이트하지 못할 수 있습니다.

예를 들어 Cloud Build 로그에 denied: Permission "artifactregistry.repositories.uploadArtifacts" denied 메시지가 표시되고 그 뒤에 ERROR: failed to push because we ran out of retries가 표시될 수 있습니다.

이 문제를 해결하려면 Cloud Build 서비스 계정에 Cloud Build 서비스 계정 역할이 있는지 확인합니다.

다음 단계