BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Open Service Mesh: Microsoftによるサービスメッシュ実装

Open Service Mesh: Microsoftによるサービスメッシュ実装

原文(投稿日:2020/09/02)へのリンク

MicrosoftがリリースしたOpen Service Mesh (OSM) はSMI仕様に準拠したサービスメッシュのアルファ実装だ。IstioやLinkerd、Consulといった他のサービスメッシュ実装と同様、カナリアリリース、セキュアな通信、アプリケーションの情報など、標準的なサービスメッシュの機能をカバーする。さらにOSMチームでは、プロジェクトをCNCFに寄贈する手続きも進めている。

サービスメッシュの世界において、IstioやLinkerd、Consul、Kumaなどのプロジェクトと並ぶ新たな選択肢となるOSMは、Microsoftが立ち上げたサービスメッシュのオープンソースプロジェクトだ。Kubernetesにサービスメッシュをデプロイするための、標準的でポータブルなAPIであるService Mesh Interface (SMI)を実装する。SMI仕様を通じてサービスを設定する場合には、クラスタ上で動作しているサービス実装が何であるかを気にする必要はない。

さらにOSMは、カナリアリリースやセキュアなサービス通信、アプリケーション情報など、標準的で基本的なメッシュサービスを備えている。今回のアルファリリースでは、トラフィック移行ポリシの設定、mTLSを通じたセキュアなサービス内通信、詳細なアクセス管理ポリシ、アプリケーションメトリクス、外部の証明書マネージャ、Envoyサイドカープロキシの自動挿入、といった機能が提供される。さらに、Istioなど他のプロジェクトと同じく、メッシュ内の他サービスとの通信にはEnvoyをサイドカープロキシとして使用する。ただし、OSMのプロジェクトリポジトリ内には、任意のxDS (サービスディスカバリプロトコル)互換のリバースプロキシが使用可能であることや、Envoyの高度な機能の利用に関する記述がある。

ユーザがPodを開発すると、OSMはmutate webhook経由でそのAPIをインターセプトし、Envoyサイドカープロキシを挿入する。そしてinitコンテナがiptableを使って、すべてのトラフィックがEnvoyを通過するように処理する。OSMはアクセス管理ルール、ルーティングポリシ、暗号化通信を処理し、デフォルトではGrafanaとZipkinで参照可能なメトリクスを収集する。コンポーネントアーキテクチャに関する個々の詳細情報はOSMプロジェクトのデザインページに掲載されているが、高レベルでは、次図のイメージがOSMのコンポーネントとインタラクションを表現している。

OSMを導入するためには、OSM CLIをローカルにインストールした上でosm installを実行すればよい。これにより、SMI仕様を含むすべてのコンポーネントがKubernetesクラスタ内にデプロイされる。

OSMコントローラが立ち上がれば、以下に示したTrafficSplitマニフェストのようにSMIオブジェクトをデプロイして、トラフィックをアプリケーションの2バージョンに分散することが可能になる。OSMには設定済のGrafanaダッシュボードも添付されているので、osm dashboardコマンドでポートフォワーディングを実行すれば、コントロールプレーンとデータプレーンのメトリクスを見ることができる。既存のKubernetesクラスタにOSMをインストールして使用する方法をデモしたビデオが公開されている

apiVersion: split.smi-spec.io/v1alpha2
kind: TrafficSplit
metadata:
  name: bookstore-split
  namespace: bookstore
spec:
  service: bookstore.bookstore # <root-service>.<namespace>
  backends:
  — service: bookstore-v1
    weight: 0
  — service: bookstore-v2
  weight: 100

OSMはまだ実運用で使用する段階には達していないが、開発状況をGitHubにあるプロジェクトのイシューページから追跡することができる。例えば、DAPRなど他のプロジェクトとのインテグレーションについては、まだ進行中である。さらにOSMチームでは、プロジェクトをCNCFのサンドボックスプロジェクトとして寄贈するプロセスを進めており、9月には次回の投票が行われる予定である。プロジェクトについて詳しく知るには、GitHubのサイトにアクセスしてコミュニティに参加する、イシューを開く、始めるための方法を学ぶ、といったことが可能だ。

この記事に星をつける

おすすめ度
スタイル

BT