Ringkasan repositori virtual

Dokumen ini memberikan ringkasan repositori virtual. Untuk 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 titik akses tunggal 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.

Mode repositori lainnya adalah:

  • Standar: Mode repositori default. Anda mengupload atau memublikasikan artefak seperti paket pribadi secara langsung ke repositori standar. Meskipun Anda dapat mendownload langsung dari setiap repositori standar, mengakses grup repositori dengan repositori virtual akan menyederhanakan konfigurasi alat.
  • Remote (khusus repositori paket bahasa): Cache pull-through untuk artefak di repositori publik seperti Maven Central atau PyPI. Library ini berfungsi sebagai proxy untuk repositori publik sehingga Anda dapat lebih mengontrol 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 menyalurkan paket Java pribadi dari repositori standar Artifact Registry dan paket Java publik dari repositori jarak jauh yang men-cache paket publik dari Maven Central.
  • Repositori virtual dapat menyalurkan paket Python pribadi dari beberapa repositori standar upstream yang dimiliki oleh tim yang berbeda. Setiap tim memiliki akses tulis ke repositori upstream mereka, tetapi dapat mendownload paket dari tim lain menggunakan repositori virtual.
Penyelesaian dependensi yang lebih aman

Anda dapat menetapkan prioritas ke repositori upstream agar memiliki kontrol lebih besar atas repositori mana yang dipilih oleh Artifact Registry jika artefak yang diminta berada 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, saat seseorang mengupload versi baru paket dengan kode buruk ke repositori publik untuk mengelabui klien agar memilih versi buruk.

Anda dapat menggunakan repositori jarak jauh dan virtual secara bersamaan untuk mengurangi risiko ini:

  1. Buat repositori jarak jauh sebagai proxy untuk repositori publik.
  2. Buat repositori standar untuk paket pribadi Anda.
  3. Buat repositori virtual yang dikonfigurasi untuk memprioritaskan repositori standar jika versi paket yang sama ada di kedua repositori.
  4. Konfigurasikan pengelola paket dan alat lain untuk membaca hanya dari repositori virtual sehingga logika klien tidak melibatkan pemilihan repositori.

Untuk mempelajari praktik terbaik pengelolaan dependensi lainnya, baca Pengelolaan dependensi.

Cara repositori virtual memilih repositori upstream

Setiap repositori upstream harus memiliki prioritas yang dikonfigurasi. Prioritasnya adalah bilangan bulat yang bertindak sebagai bobot, bukan peringkat. Ini berarti repositori dengan nilai prioritas 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 diperlakukan sebagai prioritas yang lebih tinggi daripada nilai 1.
  • Jika beberapa repositori upstream memiliki prioritas yang sama, artefak dapat disalurkan dari 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 dapat didownload langsung dari PyPI karena pip akan selalu memilih versi terbaru dari sebuah paket, terlepas dari repositori asalnya. Jika pip dikonfigurasi untuk hanya menelusuri repositori virtual, Anda kemudian 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 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 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.

Batasan tambahan berlaku untuk repositori Apt dan Yum selama pratinjau:

  • Anda hanya dapat menggunakan repositori standar sebagai repositori upstream.

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 bisa dilihat oleh klien Apt dan Yum.

Langkah selanjutnya