Operator による Istio 1.6 へのアップグレード

このページでは、オープンソースの Istio に移行する前に、Operator を使用して Istio 1.6 にアップグレードする方法について説明します。

バージョン 1.6 以降の Istio on Google Kubernetes Engine アドオンでは、インストールと構成に Istio Operator が使用されます。Istio Operator は Kubernetes のOperator パターンに従います。Operator を使用すると、Istio のインストールに Kubernetes カスタム リソース定義(CRD)を定義することで Istio を構成できます。そうすると Operator はコントローラを使用して、カスタム リソースに一致するようインストールを変更します。

クラスタを 1.17.17-gke.3100+、1.18.16-gke.1600+、または 1.19.8-gke.1600+ にアップグレードすると、Istio 1.6 Operator とコントロール プレーンが既存の 1.4.x Istio コントロール プレーンとともにインストールされます。アップグレードには、ユーザーの操作が必要です。また、リビジョンを使用して、ワークロードを新しいコントロール プレーンに移行します。リビジョン ベースのアップグレードでは、ワークロード上にラベルを付けて新しいコントロール プレーンをポイントし、ローリング再起動を実行することで、1.6 バージョンに移行できます。

Istio on Google Kubernetes Engine アドオンの 1.5 バージョンはリリースしません。バージョン 1.6 は、1.4.10 の後にリリースされるバージョンです。

Istio Operator のメリット

Operator によってインストールの構成の柔軟性が向上しています。1.6 より前のバージョンのアドオンでは、GKE アドオン マネージャーによって Istio マニフェストに変更が調整され、ほとんどの構成変更ができなくなります。Istio Operator にこの制限はありません。Operator は、インストール時に指定した IstioOperator カスタム リソース(CR)に基づいて Istio コントロール プレーンのインストール マニフェストを生成します。この CR はユーザーが完全に管理しているため、調整されることはありません。

Operator による Istio 1.6 へのアップグレード

Operator を使用して Istio 1.6 にアップグレードするには、このセクションの手順を行う必要があります。

Operator に移行するには、これらの手順を一度だけ行います。その後のアップグレードは、デュアル コントロール プレーンのアップグレード プロセスに従います。

  1. Istio 1.6(1.17.17-gke.3100+、1.18.16-gke.1600+、1.19.8-gke.1600+)を含む GKE バージョンを選択し、クラスタをアップグレードします。

    Istio 1.6 の Istio on Google Kubernetes Engine アドオンは、次の 2 つのバージョンの Istio をインストールします。

    • アドオン マネージャーによって制御される静的マニフェスト バージョン(クラスタをアップグレードした後にアクティブになります)。

    • Operator によって制御される 1.6 のバージョン(有効化されるまで非アクティブ)。非アクティブな 1.6 バージョンはどのプロキシにも接続されず、無視できるクラスタ リソースを消費します。

    インストールされた Istio のバージョンがインストール先の静的マニフェスト バージョンと異なる場合、クラスタをアップグレードすると、Istio のインプレース アップグレードも実行される可能性があります。たとえば、クラスタで現在 Istio 1.4.6-gke.0 が実行され、GKE クラスタ バージョン 1.17.7-gke.3100 を選択すると、アップグレードの一環として Istio コントロール プレーンが 1.4.10-gke.0(またはそれ以降)にアップグレードされます。

    クラスタのバージョンが最新であることを確認するには、次のコマンドを実行します。

    kubectl get ns istio-system --show-labels | if [[ $(grep EnsureExists) ]];
    then echo "Version is recent enough"; else echo "Need more recent version"; fi
    

    コンソールの出力に、クラスタのバージョンが最新かどうかが示されます。

  2. upgrade-14-16スクリプトをダウンロードする

    curl -LO https://storage.googleapis.com/csm-artifacts/asm/upgrade-14-16
    

    GitHub でスクリプトを表示できます。

  3. スクリプトを実行可能にします。

    chmod +x upgrade-14-16
    
  4. アップグレードするクラスタに kubectl が構成されていることを確認します。

    gcloud container clusters get-credentials cluster-name
    

    ここで、cluster-name はクラスタ名です。

  5. スクリプトを実行します。

    ./upgrade-14-16
    

    このスクリプトは、単一クラスタの移行プロセスをガイドします。

  6. 別のクラスタを移行するには、--reset フラグを指定してツールを実行します。

    ./upgrade-14-16 --reset
    

    その後、ステップ 4 と 5 を繰り返します。