プロジェクトと GKE クラスタを自分で設定する
asmcli
を使用して Anthos Service Mesh をインストールする場合は、--enable_all
フラグまたはより詳細な有効化フラグを含めると、プロジェクトと Google Cloud クラスタの GKE を構成できます。asmcli
を変更せずに自分で設定を行う場合は、このページの手順に沿って進めてください。
以前のバージョンの Anthos Service Mesh がインストールされている場合は、最新の Anthos Service Mesh バージョンに asmcli
を使用してアップグレードする前に、プロジェクトまたはクラスタを変更する必要はありません。
デフォルトでは、asmcli
は istio-ingressgateway
をインストールしません。コントロール プレーンとゲートウェイを個別にデプロイして管理することをおすすめします。Anthos Service Mesh は、ゲートウェイ デプロイの自動インジェクションをサポートしているため、Anthos Service Mesh のアップグレードは容易に行うことができます。Anthos Service Mesh をアップグレードした後、サービスと同じようにゲートウェイを再起動して、新しいコントロール プレーンの構成を取得します。詳細については、ゲートウェイのインストールとアップグレードをご覧ください。
始める前に
プロジェクトを設定する
クラスタが作成されたプロジェクトのプロジェクト 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
asmcli
の実行時に--enable_all
フラグまたは--enable_gcp_iam_roles
フラグを指定すると、必要な IAM ロールが自動的に設定されます。必要な Google API を有効にします。
gcloud services enable \ --project=PROJECT_ID \ mesh.googleapis.com
このコマンドは、
mesh.googleapis.com
に加えて次の API も有効にします。meshconfig.googleapis.com
meshca.googleapis.com
container.googleapis.com
gkehub.googleapis.com
monitoring.googleapis.com
stackdriver.googleapis.com
opsconfigmonitoring.googleapis.com
iam.googleapis.com
iamcredentials.googleapis.com
bigquery.googleapis.com
bigquerystorage.googleapis.com
compute.googleapis.com
oslogin.googleapis.com
containerregistry.googleapis.com
pubsub.googleapis.com
storage-api.googleapis.com
gkeconnect.googleapis.com
multiclustermetering.googleapis.com
logging.googleapis.com
connectgateway.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
クラスタに
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 分ほどかかることがあります。
プロジェクトを初期化してインストールの準備をします。次のコマンドでサービス アカウントを作成し、サイドカー プロキシなどのデータプレーン コンポーネントがプロジェクトのデータとリソースに安全にアクセスできるようにします。次のコマンドで、
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
を使用して新規インストールを行う準備が整いました。