1.3. RevisionBased ストラテジーについて
通常、RevisionBased
ストラテジーを使用して実行される更新では、コントロールプレーンの 2 つのリビジョンが実行されます。この機能により、古いコントロールプレーンから新しいコントロールプレーンにワークロードを徐々に移行し、カナリアアップグレードが可能になります。RevisionBased
ストラテジーでは、複数のマイナーバージョンによる更新も可能になります。
1.3.1. RevisionBased ストラテジーの選択
RevisionBased
ストラテジーを使用して Istio をデプロイするには、次の spec.updateStrategy 値
を使用して Istio リソースを作成します。
RevisionBased ストラテジーを選択する仕様の例
kind: Istio spec: version: 1.20.0 updateStrategy: RevisionBased
Istio リソースのストラテジーを選択すると、Operator は <istio resource name>-<version> という名前の新しい IstioRevision
リソースを作成します。
1.3.2. RevisionBased ストラテジーを使用したワークロードのコントロールプレーンへのアタッチ
RevisionBased
ストラテジーを使用してデプロイされたコントロールプレーンにワークロードを割り当てるには、istio.io/rev namespace
ラベルを IstioRevision
の名前に設定する必要があります。または、ラベルをワークロード Pod に適用できます。
1.3.3. RevisionBased 更新の実行
RevisionBased
ストラテジーを使用して Istio を更新すると、既存のサイドカーがコントロールプレーンの新しいリビジョンに自動的にアタッチされないため、一度に複数のマイナーバージョン分、更新される可能性があります。代わりに、ワークロードを新しいコントロールプレーンに手動で移動する必要があります。
前提条件
- Red Hat OpenShift Service Mesh Operator をインストールし、Istio がデプロイされている。
手順
Istio リソースのバージョンを変更します。
kind: Istio spec: version: 1.20.2 updateStrategy: type: RevisionBased
Service Mesh Operator は、コントロールプレーンの古いバージョンと並行して、コントロールプレーンの新しいバージョンをデプロイします。サイドカーは、古いコントロールプレーンに接続されたままになります。
コントロールプレーンの両方のリビジョンが実行中で、準備ができていることを確認します。
$ oc get istiorevisions
-
アプリケーションの namespace または Pod の
istio.io/rev
ラベルを新しいコントロールプレーンのリビジョン名に更新して、ワークロードを新しいコントロールプレーンに移動します。 新しいバージョンのサイドカーが挿入されるように、アプリケーションワークロードを再起動します。
$ oc rollout restart <deployment>