Pertimbangkan proses internal untuk membuat artefak dan penggunaan oleh konsumen artefak Anda saat membuat repositori.
Format repositori
Setiap repositori dikaitkan dengan format artefak tertentu. Misalnya, repositori Docker menyimpan image Docker. Anda dapat membuat beberapa repositori untuk setiap format di project Google Cloud yang sama.
Mode repositori
Repositori standar
Repositori standar adalah repositori Artifact Registry reguler untuk artefak pribadi Anda. Anda mengupload dan mendownload artefak langsung dengan repositori ini dan menggunakan Artifact Analysis untuk memindai kerentanan dan metadata lainnya.
Untuk membuat repositori standar, ikuti langkah-langkah di Membuat repositori standar.
Repositori jarak jauh
Repositori jarak jauh adalah repositori hanya baca yang bertindak sebagai proxy untuk menyimpan artefak dari sumber upstream berikut:
- Repositori Artifact Registry standar.
- Sumber eksternal seperti Docker Hub, Maven Central, Python Package Index (PyPI), Debian, atau CentOS.
Saat pertama kali Anda meminta versi artefak, repositori akan mendownloadnya dari sumber upstream dan meng-cache salinannya. Repositori jarak jauh menayangkan salinan yang di-cache saat versi yang sama diminta lagi.
Repositori jarak jauh mengurangi latensi dan meningkatkan ketersediaan untuk build dan deployment di Google Cloud. Anda juga dapat menggunakan Artifact Analysis untuk memindai paket yang di-cache untuk menemukan kerentanan dan metadata lainnya.
Untuk mempelajari repositori jarak jauh lebih lanjut, baca Ringkasan repositori jarak jauh. Untuk membuat repositori jarak jauh, ikuti langkah-langkah di Membuat repositori jarak jauh.
Repositori virtual
Repositori hanya baca yang berfungsi sebagai satu titik akses untuk mendownload, menginstal, atau men-deploy artefak dengan format yang sama dari satu atau beberapa repositori upstream. Repositori upstream dapat berupa repositori standar, jarak jauh, atau virtual.
Repositori virtual menyederhanakan konfigurasi klien untuk konsumen artefak Anda. Anda juga dapat memitigasi serangan kebingungan dependensi dengan mengonfigurasi kebijakan upstream untuk memprioritaskan repositori dengan artefak pribadi Anda daripada repositori jarak jauh yang meng-cache artefak publik.
Untuk mempelajari repositori virtual lebih lanjut, baca Ringkasan repositori virtual. Untuk membuat repositori virtual, ikuti langkah-langkah dalam Membuat repositori virtual.
Contoh penggunaan repositori
Diagram berikut menunjukkan salah satu dari banyak kemungkinan cara Anda dapat menggunakan repositori dalam mode yang berbeda secara bersamaan. Diagram menunjukkan alur kerja di dua project Google Cloud. Dalam project pengembangan, developer mem-build aplikasi Java. Dalam project runtime terpisah, build lain akan membuat image container dengan aplikasi untuk di-deploy ke Google Kubernetes Engine.
Dalam project pengembangan, tim pengembangan Java menggunakan Cloud Build untuk mem-build aplikasi Java.
- Build dapat meminta dependensi Java publik menggunakan repositori virtual. Repositori virtual menayangkan dependensi dari repositori jarak jauh, yang merupakan proxy penyimpanan dalam cache untuk Maven Central.
- Cloud Build mengupload paket ke repositori Maven standar dalam project komponen.
Dalam project runtime, Cloud Build mengemas aplikasi Java.
Build menggunakan repositori virtual Maven untuk mendownload aplikasi. Repositori virtual menyediakan paket dari repositori standar dalam project pengembangan. Build juga dapat mendownload dependensi Java publik dari repositori virtual yang sama.
Dalam project runtime, Cloud Build mengupload image penampung yang di-build ke repositori Docker standar.
GKE mengambil image dari repositori virtual Docker.
- Repositori Docker standar upstream menyediakan image pribadi, seperti aplikasi Java dalam container.
- Repositori jarak jauh upstream menyediakan image yang diminta GKE dari Docker Hub.
Dalam contoh ini, semua repositori, build, dan cluster GKE berada di region yang sama. Menggunakan lokasi yang sama untuk layanan Google Cloud memiliki manfaat yang dijelaskan dalam Lokasi repositori.
Lokasi repositori
Anda dapat membuat satu atau beberapa repositori di region yang didukung. Lokasi repositori yang baik menyeimbangkan biaya latensi, ketersediaan, dan bandwidth untuk konsumen data. Organisasi Anda mungkin juga memiliki persyaratan kepatuhan tertentu.Dukungan domain gcr.io
Artifact Registry mendukung hosting image di domain gcr.io
. Jika bertransisi dari Container Registry ke Artifact Registry, Anda dapat menyiapkan Artifact Registry repositori gcr.io untuk meminimalkan perubahan pada otomatisasi dan alur kerja yang ada. Repositori ini menyediakan:
- Pengalihan permintaan ke domain
gcr.io
. - Pembuatan repositori gcr.io saat image pertama dikirim ke nama host gcr.io untuk kompatibilitas dengan perilaku Container Registry.
Untuk mengetahui informasi selengkapnya, lihat Transisi ke repositori dengan dukungan domain gcr.io
Struktur project
Hierarki resource adalah cara Anda mengatur resource di seluruh project Google Cloud. Struktur yang Anda pilih bergantung pada faktor-faktor seperti persyaratan tata kelola data, batasan kepercayaan, dan struktur tim.
Ada dua pendekatan umum untuk menyiapkan repositori di organisasi multi-project.
- Memusatkan repositori
- Buat semua repositori dalam satu project, lalu berikan akses ke prinsipal dari project lain di level repositori. Pendekatan ini dapat lebih efektif jika satu orang atau tim menangani administrasi repositori dan akses repositori di seluruh organisasi Anda.
- Hal ini juga dapat menyederhanakan penyiapan repositori virtual karena Anda hanya perlu mengaktifkan dan mengelola satu instance Artifact Registry.
- Repositori khusus project
- Membuat repositori dalam project yang menyimpan dan mendownload artefak. Pendekatan ini mungkin diperlukan jika Anda memiliki kebijakan tata kelola data atau batas kepercayaan yang memerlukan lebih banyak pemisahan dan kontrol resource di tingkat project.
Kontrol akses
Repositori hanya dapat diakses dengan izin yang sesuai, kecuali jika Anda mengonfigurasi repositori untuk akses publik. Anda dapat memberikan izin di tingkat project atau repositori.
Beberapa layanan Google Cloud menggunakan akun layanan default dengan izin default ke repositori dalam project Google Cloud yang sama. Namun, setelan default ini mungkin tidak sesuai untuk proses pengembangan software Anda atau mungkin tidak mematuhi persyaratan keamanan atau kebijakan di organisasi Anda. Administrator repositori Anda harus secara eksplisit memberikan akses ke repositori kepada layanan ini jika:
- Artifact Registry berada di project yang berbeda dengan layanan yang berinteraksi dengannya.
- Anda menggunakan peran IAM kustom dengan akun layanan default, bukan peran bawaan.
- Anda tidak menggunakan akun layanan default untuk layanan Google Cloud.
- Anda sedang menyiapkan repositori virtual. Anda harus secara eksplisit memberikan akses akun layanan Artifact Registry ke repositori upstream.
Untuk akun utama lain yang memerlukan akses ke repositori, administrator repositori Anda harus memberikan akses. Berdasarkan prinsip keamanan dengan hak istimewa terendah, berikan izin minimum yang diperlukan. Contoh:
- Anda men-deploy image container di Artifact Registry ke cluster GKE di beberapa project yang berbeda. Akun layanan untuk node dalam cluster ini hanya memerlukan akses baca ke repositori.
- Anda memiliki repositori pengembangan untuk aplikasi yang sedang dalam pengembangan dan repositori produksi untuk aplikasi yang dirilis. Developer memerlukan akses baca dan tulis ke repositori pengembangan dan akses baca saja ke repositori produksi.
- Anda memiliki repositori demo dengan aplikasi contoh. Tim penjualan Anda hanya memerlukan akses hanya baca untuk mendownload demo.
Enkripsi data
Secara default, Google Cloud otomatis mengenkripsi data saat dalam penyimpanan menggunakan kunci milik dan dikelola Google. Jika Anda memiliki persyaratan kepatuhan atau peraturan khusus terkait kunci yang melindungi data, Anda dapat membuat repositori yang dienkripsi dengan kunci enkripsi yang dikelola pelanggan (CMEK).
Artifact Registry juga mendukung batasan kebijakan organisasi yang dapat mewajibkan CMEK untuk melindungi resource.
Label dan tag
Label menyediakan cara untuk mengatur resource khusus untuk layanan Google Cloud. Di Artifact Registry, Anda dapat menambahkan label ke repositori sehingga Anda dapat mengelompokkan repositori atau memfilter daftar repositori menurut label. Misalnya, Anda dapat menggunakan label untuk mengelompokkan repositori berdasarkan tahap pengembangan atau menurut tim untuk tujuan penagihan atau otomatisasi. Untuk informasi selengkapnya tentang cara membuat dan menggunakan label repositori, lihat Memberi label pada repositori.
Anda juga dapat menerapkan tag ke repositori. Meskipun label terutama untuk mengatur dan memfilter resource khusus layanan, tag digunakan untuk kontrol terprogram atas kebijakan di seluruh organisasi Google Cloud. Untuk informasi selengkapnya, lihat Memberi tag pada repositori.
Langkah Berikutnya
- Membuat repositori standar
- Pelajari repositori jarak jauh lebih lanjut
- Pelajari repositori virtual lebih lanjut
- Membuat repositori jarak jauh
- Membuat repositori virtual