このガイドでは、Anthos Service Mesh のデモのために、Online Boutique のサンプル アプリケーションをデプロイする方法について説明します。Anthos Service Mesh をまだインストールしていない場合は、インストール ガイドで適切なガイドを選択してください。
自動サイドカー インジェクションを有効にする
サンプル アプリケーションに対してサイドカーの自動インジェクションを有効にするには、サンプルの名前空間にリビジョン ラベルを追加する必要があります。追加するラベルは、マネージド Anthos Service Mesh をデプロイしたか、クラスタ内コントロール プレーンをインストールしたかによって異なります。リビジョン ラベルは、サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定のコントロール プレーン リビジョンに関連付けます。
クラスタ内
アプリケーションの名前空間を作成します。
kubectl create namespace demo
次のコマンドを使用して、
istiod
のラベルを探します。kubectl -n istio-system get pods -l app=istiod --show-labels
出力は次のようになります。
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-1106-2-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1106-2,istio=istiod,pod-template-hash=5788d57586 istiod-asm-1106-2-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1106-2,istio=istiod,pod-template-hash=5788d57586
出力の
LABELS
列で、接頭辞istio.io/rev=
に続くistiod
リビジョン ラベルの値をメモします。この例での値はasm-1106-2
です。リビジョン ラベルを
demo
名前空間に適用します。次のコマンドにおいて、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 create namespace demo
asm-managed-rapid
リビジョン ラベルをdemo
名前空間に適用します。kubectl label namespace demo istio-injection- istio.io/rev=asm-managed-rapid --overwrite
このラベルは、Anthos Service Mesh バージョンの現在のマネージド Anthos Service Mesh のリリース チャンネルに対応します。
出力中のメッセージ
"istio-injection not found"
は無視します。これは、今までは名前空間にistio-injection
ラベルが付いていなかったことを意味します。Anthos Service Mesh の新規インストールや新規デプロイでは、こうなって当然です。名前空間にistio-injection
とリビジョン ラベルの両方があると自動インジェクションが失敗するため、Anthos Service Mesh ドキュメント内のすべてのkubectl label
コマンドにはistio-injection
ラベルの削除が含まれています。また、オプションの Google 管理のデータプレーンもデプロイした場合、次のように
demo
名前空間にアノテーションを設定します。kubectl annotate --overwrite namespace YOUR_NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
サンプルのダウンロードとデプロイ
これで、demo
名前空間で自動インジェクションが有効になりました。BookInfo アプリケーションのサービスをデプロイすると、各サービスと一緒にサイドカー プロキシが挿入されます。
まだインストールしていない場合は、
kpt
をインストールします。gcloud components install kpt
kpt
を使用してサンプルをダウンロードします。kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ online-boutique
サンプルをクラスタにデプロイします。
kubectl apply -n demo -f online-boutique
frontend-external
サービスの外部 IP アドレスを探します。kubectl get service frontend-external -n demo
ブラウザでアプリケーションに移動して、インストールを確認します。
http://EXTERNAL_IP/
GKE の場合、Google Cloud コンソールで Anthos Service Mesh のオブザーバビリティ機能を確認できます。トポロジグラフがメッシュに表示されるまで、最長で 10 分かかることがあります。
確認が終わったら、Online Boutique のサンプルを削除します。
kubectl delete namespaces demo