Oracle Cloud Hangout Cafe Season6 #1「Service Mesh がっつり入門!」(2022年9月7日開催)

2023年6月22日(木)
仁井田 拓也
連載第6回の今回は、2022年9月7日に開催された「Oracle Cloud Hangout Cafe Season6 #1『Service Mesh がっつり入門!』」の発表内容に基づいて紹介していきます。

Service Meshを実現するプロダクト

Service Meshを実現するプロダクトは、主にオープンソースプロダクトとベンダーサービスに分けられます。本記事では、以下のプロダクトを取り上げます。

  • オープンソースプロダクト
    • Istio
    • LINKERD
    • HashiCorp Consul Service Mesh(Consul Connect)
    • Kuma
    • Open Service Mesh
  • ベンダーサービス
    • Anthos Service Mesh(Google Cloud)
    • AWS App Mesh(AWS)
    • OCI Service Mesh(Oracle Cloud Infrastructure)

Istio

はじめに、オープンソースプロダクトから見ていきます。

IstioはGoogle社、IBM社、Lyft社が開発し、2017年にオープンソース化されたプロダクトです。最新バージョンはv1.17.2(2023年5月現在)です。CNCF Micro Survey*7によると、2番目に利用されているプロダクトです(トップはLINKERD)。2022年4月にCNCFに寄贈され、2023年5月現在でIncubating Projectです。

IstioはさまざまなService Mesh関連ベンダーサービスのベースになっており、具体的にはAnthos Service Mesh、Red Hat OpenShift Service Meshなどが挙げられます。実装されている機能も幅広く、VMもMesh内に含めることができます。サイドカープロキシにはEnvoyが採用されています。

ここで、発表当日直後にIstioがアナウンスしたサイドカープロキシなしのService Meshについても少しだけ触れます。Istioは、2022年9月7日に“Ambient Mesh”と呼ばれる新しいデータプレーンのアーキテクチャを発表しました。Ambient Meshは次期バージョンであるv1.18でメインブランチにマージされる予定です。

前述したサイドカープロキシを利用したデータプレーンには、以下のような課題が存在します。

  • 侵襲性(Invasiveness): アプリケーションコンテナとサイドカープロキシのライフサイクルが同一になることにより、インストールやアップグレード時にアプリケーションコンテナに再起動が発生し、ワークロードが中断される可能性がある
  • リソースの不十分な活用: ワークロードごとにサイドカープロキシ専用のCPUやメモリといったリソースの確保が必要となり、結果的にクラスタ全体でリソースが効率的に活用されない可能性がある
  • トラフィックの中断: 全てのトラフィックはサイドカープロキシを経由するため、サイドカープロキシがサポートしていないプロトコルが存在するとアプリケーション間の通信を破損させる可能性がある

これらの課題に対応するために、従来は全ての通信をサイドカープロキシに任せていたアーキテクチャを、Ambient Meshでは2つのレイヤーに分割しています。

1つ目のレイヤーは“Secure Overlay Layer”と呼ばれ、mTLS、(TCPレベルの)Observabilityなどを管轄します。2つ目のレイヤーは“L7 Processing Layer”と呼ばれ、L7レイヤーでのルーティング、サーキットブレイカー、リトライ/タイムアウトの制御や(HTTPレベルの)Observabilityを管轄します。

【参考】「https://istio.io/latest/blog/2022/introducing-ambient-mesh/

前者のレイヤーでは、Mesh内の各Nodeで動作するエージェントを利用します。Node間の通信はそれぞれのエージェント間でリダイレクトされます。Kubernetesでは、このエージェントはDaemonsetです。

【参考】「https://istio.io/latest/blog/2022/introducing-ambient-mesh/

後者のレイヤーでは、KubernetesのNamespaceで動作する“waypoint proxies”というコンポーネントを利用します。このコンポーネントはEnvoyがベースとなっており、NamespaceでL7レイヤーでのトラフィック制御が必要な場合は、前述したエージェントからwaypoint proxiesにトラフィックが渡されます。

Kubernetesでは、waypoint proxiesはDeploymentとして動作しており、トラフィックの需要に合わせてオートスケールさせることができます。

【参考】「https://istio.io/latest/blog/2022/introducing-ambient-mesh/

サイドカープロキシをこれらのアーキテクチャに変更することにより、従来のService Meshのメリットを損なうことなく、サイドカープロキシが起因となっていた課題を解消できます。

しかし、Istioはサイドカープロキシを完全に排除しようとしているわけではありません。サイドカープロキシとAmbient Meshは、いずれもサポートされ続けていく予定になっており、ユースケースに応じてユーザがどちらを利用するかを選択できます。また、サイドカープロキシとAmbient Meshは相互運用をサポートしています。

LINKERD

LINKERDは元Twitter社のエンジニアが始めたBuoyant社が開発したService Meshプロダクトです。最新バージョンはv2.13.2(2023年5月現在)です。CNCFのGraduated Projectであり、CNCF Micro Survey*7によると利用者No.1のService Meshプロダクトです。

Kubernetes向けの軽量なService Meshプロダクトとなっており、2023年5月時点ではVMには未対応です。現状のLINKERDは2.xというバージョン体系になっており、サイドカープロキシとしては“Conduit”が利用されています。

ちなみに1.xでは、JVM上で動作するFinagle、Netty、Scalaで実装されていましたが、2.xにバージョンアップするタイミングで大きくアーキテクチャを変更しています。

*7:CNCF Micro Surveyは2022年5月に公開されたService Meshに関する調査

HashiCorp Consul Service Mesh(Consul Connect)

HashiCorp Consul Service Mesh(Consul Connect)は、HashiCorp社が開発したService Meshプロダクトです。最新バージョンはv1.15.2(2023年5月現在)です。

HashiCorp Consulは、インフラ上のサービス設定とサービスディスカバリのためのツールとしてオープンソースとして開発されました。マルチプラットフォーム、マルチクラウドなService Mesh環境として動作し、Cloud版/Enterprise版として有償版も提供されています。実装されている機能が多岐にわたり、その一機能としてService Meshの機能が実装されています。

なお、VMもMesh内に含めることができます。サイドカープロキシには組み込みプロキシを採用していますが、Envoyもサポートされています。

Kuma

Kumaは、Kong社が開発したService Meshプロダクトです。最新バージョンはv2.2.0(2023年5月現在)であり、2.xからは新たにeBPFがサポートされています。2019年に登場した比較的新しいService Meshプロダクトであり、IstioやLINKERDよりもより洗練されたコントロールプレーンを謳っています。

CNCFのSandbox Projectで、サイドカープロキシにはEnvoyを採用し、VMをはじめとした多様なアプリケーション環境をサポートしています。また、Enterprise版として有償版も提供されています。

Open Servive Mesh

Open Servive Meshは、Microsoft社が開発したService Meshプロダクトです。最新バージョンはv1.2.4(2023年5月現在)であり、CNCFのSandbox Projectです。Kumaと同様に2020年に登場した比較的新しいService Meshプロダクトです。サイドカープロキシにはEnvoyを採用しています。

SMI(Service Mesh Interface)*8仕様に準拠したService Meshプロダクトとして開発され、軽量かつ拡張可能である特長を謳っています。2023年5月時点ではVMには未対応です。Azure Kubernetes Service(AKS)ではOpen Service Meshのアドオンがあり、ハイブリッドコンテナプラットフォームであるAzure Arcでも利用できます。

*8:SMI(Service Mesh Interface)はKubeCon Europe 2019でMicrosoft社、LINKRED、HashiCorp社などが共同で公開したService Mesh仕様。Service Meshプロダクトに可搬性を持たせる目的で策定された。Kubernetes Ingressの後継にあたるGateway APIとの協業もアナウンスされている。Istio、Consul Service Meshはプラグインで対応でき、LINKRED、Open Service Meshはプラグインなしで対応できる

Anthos Service Mesh

ここからは、ベンダーサービスを紹介します。

Anthos Service Meshは、Google社が提供しているマルチ/ハイブリッドクラウド環境である“Anthos”のフルマネージドサービスメッシュプラットフォームです。GKEをベースに環境を提供しており、Anthos GKE on Google CloudやAnthos clusters on VMware/AWSなどをサポートしています。

中身はマネージドのIstioとなっており、コントロールプレーンをGoogle社が管理します。Google Cloudとの親和性もあります。

日本オラクル株式会社

Oracle Groundbreaker Advocate
Senior Cloud Solution Engineer

日本オラクル株式会社所属。SIerにて様々なOSSを活用したシステム開発を経験し現職。現在は、SIer時代の知見を活かし、ソリューションアーキテクトとしてクラウドでのアプリケーション開発やクラウドネイティブ技術に関する技術/案件支援に従事。

Community:
Oracle Cloud Hangout Cafe メンバー(#ochacafe)

連載バックナンバー

仮想化/コンテナ技術解説
第6回

Oracle Cloud Hangout Cafe Season6 #1「Service Mesh がっつり入門!」(2022年9月7日開催)

2023/6/22
連載第6回の今回は、2022年9月7日に開催された「Oracle Cloud Hangout Cafe Season6 #1『Service Mesh がっつり入門!』」の発表内容に基づいて紹介していきます。
仮想化/コンテナ技術解説
第5回

Oracle Cloud Hangout Cafe Season5 #5「実験! カオスエンジニアリング」(2022年5月11日開催)

2023/5/18
連載第5回の今回は、2022年5月11日に開催された「Oracle Cloud Hangout Cafe Season5 #5『実験! カオスエンジニアリング』」の発表内容に基づいて紹介していきます。
仮想化/コンテナ技術解説
第4回

Oracle Cloud Hangout Cafe Season5 #3「Kubernetes のセキュリティ」(2022年3月9日開催)

2023/4/18
連載第4回の今回は、2022年3月9日に開催された「Oracle Cloud Hangout Cafe Season5 #3『Kubernetes のセキュリティ』」の発表内容に基づいて紹介していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています