第4章 Istio CNI の更新
Istio Container Network Interface (CNI)の更新手順を確認してください。CNI プラグインは、アップグレード中に OpenShift Service Mesh コントロールプレーンとの互換性を維持するようにします。
4.1. Istio CNI 更新プロセスについて リンクのコピーリンクがクリップボードにコピーされました!
Istio Container Network Interface (CNI)更新プロセスは Inplace 更新を使用します。IstioCNI リソースが変更されると、デーモンセットは既存の istio-cni-node Pod を指定されたバージョンの CNI プラグインに自動的に置き換えます。
バージョンの更新を管理するには、次のフィールドを使用できます。
spec.version-
インストールする CNI プラグインのバージョンを定義します。
vX.Y.Z形式で値を指定します。ここで、X.Y.Zは必要なバージョンを表します。たとえば、v1.27.3を使用して、CNI プラグインバージョン1.27.3をインストールします。
CNI プラグインを更新するには、spec.version フィールドをターゲットバージョンで変更します。IstioCNI リソースには、istio-cni チャートから設定オプションを公開する values フィールドも含まれています。
アンビエントモードでは、Istio CNI コンポーネントはトラフィックのリダイレクトを管理します。RevisionBased アップグレード時に、コンポーネントはコントロールプレーンの古いバージョンと互換性を維持し、移行中の旧コントロールプレーンと新規コントロールプレーンの両方についてトラフィックのリダイレクトを引き続き管理します。
Istio CNI は、同じマイナーバージョンまたは 1 つのマイナーバージョンの上位を実行するコントロールプレーンと互換性があります。
Istio コントロールプレーンを更新したら、Istio CNI コンポーネントを更新します。OpenShift Service Mesh Operator は、既存のバージョンの CNI プラグインを置き換えて、新しいバージョンの CNI プラグインをデプロイします。istio-cni-node DaemonSet Pod はローリング更新ストラテジーを使用して更新され、更新プロセス全体時にトラフィックのリダイレクトルールがアクティブな状態に保たれます。
4.1.1. Istio CNI リソースバージョンの更新 リンクのコピーリンクがクリップボードにコピーされました!
リソースのバージョンを変更して、Istio Container Network Interface (CNI)リソースバージョンを更新できます。その後、Service Mesh Operator は、古いバージョンの CNI プラグインを置き換える新しいバージョンの CNI プラグインをデプロイします。istio-cni-node Pod は新しい CNI プラグインに自動的に再接続します。
前提条件
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform にログインしている。 - Red Hat OpenShift Service Mesh Operator をインストールし、Istio をデプロイしている。
-
必要なバージョンで Istio CNI プラグインをインストールしている。次の例では、
defaultという名前のIstioCNIリソースがistio-cninamespace にデプロイされています。 -
Istio コントロールプレーンを必要なバージョンに更新するか(
Inplaceストラテジーの場合)、新規コントロールプレーンのリビジョンを作成している(RevisionBasedストラテジーの場合)。
手順
Istioリソースのバージョンを変更します。たとえば、Istio1.27.3 に更新するには、以下のコマンドを実行してspec.versionフィールドを1.27.3 に設定します。oc patch istiocni default -n istio-cni --type='merge' -p '{"spec":{"version":"v1.27.3"}}'$ oc patch istiocni default -n istio-cni --type='merge' -p '{"spec":{"version":"v1.27.3"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、更新後に
IstioCNIDaemonSet がReadyステータスに到達するまで待機します。oc wait --for=condition=Ready istiocnis/default --timeout=5m
$ oc wait --for=condition=Ready istiocnis/default --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、CNI プラグインの新しいバージョンの準備ができていることを確認します。
oc get istiocni default
$ oc get istiocni defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
NAME READY STATUS VERSION AGE default True Healthy v{istio-latest} 7d1hNAME READY STATUS VERSION AGE default True Healthy v{istio-latest} 7d1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod のステータスを確認します。
oc get pods -n istio-cni
$ oc get pods -n istio-cniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
NAME READY STATUS RESTARTS AGE istio-cni-node-abc12 1/1 Running 0 3m istio-cni-node-def34 1/1 Running 0 3m istio-cni-node-ghi56 1/1 Running 0 3m
NAME READY STATUS RESTARTS AGE istio-cni-node-abc12 1/1 Running 0 3m istio-cni-node-def34 1/1 Running 0 3m istio-cni-node-ghi56 1/1 Running 0 3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
RevisionBased ストラテジーを使用する場合、Istio CNI コンポーネントは多くのコントロールプレーンのバージョンと互換性があります。移行中も、古いコントロールプレーンと新しいコントロールプレーンの両方に対してトラフィックのリダイレクトを管理します。Istio CNI は、同じマイナーバージョンまたは 1 つのマイナーバージョンの上位を実行するコントロールプレーンと互換性があります。