ビジネスとIT活用に役立つブログBlog


GKE(Google Kubernetes Engine)のistioでサンプルアプリを動かす【ルーティング編】

この記事をシェアする:


前回はGKE上でistioのサービスメッシュを構築し、サンプルアプリケーションをデプロイしました。
今回は、その環境を使ってistioの設定と動作を確認していきたいと思います。

参考にするページは以下のとおりです。

リクエストのルーティング

サンプルアプリケーションは、フロントエンドから各マイクロサービスに通信する構成になっています。
その中でも、reviewsサービスはいくつかのバージョンがデプロイされていて、アクセスするたびにバージョンが切り替わってしまいます。
そこで、VirtualServiceの設定を変更してバージョンを固定することで、リクエストのルーティング方法を学びます。


まず、現状のサービスの一覧を表示して確認しておきます。


次に、以下のコマンドでVirtualServiceの内容も確認しておきます。

このVirtualServiceは前回、Gatewayを作成したときに作成されたものです。
現状の設定ではURIが「/productpage」「/login」「/logout」の場合と「/api/v1/products」から始まる場合は、productpageサービスにルーティングするように設定されています。


現状の確認ができたので、次に用意されているVirtualServiceを適用させてみます。


設定された内容を確認します。

新たに、各サービスのVirtualServiceが追加されました。
前回、DestinationRuleで設定されたバージョン(subset)がv1に指定されているのがわかります。

この状態でブラウザからアクセスすると、レビューの星が表示されないことを確認できます。(v1のreviewsは星がでません)


検証のために、reviewsサービスをv2にしてみます。

ブラウザからアクセスすると、黒い星のレビューしか表示されないことを確認できました。(v2のreviewsは黒い星がでます)

トラフィックの移行

次に、トラフィックをv1とv3に50%ずつ転送(分散)するように設定してみます。
この検証は、カナリアリリースを行うときに役立ちます。


まずは、トラフィックの100%をv1に転送するようにします。

ブラウザでアクセスすると、レビューの星が表示されないことが確認できます。


次に、用意されたVirtualServiceを適用させます。

reviewsのVirtualServiceが以下のように設定されました。

weightで重みを設定しているのが確認できます。

ブラウザで数回アクセスすると、約50%でレビューの星がでなかったり、赤い星がでたりするのが確認できます。

今回は50%からスタートでしたが、実際は少量のトラフィックを段階的に新しいバージョンに転送していき、最終的には100%のトラフィックを転送した時点でリリース完了ということになります。

まとめ

リクエストのルーティングとトラフィックの移行に必要な設定と動作を確認しました。
istioを使うことで、K8sだけでは難しかった細かなトラフィックの制御が簡単にできるようになり、より安定したリリースが実現できると思います。

シリーズ:GKEのistioでサンプルアプリを動かす

この記事のカテゴリ:

SNSで最新の情報を
受け取ることができます!