マネージド Anthos Service Mesh では、リリースが 1.22.1-gke.100 以降の GKE クラスタで、Regular チャンネルと Stable チャンネルの VPC Service Controls(VPC-SC)のプレビューがサポートされています。Rapid チャンネルの VPC-SC については、マネージド Anthos Service Mesh GA の VPC Service Controls をご覧ください。
始める前に
VPC-SC の組織ポリシーとサービス境界は、組織レベルで構成されます。作業を行うユーザーに VPC-SC の管理に必要なロールが付与されていることを確認してください。
組織ポリシーを構成する
Stable チャンネルまたは Regular チャンネルで新しいマネージド Anthos Service Mesh コントロール プレーンをプロビジョニングする場合は、以下のプレビューの手順を行います。それ以外の場合は、こちらの一般提供用の手順に従ってください。
組織管理者は、このセクションの説明に従って組織のポリシーを構成する必要があります。そうしないと、VPC-SC を適用しないコントロール プレーンを誤ってプロビジョニングするおそれがあります。組織または個々のプロジェクトの組織のポリシーを編集し、コンソールまたは以下の gcloud コマンドを使用して「ASM マネージド コントロール プレーンで許可される VPC-SC モード」の制約を「COMPATIBLE」に設定します。
gcloud resource-manager org-policies allow \ meshconfig.allowedVpcscModes COMPATIBLE \ --project=PROJECT_ID
ここで
- PROJECT_ID は、更新するプロジェクトの ID です。
または
gcloud resource-manager org-policies allow \ meshconfig.allowedVpcscModes COMPATIBLE \ --organization=ORGANIZATION_ID
ここで
- ORGANIZATION_ID は、更新する組織の ID です。
VPC-SC サービス境界を設定する
以下の手順に沿ってサービス境界を作成または更新します。
サービス境界にクラスタ プロジェクトとフリート プロジェクトを追加します。サービス メッシュを複数の VPC-SC 境界に分散させることはできません。
制限付きサービスをサービス境界に追加します。
サービス境界の許可されたサービスのリストと制限付きサービスのリストに特定のサービスを追加する必要があります。そうすることで、Anthos Service Mesh クラスタがそれらのサービスにアクセスできます。これらのサービスへのアクセスは、クラスタの Virtual Private Cloud(VPC)ネットワーク内でも制限されます。
これらのサービスを追加しないと、Anthos Service Mesh でエラーが発生するか、Anthos Service Mesh が適切に機能しない場合があります。たとえば、Mesh Configuration API をサービス境界に追加しておかないと、Anthos Service Mesh でエラーが発生し、ワークロードは Envoy の構成をマネージド コントロール プレーンから受信できません。
Console
- サービス境界の更新の手順に沿って境界を編集します。
- [VPC サービス境界の編集] ページをクリックします。
- [制限付きサービス] の [保護するサービス] で、[サービスを追加] をクリックします。
- [制限するサービスの指定] ダイアログで [サービスをフィルタ] をクリックし、「Mesh Configuration API」と入力します。
- サービスのチェックボックスをオンにします。
- [Mesh Configuration API を追加] をクリックします。
- 手順 c~f を繰り返して、以下を追加します。
- Cloud Service Mesh Certificate Authority API
- GKE Hub API
- Cloud IAM API
- Cloud Monitoring API
- Cloud Trace API
- Cloud Monitoring API
- Google Cloud Resource Manager API
- Cloud Run API
- Google Compute Engine API
- Google Container Registry API
- Artifact Registry API
- Google Cloud Storage API
- [保存] をクリックします。
gcloud
制限付きサービスのリストを更新するには、
update
コマンドを使用して、追加するサービスをカンマ区切りリストとして指定します。gcloud access-context-manager perimeters update PERIMETER_NAME \ --add-restricted-services=meshconfig.googleapis.com,meshca.googleapis.com,gkehub.googleapis.com,iam.googleapis.com,monitoring.googleapis.com,cloudtrace.googleapis.com,monitoring.googleapis.com,cloudresourcemanager.googleapis.com,run.googleapis.com,compute.googleapis.com,containerregistry.googleapis.com,artifactregistry.googleapis.com,storage.googleapis.com \ --policy=POLICY_NAME
ここで
PERIMETER_NAME は、更新するサービス境界の名前です。
POLICY_NAME は組織のアクセス ポリシーの名前です。例:
330193482019
[VPC のアクセス可能なサービス] をクリックして「すべての制限付きサービス」に設定し、上記の手順で制限したサービスに VPC-SC 境界内から引き続きアクセスできるようにします。
Anthos Service Mesh を境界ネットワークからインストールしない限り、
asmcli
コマンドを実行する ID にサービス境界へのアクセスを許可する上り(内向き)ルールを追加します。詳細については、サービス境界の更新をご覧ください。
VPC-SC 境界にマネージド Anthos Service Mesh をインストールする
このセクションでは、組織の管理者権限は必要ありませんが、VPC-SC ポリシーを遵守する必要があります。インストール中に追加のフラグ --use_vpcsc
を使用する必要があります。そうしないと、VPC Security Controls はコントロール プレーンに完全には適用されません。meshconfig.allowedVpcscModes
ポリシーを推奨どおりに構成している場合、--use-vpcsc
フラグを指定せずにインストールしようとすると失敗します。
マネージド Anthos Service Mesh を構成するの手順に沿って操作します。続いて、コントロール プレーンが正常にプロビジョニングされていることを確認し、VPC-SC 関連のエラーがないことを確かめます。
トラブルシューティング
最新の GKE 1.22 イメージでクラスタを作成できない
VPC-SC の制限された環境で最新の 1.22 イメージを使用してクラスタを作成できないという既知の問題があります。この問題を回避するには、次のように、まずデフォルトの GKE チャンネル イメージでこのクラスタを作成してから、イメージをアップグレードします。
gcloud container clusters create CLUSTER \ --region REGION \ --release-channel=rapid \ --workload-pool=PROJECT_ID.svc.id.goog \ --project PROJECT_ID
gcloud container clusters upgrade CLUSTER \ --region REGION \ --master --cluster-version 1.22 \ --project PROJECT_ID
コンテナがコンテナ イメージをダウンロードできない
これは、イメージがサービス境界の外側にある場合に発生することがあります。ダウンロードするイメージを境界内にあるバケットに移動するか、境界を更新して下り(外向き)ルールを追加します。通常、下り(外向き)ルールでは、選択した ID に Container Registry API、Artifact Registry API、Cloud Storage API へのアクセスを許可できます。
ControlPlaneRevision
CRD のステータス フィールドに VPC-SC エラーが表示される
これは、インストール時に「--use_vpcsc」フラグを指定しなかった場合に発生することがあります。その場合は再実行して問題ありません。
それ以外の場合は、次のコマンドを実行してエラーの詳細情報を取得します。
gcloud logging read --project=PROJECT_ID \ 'protoPayload.metadata.@type=type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata'
ここで
- PROJECT_ID は、エラーが発生したプロジェクトのプロジェクト ID です。