Esegui il push di un'immagine container da un cluster a un altro

Gli artefatti di sistema esistono in Artifact Registry del cluster di amministrazione. Esegui il push di nuovi artefatti di sistema quando il sistema mostra bug o interruzioni che puoi correggere applicando patch ai nuovi artefatti.

Questo documento descrive come eseguire il push di singoli artefatti da un cluster a un altro.

Prima di iniziare

Per ottenere le autorizzazioni necessarie per accedere alle risorse nei progetti Artifact Registry di sistema come amministratore, chiedi all'Amministratore sicurezza di concederti i seguenti ruoli a seconda del cluster a cui vuoi eseguire il push dell'immagine container:

  • Cluster amministratore dell'organizzazione:per eseguire il push dell'immagine container in Artifact Registry di sistema del cluster amministratore dell'organizzazione, devi disporre del ruolo Amministratore della gestione di Artifact di sistema dell'organizzazione (organization-system-artifact-management-admin).
  • Cluster amministratore principale:per eseguire il push dell'immagine container nel registro Artifact Registry di sistema del cluster amministratore principale, devi disporre del ruolo Amministratore della gestione di Artifact di sistema (system-artifact-management-admin).

Dopo aver ottenuto le autorizzazioni necessarie, segui questi passaggi prima di eseguire il push di un'immagine nel sistema Artifact Registry del cluster di amministrazione principale o del cluster di amministrazione dell'organizzazione:

  1. Scarica e installa Distributed Cloud CLI seguendo le istruzioni dell'interfaccia a riga di comando (CLI) gdcloud.

  2. Installa il componente docker-credential-gdcloud seguendo le istruzioni riportate in Installare i componenti.

    gdcloud components install docker-credential-gdcloud
    
  3. Accedi con il provider di identità configurato.

    gdcloud auth login
    
  4. Esporta il file kubeconfig.

    gdcloud clusters get-credentials CLUSTER_NAME
    

    Sostituisci CLUSTER_NAME con il nome del cluster.

  5. Configura Docker.

    gdcloud auth configure-docker
    

Scaricare un'immagine container da un bucket S3

Per ottenere le autorizzazioni necessarie per scaricare l'immagine container dal bucket S3, chiedi all'Amministratore sicurezza di concederti il ruolo Visualizzatore oggetti bucket progetto (project-bucket-object-viewer) nello spazio dei nomi del progetto.

L'amministratore della sicurezza ti concede l'accesso creando un binding del ruolo:

kubectl create rolebinding IO_USER-bor-rb \
  --role=project-bucket-object-viewer \
  --user=USER \
  -n PROJECT_NAMESPACE

Sostituisci quanto segue:

  • USER: Il nome account dell'utente che richiede l'associazione del ruolo.
  • PROJECT_NAMESPACE: lo spazio dei nomi del progetto con il bucket S3.

Ottieni l'accesso di sola lettura al bucket all'interno del progetto e agli oggetti in quel bucket.

Dopo aver ottenuto le autorizzazioni necessarie, segui questi passaggi per scaricare l'immagine container dal bucket S3 dello spazio dei nomi del progetto:

  1. Ottieni il nome del secret del bucket. Il nome del secret è simile al seguente esempio:

    object-storage-key-std-user-ID
    

    Il nome del secret include un valore ID univoco per accedere al bucket.

  2. Copia il nome del secret del bucket.

  3. Ottieni le credenziali di accesso al bucket e configura lo strumento s3cmd CLI.

    SECRET_NAME=SECRET_NAME
    ACCESS_KEY=$(kubectl get secret ${SECRET_NAME} -n object-storage-access-keys -o=jsonpath='{.data.access-key-id}' | base64 -d)
    SECRET_KEY=$(kubectl get secret ${SECRET_NAME} -n object-storage-access-keys -o=jsonpath='{.data.secret-access-key}' | base64 -d)
    S3_ENDPOINT=objectstorage.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')
    
    echo "Access Key: ${ACCESS_KEY}" \
    && echo "Secret Key: ${SECRET_KEY}" \
    && echo "S3 Endpoint: ${S3_ENDPOINT}"
    
    s3cmd --configure
    

    Sostituisci SECRET_NAME con il valore che hai copiato nel passaggio precedente.

  4. Scarica l'immagine container dal bucket S3 alla tua workstation.

    s3cmd get s3://BUCKET_NAME /g/CONTAINER_IMAGE_NAME
    

    Sostituisci quanto segue:

    • BUCKET_NAME: il nome del bucket S3 che contiene l'immagine container.
    • CONTAINER_IMAGE_NAME: il nome del file dell'immagine container che vuoi scaricare dal bucket S3.

Esegui il push dell'immagine nel registro Artifact Registry di sistema

Segui questi passaggi per eseguire il push del file dell'immagine container che hai nella workstation in Artifact Registry di sistema nel cluster di amministrazione:

  1. Apri la console.

  2. Recupera il percorso dell'endpoint Artifact Registry di sistema del cluster in cui vuoi eseguire il push dell'immagine container.

    export REGISTRY_ENDPOINT=harbor.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')
    
  3. Carica, tagga ed esegui il push dell'immagine container nell'endpoint Artifact Registry di sistema del cluster.

    docker load --input CONTAINER_IMAGE_PATH
    
    docker tag CONTAINER_IMAGE_PATH ${REGISTRY_ENDPOINT}/CONTAINER_IMAGE_PATH
    
    docker push ${REGISTRY_ENDPOINT}/CONTAINER_IMAGE_PATH
    

    Sostituisci CONTAINER_IMAGE_PATH con il percorso del file immagine del container nel file system locale. Un valore valido per questo percorso è, ad esempio, oracle_db.tar.