Anthos Service Mesh と Istio について Envoy の詳細なバージョンを調べてみた

Kozzy Hasebe
google-cloud-jp
Published in
Feb 26, 2021
Anthos Service Mesh and Istio

皆さん、Anthos Service Mesh は活用していますか?

Anthos Service Mesh (ASM) は Google Cloud が提供しているサービスメッシュのプロダクトです。そして公式サイトでは下記のように書いてあります。

Anthos Service Mesh は、強力で高度な構成が可能なオープンソース サービス メッシュ プラットフォームである Istio を利用しています。

そうすると、ある疑問が湧いてきます。

Istio を利用しているということですが、ASM と Istio はどの程度似通っているのでしょうか??

そこで今回は現在サポート内の ASM の各バージョンについて、Istio との関連を調べてみました。

調査対象のコンポーネント

Anthos Service Mesh / Istio では下記 2 つ重要なコンポーネントがあります。

  • Istiod(pilot)
    サービスディスカバリ、設定管理などを司るサービスメッシュのコントロールプレーンの 1 機能
  • Envoy
    Istiod から設定情報を受け取り、実際にサービストラフィックをコントロール(プロキシ)するコンポーネント

Istiod について、ASM では Istio のバージョンごとに末尾に -asm.x(x は ASM のパッチバージョン)とついたバージョンが提供されています。例えば、Istiod(pilot)1.7.3 に対応する ASM の最新版は 2021 年 3月 24日現在、 1.7.3-asm.6 というバージョンがでています。

そこで今回は Envoy を中心に調べてみます。

調査結果(2021 年 3月 24日時点)

だいぶ横長になってしまいましたが、各列のそれぞれの項目は以下の意味を持っています。

  • istiod/pilot
    Source revision/Release number/Build status/Golang version
  • envoy
    Source revision/Release number/Build status/Build mode/TLS library

まとめ

この結果から下記のことが分かりました。

  • Envoy は 1.5.10-asm.2 を除いて、同じリリースバージョンが使われている。しかしソースコードレベルでは同一ではない場合がある(Source revision が異なっている)。
  • Istiod/pilot は同じリリースバージョンが使われている。ソースコードレベルでは異なる。(Istio と ASM では異なる構成となっているため、当たり前のことですね)

つまり Istio から ASM に移行する場合は、Envoy についてリリースバージョンが同一なので機能差異は無いと考えて良さそうです。しかしソースコードは異なる場合があるため、パフォーマンスに関するテストは再度実施しておくと安心です。

参考

今回の結果は下記の手順で取得しています。

  • istiod/pilot
istioctl version --short=false
kubectl exec -it [istio-ingressgatewayのpod] -n istio-system -- pilot-agent request GET server_info --log_as_json | jq {version}

--

--

Kozzy Hasebe
google-cloud-jp

Solutions Architect at Google Cloud Japan. Opinions stated here are my own.