以前の 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: クラスタが配置されているリージョンまたはゾーン。
構成に応じて、クラスタでトラフィックを処理している上り(内向き)ゲートウェイを識別する必要があります。実際に構成されてトラフィックを提供している Istio のバージョンを特定することは重要です。
バンドルされた Istio のバージョンを使用する場合は、サービス名が
gke-system
名前空間で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 サービスの名前と名前空間の変数を設定します。
export INGRESS_NAME=INGRESS_NAME export INGRESS_NAMESPACE=INGRESS_NAMESPACE
次のように置き換えます。
INGRESS_NAME は、前のステップで特定した Ingress サービスの名前に置き換えます。
INGRESS_NAMESPACE は、前のステップで特定した Ingress サービスの名前空間に置き換えます。
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) gsutil 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"}}'
このアップグレードと移行のプロセスの最終ステップでは、「ゼロへのスケーリング」を再度有効にすることに留意します。