Artefak sistem ada di Artifact Registry cluster infrastruktur organisasi. Saat Administrator Platform (PA) membuat organisasi di perangkat air-gapped Google Distributed Cloud (GDC), semua artefak sistem direplikasi dari cluster infrastruktur org.
Operator Infrastruktur (IO) harus mengirimkan artefak sistem baru ke cluster infrastruktur organisasi. Mendorong artefak sistem baru hanya terjadi saat PA meminta untuk mengaktifkan fitur opsional, atau saat sistem menunjukkan bug atau gangguan yang dapat Anda perbaiki dengan menerapkan patch pada artefak baru.
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.
Setelah mendapatkan izin yang diperlukan, lakukan langkah-langkah berikut sebelum mengirimkan image ke Artifact Registry sistem cluster infrastruktur:
Download dan instal Distributed Cloud CLI dengan mengikuti petunjuk antarmuka command line (CLI) gdcloud.
Instal komponen
docker-credential-gdcloud
dengan mengikuti petunjuk Menginstal komponen:gdcloud components install docker-credential-gdcloud
Login dengan penyedia identitas yang dikonfigurasi:
gdcloud auth login
Ekspor file kubeconfig:
gdcloud clusters get-credentials CLUSTER_NAME
Ganti
CLUSTER_NAME
dengan nama cluster.Konfigurasi Docker:
gdcloud auth configure-docker
Mendownload image container dari bucket penyimpanan
Ikuti petunjuk di bagian ini saat PA meminta untuk mendownload gambar dari bucket penyimpanan dan mengupload gambar ke Artifact Registry sistem. PA harus memberikan detail seperti nama project dan bucket.
Sebagai IO, Anda memerlukan izin untuk mendownload image container dari bucket penyimpanan:
- Minta Admin Keamanan Anda untuk memberi Anda peran Project Bucket Object Viewer (
project-bucket-object-viewer
) di namespace project.
Untuk mengetahui detail selengkapnya, lihat buku pedoman IAM R0005.
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 penyimpanan namespace project PA:
Minta PA untuk mengetahui 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.Salin nama rahasia bucket.
Dapatkan kredensial akses bucket dan konfigurasikan gdcloud 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}" gdcloud config set storage/s3_access_key_id ${ACCESS_KEY} gdcloud config set storage/s3_secret_access_key ${SECRET_KEY} gdcloud config set storage/s3_endpoint ${S3_ENDPOINT}
Ganti
SECRET_NAME
dengan nilai yang Anda salin pada langkah sebelumnya.Download image container dari bucket penyimpanan ke workstation Anda:
gdcloud cp s3://BUCKET_NAME/g/CONTAINER_IMAGE_NAME
Ganti kode berikut:
BUCKET_NAME
: Nama bucket penyimpanan yang memiliki image container. PA memberikan nama ini.CONTAINER_IMAGE_NAME
: Nama file image container yang ingin Anda download dari bucket penyimpanan.
Kirim image ke System Artifact Registry
Ikuti langkah-langkah berikut untuk mengirim file image container yang ada di workstation Anda ke Artifact Registry sistem di server Management API:
Buka konsol.
Dapatkan jalur ke endpoint System Artifact Registry dari cluster tempat Anda ingin mengirim image container:
export REGISTRY_ENDPOINT=harbor.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')
Muat, beri tag, dan kirim image container ke endpoint System Artifact Registry 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, adalahoracle_db.tar
.
Menarik artefak Harbor
Biasanya, sistem GDC berinteraksi dengan System Artifact Registry (SAR) secara otomatis untuk menarik artefak terbaru dari Harbor. Untuk beberapa kasus ekstrem, Anda dapat melakukan operasi ini secara manual. Ikuti langkah-langkah berikut untuk menarik image artefak dari Harbor secara manual:
Tetapkan detail artefak yang Anda tentukan oleh setiap aplikasi:
APP_NAME=APP HARBOR_PROJECT=HARBOR_PROJECT_NAME REPOSITORY=REPOSITORY
Ganti kode berikut:
APP
: nama aplikasi.HARBOR_PROJECT_NAME
: nama project Harbor.REPOSITORY
: nama repositori.
Mendapatkan informasi Harbor:
HARBOR_URL=$(kubectl --kubeconfig=${ADMIN_KUBECONFIG} get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}') HARBOR_IP=${HARBOR_URL#https://}
Dapatkan tag artefak. Ada dua metode untuk mengambil tag:
Metode satu: Ini adalah opsi yang disarankan:
- Buat daftar artefak dalam paket lokal dan dapatkan tag yang sesuai:
TAG=$(gdcloud artifacts tree ${BUNDLE_SUB_FOLDER:?} | grep ${HARBOR_PROJECT:?}/${REPOSITORY:?} | cut -d ":" -f2 | grep -v '.sig')
Metode kedua: Hanya gunakan metode ini jika metode pertama tidak berfungsi seperti yang diharapkan:
Buat daftar tag di Harbor dan pilih yang terbaru:
ADMIN_PASS=$(kubectl --kubeconfig=${ADMIN_KUBECONFIG} -n harbor-system get secret harbor-admin -o jsonpath="{.data.secret}" | base64 -d) curl -k -X GET \ --header 'Accept: application/json' \ --header "authorization: Basic $(echo -n admin:${ADMIN_PASS:?} | base64)" \ "${HARBOR_URL}/api/v2.0/projects/${HARBOR_PROJECT:?}/repositories/${REPOSITORY:?}/artifacts?with_tag=true" | jq -r '.[] | select(.tags != null) | .tags[] | {tag: .name, updated:.push_time}'
Output Anda harus terlihat mirip dengan contoh berikut:
{ "tag": "<tag1>", "updated": "<date1>" } { "tag": "<tag2>", "updated": "<date2>" }
Mengekspor nilai tag dengan waktu pembaruan terbaru:
TAG=MOST_RECENT_TAG
Ganti
MOST_RECENT_TAG
dengan tag yang memiliki waktu update terbaru.
Download artefak dari Harbor:
gdcloud artifacts pull --single-manifest-repo \ ${HARBOR_IP:?}/${HARBOR_PROJECT:?}/${REPOSITORY:?}:${TAG:?} \ ${APP_NAME:?}-${TAG:?}
Jika Anda melihat pesan error berikut, Anda dapat mengabaikannya dengan aman:
tee: '/root/logs/artifacts_pull_--single-manifest-repo_2023.07.13:14.59.24.log': Permission denied
Masalah umum
Ada beberapa masalah umum yang terkait dengan menarik artefak Harbor:
- Anda mungkin perlu menambahkan argumen:
--kubeconfig ${INFRA_ORG_KUBECONFIG:?}
. Perintah
curl
mungkin menampilkan pesan error berikut:certificate signed by unknown authority
. Atasi error ini menggunakan salah satu metode berikut:- Perbaikan sementara: Tambahkan flag
--insecure
ke perintahgdcloud artifacts pull
. - Perbaikan yang andal: Percayai CA infrastruktur organisasi. Untuk mengetahui informasi selengkapnya, lihat Error penarikan gambar.
- Perbaikan sementara: Tambahkan flag
Anda mungkin perlu mengekstrak isinya:
gdcloud artifacts extract ${APP_NAME:?}-${TAG:?} ${APP_NAME:?}-${TAG:?}-extracted