Gunakan Managed Harbor Service (MHS) Google Distributed Cloud (GDC) dengan air gap untuk membuat instance registry Harbor di setiap project. Instance registry Harbor berfungsi sebagai repositori pusat untuk menyimpan dan mengelola image container di lingkungan berbasis cloud. Artifact Registry memperluas kemampuan distribusi Docker open source. Berlaku batasan berikut:
- Anda dapat membuat maksimum satu instance per project.
- Instance diisolasi dan tidak berbagi data atau resource komputasi apa pun.
Sebelum memulai
Jika Anda bertanggung jawab untuk membuat instance registry Harbor, hubungi Admin Project IAM Anda untuk meminta peran Harbor Instance Admin (harbor-instance-admin), yang memungkinkan Anda mendapatkan, mencantumkan, memantau, membuat, mengupdate, menerapkan patch, dan menghapus instance Harbor, repositori cadangan, rencana pencadangan, pencadangan, dan pemulihan dalam namespace project. Peran ini mencakup izin yang diperlukan untuk menyediakan instance Harbor baru.
Membuat instance registry Harbor
Buat instance registry Harbor di konsol GDC atau gdcloud CLI.
Konsol
Di konsol GDC, ikuti langkah-langkah berikut:
- Di menu navigasi, di bagian CI/CD, klik Harbor Container Registry.
- Klik Create Instance.
- Di kolom Instance name, masukkan nama untuk instance.
- Opsional: Di bagian Projects, untuk membuat project default untuk instance Harbor ini, klik tombol Create a default project when creating this instance ke posisi aktif, lalu lakukan hal berikut:
- Di kolom Project Name, masukkan nama project.
- Baca Persyaratan Layanan Harbor yang dikelola, lalu centang kotak jika Anda menyetujui persyaratan tersebut.
- Klik Create. Status menampilkan In progress, dan Name menampilkan link eksternal yang berisi nama instance Harbor yang baru Anda buat.
- Setelah instance dibuat dan Status menampilkan Ready, klik link eksternal di halaman untuk membuka UI web instance Harbor.
gdcloud
Buat instance registry Harbor:
gdcloud harbor instances create INSTANCE \
--project=PROJECT
Ganti kode berikut:
INSTANCE: nama instancePROJECT: nama project GDC tempat membuat instance
Kepercayaan node cluster untuk instance registry Harbor
Saat instance registry Harbor siap, GDC secara otomatis mengonfigurasi node cluster Kubernetes bersama dan standar di organisasi Anda untuk memercayai sertifikat TLS instance, yang diterbitkan oleh root certificate authority (CA) tepercaya organisasi Anda. Untuk mengambil image dari instance, Anda tidak perlu menginstal root CA atau mengubah konfigurasi runtime container pada node cluster.
Konfigurasi otomatis memiliki perilaku berikut:
- Waktu update node: GDC menambahkan instance ke konfigurasi registry pribadi setiap cluster, lalu mengupdate setiap node dalam cluster. Node dapat mengambil image dari instance hanya setelah update selesai pada node tersebut, yang dapat memerlukan waktu hingga 60 menit di semua node.
- Cluster baru dan lintas zona: GDC juga mengonfigurasi cluster yang Anda buat setelah instance siap dan cluster di zona lain organisasi Anda.
- Nama host tepercaya: Node hanya memercayai nama host instance, yang merupakan URL instance tanpa awalan
https://, sepertiharbor-1-my-project.org-1.zone1.google.gdc.test. Anda dapat menemukan URL instance di link instance konsol GDC atau di kolomstatus.urlpada output perintahgdcloud harbor instances describe. Gunakan nama host instance dalam referensi image Anda, sepertiINSTANCE_HOSTNAME/HARBOR_PROJECT/IMAGE:TAG, denganHARBOR_PROJECTadalah project Harbor yang menyimpan image. - Klien Docker workstation: Kepercayaan otomatis hanya berlaku untuk node cluster. Untuk mengirim atau mengambil image dengan Docker dari workstation, Anda harus mengonfigurasi klien Docker lokal agar memercayai root CA. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Docker untuk memercayai root CA Harbor.
Jika node cluster tidak memercayai instance Anda, lihat Memecahkan masalah error sertifikat saat mengambil image.
Memecahkan masalah error sertifikat saat mengambil image
Jika node cluster tidak memercayai sertifikat untuk nama host dalam referensi image, pod tidak dapat mengambil image. Pod menampilkan status ErrImagePull atau
ImagePullBackOff, dan peristiwa pod menampilkan error yang mirip dengan
berikut:
failed to pull and unpack image "INSTANCE_HOSTNAME/HARBOR_PROJECT/IMAGE:TAG": ... x509: certificate signed by unknown authority
Untuk memecahkan masalah error sertifikat, Anda memerlukan hal berikut:
- Peran Harbor Instance Viewer (
harbor-instance-viewer) atau Harbor Instance Admin (harbor-instance-admin) dalam project GDC yang berisi instance. - Peran yang memungkinkan Anda melihat peristiwa pod dan menghapus pod di cluster yang terpengaruh:
- Untuk cluster bersama, peran Namespace Admin (
namespace-admin) dalam namespace project workload. - Untuk cluster standar, peran Developer Cluster
(
cluster-developer) dalam project yang berisi cluster.
- Untuk cluster bersama, peran Namespace Admin (
- File kubeconfig untuk cluster Kubernetes yang terpengaruh:
- Untuk cluster bersama, lihat Login.
- Untuk cluster standar, lihat Mengelola akses ke cluster standar.
Untuk mengatasi masalah ini, selesaikan beberapa langkah berikut:
Lihat peristiwa pod dan node yang menjalankan pod:
kubectl --kubeconfig CLUSTER_KUBECONFIG \ -n NAMESPACE describe pod POD_NAMEGanti kode berikut:
CLUSTER_KUBECONFIG: jalur ke file kubeconfig cluster Kubernetes yang terpengaruh.NAMESPACE: namespace pod. Untuk cluster bersama, ini adalah namespace project.POD_NAME: nama pod.
Dalam output, kolom
Nodemenampilkan node yang menjalankan pod, dan bagianEventsmenampilkan pesan error dan referensi image.Pastikan instance sudah siap dan tidak memiliki kode error:
- Di konsol GDC, pastikan Status instance menampilkan Ready. Meskipun Status menampilkan Ready, gunakan gdcloud CLI untuk memeriksa kode error.
Gunakan gdcloud CLI untuk memeriksa status instance dan kode error apa pun:
gdcloud harbor instances describe INSTANCE \ --project=PROJECTGanti kode berikut:
INSTANCE: nama instance registry Harbor.PROJECT: nama project GDC yang berisi instance.
Di output, pastikan kondisi dengan
type: Readydalam daftarstatus.conditionsmemilikistatus: "True". Outputnya mirip dengan hal berikut ini:# Several lines of code are omitted here. status: conditions: - message: HarborInstance reconciled reason: Reconciled status: "True" type: Ready # Several lines of code are omitted here. url: https://harbor-1-my-project.org-1.zone1.google.gdc.test
Jika Status tetap In progress atau menampilkan Unknown atau Error, atau kondisi
Readytidak memilikistatus: "True", hubungi operator infrastruktur (IO) Anda. Jika bagianstatusdari outputgdcloud harbor instances describeberisi kolomerrorStatusdengan kode error, sepertiHAAS0008, hubungi IO Anda meskipun kondisiReadyadalahTrue. Sertakan kode error dan pesan.Pastikan referensi image di workload Anda menggunakan nama host instance persis seperti yang muncul di URL instance, tanpa awalan
https://. Node tidak memercayai nama lain untuk instance, seperti alamat IP. Jika referensi image menggunakan nama yang berbeda, perbarui referensi untuk menggunakan nama host instance, lalu deploy ulang workload.Jika kurang dari 60 menit telah berlalu sejak instance menampilkan status Ready atau sejak Anda membuat cluster, mana saja yang lebih baru, tunggu hingga GDC selesai mengupdate node cluster:
- Update node parsial: Jika pull image berhasil di beberapa node dan gagal di node lain, update masih dalam proses.
- Pencadangan dan pemulihan: Update node menunggu saat pencadangan atau pemulihan instance sedang berlangsung. Mulai periode 60 menit setelah pencadangan atau pemulihan selesai.
- Cluster baru atau lintas zona: Untuk cluster yang Anda buat setelah instance siap, dan untuk cluster di zona yang berbeda dari instance, status Ready instance tidak menunjukkan apakah node cluster diupdate.
Setelah update node selesai, pastikan workload Anda dapat mengambil image. Kubernetes akan otomatis mencoba kembali pengambilan image yang gagal. Untuk segera mencoba lagi, hapus pod yang gagal agar pengontrolnya, seperti
Deployment, membuatnya ulang:kubectl --kubeconfig CLUSTER_KUBECONFIG \ -n NAMESPACE delete pod POD_NAMEJika tidak ada pengontrol yang mengelola pod, buat ulang pod. Untuk mengonfirmasi bahwa masalah telah diselesaikan, pastikan pod baru menampilkan status
Running, bukanErrImagePullatauImagePullBackOff:kubectl --kubeconfig CLUSTER_KUBECONFIG \ -n NAMESPACE get podsJika error berlanjut selama lebih dari 60 menit setelah instance menampilkan status Ready atau setelah Anda membuat cluster, mana saja yang lebih lambat, hubungi IO Anda. Berikan informasi berikut:
- Organisasi dan zona instance serta cluster yang terpengaruh
- Nama instance dan project GDC yang berisi instance
- Nama cluster Kubernetes yang terpengaruh, apakah itu cluster bersama atau standar, dan, untuk cluster standar, project yang berisi cluster tersebut
- Referensi image lengkap dan pesan error lengkap dari peristiwa pod
- Nama node tempat pull image gagal, dan apakah pull image berhasil di node lain
- Kapan instance menampilkan status Ready, kapan Anda membuat cluster, dan apakah pencadangan atau pemulihan instance sedang berlangsung
- Bagian
statusdari outputgdcloud harbor instances describe, termasuk kode errorerrorStatus
Langkah berikutnya
Setelah instance registry Harbor siap, Anda dapat membuat project untuk menghosting koleksi image atau mengelola instance yang ada: