Dokumen ini memberikan ringkasan repositori virtual. Untuk mengetahui petunjuk tentang 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 repositori jarak jauh Artifact Registry.
Mode repositori lainnya adalah:
- 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 (khusus repositori paket bahasa): Penarikan melalui cache untuk artefak di repositori publik seperti Maven Central atau PyPI. Paket ini berfungsi sebagai proxy untuk repositori publik sehingga Anda memiliki kontrol lebih besar atas dependensi eksternal Anda.
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 menyajikan 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 menyajikan paket Python pribadi dari beberapa repositori standar upstream yang dimiliki oleh tim yang berbeda. Setiap tim memiliki akses tulis ke repositori upstream-nya, tetapi mendownload paket dari tim lain menggunakan repositori virtual.
- Resolusi dependensi yang lebih aman
Anda dapat menetapkan prioritas ke repositori upstream untuk memiliki kontrol lebih besar atas repositori yang dipilih Artifact Registry saat artefak yang diminta ada di lebih dari satu repositori upstream.
Beberapa alat, seperti alat
pip
Python, tidak menyediakan cara untuk mengontrol urutan penelusuran saat campuran repositori pribadi dan publik dikonfigurasi di klien. Jenis konfigurasi ini rentan terhadap serangan kebingungan dependensi, di mana seseorang mengupload versi baru paket dengan kode berbahaya ke repositori publik untuk mengelabui klien agar memilih versi yang buruk.Anda dapat menggunakan repositori virtual dan jarak jauh 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 membaca dari repositori virtual saja, 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 akan diprioritaskan daripada repositori dengan nilai prioritas yang lebih rendah.
Saat Anda meminta artefak yang ada di beberapa repositori upstream, Artifact Registry menggunakan logika prioritas berikut:
- Repositori dengan nilai tertinggi akan diprioritaskan. Misalnya, nilai
10
dianggap memiliki prioritas lebih tinggi daripada nilai1
. - Jika beberapa repositori upstream memiliki prioritas yang sama, artefak dapat disajikan dari repositori mana pun.
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 terbaru paket, terlepas dari repositori asalnya. Jika pip
dikonfigurasi hanya untuk menelusuri repositori virtual, Anda dapat mengontrol prioritas semua repositori upstream, termasuk repositori jarak jauh upstream yang bertindak sebagai proxy untuk PyPI.
Format repositori yang didukung
Anda dapat membuat repositori virtual untuk format repositori Artifact Registry berikut:
Paket bahasa:
Paket OS:
Jika Anda 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 Google Cloud yang berbeda.
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, membuat 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 dapat dilihat oleh klien Apt dan Yum.
Langkah berikutnya
- Buat repositori virtual.
- Pelajari repositori Artifact Registry lebih lanjut dengan membaca Ringkasan repositori.