Modifica degli artefatti di sistema

Gli artefatti di sistema supportano il sistema di appliance con air gap di Google Distributed Cloud (GDC) e gestiscono il deployment di GDC. Il registro Artifact Registry privato di GDC archivia gli artefatti di sistema. Esistono vari formati per gli artefatti di sistema, tra cui, a titolo esemplificativo:

  • Immagini container per Anthos, KubeVirt e servizi gestiti GDC
  • Immagini del sistema operativo (OS)
  • Formati del firmware
  • Modelli di macchine virtuali (VM) dorate
  • Grafici Helm

Artifact Registry partecipa a varie operazioni del sistema GDC, come installazione, upgrade e ciclo di vita delle risorse, in modo sicuro, scalabile e a prova di manomissione.

Prima di iniziare

Per modificare gli artefatti di sistema, devi ottenere l'accesso diagnostico. L'accesso diagnostico è una modalità di accesso con privilegi necessaria per assistere in modo sicuro un cliente quando riscontra un problema. Per ottenere questo accesso, devi creare un ticket.

Caricare immagini Docker

Per modificare gli artefatti di sistema, devi caricare nuove immagini Docker. Il metodo di caricamento dipende dal registro a cui esegui il push delle immagini container tra i due seguenti:

Le sezioni seguenti mostrano le istruzioni di caricamento per i due tipi di registro.

Artifact Registry nella macchina di bootstrap

Per caricare le immagini container in Artifact Registry nella macchina di bootstrap, completa i seguenti passaggi:

  1. Assicurati di avere l'immagine Docker modificata con i problemi di interruzione risolti.

  2. Trasferisci la nuova immagine al nodo di bootstrap nel tuo ambiente isolato.

  3. Accedi al nodo di bootstrap.

  4. Individua l'indirizzo di Artifact Registry nella macchina bootstrap al momento del bootstrap e impostalo come variabile di ambiente REGISTRY_IP:

    REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Recupera le credenziali per accedere ad Artifact Registry. Utilizza il seguente comando per recuperare l'account amministratore e la password:

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

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Viene stampato un messaggio Login Succeeded per verificare l'accesso riuscito ad Artifact Registry.

  7. Tagga la nuova immagine:

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

    Sostituisci quanto segue:

    • CONTAINER_IMAGE_URL: l'URL dell'immagine del container locale, ad esempio gcr.io/repository/image:tag.
    • PROJECT_NAME: il nome del progetto Artifact Registry.
    • IMAGE_NAME: il nome dell'immagine container.
    • TAG: il tag dell'immagine del container.
  8. Esegui il push della nuova immagine in Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

Artifact Registry nel cluster di amministrazione

Per caricare le immagini container in Artifact Registry sul cluster di amministrazione, completa i seguenti passaggi.

  1. Assicurati di avere l'immagine Docker modificata con i problemi di interruzione risolti.

  2. Trasferisci la nuova immagine a un nodo con accesso root con un file kubeconfig al cluster di amministrazione nell'ambiente isolato.

  3. Esporta il percorso del file kubeconfig del cluster di amministrazione come variabile di ambiente:

    export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATH
    

    Sostituisci KUBECONFIG_FILE_PATH con il percorso del file kubeconfig.

  4. Individua l'indirizzo di Artifact Registry nel cluster e impostalo come variabile di ambiente REGISTRY_IP:

    REGISTRY=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Assicurati che REGISTRY_IP contenga un URL valido, ad esempio 10.200.0.36:10443:

    echo ${REGISTRY_IP}
    
  6. Controlla se esiste il certificato dell'autorità di certificazione (CA):

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

    Se il certificato non esiste, crealo e configurarlo:

    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. Recupera le credenziali per accedere ad Artifact Registry. Utilizza il seguente comando per recuperare l'account amministratore e la password:

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

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Viene stampato un messaggio Login Succeeded per verificare l'accesso riuscito ad Artifact Registry.

  9. Tagga la nuova immagine:

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

    Sostituisci quanto segue:

    • CONTAINER_IMAGE_URL: l'URL dell'immagine del container locale, ad esempio gcr.io/repository/image:tag.
    • PROJECT_NAME: il nome del progetto Artifact Registry.
    • IMAGE_NAME: il nome dell'immagine container.
    • TAG: il tag dell'immagine del container.
  10. Esegui il push della nuova immagine in Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG