Google Cloud の Knative serving をフリートにアップグレードする

このガイドでは、Google Cloud 上の Knative serving の既存のインストールを移行してフリートと Cloud Service Mesh を使用できるようにします。

Knative serving の以前の無料トライアル バージョン(GKE アドオンとも呼ばれます)には、Istio 1.4 の簡易バージョンが組み込まれていますが、これは Anthos 1.8 以降ではサポートされません。

フリートと Cloud Service Mesh を使用するように Knative serving のインストールをアップグレードすると、プロダクトのアップグレードと管理の独立性が向上し、GKE Enterprise 機能全体の統合も改善されます。詳しくは、新機能と変更点をご覧ください。

インストールを移行するには、次の 2 つの方法があります。

  • 推奨のプロセスは、以前のバージョンの Knative serving がインストールされているクラスタ(以下、GKE アドオン)から、Knative serving の新しいフリート インストールをインストールして構成した新しいクラスタにワークロードを移行することです。このプロセスは比較的単純であり、また理想的ですが、ワークロードがトラフィックを処理する場合、新しく作成されたクラスタに移行するとダウンタイムが発生します。この移行パスを実行するには、新しいクラスタで次のことを行います。

    1. フリート コンポーネントとして Knative serving をインストールします
    2. 新しいインストールにサービスをデプロイします。

      たとえば、既存のサービスのリビジョンをデプロイするの手順に沿って、各サービスの YAML 構成ファイルを個別にダウンロードし、YAML ファイルを Knative serving のフリート インストールにある新しいクラスタにデプロイします。

      1. 古いインストールでは、次のコマンドを実行して YAML 構成ファイル(service.yaml など)をダウンロードできます。

        gcloud run services describe SERVICE --format export > service.yaml

        SERVICE は、Knative serving サービスの名前に置き換えます。

      2. 新しいフリート コンポーネントをインストールすると、次のコマンドを実行して同じ service.yaml をデプロイできます。

        gcloud run deploy service.yaml --cluster CLUSTER_NAME --cluster-location CLUSTER_LOCATION --project PROJECT_ID

        次のように置き換えます。

        • CLUSTER_NAME: Knative serving の新しいフリート コンポーネント インストールに含まれるクラスタの名前。

        • CLUSTER_LOCATION: Knative serving の新しいフリート コンポーネント インストールに含まれるクラスタのゾーンまたはリージョン

        • PROJECT_ID: Knative serving の新しいフリート コンポーネント インストールが存在する Google Cloud プロジェクトの ID。

  • 別の方法: 新しいクラスタを作成できず、Knative serving のアクティブなインストールを移行する必要がある場合は、このガイドの手順に沿って操作します。

    • 以前の GKE アドオンと Istio リソースを削除します。
    • 新しいフリート リソースをインストールします。
    • Cloud Service Mesh に移行してからトラフィックを移行します。
    • 古いリソースや未使用のリソースをすべてクリーンアップします。

以下では、GKE Enterprise 1.8 以降の要件を満たすために、Knative serving の既存のアクティブなインストール(とすべてのワークロード)をアップグレードする別の手順について説明します。

始める前に

  • このアップグレード プロセスは、以前に GKE アドオンとして Knative serving をインストールした Google Kubernetes Engine クラスタでのみ実施してください。

    GKE アドオンがインストールされているかどうかを確認します。

    Knative serving のインストールが GKE アドオンであるかどうかを確認するには、次のコマンドを実行します。

    gcloud container clusters describe \
    CLUSTER_NAME \
    --region CLUSTER_LOCATION \
    --project PROJECT_ID --format='get(addonsConfig.cloudRunConfig)'
    

    次のように置き換えます。

    • CLUSTER_NAME: 使用するクラスタの名前。
    • CLUSTER_LOCATION: クラスタが配置されているロケーション
    • PROJECT_ID: 実際の Google Cloud プロジェクトの ID。

    結果:

    • GKE アドオンはインストールされていない:
      • アドオンがインストールされていない場合、ターミナルにはなにも返されません。
      • アドオンがすでにアンインストールされている場合は、disabled=true が返されます。
    • GKE アドオンがインストールされている: アドオンがクラスタにインストールされている場合は、アドオンの構成の詳細が返されます。例: loadBalancerType=LOAD_BALANCER_TYPE_EXTERNAL
    例:
    次の例では、Knative serving が GKE アドオンによって my-addon-cluster クラスタにインストールされ、外部トラフィックを処理するように構成されていることを示します。
    gcloud container clusters describe my-addon-cluster \
    --region us-central1-c --project my-gcp-project \
    --format='get(addonsConfig.cloudRunConfig)'
    

    レスポンス:

    loadBalancerType=LOAD_BALANCER_TYPE_EXTERNAL
    

  • クラスタ、フリート、Cloud Service Mesh の要件を満たすには、Google Cloud プロジェクトに十分な権限が必要です。

    • Google Cloud プロジェクトのオーナーロールが付与されている場合は、クラスタの作成、Knative serving のインストールと構成に必要な権限よりも多くの権限が付与されています。

    • Cloud Service Mesh の権限要件でも、Knative serving のインストールと構成に関するすべての権限要件を満たしている必要があります。

    • 他のロールの使用と最小要件:

      組織によっては、次の事前定義ロールを組み合わせて権限要件を満たすこともできます。

  • Cloud Service Mesh バージョン 1.18 のみがサポートされています。

Knative serving のアップグレードとワークロードの移行

Knative serving のアップグレードとワークロードの移行を簡単に行うため、スクリプトを使用します。このスクリプトでは、プロセスを通じて求められた入力を行うだけで、ほとんどのステップが自動的に実行されます。

  1. アップグレードを準備し、環境を設定する

  2. GKE アドオンをアンインストールする

  3. Cloud Service Mesh に移行する

  4. フリート コンポーネントをインストールする

  5. ワークロード トラフィックを Cloud Service Mesh に移行する

  6. アップグレードを完了させ、クリーンアップ タスクを行う