Service Mesh (ASM) は、サポートされている Istio のメジャーバージョンリストを約 3 か月ごとに更新し、セキュリティ修正と新機能を提供する定期的なパッチバージョンも提供しています。期限切れの ASM インスタンスは、セキュリティパッチ、バグ修正、または完全なテクニカルサポートを受けられなくなります。セキュリティリスクを軽減し、最新機能にアクセスするために、積極的にアップグレードしてください。
ASM は、次の 2 つのアップグレード方法をサポートしています。
インプレースアップグレード -- コントロールプレーンを次の隣接バージョンにアップグレードします。コントロールプレーンのアップグレード後、データプレーンのゲートウェイを手動でアップグレードし、ワークロードを再起動してサイドカーを再インジェクションします。
カナリアリリース -- 2 つのコントロールプレーンバージョンを並行して実行し、ロールバックのサポートにより段階的なワークロード移行を可能にします。最大 1 つのマイナーバージョンをスキップできます。
前提条件
開始する前に、以下があることを確認してください。
アップグレードシーケンス
方法に関係なく、すべての ASM アップグレードは次のシーケンスに従います。
ターゲットバージョンと方法の選択 -- 注意事項とバージョン固有の変更点を確認します。
アップグレード事前チェックの実行 -- ASM は、既知の非互換性がないかインスタンスを検証します。
コントロールプレーンのアップグレード -- 新しいバージョンをコントロールプレーンコンポーネントに適用します。
データプレーンのアップグレード -- ゲートウェイをアップグレードし、ワークロードを再起動して、新しいバージョンのサイドカーを再インジェクションします。
検証 -- ワークロードが期待されるサイドカーバージョンで実行されていることを確認します。
基本概念
| 用語 | 説明 |
|---|---|
| コントロールプレーン | サービスディスカバリ、構成管理、ポリシー決定、および証明書管理を管理します。ASM では、コントロールプレーンは主に Istio-Pilot (サービスディスカバリとトラフィック管理) や Istio-Citadel (証明書管理) などの Istio コンポーネントで構成されています。 |
| データプレーン | アプリケーションコンテナーとともにサイドカーとしてデプロイされる Envoy プロキシのセットです。これらのプロキシはトラフィックをインターセプトし、コントロールプレーンからのルーティングとポリシー決定を適用し、レイテンシー、トラフィック、エラー率などのテレメトリーデータをレポートします。 |
| インプレースアップグレード | コントロールプレーンとデータプレーンを順番にアップグレードします。隣接バージョンへのアップグレードのみがサポートされています。ロールバックはサポートされていません。 |
| カナリアリリース | 新しいコントロールプレーンバージョンを現在のバージョンと並行してデプロイします。ワークロードは名前空間ラベルによって段階的に移行されます。プロセス中にロールバックがサポートされます。 |
バージョン形式
ASM バージョンは次の形式に従います。
<major>.<minor>.<patch>.<asm-patch>[-<sequence>-aliyun]例: v1.18.0.158-gc6cf0b9c-aliyun (Enterprise Edition)
| フィールド | 説明 | 例 |
|---|---|---|
major.minor.patch | オープンソース Istio バージョン | 1.18.0 |
asm-patch | ASM 固有のパッチ番号 | 158 |
sequence | Git コミットハッシュ | gc6cf0b9c |
アップグレード方法の選択
| 考慮事項 | インプレースアップグレード | カナリアリリース |
|---|---|---|
| バージョンスキップ | 隣接バージョンのみ | 最大 1 つのマイナーバージョン |
| ロールバック | サポートされていません | アップグレード中にサポートされます |
| 適用可能なエディション | すべてのエディション | Enterprise Edition または Ultimate Edition、バージョン 1.16.4.91 以降 |
| 最適な用途 | パッチレベルのアップグレード (asm-patch の変更のみ) | 移行前検証が必要なマイナーバージョンアップグレード |
バージョン 1.16.4.91 より前の ASM インスタンスの場合、インプレースアップグレードのみがサポートされます。
アップグレードパスの例
次の表は、v1.16 から v1.18 へのパスの例を示しています。ご利用の環境に基づいてパスを選択してください。
| 初期バージョン | ターゲットバージョン | 利用可能なメソッド |
|---|---|---|
| 1.16.4.93 | 1.17.2.42 | インプレースアップグレードまたはカナリアリリース |
| 1.17.2.42 | 1.18.0.158 | インプレースアップグレードまたはカナリアリリース |
| 1.16.4.93 | 1.18.0.158 | カナリアリリースのみ |
利用可能なインターフェイス
| インターフェイス | サポートされているメソッド |
|---|---|
| ASM コンソール | インプレースアップグレード、カナリアリリース |
| API | インプレースアップグレードのみ (UpgradeMeshVersion, DescribeUpgradeVersion, DescribeServiceMeshUpgradeStatus) |
注意事項
オフピーク時間中にスケジュールしてください。 Pod を再起動してサイドカーを再インジェクションすると、一時的なサービス中断が発生します。データプレーンのアップグレードウィンドウを適切に計画してください。
アップグレード中にトラフィックルールを変更しないでください。 コントロールプレーンのアップグレードが進行中の間は、段階的リリースやトラフィックルールの変更を避けてください。
ゲートウェイのアップグレードはローリングリスタートをトリガーします。 ASM ゲートウェイを手動でアップグレードすると、その Pod が順次再起動されます。
事前チェックの適用範囲は限られています。 ASM はアップグレード前の互換性チェックを実行しますが、すべての互換性のない構成や API の変更が検出されるわけではありません。アップグレードする前に、ターゲットバージョンのリリースノートを確認してください。
期限切れインスタンスの強制アップグレード。 ASM は、期限切れのインスタンスをスケジュールされた時間にサポートされている最も古いバージョンに強制的にアップグレードする権利を留保します。タイミングを制御するために、積極的にアップグレードしてください。
パッチバージョンの自動ホットアップデート。 asm-patch 番号のみが変更される場合 (例: v1.18.0.123 から v1.18.0.146)、ASM は通知なしにホットアップデートを自動的に適用します。ホットアップデート中、データプレーンのゲートウェイとサイドカープロキシのバージョンは変更されません。
ASM インスタンスのアップグレード (インプレース)
操作手順
ASM コンソールにログインします。 左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理]を選択します。
ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[ASM インスタンス] > [アップグレード管理] を選択します。
[アップグレード管理] ページで、[インプレースアップグレード] タブをクリックし、次に [アップグレード事前チェックを実行] をクリックします。[重要] ダイアログボックスで、[OK] をクリックします。
事前チェックに合格したら、[スペックアップ] をクリックします。[重要] ダイアログボックスで、[OK] をクリックします。コントロールプレーンのアップグレードが開始されます。完了するまでお待ちください。
「[データプレーン]」セクションで、「[アップグレード]」列を見つけ、対象のゲートウェイを選択して、「[ゲートウェイのアップグレード]」をクリックします。「[重要]」ダイアログボックスで、「[OK]」をクリックします。ゲートウェイのPodはローリング方式で再起動されます。
ワークロードを再起動して、新しいバージョンのサイドカーを再インジェクションします。詳細については、「ワークロードの再デプロイ」をご参照ください。
ASM インスタンスのアップグレード (カナリアリリース)
カナリアリリースでは、2 つのコントロールプレーンバージョンを同時に実行し、ワークロードを段階的に移行できます。これにより、完全にコミットする前に新しいバージョンを検証できるため、本番環境にとってより安全なアップグレードパスが提供されます。
カナリアリリースの完全な手順については、「カナリアリリースを使用してアップグレードの安定性を向上させる」をご参照ください。
カナリアリリース中のサイドカーインジェクションラベル
カナリアリリースがアクティブな場合、2 つのコントロールプレーンバージョンが共存します。名前空間ラベルを使用して、どのサイドカーバージョンをワークロードにインジェクションするかを制御します。
現在のバージョンラベル:
| ラベル | 効果 |
|---|---|
istio-injection=enabled | 現在の (安定版) バージョンのサイドカーをインジェクションします |
istio.io/rev=stable | 現在のバージョンのサイドカーをインジェクションします |
istio.io/rev=<x-y-z> (例: 1-17-2) | 指定されたバージョンのサイドカーをインジェクションします |
カナリアバージョンラベル:
| ラベル | 効果 |
|---|---|
istio.io/rev=canary | カナリアバージョンのサイドカーをインジェクションします |
istio.io/rev=<x-y-z> (例: 1-18-0) | 指定されたバージョンのサイドカーをインジェクションします (推奨) |
istio-injection と istio.io/rev の両方のラベルを同じ名前空間に追加しないでください。これらのラベルは相互排他的です。
例: 1.17.2.42 から 1.18.0 バージョンにアップグレードするには、テスト名前空間にカナリアサイドカーを使用するようにラベルを付けます。
kubectl label namespace <test-namespace> istio.io/rev=1-18-0 --overwriteテスト名前空間のワークロードが正常であることを確認した後、残りの名前空間にラベルを適用します。
よくある質問
インプレースアップグレードはデータプレーンのトラフィックに影響しますか?
いいえ。インプレースアップグレードはコントロールプレーンのみに影響します。既存のサイドカープロキシとゲートウェイは、手動でアップグレードするまで通常通りトラフィックを処理し続けます。
ターゲットバージョンに到達するには、いくつのアップグレード手順が必要ですか?
インプレースアップグレードは隣接バージョンへのジャンプのみをサポートしているため、2 つのマイナーリリース先のバージョンに到達するには、2 回の個別のアップグレードが必要です。カナリアリリースは 1 つのマイナーバージョンをスキップすることをサポートしており、これにより合計手順を減らすことができます。ルートを計画するには、上記のアップグレードパス表をご参照ください。
ASM のアップグレード後、関連する ACK クラスターをアップグレードする必要がありますか?
ACK クラスターのアップグレードが必要かどうかを判断するには、「ASM と ACK のバージョン互換性」を確認してください。必要な場合は、「クラスターの手動アップグレード」をご参照ください。
カナリアバージョンが正式になる前にインジェクションされたサイドカーをアップグレードするにはどうすればよいですか?
[アップグレード管理] ページで、[カナリー アップグレード] タブをクリックし、次に [データ プレーン] タブをクリックします。[アップグレード対象のワークロード] セクションで、対象のワークロードの横にある [ローリング アップグレード] をクリックして、そのデプロイメントのローリング更新を開始します。
関連ドキュメント
ASM メッシュ診断の使用 -- コンポーネントバージョン、サービスポート、仮想サービス競合などの潜在的な問題を診断します。
クラスター診断の操作 -- ノード、Pod、サービス、およびネットワークの問題に対して AIOps ベースの診断を使用します。
リリースノート -- 最新の ASM 機能と変更点を確認します。