[MEMO] katacodaでService Mesh with Istio: ver1 Istio Introduction
前回までKubenetesをやってたんですが、続いて、ServiceMeshも正しく理解したくて今回から別のコースをやって行きたいと思います。
勝手に名言「正しい判断は正しい知識から。」( ー`дー´)キリッ
公式も後で読もう。 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の認証による管理が可能になる。的な。