Oracle Cloud Hangout Cafe Season6 #1「Service Mesh がっつり入門!」(2022年9月7日開催)
AWS App Mesh
AWS App Meshは、AWSのサービスとして開発されているフルマネージドサービスメッシュプラットフォームです。サポート環境はFargate/ECS/EKS/Kubernetes on EC2などあります。サイドカープロキシにはEnvoyを採用し、コントロールプレーンをマネージドとして提供しています。他のAWSサービスとの連携も強力です。
OCI Service Mesh
OCI Service Meshは、Oracle社がOCI(Oracle Cloud Infrastructure)上で提供しているフルマネージドサービスメッシュプラットフォームです。サポートする環境はOKE(Oracle Container Engine for Kubernetes)のみで、将来的にはVMもサポートする予定です。サイドカープロキシはEnvoyベースとなっており、コントロールプレーンをOracle社が管理します。
OSOK(OCI Service Operator for Kubernetes)と呼ばれるOKE用のOperatorが必要であり、ユーザがインストールを行う必要があります。また、他のOCIサービスとの高い親和性があります。
ここまでがオープンソースプロダクト、ベンダーサービスを含めたService Meshプロダクトの紹介です。ここまでのプロダクトを以下にまとめます。
【オープンソースプロダクト】Istio | LINKERD | Consul Connect | Kuma | Open Service Mesh | |
---|---|---|---|---|---|
データプレーン | Envoy | Conduit | 組み込みプロキシ Envoy |
Envoy | Envoy |
VMサポート | 可 | 不可 | 可 | 可 | 不可 |
有償サポート | 無 (ベンダーサービスあり) |
有 | 有 | 有 | 無 |
GitHub Star数 (2023年5月現在) |
32.9k | 9.6k | 26.4k | 3.1k | 2.6k |
Anthos Service Mesh | AWS App Mesh | OCI Service Mesh | |
---|---|---|---|
提供ベンダー | Amazon | Oracle | |
データプレーン | Envoy | Envoy | Envoy |
コントロールプレーン実装 | Istioベース | 独自 | 独自 |
VMサポート(2023年5月現在) | 可 | 可 | 不可(ロードマップあり) |
ここで押さえておきたいポイントは、LINKRED以外のデータプレーンにEnvoyが利用されているという点です。Service Meshプロダクトに、なぜここまでEnvoyが利用されるのかを含めて、ここからはIstioをベースに詳細なアーキテクチャを掘り下げます。
Istio Deep Dive
前段でIstioのアーキテクチャについて少し触れ、コントロールプレーンとデータプレーンの2つのコンポーネントから構成されているという話をしました。この2つのコンポーネントについてもう少し掘り下げていきます。
Istioのコントロールプレーン
Istioのコントロールプレーンは、v1.4以前とv1.5以降で大きく異なります。v1.4以前では、以下のコンポーネントから構成されていました。
- Pilotサービス:データプレーン(Envoy)へのconfig反映
- Citadelサービス:サービス対サービスとエンドユーザ認証/認可を提供。SPIFFE(後述)の実装コンポーネント
- Mixerサービス:Observability(Telemetry)関連機能やアクセス制御機能を提供
- Galleyサービス:ユーザがカスタマイズしたconfig設定の提供
v1.5以降ではMixerサービスがEnvoyに統合され、他の3つのコンポーネントはistiod
という1つのバイナリになりました。
Istioのデータプレーン
Istioのデータプレーンは、Envoyというプロキシから構成されています。
Envoyは2015年5月にLyft社が開発し、2016年9月にオープンソースとして公開されました。EnvoyはL4/L7両機能を持つプロキシソフトウェアであり、C++で実装されています。また、プラグイン開発としてWebAssembly/Luaをサポートしています。
Envoyは“xDS Protocol”という動的に制御できる仕組みを持っており、このxDS Protocolを制御するAPI(“xDS API”)を実装できます。このxDS APIを実装したものが前述したコントロールプレーンです。これらのAPIには、具体的に以下のようなものがあります。
- EDS(Endpoint Discovery Service)
- CDS(Cluster Discovery Service)
- RDS(Route Discovery Service)
また、以下のようにAPIのリファレンス実装にはJavaとGoの2つの実装があります。
このEnvoyの拡張性の高さが、多くのService Meshプロダクトのデータプレーンに採用されている理由の1つであると言えます。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Keycloakと認可プロダクトを利用したマイクロサービスにおける認証認可の実現
- All Things OpenからSolo.ioのBrian Gracely氏にインタビュー。サイドカーレスサービスメッシュとは?
- コンテナをさらに活用しよう! 「マイクロサービス」と「サーバーレス」
- 注目のSPIFFE、その概要とKubernetesへの導入方法
- サービスメッシュのLinkerd 2.9を紹介。EWMA実装のロードバランサー機能とは
- 「KubeCon NA 2022」から、サイドカーレスを実装したサービスメッシュのIstioのセッションを紹介
- サービスメッシュを使ってみよう
- Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)
- KubeCon Europeでサービスメッシュの標準化を目指すSMIを発表。Istioの動向にも注目
- KubeCon Europe 2023から、Linkerdの最新情報とeBPFがサービスメッシュに使えない理由を解説したセッションを紹介