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 :
- Importez les images de conteneurs dans Artifact Registry sur la machine bootstrap.
- Importez les images de conteneur dans Artifact Registry du cluster d'administrateur.
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 :
Assurez-vous d'avoir l'image Docker modifiée avec les problèmes de rupture corrigés.
Transférez la nouvelle image vers le nœud d'amorçage dans votre environnement isolé.
Connectez-vous au nœud d'amorçage.
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://}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)Connectez-vous à Artifact Registry :
docker login $REGISTRY_IP -u admin -p $ADMIN_PASSUn message
Login Succeededs'affiche pour confirmer que vous vous êtes bien connecté à Artifact Registry.Ajoutez un tag à la nouvelle image :
docker image tag CONTAINER_IMAGE_URL \ $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAGRemplacez 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.
- CONTAINER_IMAGE_URL : URL de l'image de conteneur locale, telle que
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.
Assurez-vous d'avoir l'image Docker modifiée avec les problèmes de rupture corrigés.
Transférez la nouvelle image vers un nœud disposant d'un accès racine avec un fichier
kubeconfigracine vers le cluster d'administrateur dans votre environnement isolé.Exportez le chemin d'accès au fichier
kubeconfigdu cluster d'administrateur en tant que variable d'environnement :export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATHRemplacez KUBECONFIG_FILE_PATH par le chemin d'accès au fichier
kubeconfig.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://}Assurez-vous que REGISTRY_IP contient une URL valide, telle que
10.200.0.36:10443:echo ${REGISTRY_IP}Vérifiez si le certificat de l'autorité de certification (AC) existe :
ls -al /etc/docker/certs.d/${REGISTRY_IP}/ca.crtSi 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.crtRé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)Connectez-vous à Artifact Registry :
docker login $REGISTRY_IP -u admin -p $ADMIN_PASSUn message
Login Succeededs'affiche pour confirmer que vous vous êtes bien connecté à Artifact Registry.Ajoutez un tag à la nouvelle image :
docker image tag CONTAINER_IMAGE_URL \ $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAGRemplacez 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.
- CONTAINER_IMAGE_URL : URL de l'image de conteneur locale, telle que
Transférez la nouvelle image vers Artifact Registry :
docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG