Skip to main content

GitHubホストランナー向けの企業内Azureプライベートネットワーク構成のトラブルシューティング

Azure VNET で GitHub ホストされたランナーを使用するプライベート ネットワーク構成を作成するときに発生する一般的な問題を解決する方法を学びます。

この機能を使用できるユーザーについて

Enterprise owners can configure private networking for GitHub-hosted runners at the enterprise level.

企業内の GitHub でホストされるランナーのプライベート ネットワーク構成のトラブルシューティング

企業内の組織におけるネットワーク構成作成を可能にする

既定では、Enterprise 内の Organization は新しいネットワーク構成を作成できず、Enterprise レベルのネットワーク構成を継承するだけです。 Enterprise オーナーは、Enterprise 内の Organization が Enterprise から独立したネットワーク構成を作成できるようにするポリシーを設定できます。 詳しくは、「GitHubホストランナーのプライベートネットワークを企業で構成する方法」をご覧ください。

でネットワーク構成を作成する前に Azure リソースを構成する GitHub

          _
          _でネットワーク構成を追加するGitHub、Azure リソースが構成されていることを確認します。

サポートされているリージョン

GitHub Actions サービスは、Azure が提供するすべてのリージョンのサブセットをサポートします。 GitHub Actions サービスとサブネット間の通信を容易にするには、サブネットがサポートされているリージョンのいずれかに存在する必要があります。

メモ

データ所在地でGHE.comを使用する場合、サポートされているリージョンは異なります。 「GHE.com のネットワークの詳細」を参照してください。

          GitHub.comでは、次のリージョンがサポートされています。
  • AustraliaEast
  • BrazilSouth
  • CanadaCentral
  • CanadaEast
  • CentralUs
  • EastAsia
  • EastUs
  • EastUs2
  • FranceCentral
  • GermanyWestCentral
  • JapanWest
  • KoreaCentral
  • NorthCentralUs
  • NorthEurope
  • NorwayEast
  • SouthCentralUs
  • SoutheastAsia
  • SouthIndia
  • SwedenCentral
  • SwitzerlandNorth
  • UkSouth
  • UkWest
  • WestUs
  • WestUs2
  • WestUs3

Azure プライベート ネットワークは、次のリージョンの GPU ランナーをサポートしています。

  • EastUs
  • NorthCentralUs
  • SouthCentralUs
  • WestUs

Azure プライベート ネットワークは、次のリージョンで arm64 ランナーをサポートしています。

  • CentralUs
  • EastUs
  • EastUs2
  • NorthCentralUs
  • SouthCentralUs
  • WestUs
  • WestUs2
  • WestUs3

近日中に新しいリージョンのサポートを要求するプロセスを開始する予定です。 また、Azure リージョン間で仮想ネットワークを接続するのに、グローバル仮想ネットワーク ピアリングを使用します。 詳細情報については、Azure ドキュメントの「仮想ネットワーク ピアリング」を参照してください。

ランナーがインターネットに接続できませんでした

          GitHubホストランナーは、 GitHub への外部への接続およびGitHub Actions に必要な他のURLへの接続を確立できる必要があります。

GitHub Actionsランナーと通信できない場合、プールはランナーをオンラインにすることはできないため、ジョブは取得されません。 プールには次のエラー コードが表示されます。

VNetInjectionFailedToConnectToInternet

これを修正するには、「Azure リソースの構成」の手順に従って Azure リソースを構成していることを確認します。

デプロイ スコープがロックされている

Azure サブスクリプションまたはリソース グループにロックを設定すると、NIC の作成や削除を妨げる可能性があります。

NIC の作成を妨げるロックによりジョブの取得に失敗します。一方、NIC の削除を妨げるロックは、(NIC の作成を続けることによって) サブネット アドレス スペースを使い果たすか、サービスがデプロイメント例外を再試行するときに割り当てキュー (QTA) 時間が長くなります。

プールには次のエラー コードが表示されます。

RunnerDeploymentScopeLocked

これを修正するには、ロックを削除するか、使用しているサブネットをロックのないサブネットに変更します。

ポリシーによってブロックされた配置

管理グループ、サブスクリプション、リソース グループ、または個々のリソースに対してポリシーを作成できます。 最も一般的なポリシーは、リソースが特定のタグを持つか、特定の名前を持つ必要があることです。

このポリシーでは NIC の作成が禁止されます。つまり、VM をオンラインにできないので、プールはジョブを取得しません。

プールには次のエラー コードが表示されます。

RunnerDeploymentBlockedByPolicy

この問題を解決するには、ポリシーを削除するか、使用しているサブネットをポリシーのないサブネットに変更します。

サブネットが満杯

サブネットには、配布する IP アドレスの数が限られています。 各ランナーは、1 つの IP アドレスを使用します。 サービスが最大ランナー数の設定を超えてスケールアップしようとすると、デプロイ エラーが発生します。

これは、プールがランナーを追加する機能に影響します。 キューの深さが大きい場合は、キューへの割り当て (QTA) 時間が長くなる可能性があります。 ジョブは引き続き処理されますが、予想されるコンカレンシーレベルでは処理されません。

プールには次のエラー コードが表示されます。

VNetInjectionSubnetIsFull

これを修正するには、使用しているサブネットのサイズを増やすか、サブネット サイズに合わせてプールの最大ランナー数を減らします。

サブネットを削除できない

場合によっては、サービス関連付けリンク (SAL) が適用されているためにサブネットを削除できないことがあります。 詳しくは、「組織内のGitHubホストランナーのプライベート ネットワークの構成」をご覧ください。

サブネットに関連付けられているネットワーク設定リソースを確認する必要がある場合は、次の curl コマンドを実行します。 Azure Entra トークンの取得については、Azure のドキュメントを参照してください。 リソースの作成に使ったのと同じ api-version を使います。

curl --request GET \
  --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/GitHub.Network/NetworkSettings?api-version={api-version}&subnetId={subnetId}" \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer {entra_token}"

不適切な NSG またはファイアウォール規則

「Azure リソースの構成」の手順では、必要なオープニングを一覧表示します。 ただし、複数のダウンストリーム プロキシまたはファイアウォールを含む複雑な運用ネットワークである可能性があります。

ランナーがオンラインにならない場合、ジョブは処理されません。 セットアップ プロセスには、ランナー アプリケーションを設定し、準備が整ったことを示すために GitHub Actions サービスに応答し、不正使用防止ツールを取得してインストールすることが含まれる場合があります。 これらのプロセスのいずれかが失敗した場合、ランナーはジョブを選択できません。

これらの問題が発生している場合は、ホストされているランナーとのプライベート ネットワークに使用しているのと同じサブネット上に仮想マシン GitHub設定してみてください。 ただし、サービス関連付けリンク (SAL) が設定されている場合、これは不可能です。

SAL が設定されている場合は、仮想ネットワークで同様のサブネットを設定し、そのネットワークに仮想マシンを配置してみてください。 その後、セルフホステッドランナーの登録を試みてください。

Azure リソースを構成するときの HTTP 要求ペイロードエラー

コマンドを実行して Azure リソースを構成するときは、正しい API バージョンと businessId プロパティを使用していることを確認します。 別のプロパティを使用している場合、コマンドによって次のエラーが返されることがあります。

(HttpRequestPayloadAPISpecValidationFailed) HTTP request payload failed validation against API specification with one or more errors. Please see details for more information.

このエラーが発生した場合は、---debug フラグを使用してコマンドを実行すると、詳細情報を確認できます。

ネットワーク設定が間違ったレベルで構成されている

ネットワーク設定が Enterprise databaseId ではなく organization の databaseId を使って構成されている場合、エラーが発生します。 このエラー メッセージは、プライベート ネットワークが既に別の Enterprise または organization に関連付けられているため、指定されたリソース ID では確立できないことを示します。 これを解決するには、既存のネットワーク設定を削除し、Enterprise databaseId を使って再作成します。

フェールオーバー ネットワークがトラフィックを切り替えない

メモ

VNET フェールオーバーは パブリック プレビュー であり、変更される可能性があります。 プライマリ ネットワークとフェールオーバー ネットワークの切り替えは段階的なプロセスです。 移行中、ランナーは両方のネットワークで同時に走行する可能性があります。 テストに基づいて、完全な移行には約 15 分かかります。 この期間中、両方のサブネットにアクセスできることを確認します。

フェールオーバー ネットワークを有効にしてもランナー トラフィックが再ルーティングされない場合は、次の点を確認します。

  • フェールオーバー サブネットの Azure リソース (VNET/サブネット、NSG/ファイアウォール、ネットワーク設定) が正しく構成されていることを確認します。 プライマリ サブネットに使用するのと同じ "Azure リソースの構成" 手順に従います。
  • フェールオーバー ネットワークが正しいネットワーク構成に追加され、構成が適切なランナー グループに関連付けられていることを確認します。

フェールオーバー サブネットに到達できない

フェールオーバー ネットワークを有効にした後にランナーが接続できない場合は、フェールオーバー サブネット用に構成された Azure リソースに問題がある可能性があります。

GitHub によって開始されたフェールオーバー後にプライマリに切り替えることができない

  1.        **[Hosted compute networking settings]\(ホストされたコンピューティング ネットワーク**設定\) でネットワーク構成に移動します。
    
  2. ネットワーク構成の横にある編集アイコンをクリックします。 その後、[Edit configuration](構成の編集) をクリックします。
  3. プライマリ サブネットにランナー トラフィックを返すには、[ フェールオーバー VNET を無効にする] をクリックします。

フェールオーバーを無効にできない場合は、プライマリ サブネットの Azure リソースが正常でアクセス可能であることを確認します。 プライマリ サブネットの Azure リージョンで継続的な停止がないことを確認します。