Ringkasan repositori virtual

Dokumen ini memberikan ringkasan tentang repositori virtual. Untuk 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): Cache pull-through untuk artefak di repositori publik seperti Maven Central atau PyPI. Repositori ini berfungsi sebagai proxy untuk repositori publik sehingga Anda memiliki kontrol yang lebih besar atas dependensi eksternal.

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 Pusat Maven.
  • 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-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 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, yaitu seseorang mengupload versi baru paket dengan kode yang buruk ke repositori publik untuk mengelabui klien agar memilih versi yang buruk.

Anda dapat menggunakan repositori virtual dan jarak jauh 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 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 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 diprioritaskan. Misalnya, nilai 10 diperlakukan sebagai prioritas yang lebih tinggi daripada nilai 1.
  • 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 terbaru paket, terlepas dari repositori mana yang berasal. Jika pip dikonfigurasi untuk hanya 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 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 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 akan terlihat oleh klien Apt dan Yum.

Langkah selanjutnya