カナリア制御プレーンデプロイメントを使用したIstioの安全なアップグレード
制御プレーンの安全なカナリアデプロイメントを提供することで、Istioのアップグレードを簡素化します。
カナリアデプロイメントはIstioのコア機能です。ユーザーはIstioのトラフィック管理機能を利用して、新しいバージョンのアプリケーションのロールアウトを安全に制御し、Istioの豊富なテレメトリを使用してカナリアのパフォーマンスを比較しています。しかし、Istioのアップグレードに関しては、カナリアアップグレードを簡単に行う方法がなく、インプレースアップグレードの性質上、発見された問題や変更はメッシュ全体に一度に影響を与えます。
Istio 1.6では、Istioの新しいバージョンを安全にカナリアデプロイするための新しいアップグレードモデルがサポートされます。この新しいモデルでは、プロキシは使用する特定の制御プレーンに関連付けられます。これにより、ユーザーが明示的に選択するまで、新しいバージョンがリスクを軽減してクラスターにデプロイできます。これにより、ワークロードを新しい制御プレーンに徐々に移行させながら、ワークロード用のVirtualService
を使用するのと同じように、Istioテレメトリを使用して変更を監視し、問題を調査できます。独立した各制御プレーンは「リビジョン」と呼ばれ、istio.io/rev
ラベルが付けられています。
アップグレードについて
Istioのアップグレードは複雑なプロセスです。2つのバージョン間の移行期間中(大規模なクラスターでは時間がかかる場合があります)、プロキシと制御プレーンの間にはバージョンの違いがあります。以前のモデルでは、古い制御プレーンと新しい制御プレーンは同じサービスを使用し、トラフィックは2つの間でランダムに分散されるため、ユーザーは制御できません。ただし、新しいモデルでは、バージョン間の通信はありません。アップグレードがどのように変化するかを見てください。
構成
制御プレーンの選択は、サイドカーインジェクションwebhookに基づいて行われます。各制御プレーンは、名前空間に一致するistio.io/rev
ラベルを持つオブジェクトを選択するように構成されています。次に、アップグレードプロセスでは、そのリビジョンに固有の制御プレーンに接続するようにポッドを構成します。現在のモデルとは異なり、これは、指定されたプロキシがその有効期間中に同じリビジョンに接続することを意味します。これにより、プロキシが接続先の制御プレーンを切り替えるときに発生する可能性のある微妙な問題を回避できます。
新しいistio.io/rev
ラベルは、リビジョンを使用する場合、istio-injection=enabled
ラベルを置き換えます。たとえば、カナリアという名前のリビジョンがある場合、このリビジョンを使用する名前空間にはistio.io/rev=canaryというラベルを付けます。詳細については、アップグレードガイドを参照してください。