Hatenaマイクロサービスアーキテクチャを採用することで得られるメリットは多いですが、対応しなければならない問題も増えます。その中でも、サービスが利用不能になった(障害が発生した)場合の対応については、慎重に検討しておく必要があります。下流のサービスへの呼び出しが停滞すると、連鎖的にすべてのサービスが呼び出し待ちになり、システム全体がハングする可能性があるからです。この問題の解決するためには、タイムアウトやサーキットブレーカーの導入することが一般的です。サービス側のアプリケーションコードにこの機能を実装すればいいのですが、istioを導入することでインフラ側で制御することが可能になります。具体的には、EnvoyとよばれるプロキシをサイドカーとしてすべてのPodにインジェクションし、トラフィックをEnvoy経由にすることで、アプリケーションコードを変更することなくタイムアウトやサーキットブレーカーを設定することができます。そのほかにも、きめ細やかなトラフィック制御はリリース時にとても役立ちます。そんな便利なistioを導入するために、今回は、調査としてGKE上で、istioが提供しているサンプルアプリを動かしてみたいと思います。参考にするページは以下のとおりです。ApplicationINDEXGKEでistioをセットアップするBookinfoアプリケーションをクラスタにデプロイする外部からアクセスできるようにするGKEでistioをセットアップするまず最初に、クラスタを作成します。今回は、n1-standard-1を3つのクラスタにしてみます。(推奨は4つらしいですが、3つでも特に問題は発生しませんでした。)クラスタの作成時に、istioを有効にすることを忘れないでください。mTLSが選択できます。mTLSを選択しました。クラスタの作成が終わったら、下記のコマンドでクラスタのクレデンシャルを取得します。istio-test.namespaceを確認すると、istio-system名前空間にistio関連のPodがデプロイされている事がわかります。36mistio-systemの中のPodを確認してみます。35mcitadelやgallery、ingressgateway、pilotなどistioを構成するPodが存在することを確認できます。次に、defualt名前空間内にデプロイされるすべてのPodに、istioサイドカー(Envoy)を自動的にインジェクションするようにラベルを設定します。<none>これで準備が完了しました。Bookinfoアプリケーションをクラスタにデプロイするistioの動作を確認するために、用意されているアプリケーションをデプロイしてみます。このアプリケーションはマイクロサービスで構成されていて、それぞれのサービスが異なる言語で実装されています。サンプルアプリケーションは、istioのリポジトリ内にあるので、GitでCloneしてきます。git@github.com:istio/istio.git以降は、istioディレクトリ内で作業します。samples/bookinfo/platform/kube/bookinfo.yamlアプリケーションがデプロイされると、自動的にサイドカーがインジェクションされるので、それを確認します。0/TCP~~省略~~istio-proxyがインジェクションされているのが確認できます。外部からアクセスできるようにする最初にistio-ingessgatewayを設定します。istio-ingessgatewayはistioサービスメッシュに、出入りするトラフィックを管理してくれます。外部からアクセスできるようにするためには、istio-ingessgatewayの設定が必要になります。istio-ingessgatewayを設定するにはGatewayリソースを作成します。created次に、istio-ingessgatewayに割り振られている外部IPを確認します。istio-ingressgatewayはistio-system名前空間にデプロイされています。99mEXTERNAL-IPが外部IPとなるので、そのIPへブラウザでアクセスしてみます。http://**.**.**.**/productpage1http://**.**.**.**/productpage外部から疎通できていることが確認できます。ちなみに、GCLBが自動的にプロビジョニングされています。最後に、デフォルトのDestinationRuleを作成します。samples/bookinfo/networking/destination-rule-all-mtls.yaml設定された内容を確認します。ISTIO_MUTUALDestinationRuleについて詳しくふれませんが、それぞれのサービスにいくつかのバージョンが定義されているのが確認できます。次回は、この環境を使って実際にistioの設定を変更して動作を確認していきます。最新の記事アーティス創造性を最大限に発揮するとともに、インターネットに代表されるITを活用し、みんなの生活が便利で、豊かで、楽しいものになるようなサービスやコンテンツを考え、創り出し提供しています。MACHINEの使い方~「モノのインターネット」IoTとは?IoTの活用事例とIoTの動向について解説します。受託システム開発により、ユーザーエクスペリエンスを高め、お客様のWeb戦略を成功に導きます。Webサイトに関するパッケージシステムの開発や個人向けのWebサービス・スマートフォンアプリ開発など幅広いサービス・アプリケーションを提供しています。名刺の作成販売を行っているECサイト「アーティス名刺工房」を運営しています。豊富なデザイン・迅速な対応で多くのお客様から支持をいただいています。Reserved.ページの先頭へ。