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


GKE(Google Kubernetes Engine)のistioでサンプルアプリを動かす【構築編】

この記事をシェアする:


マイクロサービスアーキテクチャを採用することで得られるメリットは多いですが、対応しなければならない問題も増えます。

その中でも、サービスが利用不能になった(障害が発生した)場合の対応については、慎重に検討しておく必要があります。
下流のサービスへの呼び出しが停滞すると、連鎖的にすべてのサービスが呼び出し待ちになり、システム全体がハングする可能性があるからです。
この問題の解決するためには、タイムアウトやサーキットブレーカーの導入することが一般的です。

サービス側のアプリケーションコードにこの機能を実装すればいいのですが、istioを導入することでインフラ側で制御することが可能になります。
具体的には、EnvoyとよばれるプロキシをサイドカーとしてすべてのPodにインジェクションし、トラフィックをEnvoy経由にすることで、アプリケーションコードを変更することなくタイムアウトやサーキットブレーカーを設定することができます。
そのほかにも、きめ細やかなトラフィック制御はリリース時にとても役立ちます。

そんな便利なistioを導入するために、今回は、調査としてGKE上で、istioが提供しているサンプルアプリを動かしてみたいと思います。

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

参考ページ

GKEでistioをセットアップする

まず最初に、クラスタを作成します。 今回は、n1-standard-1を3つのクラスタにしてみます。
(推奨は4つらしいですが、3つでも特に問題は発生しませんでした。)

クラスタの作成時に、istioを有効にすることを忘れないでください。
セキュリティオプションは、Strict mTLSとPermissive mTLSが選択できます。
今回は、Strict mTLSを選択しました。


クラスタの作成が終わったら、下記のコマンドでクラスタのクレデンシャルを取得します。


namespaceを確認すると、istio-system名前空間にistio関連のPodがデプロイされている事がわかります。


istio-systemの中のPodを確認してみます。

citadelやgallery、ingressgateway、pilotなどistioを構成するPodが存在することを確認できます。


次に、defualt名前空間内にデプロイされるすべてのPodに、istioサイドカー(Envoy)を自動的にインジェクションするようにラベルを設定します。

これで準備が完了しました。

Bookinfoアプリケーションをクラスタにデプロイする

istioの動作を確認するために、用意されているアプリケーションをデプロイしてみます。
このアプリケーションはマイクロサービスで構成されていて、それぞれのサービスが異なる言語で実装されています。


サンプルアプリケーションは、istioのリポジトリ内にあるので、GitでCloneしてきます。


以降は、istioディレクトリ内で作業します。


アプリケーションがデプロイされると、自動的にサイドカーがインジェクションされるので、それを確認します。

istio-proxyがインジェクションされているのが確認できます。

外部からアクセスできるようにする

最初にistio-ingessgatewayを設定します。
istio-ingessgatewayはistioサービスメッシュに、出入りするトラフィックを管理してくれます。
なので、外部からアクセスできるようにするためには、istio-ingessgatewayの設定が必要になります。
istio-ingessgatewayを設定するにはGatewayリソースを作成します。(同時にVirtualServiceも作成されます)


次に、istio-ingessgatewayに割り振られている外部IPを確認します。 istio-ingressgatewayはistio-system名前空間にデプロイされています。


EXTERNAL-IPが外部IPとなるので、そのIPへブラウザでアクセスしてみます。

外部から疎通できていることが確認できます。
ちなみに、GCLBが自動的にプロビジョニングされています。


最後に、デフォルトのDestinationRuleを作成します。


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

DestinationRuleについて詳しくふれませんが、それぞれのサービスにいくつかのバージョンが定義されているのが確認できます。

次回は、この環境を使って実際にistioの設定を変更して動作を確認していきます。

The following two tabs change content below.
アーティス

アーティス

創造性を最大限に発揮するとともに、インターネットに代表されるITを活用し、みんなの生活が便利で、豊かで、楽しいものになるようなサービスやコンテンツを考え、創り出し提供しています。
この記事のカテゴリ:

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