ASM インスタンスにイングレス ゲートウェイを追加した後、インスタンスに関連付けられたクラスタにアプリケーションをデプロイできます。 このトピックでは、サンプル アプリケーション Bookinfo を ASM インスタンスに関連付けられた ACK クラスタにデプロイする方法について説明します。
アプリケーションの説明
この例では、Bookinfo という名前の書籍レビュー アプリケーションを使用します。 次の図は、アプリケーションのマイクロサービスモデルを示しています。
Bookinfo アプリケーションは、次のマイクロサービスで構成されています。
Productpage: Details マイクロサービスと Reviews マイクロサービスを呼び出してページを生成します。
Details: 書籍に関する情報が含まれています。
Reviews: 書籍レビューが含まれており、Ratings マイクロサービスを呼び出す場合があります。
Ratings: 書籍レビューに基づいて生成された書籍の評価が含まれています。
Reviews マイクロサービスには、次のバージョンがあります。
バージョン 1 は、Ratings マイクロサービスを呼び出しません。
バージョン 2 は、Ratings マイクロサービスを呼び出し、1 ~ 5 個の黒い星で書籍を評価します。
バージョン 3 は、Ratings マイクロサービスを呼び出し、1 ~ 5 個の赤い星で書籍を評価します。
前提条件
メトリック収集を監視するために、Prometheus Monitoring またはセルフマネージド Prometheus が ACK クラスタに統合されていること。 このトピックでは、Prometheus Monitoring を例として使用します。 詳細については、「Prometheus Monitoring を統合してメッシュ監視を実装する」または「セルフマネージド Prometheus を統合してメッシュ監視を実装する」をご参照ください。
Bookinfo アプリケーションをデプロイする
次の内容で bookinfo.yaml ファイルを作成します。
次のコマンドを実行して、デフォルトの名前空間にサンプル アプリケーションをデプロイします。
kubectl apply -f bookinfo.yaml
イングレス ゲートウェイをデプロイおよび構成する
bookinfo-gateway.yaml ファイルを作成します。
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: bookinfo-gateway namespace: default spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - '*' --- apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: vs-demo namespace: default spec: hosts: - '*' http: - name: gw-to-productage match: - uri: exact: /productpage - uri: prefix: /static - uri: exact: /login - uri: exact: /logout - uri: prefix: /api/v1/products route: - destination: host: productpage port: number: 9080 gateways: - bookinfo-gatewayイングレス ゲートウェイをデプロイします。
kubectl apply -f bookinfo-gateway.yaml
アプリケーションにアクセスする
設定したゲートウェイを介して Bookinfo productpage サービスに接続します。
ゲートウェイの IP アドレスを取得します。
echo $(kubectl -n istio-system get istiogateway ingressgateway -o jsonpath="{.status.GatewayAddress[0]}")ブラウザで
http://{イングレス ゲートウェイの IP アドレス}/productpageにアクセスして、Bookinfo アプリケーションを表示します。
ページを数回更新すると、[書籍レビュー] の下の評価が変化し、レビュー アプリケーションのバージョン v1、v2、v3 に対応していることがわかります。
Bookinfo の Ambient モードを有効にする
ASM コンソール にログインします。 左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[デフォルト] 名前空間の [データプレーンモード] 列で、[Ambient メッシュモードに切り替える] をクリックします。
[データプレーンモード]
ブラウザで
http://{イングレスゲートウェイの IP アドレス}/productpageにアクセスし、Bookinfo アプリケーションを表示します。サービスが引き続きアクセス可能で、すべての Bookinfo アプリケーションポッド間で mTLS 暗号化が有効になっていることを確認できます。
メッシュトポロジーを表示する
監視メトリック収集を有効にします。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[Prometheus のマネージドサービスにメトリックを収集する] をクリックします。 [送信] ダイアログボックスで、クラスタ名を選択し、[OK] をクリックします。
セルフマネージド Prometheus を使用している場合は、この手順をスキップできます。
メッシュトポロジーを有効にします。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[有効にする] をクリックします。 次のパラメータを使用してメッシュトポロジーを構成し、[有効化の確認] をクリックします。
次の例は、ASM ゲートウェイを介してアクセスを構成する方法を示しています。
構成項目
値の例
[サービスデプロイモード]
Kubernetes クラスタ内のデータプレーン デプロイモード。
マネージド デプロイモードを使用する場合、Serverless ASM ゲートウェイを介したアクセスのみがサポートされます。
[可観測性クラスタ]
c6118d720xxxxxxxxxxxxxx58410a9c7d0。
[Prometheus スクレイプアドレス]
このパラメータはこの例では無視されます。
セルフマネージド Prometheus を使用している場合は、ここに読み取りアドレスを入力します。
複数のクラスタが ASM に追加されている場合は、最初に 集約インスタンス を作成し、集約インスタンスの読み取りアドレスを入力する必要があります。
[ID 認証 - ログイン方法]
[トークン]
[エントリ]
[ASM]。
[ASM ゲートウェイを選択]: イングレス ゲートウェイ名を選択します。この例では ingressgateway です。
[ASM ゲートウェイポートを選択]: 443 を選択します。
ゲートウェイを編集して、メッシュトポロジー専用のポートを追加することもできます。
テストトラフィックを送信して、トラフィックトポロジー図を生成します。
export GATEWAY_ADDRESS=$(kubectl -n istio-system get istiogateway ingressgateway -o jsonpath="{.status.GatewayAddress[0]}") for i in $(seq 1 100); do echo "Request $i: $(curl -sSI -o /dev/null -w "%{http_code}" "http://${GATEWAY_ADDRESS}:80/productpage")" done[メッシュトポロジー] ページの [ログイン方法] セクションで、[ログイン トークンを表示] をクリックし、トークンコンテンツをコピーします。
[トポロジーアドレス] の後にある [ASM メッシュトポロジーにアクセス] をクリックします。 [Kiali] ページで、コピーしたコンテンツを [トークン] 入力ボックスに貼り付けて、[ログイン] をクリックします。