Bookinfo のデプロイ

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

Anthos Service Mesh をインストールすると、いくつかのサンプル アプリケーションがインストールされます。このガイドでは、BookInfo サンプルをデプロイする方法について説明します。これはシンプルなモック ブックストア アプリケーションで、商品のウェブページ、書籍の詳細、レビュー(レビュー Service は複数のバージョンを使用)、評価を提供する 4 つの Service で構成されます。これらはすべて Anthos Service Mesh で管理されます。この例で使用されているソースコードとその他のすべてのファイルは、Anthos Service Mesh インストール ディレクトリの samples/bookinfo にあります。

アプリケーションのデプロイ

各サービスと一緒に挿入されたサイドカー プロキシと BookInfo アプリケーションのサービスをデプロイするには、次の操作を行います。

  1. Anthos Service Mesh をインストールしたコンピュータのコマンドラインで Anthos Service Mesh のインストール ディレクトリのルートに移動します。

  2. 自動サイドカー インジェクションを有効にします。次のコマンドを使用して、istiod のラベルを見つけます。このラベルには、後のステップで使用するリビジョン ラベルの値が含まれます。

    kubectl -n istio-system get pods -l app=istiod --show-labels

    出力は次のようになります。

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-173-3-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-173-3,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-173-3-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-173-3,istio=istiod,pod-template-hash=5788d57586

    出力の LABELS 列で、接頭辞 istio.io/rev= に続く istiod リビジョン ラベルの値をメモします。この例での値は asm-173-3 です。

  3. リビジョン ラベルを名前空間に適用します。次のコマンドで、NAMESPACE はサイドカー インジェクションを実行する名前空間の名前、REVISION は前のステップでメモした istiod リビジョンラベルの値です。

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
  4. kubectl を使用してアプリケーションをデプロイします。

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
  5. 次のコマンドを実行して、アプリケーションが正しくデプロイされていることを確認します。

    kubectl get services
    出力:
    NAME                       CLUSTER-IP   EXTERNAL-IP   PORT(S)              AGE
    details                    10.0.0.31    <none>        9080/TCP             6m
    kubernetes                 10.0.0.1     <none>        443/TCP              7d
    productpage                10.0.0.120   <none>        9080/TCP             6m
    ratings                    10.0.0.15    <none>        9080/TCP             6m
    reviews                    10.0.0.170   <none>        9080/TCP             6m

    および

    kubectl get pod
    出力:
    NAME                                        READY     STATUS    RESTARTS   AGE
    details-v1-1520924117-48z17                 2/2       Running   0          6m
    productpage-v1-560495357-jk1lz              2/2       Running   0          6m
    ratings-v1-734492171-rnr5l                  2/2       Running   0          6m
    reviews-v1-874083890-f0qf0                  2/2       Running   0          6m
    reviews-v2-1343845940-b34q5                 2/2       Running   0          6m
    reviews-v3-1813607990-8ch52                 2/2       Running   0          6m
  6. 最後に、アプリケーションの受信ゲートウェイ ルーティングを定義します。

    kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
    

アプリケーションのデプロイの検証

BookInfo アプリケーションが機能しているかどうかを確認するには、Ingress ゲートウェイにトラフィックを送信する必要があります。

  • Anthos Service Mesh を Anthos clusters on VMware にインストールした場合は、Anthos Service Mesh のインストール後に構成した Ingress ゲートウェイの外部 IP アドレスを取得します。

  • Anthos Service Mesh を GKE にインストールした場合は、Ingress ゲートウェイの外部 IP アドレスを次のように取得します。

    kubectl get svc 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 です。

アプリケーションの実行

  1. curl で BookInfo アプリが実行されていることを確認します。

    curl -I http://EXTERNAL_IP/productpage

    レスポンスに 200 が示されている場合、アプリケーションが Anthos Service Mesh と正しく連動しています。

  2. BookInfo ウェブページを表示するには、ブラウザに次のアドレスを入力します。

    http://EXTERNAL_IP/productpage

    ページを何回か更新すると、ラウンドロビン スタイル(赤色の星、黒色の星、星なし)で示される、さまざまなバージョンのレビューが製品ページに表示されます。

トラフィックを生成しているアプリケーションが作成されたため、Google Cloud コンソールで Anthos の [サービス メッシュ] ページに移動して、指標やその他のオブザーバビリティ機能を確認できます。

次のステップ

Bookinfo サンプルについて学習する

クリーンアップ

Bookinfo サンプルによるテストが完了したら、クラスタから削除します。

  1. 次のスクリプトを使用して Bookinfo をアンインストールします。

    samples/bookinfo/platform/kube/cleanup.sh
  2. シャットダウンを確認します。

    kubectl get services
    kubectl get pods

    Bookinfo Pod が削除されています。