Online Boutique のサンプル アプリケーションのデプロイ

このガイドでは、Anthos Service Mesh のデモのために、Online Boutique のサンプル アプリケーションをデプロイする方法について説明します。Anthos Service Mesh をまだインストールしていない場合は、インストール ガイドで適切なガイドを選択してください。

自動サイドカー インジェクションを有効にする

サンプル アプリケーションに対してサイドカーの自動インジェクションを有効にするには、サンプルの名前空間にリビジョン ラベルを追加する必要があります。追加するラベルは、マネージド Anthos Service Mesh をデプロイしたか、クラスタ内コントロール プレーンをインストールしたかによって異なります。リビジョン ラベルは、サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定のコントロール プレーン リビジョンに関連付けます。

クラスタ内

  1. アプリケーションの名前空間を作成します。

    kubectl create namespace demo
    
  2. 次のコマンドを使用して、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 です。

  3. リビジョン ラベルを 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 ラベルの削除が含まれています。

マネージド サービス メッシュ

  1. アプリケーションの名前空間を作成します。

    kubectl create namespace demo
    
  2. 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 ラベルの削除が含まれています。

  3. また、オプションの Google 管理のデータプレーンもデプロイした場合、次のように demo 名前空間にアノテーションを設定します。

    kubectl annotate --overwrite namespace YOUR_NAMESPACE \
    mesh.cloud.google.com/proxy='{"managed":"true"}'
    

サンプルのダウンロードとデプロイ

これで、demo 名前空間で自動インジェクションが有効になりました。BookInfo アプリケーションのサービスをデプロイすると、各サービスと一緒にサイドカー プロキシが挿入されます。

  1. まだインストールしていない場合は、kpt をインストールします。

    gcloud components install kpt
    
  2. kpt を使用してサンプルをダウンロードします。

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    online-boutique
    
  3. サンプルをクラスタにデプロイします。

    kubectl apply -n demo -f online-boutique
    
  4. frontend-external サービスの外部 IP アドレスを探します。

    kubectl get service frontend-external -n demo
    
  5. ブラウザでアプリケーションに移動して、インストールを確認します。

    http://EXTERNAL_IP/
    

GKE の場合、Google Cloud コンソールで Anthos Service Mesh のオブザーバビリティ機能を確認できます。トポロジグラフがメッシュに表示されるまで、最長で 10 分かかることがあります。

確認が終わったら、Online Boutique のサンプルを削除します。

kubectl delete namespaces demo