第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は必要なバージョンを表します。たとえば、CNI プラグインバージョン1.27.3をインストールするには、v1.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 つ上のマイナーバージョンを実行しているコントロールプレーンと互換性があります。