Anthos Service Mesh と Istio について Envoy の詳細なバージョンを調べてみた
皆さん、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}