「Oracle Cloud Hangout Cafe (OCHaCafe)」ダイジェスト 6

AWS App Mesh

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プロダクトの紹介です。ここまでのプロダクトを以下にまとめます。

【オープンソースプロダクト】
IstioLINKERDConsul ConnectKumaOpen Service Mesh
データプレーンEnvoyConduit組み込みプロキシ
Envoy
EnvoyEnvoy
VMサポート不可不可
有償サポート
(ベンダーサービスあり)
GitHub Star数
(2023年5月現在)
32.9k9.6k26.4k3.1k2.6k
【ベンダーサービス】
Anthos Service MeshAWS App MeshOCI Service Mesh
提供ベンダーGoogleAmazonOracle
データプレーンEnvoyEnvoyEnvoy
コントロールプレーン実装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つの実装があります。

Java
Go

このEnvoyの拡張性の高さが、多くのService Meshプロダクトのデータプレーンに採用されている理由の1つであると言えます。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored