本文說明如何升級 Google Distributed Cloud (GDC) 無網路連線裝置中,用於套件驗證的根憑證授權單位 (CA)。
GDC 套件驗證會使用根憑證授權單位 (CA) 驗證發布金鑰憑證。如果發布通知要求升級,或在系統升級期間看到警告訊息,就必須升級這個根 CA。
事前準備
如要升級套件驗證憑證,您必須具備必要的身份和存取權角色:
- 確認您具備
harbor-system/package-validation-root-certsConfigMap 的寫入權限。 - 請安全性管理員授予您「升級 Debugger」角色 (
upgrade-debugger-cp)。
確認是否需要升級憑證
執行作業前,請先比較叢集中的有效 ConfigMap 與升級套件中的最新暫存根憑證,確認是否需要升級套件驗證憑證:
設定
KUBECONFIG環境變數:$ KUBECONFIG=PATH_TO_KUBECONFIG_FILE將
PATH_TO_KUBECONFIG_FILE替換為您在根管理員叢集中執行gdcloud auth login時取得的kubeconfig檔案路徑。比較目前的信任錨點與最新信任錨點,判斷是否需要升級。系統會將
ConfigMap的資料harbor-system/package-validation-root-certs與本機信任錨點進行比較:$ 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_FILE將
PATH_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-system將
USER_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-system使用
kubectl套用新設定: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 中的新憑證。