Di Harbor, project berfungsi sebagai unit logis untuk mengatur dan mengelola koleksi image container. Repositori menyediakan cara untuk mengelompokkan artefak terkait dan menerapkan kebijakan, kontrol akses, dan aturan replikasi tertentu ke seluruh koleksi. Image tidak dapat dikirim atau ditarik ke Harbor sebelum project dibuat.
Sebelum memulai
Sebelum memulai, Anda harus melakukan inisialisasi identitas dengan registry Harbor dengan login ke UI Harbor setidaknya sekali.
Peran IAM yang diperlukan
Untuk membuat project Harbor dan mengelola namespace image, hubungi Admin Project IAM Anda untuk meminta peran Harbor Project Creator (harbor-project-creator), yang memungkinkan Anda membuat, mendapatkan, dan memantau project Harbor di namespace project. Peran ini mencakup izin yang diperlukan untuk menentukan namespace image baru sehingga Anda dapat menetapkan batas keamanan untuk aplikasi dalam container.
Membuat project Harbor
Buat project Harbor menggunakan konsol GDC, gdcloud CLI, atau API.
Konsol
Di konsol GDC, ikuti langkah-langkah berikut:
- Klik link Harbor Container Registry di bagian CI/CD di menu navigasi.
- Klik Create a Harbor project.
- Masukkan nama project.
- Opsional: Pemindaian kerentanan diaktifkan secara default. Untuk menonaktifkan pemindaian kerentanan otomatis untuk project Harbor, klik tombol Enable vulnerability scanning for the project. Untuk mengetahui informasi selengkapnya, lihat Memindai kerentanan.
- Klik Create.
- Pesan konfirmasi akan muncul yang menyatakan bahwa project Anda berhasil dibuat.
- Setelah project Harbor dibuat, login ke UI Harbor untuk mengonfirmasi bahwa Anda dapat melihat project Harbor.
gdcloud
Buat project Harbor:
gdcloud harbor harbor-projects create HARBOR_PROJECT \
--project=PROJECT \
--instance=INSTANCE
Ganti kode berikut:
HARBOR_PROJECT: nama project Harbor yang akan dibuat.PROJECT: nama project GDC.INSTANCE: nama instance.
API
Konsol GDC dan gdcloud CLI menetapkan pembuat project Harbor ke akun pengguna Anda. Saat menggunakan API, Anda harus menetapkan kolom spec.creatorSubject sendiri.
Buat resource kustom
HarborInstanceProjectdi server API pengelolaan zona. Anda tidak dapat mengubah kolomcreatorSubjectatauautoScansetelah membuat resource, jadi periksa kedua nilai sebelum Anda membuatnya.kubectl --kubeconfig MANAGEMENT_API_SERVER create -f - <<EOF apiVersion: artifactregistry.gdc.goog/v1 kind: HarborInstanceProject metadata: name: INSTANCE-HARBOR_PROJECT namespace: PROJECT spec: projectName: HARBOR_PROJECT harborInstanceRef: name: INSTANCE creatorSubject: apiGroup: rbac.authorization.k8s.io kind: User name: HARBOR_USERNAME autoScan: true EOFGanti kode berikut:
MANAGEMENT_API_SERVER: jalur ke file kubeconfig untuk server API pengelolaan zona. Untuk mengetahui informasi selengkapnya, lihat Beralih ke konteks zona.INSTANCE: nama instance registry Harbor.HARBOR_PROJECT: nama project Harbor yang akan dibuat.PROJECT: nama project GDC yang berisi instance registry Harbor.HARBOR_USERNAME: nama pengguna Harbor Anda, persis seperti yang ditampilkan di menu pengguna UI Harbor setelah Anda login. Pengguna ini akan menjadi Harbor Project Admin dari project Harbor. Gunakan nama pengguna seseorang, bukan akun layanan. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.
Kolom
autoScanmengaktifkan pemindaian kerentanan otomatis untuk image yang dikirim ke project. Untuk menonaktifkan pemindaian otomatis, tetapkan kefalse. Untuk mengetahui informasi selengkapnya, lihat Memindai kerentanan.Pastikan project Harbor telah dibuat dan kreator telah ditetapkan:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject INSTANCE-HARBOR_PROJECT \ -n PROJECTKolom
PROJECTCREATEDSTATUSmenampilkanCreated, dan kolomPROJECTSUBJECTASSIGNEDSTATUSmenampilkanSubjectAssigned.Jika kolom
PROJECTSUBJECTASSIGNEDSTATUSmenampilkanSubjectAssignError, periksa pesan kondisi:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe harborinstanceproject INSTANCE-HARBOR_PROJECT \ -n PROJECTPesan
user ... not foundberarti pengguna yang ditentukan di kolomcreatorSubjectbelum login ke UI Harbor. Layanan Harbor mencoba lagi setiap 30 detik, sehingga statusnya berubah menjadiSubjectAssignedsetelah pengguna login.
Memperbaiki project Harbor yang dibuat tanpa kreator
Jika resource HarborInstanceProject di project mana pun dalam organisasi Anda
tidak menetapkan kolom spec.creatorSubject, layanan Harbor akan berhenti
memproses perubahan pada resource Harbor di seluruh organisasi Anda. Gejalanya
mencakup instance Harbor yang tidak siap, project Harbor baru yang tetap
tanpa status, dan penarikan image yang gagal dengan
error x509: certificate signed by unknown authority.
Untuk memperbaiki masalah ini, Anda memerlukan peran Harbor Instance Admin
(harbor-instance-admin) dalam project yang berisi resource
yang terpengaruh. Jika Anda tidak memiliki peran ini, minta pengguna yang memilikinya untuk menyelesaikan langkah-langkah ini. Jika Anda tidak tahu resource mana yang terpengaruh, hubungi operator infrastruktur (IO) Anda, yang dapat menemukannya di log layanan Harbor.
Periksa apakah resource
HarborInstanceProjectyang terpengaruh menetapkan kolomspec.creatorSubject:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECT -o jsonpath='{.spec.creatorSubject}'Ganti kode berikut:
MANAGEMENT_API_SERVER: jalur ke file kubeconfig untuk server API pengelolaan zona. Untuk mengetahui informasi selengkapnya, lihat Beralih ke konteks zona.HARBOR_INSTANCE_PROJECT: nama resourceHarborInstanceProject. Resource yang Anda buat dari tab API di halaman ini diberi namaINSTANCE-HARBOR_PROJECT.PROJECT: nama project GDC yang berisi resource.
Output kosong berarti kolom tidak ditetapkan.
Konfirmasi nama pengguna Harbor yang akan ditetapkan sebagai Admin Project Harbor dengan pemilik project GDC. Karena Anda tidak dapat mengubah kolom
spec.creatorSubjectsetelah menetapkannya, verifikasi nama pengguna sebelum menambahkan kolom ke setiap resource yang terpengaruh:kubectl --kubeconfig MANAGEMENT_API_SERVER \ patch harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECT --type merge \ -p '{"spec":{"creatorSubject":{"apiGroup":"rbac.authorization.k8s.io","kind":"User","name":"HARBOR_USERNAME"}}}'Ganti
HARBOR_USERNAMEdengan nama pengguna Harbor dari pengguna yang akan ditetapkan sebagai Admin Project Harbor. Peran ini dapat menghapus image dan mengelola anggota project. Pengguna harus login ke UI Harbor setidaknya sekali, dan nama pengguna harus sama persis dengan nama yang ditampilkan di menu pengguna UI Harbor.Pastikan kreator telah ditetapkan:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECTSetelah semua resource yang terpengaruh diperbaiki, layanan Harbor akan dimulai ulang dan melanjutkan pemrosesan perubahan dalam waktu sekitar 10 menit, dan kolom
PROJECTSUBJECTASSIGNEDSTATUSakan menampilkanSubjectAssigned. Jika pull image dari Harbor masih gagal setelah 15 menit, hubungi IO Anda. Berikan nama dan project resource yang Anda perbaiki kepada IO, sehingga IO dapat memeriksa resource lain yang terpengaruh dan memulai ulang layanan Harbor jika diperlukan.
Langkah berikutnya
Setelah membuat project Harbor, konfigurasikan klien Docker dan Helm Anda untuk terhubung ke registry Harbor: