環境の設定とアップグレードの準備

以前の Knative serving のインストールをアップグレードするための準備を行い、コマンドライン環境の設定、環境変数の作成、移行スクリプトのダウンロードを行って、ワークロードを移行します。

始める前に

  • アップグレードの前に、要件を満たしていることを確認する必要があります。

  • デフォルトでは、Cloud Shell には最新バージョンの gcloud コマンドと kubectl コマンドが含まれています。ローカルマシンのコマンドライン環境を使用する場合は、次の最小要件を満たす必要があります。

    • gcloud バージョン 346.0.0 以降。
    • kubectl クライアント バージョン 1.21 以降

    コマンドライン ツールの設定の詳細を確認する

  • このページの準備手順は、アップグレードと移行のプロセス全体で必要です。

    重要: プロセスで使用されるすべてのコマンドは、以下で設定する環境変数に依存します。たとえば、Cloud Shell を閉じた場合やセッションがタイムアウトした場合は、必要な環境変数がリセットされるようにする必要があります。

環境を設定する

  1. Cloud Shell を使用するには、Google Cloud コンソールで Cloud Shell を開きます。

    Cloud Shell をアクティブにする

    重要: Cloud Shell には使用上限があり、タイムアウトする可能性があります。セッションがタイムアウトした場合は、必要な環境変数をリセットする必要があります。

  2. 次の環境変数を作成します。

    1. Google Cloud プロジェクトとクラスタの詳細用の変数を設定します。

      export PROJECT_ID=PROJECT_ID
      export CLUSTER_NAME=CLUSTER_NAME
      export CLUSTER_LOCATION=CLUSTER_LOCATION
      

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

      • PROJECT_ID: 実際の Google Cloud プロジェクトの ID。
      • CLUSTER_NAME: クラスタの ID またはクラスタの完全修飾識別子。
      • CLUSTER_LOCATION: クラスタが配置されているリージョンまたはゾーン
    2. 構成に応じて、クラスタでトラフィックを処理している Ingress ゲートウェイを特定する必要があります。実際に構成されてトラフィックを処理している Istio のバージョンを特定することは重要です。

      • バンドルされた Istio のバージョンを使用する場合は、サービス名が gke-system Namespace で istio-ingress であることを確認します。

        kubectl get svc istio-ingress -n gke-system
        

        結果: 構成の詳細情報が返されます。

      • Istio アドオンをインストールした場合は、IP を取得して、どの Ingress ゲートウェイが構成され、実際にトラフィックを処理しているかを特定する必要があります。サービスのアドレスを確認し、ドメインで構成されているものを特定します。

        1. 各 Ingress サービスの EXTERNAL-IP アドレスを取得します。

          Istio のバンドル バージョン(istio-ingress)と Istio アドオン(istio-ingressgateway)の両方の Ingress サービスの構成の詳細情報を取得するには、次のコマンドを実行します。

          kubectl get svc istio-ingress -n gke-system
          kubectl get svc istio-ingressgateway -n istio-system
          

          出力例

          各サービスの EXTERNAL-IP の値をメモします。

           NAME                 TYPE         CLUSTER-IP  EXTERNAL-IP    PORT(S)                                     AGE
           istio-ingress        LoadBalancer 11.11.1.111 12.345.678.910 15020:31265/TCP,80:30059/TCP,443:32004/TCP  8d
          
           NAME                 TYPE         CLUSTER-IP  EXTERNAL-IP    PORT(S)                                                                     AGE
           istio-ingressgateway LoadBalancer 22.22.2.222 10.987.654.321 15021:32747/TCP,80:30695/TCP,443:32695/TCP,15012:32369/TCP,15443:30909/TCP  88d
          
        2. カスタム ドメインの DNS レコードでトラフィックを処理するように構成されている外部 IP アドレスを特定します。

          1. Knative serving の [ドメイン マッピング] ページに移動します。

            [ドメイン マッピング] に移動

          2. サービスの右側にある縦に並んだ 3 点のアイコンをクリックして [DNS レコード] をクリックし、すべての DNS レコードを表示します。

            DNS レコードを選択

            上記の例を使用すると、DNS レコード構成が istio-ingressgateway サービスの 10.987.654.321 IP アドレスに設定されている場合、Istio アドオン Ingress ゲートウェイが使用されてトラフィックを処理しています。

    3. クラスタのトラフィックを提供する Ingress サービスの名前と Namespace の変数を設定します。

      export INGRESS_NAME=INGRESS_NAME
      export INGRESS_NAMESPACE=INGRESS_NAMESPACE
      

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

      • INGRESS_NAME: 前のステップで特定した Ingress サービスの名前。

      • INGRESS_NAMESPACE: 前のステップで特定した Ingress サービスの Namespace。

  3. Google Cloud CLI を構成します。

    gcloud config set project ${PROJECT_ID}
    gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION}
    
  4. 限定公開クラスタの場合:

    • 移行スクリプトを実行するクライアントからすでに限定公開クラスタにアクセスできる場合は、次のステップに進みます。

    • 限定公開クラスタで master-authorized-network が有効になっている場合は、クライアントの IP アドレスを master-authorized-networks 許可リストに追加することで、移行スクリプトを実行するクライアントからのアクセスを有効にできます。

      gcloud container clusters update ${CLUSTER_NAME} \
          --region=${CLUSTER_LOCATION} \
          --enable-master-authorized-networks \
          --master-authorized-networks $(curl ifconfig.me)/32
      
  5. Knative serving 移行スクリプトをダウンロードします。

    TMP_DIR=$(mktemp -d)
    gcloud storage cp gs://crfa-to-hub-upgrade/migration-addon.sh $TMP_DIR
    cd $TMP_DIR
    chmod +x ./migration-addon.sh
    
  6. 次のコマンドを実行して「ゼロへのスケーリング」を無効にします。無効にしないと、マスターノードの更新時にスケーリングが失敗し、エラーが発生します。

    kubectl patch cm config-autoscaler -n knative-serving -p '{"data":{"enable-scale-to-zero": "false"}}'
    

    このアップグレードと移行のプロセスの最終ステップでは、「ゼロへのスケーリング」が再度有効になります。

次のステップ

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