Modifier les artefacts système

Les artefacts système sont compatibles avec le système d'appliance Google Distributed Cloud (GDC) sous air gap et gèrent le déploiement GDC. Le dépôt Artifact Registry privé de GDC stocke les artefacts système. Il existe différents formats pour les artefacts système, y compris, mais sans s'y limiter :

  • Images de conteneurs pour les services gérés Anthos, KubeVirt et GDC
  • Images du système d'exploitation
  • Formats de micrologiciel
  • Modèles de machines virtuelles (VM) Golden
  • Charts Helm

Artifact Registry participe à diverses opérations du système GDC, telles que l'installation, les mises à niveau et le cycle de vie des ressources, de manière sécurisée, évolutive et inviolable.

Avant de commencer

Pour modifier les artefacts système, vous devez obtenir un accès aux diagnostics. L'accès aux diagnostics est un mode d'accès privilégié nécessaire pour aider un client de manière sécurisée lorsqu'il rencontre un problème. Vous devez créer une demande pour obtenir cet accès.

Importer des images Docker

Pour modifier les artefacts système, vous devez importer de nouvelles images Docker. La méthode d'importation dépend du registre vers lequel vous transférez vos images de conteneurs :

Les sections suivantes présentent les instructions d'importation pour les deux types de registres.

Artifact Registry dans la machine bootstrap

Pour importer des images de conteneur dans Artifact Registry sur la machine bootstrap, procédez comme suit :

  1. Assurez-vous d'avoir l'image Docker modifiée avec les problèmes de rupture corrigés.

  2. Transférez la nouvelle image vers le nœud d'amorçage dans votre environnement isolé.

  3. Connectez-vous au nœud d'amorçage.

  4. Localisez l'adresse d'Artifact Registry sur la machine d'amorçage au moment de l'amorçage et définissez-la comme variable d'environnement REGISTRY_IP :

    REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Récupérez les identifiants permettant d'accéder à Artifact Registry. Utilisez la commande suivante pour récupérer le compte et le mot de passe de l'administrateur :

    ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  6. Connectez-vous à Artifact Registry :

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Un message Login Succeeded s'affiche pour confirmer que vous vous êtes bien connecté à Artifact Registry.

  7. Ajoutez un tag à la nouvelle image :

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    Remplacez les éléments suivants :

    • CONTAINER_IMAGE_URL : URL de l'image de conteneur locale, telle que gcr.io/repository/image:tag.
    • PROJECT_NAME : nom du projet Artifact Registry.
    • IMAGE_NAME : nom de l'image du conteneur.
    • TAG : tag de l'image du conteneur.
  8. Transférez la nouvelle image vers Artifact Registry :

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

Artifact Registry dans le cluster d'administrateur

Pour importer des images de conteneurs dans Artifact Registry sur le cluster d'administrateur, procédez comme suit.

  1. Assurez-vous d'avoir l'image Docker modifiée avec les problèmes de rupture corrigés.

  2. Transférez la nouvelle image vers un nœud disposant d'un accès racine avec un fichier kubeconfig racine vers le cluster d'administrateur dans votre environnement isolé.

  3. Exportez le chemin d'accès au fichier kubeconfig du cluster d'administrateur en tant que variable d'environnement :

    export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATH
    

    Remplacez KUBECONFIG_FILE_PATH par le chemin d'accès au fichier kubeconfig.

  4. Localisez l'adresse Artifact Registry dans le cluster et définissez-la comme variable d'environnement REGISTRY_IP :

    REGISTRY=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Assurez-vous que REGISTRY_IP contient une URL valide, telle que 10.200.0.36:10443 :

    echo ${REGISTRY_IP}
    
  6. Vérifiez si le certificat de l'autorité de certification (AC) existe :

    ls -al /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    

    Si le certificat n'existe pas, créez-le et configurez-le :

    mkdir -p /etc/docker/certs.d/${REGISTRY_IP}/
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/
    
    echo $(kubectl get secret harbor-cert-secret -n istio-system -o jsonpath='{.data.ca\.crt}' --kubeconfig $ADMIN_CLUSTER_KUBECONFIG) | openssl base64 -A -d >  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
  7. Récupérez les identifiants permettant d'accéder à Artifact Registry. Utilisez la commande suivante pour récupérer le compte et le mot de passe de l'administrateur :

    ADMIN_PASS=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG \
        -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  8. Connectez-vous à Artifact Registry :

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Un message Login Succeeded s'affiche pour confirmer que vous vous êtes bien connecté à Artifact Registry.

  9. Ajoutez un tag à la nouvelle image :

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    Remplacez les éléments suivants :

    • CONTAINER_IMAGE_URL : URL de l'image de conteneur locale, telle que gcr.io/repository/image:tag.
    • PROJECT_NAME : nom du projet Artifact Registry.
    • IMAGE_NAME : nom de l'image du conteneur.
    • TAG : tag de l'image du conteneur.
  10. Transférez la nouvelle image vers Artifact Registry :

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG