1.8から1.10への直接アップグレードのサポート開始のお知らせ

よりスムーズなアップグレードプロセスに向けて。

2021年5月24日 | Mitch Connors - Google、Sam Naser - Google

サービスメッシュテクノロジーが最先端技術から安定したインフラストラクチャへと移行するにつれて、多くのユーザーがサービスメッシュのアップグレード頻度を下げたいという要望を示しています。新しいマイナーリリースの検証には多くの時間が必要となるためです。特に、新しいリリースに追従していないユーザーにとっては、Istioが複数のマイナーバージョンにわたるアップグレードをサポートしていなかったため、アップグレードが困難でした。`1.6.x`から`1.8.x`にアップグレードするには、まず`1.7.x`にアップグレードしてから`1.8.x`にアップグレードする必要がありました。

Istio 1.10のリリースに伴い、`1.9.x`にアップグレードすることなく、Istio `1.8.x`から`1.10.x`への直接アップグレードをアルファレベルでサポートすることを発表します。これは、2021年のテーマである「Day 2オペレーションの改善」に沿って、Istio運用における負担を軽減することを目的としています。

1.8から1.10へのアップグレード

直接アップグレードには、カナリアアップグレード方式を使用することをお勧めします。これにより、新しいバージョンにワークロードを切り替える前に、コントロールプレーンの機能を確認できます。また、このガイドではリビジョンタグを使用します。これは1.10で導入されたカナリアアップグレードの改善であり、アップグレード中に名前空間のラベルを変更する必要がありません。

まず、バージョン`1.10`以降の`istioctl`を使用して、既存の`1.8`リビジョンを指すリビジョンタグ`stable`を作成します。以降、このリビジョンを`1-8-5`と仮定します。

$ istioctl x revision tag set stable --revision 1-8-5

1.8のインストールに関連付けられたリビジョンがない場合は、次のコマンドでこのリビジョンタグを作成できます。

$ istioctl x revision tag set stable --revision default

次に、以前`istio-injection=enabled`または`istio.io/rev=<REVISION>`でラベル付けされていた名前空間を`istio.io/rev=stable`で再ラベル付けします。Istio 1.10.0リリースをダウンロードし、リビジョン付きで新しいコントロールプレーンをインストールします。

$ istioctl install --revision 1-10-0 -y

次に、`1.10`リビジョンが正しく起動し、正常に動作していることを確認します。新しいリビジョンの安定性に満足したら、リビジョンタグを新しいリビジョンに設定できます。

$ istioctl x revision tag set stable --revision 1-10-0 --overwrite

リビジョンタグ`stable`が新しいリビジョンを指していることを確認します。

$ istioctl x revision tag list
TAG    REVISION NAMESPACES
stable 1-10-0        ...

既存のワークロードを新しい1.10リビジョンに移行する準備ができたら、サイドカープロキシが新しいコントロールプレーンを使用するように、ワークロードを再起動する必要があります。名前空間を1つずつ処理し、ワークロードを新しいバージョンにロールアウトできます。

$ kubectl rollout restart deployments -n …

ワークロードを新しいIstioバージョンにロールアウトした後に問題が発生した場合でも心配ありません!カナリアアップグレードを使用しているため、古いコントロールプレーンはまだ実行されており、簡単に切り替えることができます。

$ istioctl x revision tag set prod --revision 1-8-5

その後、別のロールアウトをトリガーすると、ワークロードは古いバージョンに戻ります。

直接アップグレードに関するご経験をお聞かせいただければ幸いです。また、今後、この機能の改善と拡張に努めてまいります。

この投稿を共有する