トラフィックシフト

このタスクでは、マイクロサービスの1つのバージョンから別のバージョンへのトラフィックのシフト方法を示します。

一般的なユースケースとして、マイクロサービスの旧バージョンから新バージョンへのトラフィックの段階的な移行があります。Istioでは、宛先間でトラフィックのパーセンテージをリダイレクトするルーティングルールのシーケンスを構成することで、この目標を達成します。

このタスクでは、トラフィックの50%をreviews:v1に、50%をreviews:v3に送信します。その後、トラフィックの100%をreviews:v3に送信することで移行を完了します。

始める前に

重み付けルーティングの適用

  1. 開始するには、次のコマンドを実行して、すべてのトラフィックをv1バージョンにルーティングします。
Zip
$ kubectl apply -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
  1. ブラウザでBookinfoサイトを開きます。URLはhttp://$GATEWAY_URL/productpageです。ここで、$GATEWAY_URLは、Bookinfoドキュメントで説明されているように、イングレスの外部IPアドレスです。

    ページのレビュー部分が、何回リフレッシュしてもレーティングスターが表示されないことに注意してください。これは、Istioを構成してレビューサービスのすべてのトラフィックをreviews:v1バージョンにルーティングしたためであり、このバージョンのサービスはスターレーティングサービスにアクセスしません。

  2. 次のコマンドを使用して、トラフィックの50%をreviews:v1からreviews:v3に移行します。

Zip
$ kubectl apply -f @samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml@
  1. 新しいルールが伝播するまで数秒待ってから、ルールが置き換えられたことを確認します。
$ kubectl get virtualservice reviews -o yaml
apiVersion: networking.istio.io/v1
kind: VirtualService
...
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 50
    - destination:
        host: reviews
        subset: v3
      weight: 50
  1. ブラウザで/productpageを更新すると、約50%の確率で赤い色のスターレーティングが表示されます。これは、reviewsv3バージョンがスターレーティングサービスにアクセスするが、v1バージョンはアクセスしないためです。

  2. reviews:v3マイクロサービスが安定していると判断した場合は、この仮想サービスを適用することで、トラフィックの100%をreviews:v3にルーティングできます。

Zip
$ kubectl apply -f @samples/bookinfo/networking/virtual-service-reviews-v3.yaml@
  1. /productpageを数回更新します。これで、各レビューに赤い色のスターレーティングが付いたブックレビューが常に表示されます。

何が起こったのかの理解

このタスクでは、Istioの重み付けルーティング機能を使用して、reviewsサービスの旧バージョンから新バージョンへのトラフィックを移行しました。これは、インスタンスのスケーリングを使用してトラフィックを管理するコンテナオーケストレーションプラットフォームのデプロイ機能を使用したバージョン移行とは大きく異なります。

Istioを使用すると、reviewsサービスの2つのバージョンを互いに影響を与えることなく、独立してスケールアップおよびスケールダウンできます。

自動スケーリングを使用したバージョンルーティングの詳細については、ブログ記事カナリアデプロイメントを使用したIstioをご覧ください。

クリーンアップ

  1. アプリケーションルーティングルールを削除します。
Zip
$ kubectl delete -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
  1. 後続のタスクを検討する予定がない場合は、Bookinfoクリーンアップの手順を参照してアプリケーションをシャットダウンしてください。
この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございました!