このページでは、同じプロジェクトにあるクラスタで構成されるメッシュ用に、Cloud プロジェクトと Google Kubernetes Engine(GKE)クラスタに Anthos Service Mesh を設定する方法について説明します。Google が提供するスクリプト install_asm
を使用する場合は、--enable_all
フラグまたはより詳細な有効化フラグを指定すると、このスクリプトでプロジェクトとクラスタを構成できます。install_asm
を変更せずに自分で設定を行う場合は、このページの手順に沿って進めてください。以前のバージョンの Anthos Service Mesh がインストールされている場合は、最新の Anthos Service Mesh バージョンに install_asm
を使用してアップグレードする前に、プロジェクトまたはクラスタを変更する必要はありません。
始める前に
プロジェクトの設定
クラスタが作成されたプロジェクトのプロジェクト ID とプロジェクト番号を取得します。
gcloud
次のコマンドを実行します。
gcloud projects list
コンソール
Google Cloud コンソールの [ダッシュボード] ページに移動します。
ページの上部にあるプルダウン リストをクリックします。表示された [選択元] ウィンドウで、プロジェクトを選択します。
プロジェクト ID とプロジェクト番号が、プロジェクト ダッシュボードの [プロジェクト情報] カードに表示されます。
次の環境変数を作成します。
プロジェクト ID を使用してワークロード プールを設定します。
export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
プロジェクト番号を使用して、メッシュ ID を設定します。
export MESH_ID="proj-PROJECT_NUMBER"
必要な Identity and Access Management(IAM)のロールを設定します。プロジェクト オーナーの場合は、インストールを完了するために必要なすべての権限が付与されます。プロジェクト オーナーでない場合は、次の IAM ロールを付与する担当者が必要になります。次のコマンドの
PROJECT_ID
は、前の手順のプロジェクト ID で置き換え、GCP_EMAIL_ADDRESS
は Google Cloud へのログインに使用するアカウントに置き換えます。ROLES=( 'roles/servicemanagement.admin' \ 'roles/serviceusage.serviceUsageAdmin' \ 'roles/meshconfig.admin' \ 'roles/compute.admin' \ 'roles/container.admin' \ 'roles/resourcemanager.projectIamAdmin' \ 'roles/iam.serviceAccountAdmin' \ 'roles/iam.serviceAccountKeyAdmin' \ 'roles/gkehub.admin') for role in "${ROLES[@]}" do gcloud projects add-iam-policy-binding PROJECT_ID \ --member "user:GCP_EMAIL_ADDRESS" \ --role="$role" done
install_asm
の実行時に--enable_all
フラグまたは--enable_gcp_iam_roles
フラグを指定すると、必要な IAM ロールが自動的に設定されます。次の Google API を有効にします。
gcloud services enable \ --project=PROJECT_ID \ container.googleapis.com \ compute.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ cloudtrace.googleapis.com \ meshca.googleapis.com \ meshtelemetry.googleapis.com \ meshconfig.googleapis.com \ iamcredentials.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ cloudresourcemanager.googleapis.com \ stackdriver.googleapis.com
API の有効化に数分かかることがあります。API が有効になると、次のような出力が表示されます。
Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished successfully.
install_asm
の実行時に--enable_all
フラグまたは--enable_apis
フラグを指定すると、必要な API が自動的に有効にされます。
クラスタの設定
--enable_all
フラグ、またはより詳細な有効化フラグのいずれかを指定すると、install_asm
スクリプトによってクラスタが設定されます。
Google Cloud CLI のデフォルトのゾーンまたはリージョンを設定します。ここでデフォルトを設定しない場合、このページの
gcloud container clusters
コマンドに--zone
オプションまたは--region
オプションを指定してください。シングルゾーン クラスタがある場合は、デフォルト ゾーンを設定します。
gcloud config set compute/zone CLUSTER_LOCATION
リージョン クラスタがある場合は、デフォルト リージョンを設定します。
gcloud config set compute/region CLUSTER_LOCATION
クラスタに
mesh_id
ラベルを設定します。クラスタの既存のラベルを残す場合は、mesh_id
ラベルの追加時にそれらのラベルを含める必要があります。クラスタに既存のラベルがあるかどうかを確認するには:
gcloud container clusters describe CLUSTER_NAME \ --project PROJECT_ID
出力で
resourceLabels
フィールドを探します。ラベルは、resourceLabels
フィールドごとに別々の行に格納されます。次に例を示します。resourceLabels: csm: '' env: dev release: stable
利便性を考えて、環境変数にラベルを追加することもできます。以下の例の
YOUR_EXISTING_LABELS
は、クラスタに存在するラベルのカンマ区切りのリスト(KEY=VALUE
形式、たとえばenv=dev,release=stable
)で置き換えます。export EXISTING_LABELS="YOUR_EXISTING_LABELS"
mesh_id
ラベルを設定します。クラスタの既存のラベルを残す場合は、
mesh_id
と既存のラベルでクラスタを更新します。gcloud container clusters update CLUSTER_NAME \ --project PROJECT_ID \ --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
クラスタに既存のラベルがない場合は、
mesh_id
ラベルだけでクラスタを更新します。gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --update-labels=mesh_id=${MESH_ID}
Workload Identity を有効にします。
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}
Workload Identity の有効化には、最長で 10~15 分ほどかかることがあります。
プロジェクトを初期化してインストールの準備をします。次のコマンドでサービス アカウントを作成し、サイドカー プロキシなどのコントロール プレーン コンポーネントがプロジェクトのデータとリソースに安全にアクセスできるようにします。
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"
コマンドを実行すると、空の中かっこ
{}
が返されます。GKE で Cloud Monitoring と Cloud Logging を有効にします。
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --logging=SYSTEM,WORKLOAD \ --monitoring=SYSTEM
これで、プロジェクトと GKE クラスタについて、install_asm
を使用して新規インストールまたは Istio からの移行を行う準備が整いました。install_asm
を使用して Anthos Service Mesh をインストールする場合、スクリプトは以下を行います。
- プロジェクトとクラスタを検証します。
- プロジェクトにサービス アカウントを作成し、コントロール プレーン コンポーネントがプロジェクトのデータとリソースにアクセスできるようにします。
- デフォルト機能を有効にするために、プロジェクトとクラスタの情報を使用して必要な
IstioOperator
カスタム リソース(CR)ファイルを構成します。 istioctl install
を呼び出します。install_asm
を呼び出してオプション機能を有効にするときに、別のIstioOperator
CR ファイルを指定できます。
次のステップ
- 新規のインストールについて Anthos Service Mesh のインストールで確認する
- Istio から Anthos Service Mesh への移行について Istio からの移行で確認する