このチュートリアルでは、Google 提供のスクリプト install_asm
を使用して、Anthos Service Mesh 1.9.8-asm.6 を新しい Google Kubernetes Engine(GKE)クラスタにインストールします。このチュートリアルでは、次のことについて説明します。
- Google Cloud プロジェクトを構成する。
- Anthos Service Mesh で必要な最小限の vCPU を使用して GKE クラスタを作成する。
- クラスタ内コントロール プレーンを使用して Anthos Service Mesh をインストールする
- サンプル アプリケーションをデプロイして、Google Cloud コンソールの Anthos Service Mesh ダッシュボードにテレメトリー データを表示できるようにする。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このクイックスタートの終了後、クラスタを削除するとそれ以上の請求が発生しなくなります。詳細については、クリーンアップをご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine API.
- プロジェクト ID をメモします。
Anthos Service Mesh には他の API も必要ですが、install_asm
スクリプトにより、API が自動的に有効になります。課金費用を抑えるため、install_asm
スクリプトは GKE Enterprise API を有効にしません。GKE Enterprise API が有効になっている場合、Google Cloud コンソールにはいくつかの違いがあります。詳細については、GKE Enterprise と Anthos Service Mesh の UI の違いをご覧ください。
必要なツールをインストールする
スクリプトは、Cloud Shell 上、または Linux を実行するローカルマシン上で実行できます。Cloud Shell で必要なすべてのツールがプリインストールされます。macOS には bash の古いバージョンが付属しているため、サポートされませんので注意してください。
Cloud Shell
Cloud Shell は、Debian ベースの Linux オペレーティング システムを実行している g1-small Compute Engine 仮想マシン(VM)をプロビジョニングします。Cloud Shell を使用する利点は次のとおりです。
Cloud Shell には、
gcloud
、kubectl
、kpt
、必要な他のコマンドライン ツールが含まれています。Cloud Shell の $HOME ディレクトリには 5 GB の永続ストレージ スペースがあります。
テキスト エディタを選択できます。
コードエディタ。Cloud Shell ウィンドウの上部にある edit をクリックしてアクセスします。
Emacs、Vim、Nano。Cloud Shell のコマンドラインからアクセスします。
Cloud Shell を使用するには:
- Google Cloud コンソールに移動します。
- Google Cloud プロジェクトを選択します。
Google Cloud コンソール ウィンドウの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。
Google Cloud コンソールの一番下にある新しいフレームの中で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。
ローカル Linux コンピュータ
次のツールがインストールされていることを確認してください。
- Google Cloud CLI
- 標準のコマンドライン ツール:
awk
、curl
、grep
、sed
、sha256sum
、tr
- git
- kpt
- kubectl
- jq
Google Cloud CLI で認証します。
gcloud auth login
コンポーネントを更新します。
gcloud components update
kpt
から検出できるように、パスにgit
を設定します。
GKE クラスタを作成する
次のコマンドを実行して、Anthos Service Mesh に必要な vCPU の最小数を要件とするクラスタを作成します。コマンドのプレースホルダを次の情報に置き換えます。
- CLUSTER_NAME: クラスタの名前。名前には、小文字の英数字と
-
のみを使用できます。先頭には英字、末尾には英数字を使用し、40 文字以下にする必要があります。 - PROJECT_ID: クラスタが作成されるプロジェクト ID。
- CLUSTER_LOCATION: クラスタのゾーン(
us-central1-a
など)。
gcloud container clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --zone=CLUSTER_LOCATION \ --machine-type=e2-standard-4 \ --num-nodes=2 \ --workload-pool=PROJECT_ID.svc.id.goog
- CLUSTER_NAME: クラスタの名前。名前には、小文字の英数字と
クラスタとやり取りするために必要な認証情報を取得します。このコマンドは、クラスタに対して
kubectl
の現在のコンテキストも設定します。gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --zone=CLUSTER_LOCATION
ASM インストール スクリプトをダウンロードする
Anthos Service Mesh 1.9.8 をインストールするスクリプトのバージョンを、現在の作業ディレクトリにダウンロードします。
curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9 > install_asm
現在の作業ディレクトリにファイルの SHA-256 をダウンロードします。
curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9.sha256 > install_asm.sha256
両方のファイルを同じディレクトリに置いて、ダウンロードを検証します。
sha256sum -c --ignore-missing install_asm.sha256
検証が成功すると、コマンドは
install_asm: OK
を出力します。互換性を維持するため、
install_asm.sha256
にはチェックサムを 2 回含めて、スクリプトのすべてのバージョンの名前をinstall_asm
に変更できるようにします。--ignore-missing
が存在しないというエラーが表示された場合は、--ignore-missing
フラグを指定せずに上記のコマンドを再実行します。スクリプトを実行可能にします。
chmod +x install_asm
Anthos Service Mesh をインストールする
以前に作成したクラスタに Anthos Service Mesh をインストールするには、次のオプションを使用して install_asm
スクリプトを実行します。クラスタを作成してからこのページを閉じていない場合は、gcloud container clusters create
コマンドに入力した値がプレースホルダに設定されます。
./install_asm \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--mode install \
--output_dir ./asm-downloads \
--enable_all
install_asm
スクリプトが完了するまでに数分かかる場合があります。このスクリプトは、進捗状況を追跡できるように情報メッセージを出力します。
このコマンドは、次のオプションを指定して install_asm
を実行します。
--mode install
: 新規インストールのスクリプトを実行し、Anthos Service Mesh 認証局(Mesh CA)を有効にします。これは、インストール用のデフォルトの認証局(CA)になります。--output_dir ./asm-downloads
: スクリプトがanthos-service-mesh
リポジトリからファイルをダウンロードするディレクトリ。このディレクトリからistioctl
、サンプル、マニフェストが含まれる Anthos Service Mesh のインストール ファイルのダウンロードと抽出を行います。--enable-registration
: スクリプトによって、クラスタが属するプロジェクトにクラスタを登録できるようにします。--enable_all
: スクリプトによって必要な Google API の有効化、Identity and Access Management の権限の設定、GKE Workload Identity の有効化など、クラスタに必要な更新を行うことができるようにします。
Online Boutique のサンプルをデプロイする
kpt
を使用してサンプルをダウンロードします。kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ online-boutique
アプリケーションの名前空間を作成します。
kubectl create namespace demo
自動サイドカー インジェクション(自動挿入)を有効にします。次のコマンドを使用して、
istiod
サービスのラベルを見つけます。このラベルには、後のステップで使用するリビジョン ラベルの値が含まれます。kubectl -n istio-system get pods -l app=istiod --show-labels
出力は次のようになります。
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-198-6-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586 istiod-asm-198-6-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
出力の
LABELS
列で、接頭辞istio.io/rev=
に続くistiod
リビジョン ラベルの値をメモします。この例での値はasm-198-6
です。リビジョン ラベルを名前空間に適用します。次のコマンドにおいて、REVISION は前の手順でメモした
istiod
リビジョン ラベルの値です。kubectl label namespace demo istio-injection- istio.io/rev=REVISION --overwrite
出力中のメッセージ
"istio-injection not found"
は無視します。これは、今までは名前空間にistio-injection
ラベルが付いていなかったことを意味します。Anthos Service Mesh の新規インストールや新規デプロイでは、こうなって当然です。名前空間にistio-injection
とリビジョン ラベルの両方があると自動インジェクションが失敗するため、Anthos Service Mesh ドキュメント内のすべてのkubectl label
コマンドにはistio-injection
ラベルの削除が含まれています。サンプルをクラスタにデプロイします。
kubectl apply -n demo -f online-boutique
Ingress ゲートウェイの外部 IP アドレスを取得します。
kubectl get service istio-ingressgateway -n istio-system
出力は次のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
この例では、Ingress ゲートウェイの IP アドレスは
35.239.7.64
です。ブラウザでアプリケーションに移動して、インストールを確認します。
http://EXTERNAL_IP/
サービス メッシュ ダッシュボードを表示する
サイドカー プロキシが挿入されたクラスタにワークロードをデプロイすると、Google Cloud コンソールの Anthos Service Mesh ページで、Anthos Service Mesh が提供するすべてのオブザーバビリティ機能を確認できます。ワークロードをデプロイした後、Google Cloud コンソールにテレメトリー データが表示されるまでに 1~2 分ほどかかることがあります。
Google Cloud コンソールでの Anthos Service Mesh へのアクセスは、Identity and Access Management(IAM)によって制御されます。Anthos Service Mesh ページにアクセスするには、プロジェクト オーナーがユーザーに対して、プロジェクト編集者または閲覧者のロール、または、より限定的なロール(Google Cloud コンソールでの Anthos Service Mesh に対するアクセス制御を参照)を付与する必要があります。
Google Cloud コンソールで、[Anthos Service Mesh] に移動します。
メニューバーのプルダウン リストから Google Cloud プロジェクトを選択します。
複数のサービス メッシュがある場合は、[サービス メッシュ] プルダウン リストからメッシュを選択します。
詳細については、Google Cloud コンソールでの Anthos Service Mesh の確認をご覧ください。
クリーンアップ
クリーンアップの前に、相互 TLS の詳細を確認される場合は、Anthos Service Mesh の例: mTLS をご覧ください。
追加料金の発生を回避するには、クラスタを削除します。
gcloud container clusters delete CLUSTER_NAME \ --project=PROJECT_ID \ --zone=CLUSTER_LOCATION
クラスタを維持して Online Boutique のサンプルを削除するには:
kubectl delete namespaces demo
次のステップ
以下の詳細を確認する
- クラスタ要件
install_asm
スクリプトのオプションとフラグ- Service のデプロイ
- このチュートリアルで使用した
gcloud
コマンド