Dokumen ini memberikan ringkasan repositori virtual. Untuk mengetahui petunjuk cara membuat repositori virtual, lihat Membuat repositori virtual.
Kuota dan batas Artifact Registry berlaku untuk repositori virtual.
Cara kerja repositori virtual
Repositori virtual berfungsi sebagai satu titik akses untuk mendownload, menginstal, atau men-deploy artefak dalam format yang sama dari satu atau beberapa repositori upstream. Repositori upstream dapat berupa repositori standar atau jarak jauh Artifact Registry.
Kasus penggunaan dan manfaat
- Konfigurasi klien yang lebih sederhana
Untuk tugas yang hanya memerlukan akses baca ke repositori, Anda hanya perlu mengonfigurasi satu repositori Artifact Registry untuk mengakses artefak yang disimpan di beberapa repositori upstream.
Contoh:
- Repositori virtual untuk paket Maven dapat menayangkan paket Java pribadi dari repositori standar Artifact Registry dan paket Java publik dari repositori jarak jauh yang meng-cache paket publik dari Maven Central.
- Repositori virtual dapat menayangkan paket Python pribadi dari beberapa repositori standar upstream yang dimiliki oleh tim yang berbeda. Setiap tim memiliki akses tulis ke repositori upstream mereka, tetapi mendownload paket dari tim lain menggunakan repositori virtual.
- Resolusi dependensi yang lebih aman
Anda dapat menetapkan prioritas ke repositori upstream untuk memiliki lebih banyak kontrol atas repositori yang dipilih Artifact Registry saat artefak yang diminta berada di lebih dari satu repositori upstream.
Beberapa alat, seperti alat
pipPython, tidak menyediakan cara untuk mengontrol urutan penelusuran saat campuran repositori pribadi dan publik dikonfigurasi di klien. Jenis konfigurasi ini rentan terhadap serangan kebingungan dependensi, saat seseorang mengupload versi baru paket dengan kode buruk ke repositori publik untuk menipu klien agar memilih versi yang buruk.Anda dapat menggunakan repositori jarak jauh dan virtual bersama-sama untuk mengurangi risiko ini:
- Buat repositori jarak jauh sebagai proxy untuk repositori publik.
- Buat repositori standar untuk paket pribadi Anda.
- Buat repositori virtual yang dikonfigurasi untuk memprioritaskan repositori standar Anda jika versi paket yang sama ada di kedua repositori.
- Konfigurasi pengelola paket dan alat lainnya untuk hanya membaca dari repositori virtual, sehingga logika klien tidak terlibat dalam pemilihan repositori.
Untuk mempelajari praktik terbaik pengelolaan dependensi lainnya, lihat Pengelolaan dependensi.
Cara repositori virtual memilih repositori upstream
Setiap repositori upstream harus memiliki prioritas yang dikonfigurasi. Prioritas adalah bilangan bulat yang berfungsi sebagai bobot, bukan peringkat. Artinya, repositori dengan nilai prioritas yang lebih tinggi diprioritaskan daripada repositori dengan nilai prioritas yang lebih rendah.
Saat Anda meminta artefak yang berada di beberapa repositori upstream, Artifact Registry menggunakan logika prioritas berikut:
- Repositori dengan nilai tertinggi diprioritaskan. Misalnya, nilai
10diperlakukan sebagai prioritas yang lebih tinggi daripada nilai1. - Jika beberapa repositori upstream memiliki prioritas yang sama, artefak dapat ditayangkan dari salah satu repositori tersebut.
Saat Anda mengonfigurasi klien secara langsung untuk menelusuri repositori virtual dan repositori tambahan, klien mungkin masih mendownload artefak dari repositori di luar Artifact Registry.
Misalnya, jika Anda mengonfigurasi alat pip Python untuk menelusuri PyPI dan repositori virtual, paket Anda mungkin didownload langsung dari PyPI karena pip akan selalu memilih versi paket terbaru, terlepas dari repositori mana paket tersebut berasal. Jika pip dikonfigurasi untuk hanya menelusuri repositori virtual, Anda kemudian dapat mengontrol prioritas semua repositori upstream, termasuk repositori jarak jauh upstream yang berfungsi sebagai proxy untuk PyPI.
Format repositori yang didukung
Anda dapat membuat repositori virtual untuk format repositori Artifact Registry berikut:
Paket bahasa:
Paket OS:
Jika baru menggunakan Artifact Registry, Anda dapat menggunakan panduan memulai untuk mempelajari cara menyiapkan repositori standar untuk format ini.
Batasan
Selain kuota dan batasan Artifact Registry, repositori virtual memiliki batasan berikut:
- Repositori upstream Artifact Registry standar harus berada di region atau multi-region yang sama dengan repositori virtual, tetapi dapat berada di project yang berbeda. Google Cloud
Repositori virtual Maven tidak mengizinkan penetapan kebijakan versi ke snapshot atau rilis.
Upstream Apt dan Yum harus berupa repositori standar Artifact Registry.
Repositori standar Apt dan Yum memperbarui indeks paket secara asinkron setelah paket diimpor, diupload, atau dihapus. Untuk repositori kecil, pembuatan ulang indeks dapat memerlukan waktu beberapa detik. Untuk repositori yang lebih besar, pengindeksan ulang mungkin memerlukan waktu beberapa menit atau lebih lama. Setelah pengindeksan ulang selesai, perubahan pada repositori akan terlihat oleh klien Apt dan Yum.
Mode repositori lainnya
Mode repositori lainnya adalah sebagai berikut:
- Standar: mode repositori default. Anda mengupload atau memublikasikan artefak seperti paket pribadi langsung ke repositori standar. Meskipun Anda dapat mendownload langsung dari setiap repositori standar, mengakses grup repositori dengan repositori virtual akan menyederhanakan konfigurasi alat.
- Jarak jauh: repositori yang berfungsi sebagai proxy untuk sumber upstream dengan meng-cache paket di Artifact Registry setelah didownload dari sumber upstream untuk pertama kalinya. Saat Anda meminta versi paket yang sama berikutnya, Artifact Registry akan menyediakan salinan yang di-cache.
- Konektor (Pratinjau): repositori yang berfungsi sebagai proxy untuk sumber upstream, tetapi tidak meng-cache artefak di Artifact Registry. Sebagai gantinya, semua permintaan dibuat ke sumber upstream. Repositori konektor berguna jika Anda memerlukan auditabilitas penuh sumber upstream atau memiliki kebijakan yang mencegah caching artefak.
Langkah berikutnya
- Buat repositori virtual.
- Pelajari lebih lanjut repositori Artifact Registry dengan membaca Ringkasan repositori.