環境作成のトラブルシューティング

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 とサービスへの接続を構成するには、次の手順を行います。

Cloud Composer 環境を共有 VPC モードで構成する場合は、こちらの共有 VPC の手順もご覧ください。

Cloud Composer 環境では、クラスタノードにサブネットを使用し、Pod と Service に IP 範囲を使用します。これらの IP 範囲と他の IP 範囲との通信を確実に行うには、次の手順でファイアウォール ルールを構成します。

また、Activity で選択した GCE Networking 構成カテゴリと Subnetwork 構成カテゴリ内のログエントリを確認して、環境の作成中に報告されたエラーがないかどうかも確認できます。

大規模なネットワークで環境を作成するときに発生する割り当ての問題

大規模なネットワークで Cloud Composer 環境を作成すると、次の割り当て制限が発生することがあります。

  • 1 つの 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」を無効にできません

詳細については、既知の問題ページと組織のポリシーの制約をご覧ください。

組織またはプロジェクト内で使用するサービスの制限

組織またはプロジェクト管理者は、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 サービス アカウントのロールがあることを確認します。

次のステップ