Mengirim image container dari satu cluster ke cluster lain

Artefak sistem ada di Artifact Registry cluster admin. Kirim artefak sistem baru saat sistem menunjukkan bug atau gangguan yang dapat Anda perbaiki dengan menambal artefak baru.

Dokumen ini menjelaskan cara mengirimkan artefak individual dari satu cluster ke cluster lain.

Sebelum memulai

Untuk mendapatkan izin yang Anda perlukan untuk mengakses resource di project Artifact Registry sistem sebagai administrator, minta Admin Keamanan Anda untuk memberi Anda peran berikut, bergantung pada cluster yang ingin Anda tuju untuk mengirim image container:

  • Cluster admin org: Untuk mengirim image container ke Artifact Registry sistem cluster admin org, Anda memerlukan peran Admin Pengelolaan Artefak Sistem Organisasi (organization-system-artifact-management-admin).
  • Cluster admin root: Untuk mengirim image container ke Artifact Registry sistem cluster admin root, Anda memerlukan peran Admin Pengelolaan Artefak Sistem (system-artifact-management-admin).

Setelah mendapatkan izin yang diperlukan, lakukan langkah-langkah berikut sebelum mengirimkan image ke Artifact Registry sistem dari cluster admin root atau cluster admin org:

  1. Download dan instal Distributed Cloud CLI dengan mengikuti petunjuk antarmuka command line (CLI) gdcloud.

  2. Instal komponen docker-credential-gdcloud dengan mengikuti petunjuk Instal komponen.

    gdcloud components install docker-credential-gdcloud
    
  3. Login dengan penyedia identitas yang dikonfigurasi.

    gdcloud auth login
    
  4. Ekspor file kubeconfig.

    gdcloud clusters get-credentials CLUSTER_NAME
    

    Ganti CLUSTER_NAME dengan nama cluster.

  5. Konfigurasi Docker.

    gdcloud auth configure-docker
    

Mendownload image container dari bucket S3

Untuk mendapatkan izin yang diperlukan untuk mendownload image container dari bucket S3, minta Admin Keamanan Anda untuk memberi Anda peran Project Bucket Object Viewer (project-bucket-object-viewer) di namespace project.

Admin Keamanan memberi Anda akses dengan membuat binding peran:

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

Ganti kode berikut:

  • USER: Nama akun pengguna yang memerlukan binding peran.
  • PROJECT_NAMESPACE: Namespace project dengan bucket S3.

Anda mendapatkan akses hanya baca ke bucket dalam project dan objek di bucket tersebut.

Setelah mendapatkan izin yang diperlukan, ikuti langkah-langkah berikut untuk mendownload image container dari bucket S3 namespace project:

  1. Dapatkan nama rahasia bucket. Nama secret akan terlihat seperti contoh berikut:

    object-storage-key-std-user-ID
    

    Nama rahasia mencakup nilai ID unik untuk mengakses bucket.

  2. Salin nama rahasia bucket.

  3. Dapatkan kredensial akses bucket dan konfigurasi alat CLI s3cmd.

    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
    

    Ganti SECRET_NAME dengan nilai yang Anda salin pada langkah sebelumnya.

  4. Download image container dari bucket S3 ke workstation Anda.

    s3cmd get s3://BUCKET_NAME /g/CONTAINER_IMAGE_NAME
    

    Ganti kode berikut:

    • BUCKET_NAME: Nama bucket S3 yang memiliki image container.
    • CONTAINER_IMAGE_NAME: Nama file image container yang ingin Anda download dari bucket S3.

Kirim image ke Artifact Registry sistem

Ikuti langkah-langkah berikut untuk mengirim file image container yang ada di workstation Anda ke Artifact Registry sistem di cluster admin:

  1. Buka konsol.

  2. Dapatkan jalur ke endpoint Artifact Registry sistem dari cluster tempat Anda ingin mengirim image container.

    export REGISTRY_ENDPOINT=harbor.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')
    
  3. Muat, beri tag, dan kirim image container ke endpoint Artifact Registry sistem cluster.

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

    Ganti CONTAINER_IMAGE_PATH dengan jalur file image container di sistem file lokal Anda. Nilai yang valid untuk jalur ini, misalnya, adalah oracle_db.tar.