Repositori jarak jauh berfungsi sebagai proxy untuk sumber upstream, seperti Docker Hub dan Maven Central, serta memberikan kontrol yang lebih besar atas dependensi Anda di Google Cloud. Dokumen ini menjelaskan cara kerja repositori jarak jauh dan memberikan beberapa kasus penggunaan.
Untuk mengetahui petunjuk cara membuat repositori jarak jauh, lihat Membuat repositori jarak jauh.
Cara kerja repositori jarak jauh
Repositori jarak jauh menyimpan artefak dari repositori Artifact Registry standar dan sumber eksternal. Saat pertama kali Anda meminta versi paket, Artifact Registry akan mendownload dan menyimpan paket dalam cache di repositori jarak jauh. Saat Anda meminta versi paket yang sama pada lain waktu, Artifact Registry akan menyajikan salinan yang di-cache.
Jika Anda meminta artefak dari sumber upstream yang tidak ada, atau tidak berisi versi yang Anda tentukan, permintaan akan gagal.
Autentikasi upstream
Repositori jarak jauh Artifact Registry mendukung autentikasi dasar ke sumber upstream untuk format yang didukung. Untuk mengetahui informasi selengkapnya tentang cara melakukan autentikasi ke sumber upstream repositori jarak jauh, lihat Mengonfigurasi autentikasi ke upstream repositori jarak jauh.
Kasus penggunaan dan manfaat
- Akses ke artefak yang lebih cepat dan andal
- Menyimpan salinan dependensi publik Anda yang di-cache di Artifact Registry akan mengurangi latensi saat layanan lain Google Cloud mengambil image. Artefak yang di-cache juga tetap tersedia jika repositori publik eksternal offline karena gangguan atau masalah lainnya.
- Resolusi dependensi yang lebih aman
Gunakan repositori jarak jauh bersama dengan repositori virtual untuk mengurangi risiko yang terkait dengan dependensi publik. Beberapa alat tidak menyediakan cara untuk mengontrol urutan penelusuran saat campuran repositori pribadi dan publik dikonfigurasi di klien. Jenis konfigurasi ini rentan terhadap serangan dependency confusion, yaitu seseorang mengupload versi baru paket dengan kode buruk ke repositori publik untuk menipu klien agar memilih versi yang buruk.
Daripada mengonfigurasi klien secara langsung untuk menelusuri beberapa repositori, Anda dapat mengonfigurasi repositori virtual untuk memprioritaskan repositori pribadi Anda daripada repositori jarak jauh.
- Mengurangi biaya transfer data
Gunakan repositori jarak jauh untuk menyimpan artefak dalam cache di region atau multi-region yang sama dengan runtime Anda guna mengurangi biaya transfer data.
Jika Artifact Registry berada dalam perimeter layanan Kontrol Layanan VPC, Artifact Registry akan menolak akses ke sumber upstream di luar perimeter secara default. Untuk mengizinkan repositori jarak jauh di lokasi tertentu mengakses sumber eksternal yang dikonfigurasi di luar perimeter, lihat petunjuk untuk konfigurasi Kontrol Layanan VPC.
Untuk mempelajari praktik terbaik pengelolaan dependensi lainnya, lihat Pengelolaan dependensi.
Update pada indeks dan metadata paket
File yang dapat diubah, seperti indeks dan metadata paket, akan diupdate dari sumber upstream jika usianya melebihi usia default. Default untuk jenis file tertentu tercantum dalam tabel berikut:
| Format | Jenis file | Usia update default |
|---|---|---|
| Maven | maven-metadata.xml |
5 menit |
archetype-catalog.xml |
1 jam | |
| Npm | File manifes | 5 menit |
| Python | File indeks | 1 jam |
| Docker | Cache tag Daftar/Dapatkan | 1 jam |
| Apt/Yum (pratinjau) | File indeks | 2 menit |
| File paket | 72 jam |
Format yang didukung
Lihat bagian berikut untuk mengetahui format yang tersedia untuk repositori jarak jauh yang telah ditetapkan dan ditentukan pengguna.
URL upstream yang telah ditetapkan
Sejumlah URL repositori upstream umum tersedia sebagai pilihan yang telah ditetapkan untuk memudahkan dalam format berikut.
| Format | jenis paket | URL upstream | Nama preset upstream |
|---|---|---|---|
| Docker | Publik atau pribadi | https://registry-1.docker.io |
DOCKER-HUB |
| Go | Publik | https://proxy.golang.org |
https://proxy.golang.org |
| Maven | Publik atau pribadi | https://repo.maven.apache.org/maven2 |
MAVEN-CENTRAL |
| npm | Publik atau pribadi | https://registry.npmjs.org |
NPMJS |
| Python | Publik | https://pypi.io |
PYPI |
| Paket OS (pratinjau) | Publik | Lihat upstream yang didukung paket OS | Lihat upstream yang didukung paket OS |
Upstream preset paket OS
Anda dapat membuat repositori jarak jauh paket OS dengan memilih salah satu URL dasar repositori upstream preset umum dan menyesuaikan bagian URL lainnya ke repositori tertentu. Basis repositori berikut didukung:
Apt
| Repositori | Awalan URL | Nama Dasar Repositori |
|---|---|---|
| Debian yang Diarsipkan | https://snapshot.debian.org |
DEBIAN_SNAPSHOT |
| Debian | http://deb.debian.org |
DEBIAN |
| Ubuntu LTS atau Pro | http://archive.ubuntu.com
|
UBUNTU
|
Yum
| Repositori | Awalan URL | Nama Dasar Repositori |
|---|---|---|
| CentOS | http://mirror.centos.org
|
CENTOS
|
http://debuginfo.centos.org
|
CENTOS_DEBUG
|
|
https://vault.centos.org
|
CENTOS_VAULT
|
|
https://mirror.stream.centos.org
|
CENTOS_STREAM
|
|
| Rocky | http://dl.rockylinux.org
|
ROCKY
|
| Paket Tambahan Fedora untuk Enterprise Linux (EPEL) | https://dl.fedoraproject.org/pub/epel
|
EPEL
|
Upstream repositori Artifact Registry
Anda dapat membuat repositori jarak jauh dengan repositori format standar Artifact Registry sebagai upstream untuk format berikut:
- Docker
- npm
- Maven
- Python
URL kustom
Anda dapat memasukkan URL untuk repositori jarak jauh secara langsung, tanpa menggunakan salah satu sumber upstream preset untuk format berikut.
- Docker
- npm
- Maven
- Python
Tabel berikut yang tidak lengkap mencantumkan beberapa URI upstream umum.
| Format | URI Upstream | Nama Registry |
|---|---|---|
| Docker | https://ghcr.io |
GitHub Container Registry |
| Docker | https://registry-1.docker.io |
Docker Hub |
| Docker | https://public.ecr.aws |
Galeri Publik AWS ECR |
| Docker | https://registry.k8s.io |
Kubernetes Container Registry |
| Docker | https://MY_NEXUS_IP |
Nexus |
| npm | https://registry.npmjs.org |
npm |
| npm | https://npm.pkg.github.com |
GitHub Npm Registry |
| npm | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY |
Nexus |
| Maven | https://repo.maven.apache.org/maven2 |
Maven Central |
| Maven | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY |
Nexus |
| Python | https://pypi.io |
Indeks Paket Python (PyPI) |
| Python | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY |
Nexus |
Di mana
- MY_NEXUS_IP adalah alamat IP dan port instance upstream Nexus Anda.
- MY_UPSTREAM_REPOSITORY adalah nama repositori upstream Anda; digunakan dalam contoh Nexus.
Batasan
Selain kuota dan batasan Artifact Registry, repositori jarak jauh memiliki batasan berikut:
- Repositori jarak jauh Maven tidak mengizinkan penetapan kebijakan versi ke snapshot atau rilis.
- Sumber upstream harus dapat diakses melalui internet. Repositori jarak jauh tidak mendukung sumber upstream jaringan lokal atau Virtual Private Cloud (VPC) tanpa alamat IP publik.
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.
- Konektor (Pratinjau): repositori yang berfungsi sebagai proxy untuk sumber upstream, tetapi tidak menyimpan artefak dalam cache 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 penyimpanan artefak dalam cache.
- Virtual: repositori yang berfungsi sebagai satu titik akses untuk beberapa repositori upstream, termasuk repositori jarak jauh dan standar repositori.
Langkah berikutnya
- Membuat repositori jarak jauh.
- Pelajari repositori Artifact Registry lebih lanjut dengan membaca Ringkasan repositori.