以前の Knative serving のインストールをアップグレードするための準備を行い、コマンドライン環境の設定、環境変数の作成、移行スクリプトのダウンロードを行って、ワークロードを移行します。
始める前に
アップグレードの前に、要件を満たしていることを確認する必要があります。
デフォルトでは、Cloud Shell には最新バージョンの
gcloud
コマンドとkubectl
コマンドが含まれています。ローカルマシンのコマンドライン環境を使用する場合は、次の最小要件を満たす必要があります。gcloud
バージョン 346.0.0 以降。kubectl
クライアント バージョン 1.21 以降
このページの準備手順は、アップグレードと移行のプロセス全体で必要です。
重要: プロセスで使用されるすべてのコマンドは、以下で設定する環境変数に依存します。たとえば、Cloud Shell を閉じた場合やセッションがタイムアウトした場合は、必要な環境変数がリセットされるようにする必要があります。
環境を設定する
Cloud Shell を使用するには、Google Cloud コンソールで Cloud Shell を開きます。
重要: Cloud Shell には使用上限があり、タイムアウトする可能性があります。セッションがタイムアウトした場合は、必要な環境変数をリセットする必要があります。
次の環境変数を作成します。
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: クラスタが配置されているリージョンまたはゾーン。
構成に応じて、クラスタでトラフィックを処理している Ingress ゲートウェイを特定する必要があります。実際に構成されてトラフィックを処理している Istio のバージョンを特定することは重要です。
バンドルされた Istio のバージョンを使用する場合は、サービス名が
gke-system
Namespace でistio-ingress
であることを確認します。kubectl get svc istio-ingress -n gke-system
結果: 構成の詳細情報が返されます。
Istio アドオンをインストールした場合は、IP を取得して、どの Ingress ゲートウェイが構成され、実際にトラフィックを処理しているかを特定する必要があります。サービスのアドレスを確認し、ドメインで構成されているものを特定します。
各 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
カスタム ドメインの DNS レコードでトラフィックを処理するように構成されている外部 IP アドレスを特定します。
Knative serving の [ドメイン マッピング] ページに移動します。
サービスの右側にある縦に並んだ 3 点のアイコンをクリックして [DNS レコード] をクリックし、すべての DNS レコードを表示します。
上記の例を使用すると、DNS レコード構成が
istio-ingressgateway
サービスの10.987.654.321
IP アドレスに設定されている場合、Istio アドオン Ingress ゲートウェイが使用されてトラフィックを処理しています。
クラスタのトラフィックを提供する Ingress サービスの名前と Namespace の変数を設定します。
export INGRESS_NAME=INGRESS_NAME export INGRESS_NAMESPACE=INGRESS_NAMESPACE
次のように置き換えます。
INGRESS_NAME: 前のステップで特定した Ingress サービスの名前。
INGRESS_NAMESPACE: 前のステップで特定した Ingress サービスの Namespace。
Google Cloud CLI を構成します。
gcloud config set project ${PROJECT_ID} gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION}
限定公開クラスタの場合:
移行スクリプトを実行するクライアントからすでに限定公開クラスタにアクセスできる場合は、次のステップに進みます。
限定公開クラスタで
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
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
次のコマンドを実行して「ゼロへのスケーリング」を無効にします。無効にしないと、マスターノードの更新時にスケーリングが失敗し、エラーが発生します。
kubectl patch cm config-autoscaler -n knative-serving -p '{"data":{"enable-scale-to-zero": "false"}}'
このアップグレードと移行のプロセスの最終ステップでは、「ゼロへのスケーリング」が再度有効になります。