tjinjin's blog

インフラ要素多めの個人メモ

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上にあるので、今回構築した環境の設定をみるとよさそうです。

github.com

まとめ

もうちょっと詳しく理解してきたらもっとちゃんとした感じにします。