Halaman ini menjelaskan cara membuat repositori virtual Artifact Registry.
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.
Untuk mengetahui informasi selengkapnya tentang cara kerja repositori virtual, lihat Ringkasan repositori virtual.
Sebelum memulai
Aktifkan Artifact Registry, termasuk mengaktifkan Artifact Registry API dan menginstal Google Cloud CLI versi terbaru.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengelola repositori, minta administrator Anda untuk memberikan peran IAM berikut:
-
Buat repositori virtual dan berikan akses ke repositori individual:
Administrator Artifact Registry (
roles/artifactregistry.admin
) di project Google Cloud -
Memberikan akses ke repositori di tingkat project:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) di Google Cloud project -
Memberikan akses ke repositori di tingkat folder:
Admin Folder (
roles/resourcemanager.folderAdmin
) di folder -
Memberikan akses ke repositori di tingkat organisasi:
Admin Organisasi (
roles/resourcemanager.organizationAdmin
) pada Google Cloud organisasi
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Jika repositori upstream berada di project lain, administrator di project dengan repositori upstream harus memiliki izin untuk mengelola akses ke repositori tersebut.
Membuat repositori upstream
Sebelum menyiapkan repositori virtual, buat repositori upstream yang ingin Anda sediakan dengan repositori virtual.
Buat repositori upstream di region yang sama dengan tempat Anda berencana membuat repositori virtual. Google Cloud
Repositori virtual menggunakan Agen Layanan Artifact Registry untuk melakukan autentikasi ke repositori upstream. Anda harus memberikan akses baca agen layanan ke repositori upstream.
Anda dapat memberikan peran Pembaca Artifact Registry kepada agen layanan Artifact Registry di tingkat project sehingga Anda tidak perlu memberikan akses ke setiap repositori upstream.
Di setiap project dengan repositori upstream, jalankan perintah berikut:
gcloud projects add-iam-policy-binding UPSTREAM_PROJECT_ID \ --member serviceAccount:service-VIRTUAL-REPO-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \ --role roles/artifactregistry.reader
Di mana
- UPSTREAM_PROJECT_ID adalah ID project Google Cloud dengan repositori upstream.
- VIRTUAL_REPO_PROJECT_NUMBER adalah project number dari project Google Cloud untuk repositori virtual Anda.
Atau, jika Anda ingin memberikan peran dengan cakupan yang lebih sempit kepada agen layanan, tambahkan izin
artifactregistry.repositories.readViaVirtualRepository
ke peran kustom lalu berikan peran tersebut kepada agen layanan.Untuk mengetahui informasi selengkapnya tentang cara memberikan izin, lihat dokumentasi kontrol akses.
Membuat repositori virtual
Saat membuat repositori, Anda harus mengonfigurasi setelan berikut yang tidak dapat diubah setelah repositori dibuat:
- Format artefak.
- Mode repositori, jika beberapa mode tersedia untuk format yang dipilih.
- Lokasi repositori.
- Enkripsi dengan kunci enkripsi milik dan dikelola Google atau kunci enkripsi yang dikelola pelanggan. Artifact Registry menggunakan kunci enkripsiyang dimiliki dan dikelola Google secara default.
Artifact Registry menerapkan batasan kebijakan organisasi yang mewajibkan CMEK untuk mengenkripsi resource atau membatasi kunci Cloud KMS yang dapat digunakan untuk perlindungan CMEK.
Membuat repositori virtual menggunakan Google Cloud konsol
Buka halaman Repositories di konsol Google Cloud .
Klik Create Repository.
Tentukan nama repositori. Untuk setiap lokasi repositori dalam project, nama repositori harus unik.
Pilih format repositori.
Di bagian Repository mode, pilih Virtual.
Di bagian Virtual Repository Upstreams, klik Add Upstream untuk menambahkan repositori upstream.
- Repositori upstream dapat berupa repositori standar, jarak jauh, atau virtual.
- Repositori upstream harus berada di lokasi yang sama dengan repositori virtual, tetapi dapat berada di project yang berbeda. Google Cloud
- Repositori upstream harus memiliki format artefak yang sama dengan repositori virtual.
Tentukan prioritas dan nama kebijakan untuk setiap repositori upstream. Nilai prioritas yang lebih tinggi lebih diutamakan daripada nilai yang lebih rendah. Sisakan ruang di antara nilai prioritas sehingga ada fleksibilitas untuk menambahkan repositori upstream dengan prioritas yang berada di antara nilai yang ada.
Di bagian Jenis Lokasi, pilih lokasi untuk repositori:
Pilih jenis lokasi: Region atau Multi-Region. Daftar lokasi akan berubah untuk mencerminkan pilihan Anda.
Di daftar Region atau Multi-region, pilih lokasi.
Untuk mengetahui informasi tentang jenis lokasi dan lokasi yang didukung, lihat Lokasi repositori
Tambahkan deskripsi untuk repositori. Deskripsi membantu mengidentifikasi tujuan repositori dan jenis artefak yang ada di dalamnya.
Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.
Jika Anda ingin menggunakan label untuk mengatur repositori, klik Tambahkan Label dan masukkan pasangan nilai kunci untuk label. Anda dapat menambahkan, mengedit, atau menghapus label setelah membuat repositori.
Di bagian Enkripsi, pilih mekanisme enkripsi untuk repositori.
- Google-managed encryption key - Enkripsi konten repositori dengan a Google-owned and Google-managed encryption key.
- Kunci yang dikelola pelanggan - Enkripsi konten repositori dengan kunci yang Anda kontrol melalui Cloud Key Management Service. Untuk mengetahui petunjuk penyiapan kunci, lihat Menyiapkan CMEK untuk repositori.
Klik Buat.
Artifact Registry membuat repositori dan menambahkannya ke daftar repositori.
Setelah Anda membuat repositori:
- Memberikan akses ke repositori.
Mengonfigurasi Docker, pengelola paket, dan klien pihak ketiga lainnya untuk mengautentikasi ke repositori.
Membuat repositori virtual menggunakan gcloud CLI
Untuk membuat repositori virtual, Anda menentukan repositori upstream dalam file kebijakan, lalu membuat repositori menggunakan file kebijakan.
Buat file kebijakan upstream dalam format JSON dengan setelan berikut:
[{ "id" : "POLICY_ID", "repository" : "UPSTREAM_REPOSITORY_RESOURCE_NAME", "priority" : PRIORITY }, {...}]
POLICY_ID
adalah nama untuk kebijakan. Setiap repositori upstream dalam kebijakan harus memiliki ID kebijakan yang unik.UPSTREAM_REPO_RESOURCE_NAME
adalah nama repositori upstream dalam format:projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY
- Repositori upstream dapat berupa repositori standar, jarak jauh, atau virtual.
- Repositori upstream harus berada di lokasi yang sama dengan repositori virtual, tetapi dapat berada di project yang berbeda. Google Cloud
- Repositori upstream harus memiliki format artefak yang sama dengan repositori virtual.
PRIORITY
adalah bilangan bulat yang menunjukkan prioritas untuk repositori upstream. Nilai prioritas yang lebih tinggi lebih diutamakan daripada nilai yang lebih rendah.
Contoh berikut menunjukkan file kebijakan bernama
policies.json
dengan empat repositori upstream.upstream1
memiliki nilai tertinggi untukpriority
, jadi Artifact Registry akan menelusurinya terlebih dahulu.upstream-test
memiliki nilaipriority
terendah, sehingga Artifact Registry akan menelusurinya terakhir.upstream2
danupstream3
memiliki prioritas yang sama. Jika Artifact Registry menemukan paket yang diminta di repositori dengan prioritas yang sama, paket tersebut dapat ditayangkan dari repositori mana pun.[{ "id" : "upstream1", "repository" : "projects/myproject/locations/us-west1/repositories/python-repo1", "priority" : 100 }, { "id" : "upstream2", "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2", "priority" : 80 }, { "id" : "upstream3", "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2", "priority" : 80 }, { "id" : "upstream-test", "repository" : "projects/myproject/locations/us-west1/repositories/python-test-repo", "priority" : 20 }]
Contoh ini juga menyisakan ruang di antara nilai prioritas. Kesenjangan ini memberikan fleksibilitas untuk menambahkan repositori upstream dengan prioritas yang berada di antara nilai yang ada. Misalnya, Anda dapat menambahkan repositori
upstream-3
dengan prioritas70
sehingga Artifact Registry menelusurinya sebelumupstream-test
.Pertimbangkan untuk menyimpan file kebijakan upstream di sistem kontrol sumber Anda agar Anda dapat menggunakannya kembali nanti untuk membuat perubahan pada setelan repositori upstream dan melacak perubahan historis.
Di direktori dengan file kebijakan upstream, jalankan perintah berikut untuk membuat repositori virtual:
gcloud artifacts repositories create VIRTUAL-REPOSITORY-NAME \ --project=PROJECT_ID \ --repository-format=FORMAT \ --mode=virtual-repository \ --location=LOCATION \ --description="DESCRIPTION" \ --upstream-policy-file=UPSTREAM_POLICY_FILE
Ganti kode berikut:
VIRTUAL-REPOSITORY-NAME
adalah nama repositori virtual.PROJECT_ID
adalah ID project tempat Anda membuat repositori virtual. Jika flag ini dihilangkan, project saat ini atau default akan digunakan.FORMAT
adalah format repositori. Nilai berikut tersedia:apt
(pratinjau pribadi)docker
go
maven
npm
python
yum
(pratinjau pribadi)
LOCATION
adalah lokasi regional atau multi-regional untuk repositori. Anda dapat menghapus tanda ini jika Anda menetapkan default. Untuk melihat daftar lokasi yang didukung, jalankan perintah:gcloud artifacts locations list
DESCRIPTION
adalah deskripsi opsional repositori. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.UPSTREAM_POLICY_FILE
adalah jalur ke file kebijakan upstream.
Misalnya, perintah berikut akan membuat repositori virtual bernama
virtual-repo
untuk paket Python di regionus-west1
dengan setelan dipolicies.json
.gcloud artifacts repositories create virtual-repo \ --repository-format=python \ --mode=virtual-repository \ --location=us-west1 \ --description="Python virtual repository" \ --upstream-policy-file=policies.json
Artifact Registry membuat repositori virtual.
Membuat repositori virtual menggunakan Terraform
Gunakan resource google_artifact_registry_repository
untuk membuat repositori.
Diperlukan versi terraform-provider-google
5.0.0
atau yang lebih baru.
Jika Anda baru menggunakan Terraform untuk Google Cloud, lihat halaman Mulai - Google Cloud di situs HashiCorp.
Contoh berikut menentukan penyedia, repositori virtual dengan
nama resource Terraform my-repo
, dan repositori upstream dengan nama resource
Terraform my-repo-upstream
.
Docker
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
location = "UPSTREAM_LOCATION"
repository_id = "UPSTREAM_REPOSITORY_ID"
description = "UPSTREAM_REPOSITORY_DESCRIPTION"
format = "docker"
}
resource "google_artifact_registry_repository" "my-repo" {
depends_on = []
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "VIRTUAL_REPOSITORY_DESCRIPTION"
format = "docker"
kms_key_name = "KEY"
mode = "VIRTUAL_REPOSITORY"
virtual_repository_config {
upstream_policies {
id = "UPSTREAM_REPOSITORY_ID"
repository = google_artifact_registry_repository.my-repo-upstream.id
priority = PRIORITY
}
}
}
Di mana
- PROJECT-ID adalah Google Cloud project ID.
- UPSTREAM_LOCATION adalah lokasi repositori upstream. Perhatikan bahwa repositori virtual dan upstream harus berada di region yang sama atau multi-region.
- UPSTREAM_REPOSITORY_ID adalah ID repositori upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION adalah deskripsi opsional repositori upstream.
- LOCATION adalah lokasi repositori virtual.
- REPOSITORY_ID adalah ID repositori virtual.
- DESCRIPTION adalah deskripsi opsional untuk repositori virtual. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.
- KEY adalah nama kunci Cloud Key Management Service, jika Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk enkripsi. Hapus argumen ini untuk menggunakan setelan default,yaitu kunci enkripsi yang dimiliki dan dikelola Google .
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas yang lebih besar akan didahulukan dalam urutan penarikan.
Maven
Jika Anda tidak menentukan kebijakan versi, Artifact Registry akan membuat repositori Maven yang menyimpan versi snapshot dan rilis paket secara default.
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
location = "UPSTREAM_LOCATION"
repository_id = "UPSTREAM_REPOSITORY_ID"
description = "UPSTREAM_REPOSITORY_DESCRIPTION"
format = "maven"
}
resource "google_artifact_registry_repository" "my-repo" {
depends_on = []
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "VIRTUAL_REPOSITORY_DESCRIPTION"
format = "maven"
kms_key_name = "KEY"
mode = "VIRTUAL_REPOSITORY"
virtual_repository_config {
upstream_policies {
id = "UPSTREAM_REPOSITORY_ID"
repository = google_artifact_registry_repository.my-repo-upstream.id
priority = PRIORITY
}
}
}
Di mana
- PROJECT-ID adalah Google Cloud project ID.
- UPSTREAM_LOCATION adalah lokasi repositori upstream. Perhatikan bahwa repositori virtual dan upstream harus berada di region yang sama atau multi-region.
- UPSTREAM_REPOSITORY_ID adalah ID repositori upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION adalah deskripsi opsional repositori upstream.
- LOCATION adalah lokasi repositori virtual.
- REPOSITORY_ID adalah ID repositori virtual.
- DESCRIPTION adalah deskripsi opsional untuk repositori virtual. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.
- KEY adalah nama kunci Cloud Key Management Service, jika Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk enkripsi. Hapus argumen ini untuk menggunakan setelan default,yaitu kunci enkripsi yang dimiliki dan dikelola Google .
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas yang lebih besar akan didahulukan dalam urutan penarikan.
Untuk menyimpan versi snapshot dan rilis di repositori yang berbeda, tentukan kebijakan versi untuk repositori menggunakan blok maven_config
. Blok ini mendukung setelan berikut:
version_policy
menetapkan kebijakan versi dengan salah satu nilai berikut:VERSION_POLICY_UNSPECIFIED
: Menyimpan snapshot dan merilis paket. Ini adalah setelan default.- RILIS: Hanya menyimpan paket rilis.
- SNAPSHOT: Hanya menyimpan paket snapshot.
allow_snapshot_overwrites
mengonfigurasi repositori dengan kebijakan versiSNAPSHOT
untuk menerima snapshot non-unik yang menggantikan versi yang ada di repositori.
Contoh berikut menentukan repositori Maven dengan kebijakan versi rilis.
provider "google" {
project = "my-project"
}
resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta
location = "us-central1"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
maven_config {
version_policy = "RELEASE"
}
}
npm
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
location = "UPSTREAM_LOCATION"
repository_id = "UPSTREAM_REPOSITORY_ID"
description = "UPSTREAM_REPOSITORY_DESCRIPTION"
format = "npm"
}
resource "google_artifact_registry_repository" "my-repo" {
depends_on = []
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "VIRTUAL_REPOSITORY_DESCRIPTION"
format = "npm"
kms_key_name = "KEY"
mode = "VIRTUAL_REPOSITORY"
virtual_repository_config {
upstream_policies {
id = "UPSTREAM_REPOSITORY_ID"
repository = google_artifact_registry_repository.my-repo-upstream.id
priority = PRIORITY
}
}
}
Di mana
- PROJECT-ID adalah Google Cloud project ID.
- UPSTREAM_LOCATION adalah lokasi repositori upstream. Perhatikan bahwa repositori virtual dan upstream harus berada di region yang sama atau multi-region.
- UPSTREAM_REPOSITORY_ID adalah ID repositori upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION adalah deskripsi opsional repositori upstream.
- LOCATION adalah lokasi repositori virtual.
- REPOSITORY_ID adalah ID repositori virtual.
- DESCRIPTION adalah deskripsi opsional untuk repositori virtual. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.
- KEY adalah nama kunci Cloud Key Management Service, jika Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk enkripsi. Hapus argumen ini untuk menggunakan setelan default,yaitu kunci enkripsi yang dimiliki dan dikelola Google .
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas yang lebih besar akan didahulukan dalam urutan penarikan.
Python
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
location = "UPSTREAM_LOCATION"
repository_id = "UPSTREAM_REPOSITORY_ID"
description = "UPSTREAM_REPOSITORY_DESCRIPTION"
format = "python"
}
resource "google_artifact_registry_repository" "my-repo" {
depends_on = []
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "VIRTUAL_REPOSITORY_DESCRIPTION"
format = "python"
kms_key_name = "KEY"
mode = "VIRTUAL_REPOSITORY"
virtual_repository_config {
upstream_policies {
id = "UPSTREAM_REPOSITORY_ID"
repository = google_artifact_registry_repository.my-repo-upstream.id
priority = PRIORITY
}
}
}
Di mana
- PROJECT-ID adalah Google Cloud project ID.
- UPSTREAM_LOCATION adalah lokasi repositori upstream. Perhatikan bahwa repositori virtual dan upstream harus berada di region yang sama atau multi-region.
- UPSTREAM_REPOSITORY_ID adalah ID repositori upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION adalah deskripsi opsional repositori upstream.
- LOCATION adalah lokasi repositori virtual.
- REPOSITORY_ID adalah ID repositori virtual.
- DESCRIPTION adalah deskripsi opsional untuk repositori virtual. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.
- KEY adalah nama kunci Cloud Key Management Service, jika Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk enkripsi. Hapus argumen ini untuk menggunakan setelan default,yaitu kunci enkripsi yang dimiliki dan dikelola Google .
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas yang lebih besar akan didahulukan dalam urutan penarikan.
Artifact Registry akan membuat repositori Anda. Jalankan perintah berikut untuk melihat deskripsi repositori:
gcloud artifacts repositories describe REPOSITORY \
--location=LOCATION
Setelah Anda membuat repositori:
- Memberikan akses ke repositori.
Mengonfigurasi Docker, pengelola paket, dan klien pihak ketiga lainnya untuk mengautentikasi ke repositori.
Memperbarui repositori upstream
Anda dapat mengubah daftar repositori upstream atau menyesuaikan prioritas repositori upstream.
Konsol
Buka halaman Repositories di konsol Google Cloud .
Di daftar repositori, pilih repositori virtual, lalu klik Edit Repository.
Di daftar Virtual Repository Upstream, lakukan perubahan yang diperlukan. Anda dapat menambahkan dan menghapus repositori atau mengubah prioritas repositori dalam daftar
Klik Simpan.
gcloud
Edit file kebijakan upstream dengan perubahan Anda. Misalnya, Anda mungkin ingin menambahkan repositori upstream atau menyesuaikan setelan prioritas.
Jika Anda ingin menghapus semua repositori upstream, file kebijakan Anda harus berisi kumpulan repositori kosong.
[]
Jalankan perintah berikut untuk menerapkan perubahan pada repositori virtual.
gcloud artifacts repositories update REPOSITORY \ --upstream-policy-file=UPSTREAM_POLICY_FILE
Ganti
UPSTREAM_POLICY_FILE
dengan jalur ke file kebijakan upstream.Untuk mengetahui informasi selengkapnya tentang perintah, lihat dokumentasi referensi gcloud artifacts repositories update.
Mengedit deskripsi repositori
Anda dapat mengubah deskripsi repositori dari Google Cloud konsol atau gcloud CLI.
Konsol
Buka halaman Repositories di konsol Google Cloud .
Di daftar repositori, pilih repositori, lalu klik Edit Repository.
Edit deskripsi repositori, lalu klik Simpan.
gcloud
Untuk memperbarui deskripsi repositori, jalankan perintah:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT \
--location=LOCATION \
--description="DESCRIPTION"
Ganti kode berikut:
REPOSITORY
: nama repositori. Jika Anda mengonfigurasi repositori default, Anda dapat menghapus tanda ini untuk menggunakan default.PROJECT
: ID project. Google CloudJika flag ini dihilangkan, project saat ini atau default akan digunakan.-
LOCATION
adalah lokasi repositori regional atau multi-regional. Gunakan tanda ini untuk melihat repositori di lokasi tertentu. Jika Anda mengonfigurasi lokasi default, Anda dapat menghilangkan tanda ini untuk menggunakan default. DESCRIPTION
: deskripsi untuk repositori.