プロジェクトと GKE クラスタを自分で設定する
asmcli
を使用して Cloud Service Mesh をインストールする場合は、--enable_all
フラグまたはより詳細な有効化フラグを含めると、プロジェクトと Google Cloud クラスタの GKE を自動的に構成できます。asmcli
を変更せずに自分で設定を行う場合は、このページの手順に沿って進めてください。
以前のバージョンの Cloud Service Mesh がインストールされている場合は、最新の Cloud Service Mesh バージョンに asmcli
を使用してアップグレードする前に、プロジェクトまたはクラスタを変更する必要はありません。
デフォルトでは、asmcli
は istio-ingressgateway
をインストールしません。コントロール プレーンとゲートウェイを個別にデプロイして管理することをおすすめします。Cloud Service Mesh は、ゲートウェイ デプロイの自動インジェクションをサポートしているため、Cloud Service Mesh のアップグレードは容易に行うことができます。Cloud Service Mesh をアップグレードした後、サービスと同じようにゲートウェイを再起動して、新しいコントロール プレーンの構成を取得します。詳細については、ゲートウェイのインストールとアップグレードをご覧ください。
始める前に
プロジェクトを設定する
クラスタが作成されたプロジェクトのプロジェクト ID を取得します。
gcloud
次のコマンドを実行します。
gcloud projects list
Console
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
asmcli
の実行時に--enable_all
フラグまたは--enable_gcp_iam_roles
フラグを指定すると、必要な IAM ロールが自動的に設定されます。必要な Google API を有効にします。
gcloud services enable \ --project=PROJECT_ID \ mesh.googleapis.com
このコマンドは、
mesh.googleapis.com
に加えて次の API も有効にします。API 目的 無効化が可能か meshconfig.googleapis.com
Cloud Service Mesh は、Mesh Configuration API を使用して、メッシュから Google Cloud に構成データをリレーします。また、Mesh Configuration API を有効にすると、Google Cloud コンソールの Cloud Service Mesh のページにアクセスして、Cloud Service Mesh 認証局を使用できます。 いいえ meshca.googleapis.com
マネージド Cloud Service Mesh で使用される Cloud Service Mesh 認証局に関連します。 いいえ container.googleapis.com
Google Kubernetes Engine(GKE)クラスタを作成するために必要です。 いいえ gkehub.googleapis.com
メッシュをフリートとして管理するために必要です。 いいえ monitoring.googleapis.com
メッシュ ワークロードのテレメトリーをキャプチャするために必要です。 いいえ stackdriver.googleapis.com
Service UI を使用するために必要です。 いいえ opsconfigmonitoring.googleapis.com
Google Cloud 外のクラスタで Service UI を使用するために必要です。 いいえ connectgateway.googleapis.com
マネージド Cloud Service Mesh コントロール プレーンがメッシュ ワークロードにアクセスできるようにするために必要です。 ○* trafficdirector.googleapis.com
高可用性でスケーラブルなマネージド コントロール プレーンを実現します。 ○* networkservices.googleapis.com
高可用性でスケーラブルなマネージド コントロール プレーンを実現します。 ○* networksecurity.googleapis.com
高可用性でスケーラブルなマネージド コントロール プレーンを実現します。 ○* API の有効化に数分かかることがあります。API が有効になると、次のような出力が表示されます。
Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished successfully.
asmcli
の実行時に--enable_all
フラグまたは--enable_apis
フラグを指定すると、必要な API が有効になります。
クラスタを設定する
--enable_all
フラグ、またはより詳細な有効化フラグのいずれかを指定すると、asmcli
によってクラスタが設定されます。
Google Cloud CLI のデフォルトのゾーンまたはリージョンを設定します。ここでデフォルトを設定しない場合、このページの
gcloud container clusters
コマンドに--zone
オプションまたは--region
オプションを指定してください。シングルゾーン クラスタがある場合は、デフォルト ゾーンを設定します。
gcloud config set compute/zone CLUSTER_LOCATION
リージョン クラスタがある場合は、デフォルト リージョンを設定します。
gcloud config set compute/region CLUSTER_LOCATION
Workload Identity を有効にします。
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}
Workload Identity の有効化には、最長で 10~15 分ほどかかることがあります。
プロジェクトを初期化してインストールの準備をします。次のコマンドでサービス アカウントを作成し、サイドカー プロキシなどのデータプレーン コンポーネントがプロジェクトのデータとリソースに安全にアクセスできるようにします。次のコマンドで、
FLEET_PROJECT_ID
をフリート ホスト プロジェクトに置き換えます。curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header "Content-Type: application/json" \ --data '{"workloadIdentityPools":["FLEET_PROJECT_ID.hub.id.goog","FLEET_PROJECT_ID.svc.id.goog","PROJECT_ID.svc.id.goog"]}' \ "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"
コマンドを実行すると、空の中かっこ
{}
が返されます。GKE で Cloud Monitoring と Cloud Logging を有効にします。
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --enable-stackdriver-kubernetes
これで、プロジェクトとクラスタについて、asmcli
を使用して新規インストールを行う準備が整いました。