Esegui l'upgrade del certificato di convalida del pacchetto

Questo documento descrive come eseguire l'upgrade dell'autorità di certificazione radice (CA) utilizzata per la convalida dei pacchetti nell'appliance air-gapped di Google Distributed Cloud (GDC)

La convalida dei pacchetti GDC utilizza un'autorità di certificazione radice (CA) per convalidare i certificati delle chiavi di rilascio. Devi eseguire l'upgrade di questa CA radice se un avviso di rilascio lo richiede o se visualizzi un messaggio di avviso durante l'upgrade del sistema.

Prima di iniziare

Per eseguire l'upgrade del certificato di convalida dei pacchetti, devi disporre dei ruoli di identità e accesso necessari:

  • Assicurati di avere accesso in scrittura a harbor-system/package-validation-root-certs ConfigMap.
  • Chiedi all'Amministratore sicurezza di concederti il ruolo di debugger dell'upgrade (upgrade-debugger-cp).

Verificare se è necessario l'upgrade del certificato

Prima di eseguire l'operazione, verifica se è necessario eseguire l'upgrade di un certificato di convalida dei pacchetti confrontando il ConfigMap attivo nel cluster con l'ultimo certificato radice di staging nel bundle di upgrade:

  1. Imposta la variabile di ambiente KUBECONFIG:

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    Sostituisci PATH_TO_KUBECONFIG_FILE con il percorso del kubeconfig file che hai ottenuto eseguendo gdcloud auth login nel cluster di amministrazione radice.

  2. Determina se è necessario un upgrade confrontando il trust anchor attuale con l'ultimo trust anchor. I dati di ConfigMap in harbor-system/package-validation-root-certs vengono confrontati con il trust anchor locale:

    $ 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!
    

Eseguire l'upgrade del certificato

Se è necessario un upgrade, aggiorna l'oggetto ConfigMap che si trova in harbor-system/package-validation-root-certs nel cluster di amministrazione radice. Per completare questa attività, devi avere accesso in scrittura a ConfigMap.

  1. Imposta la variabile di ambiente KUBECONFIG:

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    Sostituisci PATH_TO_KUBECONFIG_FILE con il percorso del kubeconfig file che hai ottenuto eseguendo gdcloud auth login nel cluster di amministrazione radice.

  2. Crea e assegna valori alle seguenti variabili:

    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
    

    Sostituisci USER_NAME con il nome utente IO.

  3. Crea la cartella di destinazione che conterrà i file di output del processo di upgrade del certificato:

    mkdir -p "${TARGET_FOLDER}"
    
  4. Recupera il trust anchor attuale e archivialo nel file temporaneo locale:

    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}"
    
  5. Genera il file del trust anchor aggiornato:

    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
    
  6. Verifica che il trust anchor sia stato aggiornato correttamente:

    Il trust anchor deve contenere sia il certificato del trust anchor attuale sia quello più recente.

    $ 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
    
  7. Applica la nuova configurazione con kubectl:

      kubectl --kubeconfig=$KUBECONFIG apply -f ${OUTPUT}
    
  8. Assicurati che il file ca.crt appena applicato sia presente all'interno di ConfigMap:

      kubectl --kubeconfig=$KUBECONFIG describe configmap package-validation-root-certs -n harbor-system
    

In questo modo viene eseguito l'upgrade di un nuovo certificato in package-validation-root-cert.