Istioを試してみる
About
Japan Container Days v18.04に先日参加してきて、以前から気になっていたIstioの発表があって気持ちが高まって来たので試しました。メモです。
Istioとは?
大きく4つの役割があります。
- Traffic management
- Observability
- Policy Enforcement
- Service Identity and Security
マイクロサービス化されたコンテナをいい感じに制御する仕組みみたいな認識です。
アーキテクチャ
- control planeとdata planeからなる
- data planeはenvoyを利用。コンテナのsidecarとして動作させる。
- control planeはroutingとconfigurationを管理する
control planeの要素
- Mixer -> access control周りを担当
- Pilot -> envoyのSD、Trafficmanagement(routing周りやcircuit breakerなど)。SDは抽象度が高いAPIを提供しているので裏でConsulが利用するとかもできるっぽい
- Istio-Auth -> サービス間通信のTLS化
Traffic management
- 5%の通信を他のサーバに流したり
- user-agentで通信をわけたりできる(content based routing)
Pilot
- adapterを使ってk8sのAPIを叩いているっぽい
- 通信のRuleを設定できる
- RouteRule(ルーティングのルール)
- DestinationPolicy(ロードバランシングやcircuit breakerなど)
- EgressRule(外部からの通信の制御?)
Istioを試してみよう
公式ドキュメントにサンプルアプリがあって簡単に構築できるので試します。
Istio / Quick Start with Google Kubernetes Engine
構築準備する
# gcloudをインストール $ brew cask install google-cloud-sdk $ gcloud init
Deployment Managerを使って構築する
GCPにはDeployment managerというAWSでいうところのCloudformationのようなテンプレートをデプロイするサービスがあるのでこれを利用します。公式ドキュメントにリンクが用意されているのでクリックするだけです。https://istio.io/docs/setup/kubernetes/quick-start-gke-dm.html#launch-deployment-manager
うまくいくと数分後にDeployment manager上で成功していることが確認できます。(私は無料枠アカウントを使っていたため、CPUの利用上限にひっかかってしまいました。なので、vCPUを2ではなくvCPUを1のものに変更しました)
起動に成功したらドキュメントにしたがっていけばgrafana/prometheus/zipkinなどを試すことができます。
今回構築した環境の設定について
実際の設定ファイルはGitHub上にあるので、今回構築した環境の設定をみるとよさそうです。
まとめ
もうちょっと詳しく理解してきたらもっとちゃんとした感じにします。