このページでは、同じプロジェクトに存在するクラスタで構成されるメッシュの Cloud プロジェクトと Google Kubernetes Engine(GKE)クラスタにおける、Anthos Service Mesh のインストール要件とセットアップについて説明します。Google が提供するスクリプト install_asm
を使用する場合は、--enable_all
フラグまたはより詳細な有効化フラグを指定した場合に、このスクリプトによってプロジェクトとクラスタを構成できます。install_asm
を変更せずにご自分でセットアップする場合は、このページの手順に沿って進めてください。以前のバージョンの Anthos Service Mesh がすでにインストールされている場合は、最新の Anthos Service Mesh バージョンに install_asm
を使用してアップグレードする前に、プロジェクトまたはクラスタを変更する必要はありません。
始める前に
このガイドでは、次のものが用意されていることを前提としています。
- Cloud プロジェクト。
- Cloud 請求先アカウント。
- 必要なツールがインストールされている。
- 次のセクションで説明する要件を満たす GKE クラスタ。
要件
GKE クラスタは次の要件を満たす必要があります。
4 つ以上の vCPU を備えたマシンタイプ(
e2-standard-4
など)。クラスタのマシンタイプに 4 つ以上の vCPU がない場合は、異なるマシンタイプへのワークロードの移行の説明に従ってマシンタイプを変更します。ノードの最小数は、マシンタイプによって異なります。Anthos Service Mesh には、8 つ以上の vCPU が必要です。4 つの vCPU を持つマシンタイプの場合、クラスタには少なくとも 2 つのノードが必要です。8 つの vCPU を持つマシンタイプの場合、クラスタに必要なノードは 1 つだけです。ノードを追加する必要がある場合は、クラスタのサイズ変更をご覧ください。
Anthos Service Mesh をインストールする前にクラスタを作成するには、Workload Identity を有効にします。Workload Identity は、Google API を呼び出すためのおすすめの方法です。Workload Identity を有効にすると、Workload Identity の制限事項で説明されているように、ワークロードから Google API への呼び出し方法が変わります。
クラスタをリリース チャンネルに登録します。この操作は省略できますが、行うことをおすすめします。Regular リリース チャンネルに登録することをおすすめします。他のチャネルは Anthos Service Mesh 1.9.2 でサポートされていない GKE バージョンをベースにしていることがあります。詳細については、サポートされている環境をご覧ください。静的 GKE バージョンがある場合は、既存のクラスタをリリース チャンネルに登録するの手順に従ってください。
サービス メッシュに含めるには、サービスポートに名前を付ける必要があります。名前には、
name: protocol[-suffix]
の構文でポートのプロトコルを含める必要があります。角かっこは、ダッシュで始まるオプションの接尾辞です。詳細については、サービスポートの命名をご覧ください。限定公開クラスタに Anthos Service Mesh をインストールする場合は、ファイアウォールでポート 15017 を開き、自動サイドカー インジェクションで使用される Webhook が適切に機能する必要があります。詳細については、限定公開クラスタのポートを開くをご覧ください。
組織にサービス境界を作成した場合は、Mesh CA サービスを境界に追加する必要があります。詳細については、サービス境界へのメッシュ CA の追加をご覧ください。
1 つの Google Cloud プロジェクトに関連付けることができるメッシュは 1 つのみです。
install_asm
を実行すると、クラスタが必要とされる最小限のマシンタイプとノード数を満たしていることが確認されます。
プロジェクトの設定
クラスタが作成されたプロジェクトのプロジェクト ID とプロジェクト番号を取得します。
gcloud
次のコマンドを実行します。
gcloud projects list
Console
Cloud Console で [ダッシュボード] ページに移動します。
ページの上部にあるプルダウン リストをクリックします。表示された [選択元] ウィンドウで、プロジェクトを選択します。
プロジェクト 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
スクリプトによってクラスタが設定されます。
gcloud
コマンドライン ツールのデフォルトのゾーンまたはリージョンを設定します。ここでデフォルトを設定しない場合、このページの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 分ほどかかることがあります。
GKE で Cloud Monitoring と Cloud Logging を有効にします。
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --enable-stackdriver-kubernetes
次のステップ
これで、プロジェクトと GKE クラスタについて、新規インストールまたは Istio からの移行の準備が完了しました。install_asm
を使用して Anthos Service Mesh をインストールする場合は、このスクリプトは istioctl install
を呼び出す前にプロジェクトとクラスタを検証し、インストールの失敗を回避します。
始める前に、次のことを行います。
- 認証局を選択する。
IstioOperator
構成ファイルを準備する。- スクリプトのオプションとフラグを確認する。
- スクリプトをダウンロードする。
- 新規のインストールについて、Anthos Service Mesh のインストールで確認する。
- Istio から Anthos Service Mesh への移行について、Istio からの移行で確認する。