1.5. InPlace ストラテジーについて


InPlace 更新ストラテジーでは、コントロールプレーンのリビジョンが一度に 1 つだけ実行されます。更新中、すべてのワークロードはすぐに新しいコントロールプレーンバージョンに接続されます。サイドカーとコントロールプレーン間の互換性を維持するために、一度にアップグレードできるマイナーバージョンは 1 つだけになっています。

InPlace ストラテジーは、既存の Istio コントロールプレーンをその場で更新して再起動します。このプロセス中に存在するコントロールプレーンのインスタンスは 1 つだけであるため、ワークロードを新しいコントロールプレーンインスタンスに移動する必要はありません。更新を完了するには、アプリケーションワークロードとゲートウェイを再起動して、Envoy プロキシーを更新します。

InPlace ストラテジーはシンプルで効率的ですが、コントロールプレーンの再起動中にワークロード Pod が更新、再起動、またはスケーリングされると、アプリケーショントラフィックが中断される可能性がわずかにあります。このリスクは、Istio コントロールプレーン (istiod) のレプリカを複数実行することで軽減できます。

1.5.1. InPlace ストラテジーを選択する

InPlace ストラテジーを選択するには、Istio リソースの spec.updateStrategy.type の値を InPlace に設定します。

InPlace 更新ストラテジーを選択する仕様例

kind: Istio
spec:
  updateStrategy:
    type: InPlace
Copy to Clipboard Toggle word wrap

この値は、リソースの作成時に設定することも、後で編集することもできます。作成後にリソースを編集する場合は、Istio コントロールプレーンを更新する前に変更を加えます。

トラフィックの中断を最小限に抑えるために Istio リソースを高可用性モードで実行するには、追加のプロパティー設定が必要です。詳細は、「Istio の高可用性について」を参照してください。

1.5.2. InPlace 更新ストラテジーによるインストール

Inplace 更新ストラテジーを使用して、Istio コントロールプレーン、Istio CNI、Bookinfo デモアプリケーションをインストールできます。

注記

クラスターにすでに Istio デプロイメントが含まれている場合は、このインストール手順をスキップできます。

InPlace ストラテジーを使用する場合、OpenShift Service Mesh Operator によって作成された IstioRevision リソースは必ず Istio リソースと同じ名前を使用します。

手順

  1. 次のコマンドを実行して、istio-system namespace を作成します。

    $ oc create ns istio-system
    Copy to Clipboard Toggle word wrap
  2. InPlace ストラテジーを使用してデプロイされたコントロールプレーンにワークロードを割り当てます。

    1. 次のコマンドを入力して namespace にラベルを付けることで、すべてのワークロードを自動的に含めるようにします。

      $ oc label namespace <namespace_name> istio.io/rev=<revision_name>
      Copy to Clipboard Toggle word wrap
    2. Deployment リソース内の Pod テンプレートを変更して、個々のワークロードにリビジョンラベルを適用します。以下に例を示します。

      apiVersion: apps/v1
      kind: Deployment
      spec:
        template:
          metadata:
            labels:
              istio.io/rev: <revision_name>
      Copy to Clipboard Toggle word wrap
  3. リビジョン名が default の場合は、次のコマンドを実行して、ワークロードをリビジョンに割り当てます。次の例では、namespace に istio-injection: enabled のラベルを付けます。

    $ oc label namespace <namespace_name> istio-injection=enabled
    Copy to Clipboard Toggle word wrap
  4. InPlace 更新ストラテジーを使用して、Istio コントロールプレーンをデプロイします。次の設定例では、istio-system namespace に default という名前の Istio リソースを作成します。

    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      namespace: istio-system
      version: v1.24.3
      updateStrategy:
        type: InPlace
    Copy to Clipboard Toggle word wrap
  5. 必要なバージョンの Istio CNI プラグインをインストールします。次の設定例では、istio-cni namespace に default という名前の IstioCNI リソースを作成します。

    apiVersion: sailoperator.io/v1
    kind: IstioCNI
    metadata:
      name: default
    spec:
      version: v1.24.3
      namespace: istio-cni
    Copy to Clipboard Toggle word wrap
  6. クラスターで実行するアプリケーションワークロードを設定します。次の例では、bookinfo namespace に info アプリケーションをデプロイします。

    1. 次のコマンドを実行して、info namespace を作成します。

      $ oc create ns info
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、info namespace にラベルを付け、サイドカーインジェクションを有効にします。

      $ oc label namespace info istio-injection=enabled
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、bookinfo namespace に info Pod をインストールします。

      $ oc apply -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/info/platform/kube/bookinfo.yaml -n bookinfo
      Copy to Clipboard Toggle word wrap
  7. 次のコマンドを実行して Istio リソースを確認します。

    $ oc get istio -n istio-system
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    default   1           1       1        default           Healthy   v1.24.3   115s
    Copy to Clipboard Toggle word wrap

    namespace ラベルと注入されたプロキシーの両方が IstioRevision リソースを参照するため、IN USE フィールドには 1 が表示されます。

1.5.3. InPlace ストラテジーによる Istio コントロールプレーンの更新

InPlace ストラテジーを使用して Istio を更新する場合、一度に 1 つだけ上のマイナーリリースにバージョンアップできます。複数上のマイナーバージョンに更新するには、バージョンを上げて、更新ごとにワークロードを再起動する必要があります。ワークロードを再起動すると、サイドカーとコントロールプレーンのバージョン間の互換性が確保されます。すべてのワークロードを再起動すると更新プロセスが完了します。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform にログインしている。
  • Red Hat OpenShift Service Mesh Operator をインストールし、Istio がデプロイされている。
  • ローカルマシンに istioctl をインストールした。
  • Istio コントロールプレーンを、InPlace 更新ストラテジーを使用するように設定した。この例では、default という名前の Istio リソースが istio-system namespace にデプロイされます。
  • 必要なバージョンの Istio CNI プラグインをインストールした。この例では、default という名前の IstioCNI リソースが istio-cni namespace にデプロイされます。
  • サイドカーインジェクションを有効にするために、info namespace にラベルを付けた。
  • クラスター内でアプリケーションワークロードが実行されている。この例では、info アプリケーションが bookinfo namespace にデプロイされます。

手順

  1. Istio リソースのバージョンを変更します。たとえば、Istio 1.24.4 に更新するには、次のコマンドを実行して spec.version フィールドを v1.24.4 に設定します。

    $ oc patch istio default --type='merge' -p '{"spec":{"version":"v1.24.4"}}'
    Copy to Clipboard Toggle word wrap

    Istio CR のバージョン更新

    kind: Istio
    spec:
      version: v1.24.4
      updateStrategy:
        type: InPlace
    Copy to Clipboard Toggle word wrap

    Service Mesh Operator は、コントロールプレーンの古いバージョンを置き換える新しいバージョンのコントロールプレーンをデプロイします。サイドカーは新しいコントロールプレーンに自動的に再接続します。

  2. 次のコマンドを実行して、コントロールプレーンの新しいバージョンの準備ができていることを確認します。

    $ oc get istio
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    default   1           1       1        default           Healthy   v1.24.4   4m50s
    Copy to Clipboard Toggle word wrap

  3. 新しいバージョンのサイドカーが注入されるように、次のコマンドを入力してアプリケーションのワークロードを再起動します。

    $ oc rollout restart deployment -n info
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを入力して、サイドカーの新しいバージョンが実行されていることを確認します。

    $ istioctl proxy-status
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                    CLUSTER        CDS                LDS                EDS                RDS                ECDS        ISTIOD                                     VERSION
    details-v1-7d775cb4f6-5t9zm.info                    Kubernetes     SYNCED (2m25s)     SYNCED (2m25s)     SYNCED (2m17s)     SYNCED (2m25s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    productpage-v1-7c4b6b857-mxrw6.info                 Kubernetes     SYNCED (2m35s)     SYNCED (2m35s)     SYNCED (2m17s)     SYNCED (2m35s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    ratings-v1-5b896f8544-r552l.info                    Kubernetes     SYNCED (2m21s)     SYNCED (2m21s)     SYNCED (2m17s)     SYNCED (2m21s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v1-746f96c9d4-9pw8k.info                    Kubernetes     SYNCED (2m17s)     SYNCED (2m17s)     SYNCED (2m17s)     SYNCED (2m17s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v2-97bdf5876-4mzx5.info                     Kubernetes     SYNCED (2m35s)     SYNCED (2m35s)     SYNCED (2m17s)     SYNCED (2m35s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v3-77d9db6844-djgjk.info                    Kubernetes     SYNCED (2m19s)     SYNCED (2m19s)     SYNCED (2m17s)     SYNCED (2m19s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    Copy to Clipboard Toggle word wrap

    VERSION 列は、新しいコントロールプレーンのバージョンと一致する必要があります。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat