Mettre à niveau le certificat de validation des packages

Ce document explique comment mettre à niveau l'autorité de certification racine utilisée pour la validation des packages dans l'appliance isolée Google Distributed Cloud (GDC).

La validation des packages GDC utilise une autorité de certification racine pour valider les certificats de clé de version. Vous devez mettre à niveau cette autorité de certification racine si un avis de version l'exige ou si un message d'avertissement s'affiche lors d'une mise à niveau du système.

Avant de commencer

Pour mettre à niveau le certificat de validation des packages, vous devez disposer des rôles d'identité et d'accès nécessaires :

  • Assurez-vous de disposer d'un accès en écriture à la ConfigMap harbor-system/package-validation-root-certs.
  • Demandez à votre administrateur de sécurité de vous attribuer le rôle de débogueur de mise à niveau (upgrade-debugger-cp).

Vérifier si une mise à niveau du certificat est requise

Avant d'effectuer l'opération, vérifiez si une mise à niveau du certificat de validation des packages est requise en comparant la ConfigMap active de votre cluster au dernier certificat racine de staging dans le bundle de mise à niveau :

  1. Définissez la variable d'environnement KUBECONFIG :

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    Remplacez PATH_TO_KUBECONFIG_FILE par le chemin d'accès au fichier kubeconfig que vous avez obtenu en exécutant gdcloud auth login dans le cluster d'administrateur racine.

  2. Déterminez si une mise à niveau est requise en comparant l'ancre de confiance actuelle à la dernière ancre de confiance. Les données ConfigMap de harbor-system/package-validation-root-certs sont comparées à l'ancre de confiance 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!
    

Mettre à niveau le certificat

Si une mise à niveau est requise, mettez à jour l'objet ConfigMap situé dans harbor-system/package-validation-root-certs dans le cluster d'administrateur racine. Vous devez disposer d'un accès en écriture à la ConfigMap pour effectuer cette tâche.

  1. Définissez la variable d'environnement KUBECONFIG :

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    Remplacez PATH_TO_KUBECONFIG_FILE par le chemin d'accès au fichier kubeconfig que vous avez obtenu en exécutant gdcloud auth login dans le cluster d'administrateur racine.

  2. Créez les variables suivantes et attribuez-leur des valeurs :

    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
    

    Remplacez USER_NAME par le nom d'utilisateur IO.

  3. Créez le dossier cible qui contiendra les fichiers de sortie du processus de mise à niveau du certificat :

    mkdir -p "${TARGET_FOLDER}"
    
  4. Obtenez l'ancre de confiance actuelle et stockez-la dans un fichier temporaire local :

    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. Générez le fichier d'ancre de confiance mis à jour :

    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. Vérifiez que l'ancre de confiance a été correctement mise à jour :

    L'ancre de confiance doit contenir le certificat d'ancre de confiance actuel et le dernier.

    $ 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. Appliquez la nouvelle configuration avec kubectl :

      kubectl --kubeconfig=$KUBECONFIG apply -f ${OUTPUT}
    
  8. Assurez-vous que le fichier ca.crt nouvellement appliqué est présent dans la ConfigMap :

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

Cela permet de mettre à niveau un nouveau certificat dans package-validation-root-cert.