だいごろうのブログ

熊本出身で大阪、東京、パリを転勤して、今は福岡でデータエンジニアです

[MEMO] katacodaでService Mesh with Istio: ver1 Istio Introduction

前回までKubenetesをやってたんですが、続いて、ServiceMeshも正しく理解したくて今回から別のコースをやって行きたいと思います。

勝手に名言「正しい判断は正しい知識から。」( ー`дー´)キリッ

www.katacoda.com

公式も後で読もう。 istio.io

Istion/ServiceMesh Introduction

ServiceMeshはMicroServiceのネットワークあたりの用語としてよく使われる。 MicroServiceが増えてくるとdiscovery, load balancing, failure recovery, metrics, and monitoringあたりが必要かつ難しくなってくる。また、ここらへんも求められちゃう A/B testing, canary releases, rate limiting, access control, and end-to-end authentication。

Istio

Istioはservice meshの振る舞いのInsightや運用管理を可能とする。

  • traffic管理 : Service感の通信の管理
  • 管理能力 : どのpodがどのservice使ってんの
  • Policyの施行 : serviceを超えてpolicyをひとまとめに管理できる的な? Meshの設定でそれを管理するので、全体でフェアなリソース管理になるって感じかな
  • Serviceのidentityとセキュリティ : サービスの認証あるから、セキュリティも担保しやすい。てきな

Istioは最初Kubernetesのために作られたが今はMesosなどにも対応してるし、onPre,Cloudどちらもおーけー。あと、Policyなどはカスタマイズ可能で、ACLs, logging, monitoring, quotas, auditing ここらへんを自由に付け替え可能らしい。

DataPlane / ControlePlane

https://istio.io/docs/concepts/what-is-istio/#architecture

data plane

intelligent proxies (Envoy) のセットで、SideCarとしてデプロイされる。MicroService間のネットワークをコントロール。proxyの仲介を行う。Mixerから設定を読み取るっぽい。 (TODO SideCar勉強しないと。)

control plane

control planeはproxyの管理を行う。Mixerの調整を行う。

Envoy

Envoyはhigh-performance proxyです。PodのSideCar としてデプロイされるDataPlane。 Pilotから設定を受け取りServiceのインバウンド・アウトバウンド両方のTrafficの仲介・管理・監視を行うっぽい。

Mixer

MixerはPlatform非依存のコンポーネント。ServiceMeshの中で、アクセスコントロールとポリシーの利用を強制する役割を持つ。Proxy(Envoy)からそれらの設定へのアクセスを一任する MixerはControl planeの一つのAPIでProxyの設定の保持とData Planeへの公開を担当してるみたい。

Pilot

Pilot はEnvoySidecar向けのサービスディスカバリ, intelligent routingのためのTraffic管理能力を提供してる。まぁ、つまり、それらの設定をproxy(Envoy)に配布する役割 Pilotを使うことで、Trafficの管理ができる。5%はこのサービスに送るとかCanaryリリースが可能。特定のTrafficはこっちのバージョンに送るとか。

Citadel

Citadelはサービス間やユーザの認証とCredential管理を行う。Citadelを利用することで、ネットワークの制御でなく、Serviceの認証による管理が可能になる。的な。