このドキュメントでは、Google Distributed Cloud(GDC)エアギャップ アプライアンスでパッケージ検証に使用されるルート認証局(CA)をアップグレードする方法について説明します。
GDC パッケージの検証では、ルート認証局(CA)を使用してリリースキー証明書を検証します。リリースノートで要求されている場合、またはシステム アップグレード中に警告メッセージが表示された場合は、このルート CA をアップグレードする必要があります。
始める前に
パッケージ検証証明書をアップグレードするには、必要な ID とアクセスロールが必要です。
harbor-system/package-validation-root-certsConfigMap への書き込みアクセス権があることを確認します。- セキュリティ管理者に、アップグレード デバッガ(
upgrade-debugger-cp)ロールを付与するよう依頼します。
証明書のアップグレードが必要かどうかを確認する
クラスタ内のアクティブな ConfigMap とアップグレード バンドル内の最新のステージング ルート証明書を比較して、オペレーションを実行する前にパッケージ検証証明書のアップグレードが必要かどうかを確認します。
KUBECONFIG環境変数を設定します。$ KUBECONFIG=PATH_TO_KUBECONFIG_FILEPATH_TO_KUBECONFIG_FILEは、ルート管理クラスタでgdcloud auth loginを実行して取得したkubeconfigファイルのパスに置き換えます。現在の信頼アンカーと最新の信頼アンカーを比較して、アップグレードが必要かどうかを判断します。
harbor-system/package-validation-root-certsのConfigMapデータがローカル トラスト アンカーと比較されます。$ CURRENT_TRUST_ANCHOR=$(kubectl --kubeconfig=$KUBECONFIG get cm package-validation-root-certs -n harbor-system -o jsonpath='{.data.ca\.crt}') $ LATEST_TRUST_ANCHOR=$(cat /root/release/staging_root_ca_certificate.crt) $ diff <( echo "$CURRENT_TRUST_ANCHOR" ) <( echo "$LATEST_TRUST_ANCHOR" ) && echo trust anchors are same || echo trust anchors are different, upgrade required!
証明書をアップグレードする
アップグレードが必要な場合は、ルート管理クラスタの harbor-system/package-validation-root-certs にある ConfigMap オブジェクトを更新します。このタスクを完了するには、ConfigMap への書き込みアクセス権が必要です。
KUBECONFIG環境変数を設定します。$ KUBECONFIG=PATH_TO_KUBECONFIG_FILEPATH_TO_KUBECONFIG_FILEは、ルート管理クラスタでgdcloud auth loginを実行して取得したkubeconfigファイルのパスに置き換えます。次の変数を作成して値を割り当てます。
USERNAME=USER_NAME #IO TARGET_FOLDER=/tmp/${USERNAME} OUTPUT="${TARGET_FOLDER}/package-validation-root-certs.yaml" LATEST_TRUST_ANCHOR_CA_FILE=/root/release/staging_root_ca_certificate.crt CONFIGMAP_NAME=package-validation-root-certs NAMESPACE=harbor-systemUSER_NAMEは、IO ユーザー名に置き換えます。証明書アップグレード プロセスの出力ファイルを格納するターゲット フォルダを作成します。
mkdir -p "${TARGET_FOLDER}"現在のトラスト アンカーを取得し、ローカルの一時ファイルに保存します。
CURRENT_TRUST_ANCHOR=$(kubectl --kubeconfig=$KUBECONFIG get configmap "${CONFIGMAP_NAME}" -n "${NAMESPACE}" -o jsonpath="{.data.ca\.crt}" ) CURRENT_TRUST_ANCHOR_CA_FILE=$(mktemp) echo "$CURRENT_TRUST_ANCHOR" > "${CURRENT_TRUST_ANCHOR_CA_FILE}"更新されたトラスト アンカー ファイルを生成します。
cat <<EOF > "${OUTPUT}" apiVersion: v1 kind: ConfigMap metadata: name: ${CONFIGMAP_NAME} namespace: ${NAMESPACE} data: ca.crt: | $(sed 's/^/ /' "${LATEST_TRUST_ANCHOR_CA_FILE}") $(sed 's/^/ /' "${CURRENT_TRUST_ANCHOR_CA_FILE}") EOF信頼アンカーが正しく更新されたことを確認します。
トラスト アンカーには、現在のトラスト アンカー証明書と最新のトラスト アンカー証明書の両方が含まれている必要があります。
$ cat "${OUTPUT}" apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- (certificate content) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (certificate content) -----END CERTIFICATE----- (other certificate) kind: ConfigMap metadata: name: package-validation-root-certs namespace: harbor-systemkubectlを使用して新しい構成を適用します。kubectl --kubeconfig=$KUBECONFIG apply -f ${OUTPUT}新しく適用された ca.crt が
ConfigMap内に存在することを確認します。kubectl --kubeconfig=$KUBECONFIG describe configmap package-validation-root-certs -n harbor-system
これにより、package-validation-root-cert の新しい証明書のアップグレードが処理されます。