Halaman ini menjelaskan cara membuat repositori virtual Artifact Registry.
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.
Untuk 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 Anda perlukan untuk mengelola repositori, minta administrator untuk memberi Anda peran IAM berikut:
-
Buat repositori virtual dan berikan akses ke masing-masing repositori:
Artifact Registry Repository Administrator (
roles/artifactregistry.repoAdmin
) pada project Google Cloud -
Memberikan akses ke repositori pada level project:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) pada project Google Cloud -
Berikan akses ke repositori pada level folder:
Folder Admin (
roles/resourcemanager.folderAdmin
) di folder -
Memberikan akses ke repositori di tingkat organisasi:
Organization Admin (
roles/resourcemanager.organizationAdmin
) di organisasi Google Cloud
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Jika repositori upstream berada di project lain, administrator dalam 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 Google Cloud yang sama dengan tempat Anda berencana membuat repositori virtual.
Repositori virtual menggunakan Agen Layanan Artifact Registry untuk mengautentikasi ke repositori upstream. Anda harus memberi agen layanan akses baca ke repositori upstream.
Anda dapat memberikan peran Artifact Registry Reader kepada agen layanan Artifact Registry di level project, sehingga Anda tidak perlu memberikan akses ke repositori upstream individual.
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
Dari mana
- UPSTREAM_PROJECT_ID adalah ID project Google Cloud dengan repositori upstream.
- VIRTUAL_REPO_PROJECT_NUMBER adalah nomor project 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 khusus, lalu berikan peran tersebut kepada agen layanan.Untuk mengetahui informasi selengkapnya tentang 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 yang dikelola Google atau kunci enkripsi yang dikelola pelanggan. Artifact Registry menggunakan kunci enkripsi yang dikelola Google secara default.
Artifact Registry menerapkan batasan kebijakan organisasi yang mengharuskan CMEK untuk mengenkripsi resource atau membatasi kunci Cloud KMS mana yang dapat digunakan untuk perlindungan CMEK.
Membuat repositori virtual menggunakan konsol Google Cloud
Buka halaman Repositories di Konsol Google Cloud.
Klik Create Repository.
Tentukan nama repositori. Untuk setiap lokasi repositori dalam sebuah project, nama repositori harus unik.
Pilih format repositori.
Di bagian Repository mode, pilih Virtual.
Pada 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 Google Cloud yang berbeda.
- 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 akan lebih diutamakan daripada nilai yang lebih rendah. Sisakan spasi di antara nilai prioritas sehingga ada fleksibilitas untuk menambahkan repositori upstream dengan prioritas yang ada di antara nilai yang sudah ada.
Di bagian Location Type, pilih lokasi untuk repositori:
Pilih jenis lokasi: Region atau Multi-Region. Daftar perubahan lokasi 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 Add Label dan masukkan pasangan nilai kunci untuk label tersebut. Anda dapat menambahkan, mengedit, atau menghapus label setelah membuat repositori.
Di bagian Enkripsi, pilih mekanisme enkripsi untuk repositori.
- Kunci yang dikelola Google - Enkripsi konten repositori dengan kunci enkripsi yang dikelola Google.
- 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 Create.
Artifact Registry membuat repositori dan menambahkannya ke daftar repositori.
Setelah Anda membuat repositori:
- Berikan akses ke repositori.
Konfigurasikan Docker, pengelola paket, dan klien pihak ketiga lainnya untuk mengautentikasi ke repositori.
Membuat repositori virtual menggunakan gcloud CLI
Untuk membuat repositori virtual, tentukan repositori upstream Anda dalam file kebijakan, lalu buat 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 Google Cloud yang berbeda.
- 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, jadi Artifact Registry akan menelusurinya terakhir.upstream2
danupstream3
memiliki prioritas yang sama. Jika Artifact Registry menemukan paket yang diminta dalam repositori yang memiliki prioritas yang sama, Artifact Registry dapat menyalurkan paket dari salah satu repositori.[{ "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-nilai yang ada. Misalnya, Anda dapat menambahkan repositori
upstream-3
dengan prioritas70
sehingga Artifact Registry menelusurinya sebelumupstream-test
.Sebaiknya simpan file kebijakan upstream Anda di sistem kontrol sumber, sehingga Anda dapat menggunakannya kembali nanti untuk melakukan perubahan pada setelan repositori upstream dan melacak perubahan historis.
Di direktori yang berisi file kebijakan upstream Anda, 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-nilai berikut tersedia:apt
(pratinjau pribadi)docker
maven
npm
python
yum
(pratinjau pribadi)
LOCATION
adalah lokasi regional atau multi-regional untuk repositori. Anda dapat menghapus flag ini jika menetapkan default. Untuk melihat daftar lokasi yang didukung, jalankan perintah:gcloud artifacts locations list
DESCRIPTION
adalah deskripsi opsional dari repositori. Jangan sertakan data sensitif karena deskripsi repositori tidak dienkripsi.UPSTREAM_POLICY_FILE
adalah jalur ke file kebijakan upstream.
Misalnya, perintah berikut 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.
terraform-provider-google
versi
5.0.0
atau yang lebih baru diperlukan.
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
}
}
}
Dari mana
- PROJECT-ID adalah project ID Google Cloud.
- UPSTREAM_LOCATION adalah lokasi repositori upstream. Perhatikan bahwa repositori dan upstream virtual harus berada di region atau multi-region yang sama.
- UPSTREAM_REPOSITORY_ID adalah ID repositori upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION adalah deskripsi opsional dari 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, kunci enkripsi yang dikelola Google.
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas lebih besar akan diprioritaskan dalam urutan pull.
Maven
Jika kebijakan versi tidak ditentukan, 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
}
}
}
Dari mana
- PROJECT-ID adalah project ID Google Cloud.
- UPSTREAM_LOCATION adalah lokasi repositori upstream. Perhatikan bahwa repositori dan upstream virtual harus berada di region atau multi-region yang sama.
- UPSTREAM_REPOSITORY_ID adalah ID repositori upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION adalah deskripsi opsional dari 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, kunci enkripsi yang dikelola Google.
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas lebih besar akan diprioritaskan dalam urutan pull.
Untuk menyimpan snapshot dan versi 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 paket snapshot dan rilis. 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 menimpa 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
}
}
}
Dari mana
- PROJECT-ID adalah project ID Google Cloud.
- UPSTREAM_LOCATION adalah lokasi repositori upstream. Perhatikan bahwa repositori dan upstream virtual harus berada di region atau multi-region yang sama.
- UPSTREAM_REPOSITORY_ID adalah ID repositori upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION adalah deskripsi opsional dari 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, kunci enkripsi yang dikelola Google.
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas lebih besar akan diprioritaskan dalam urutan pull.
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
}
}
}
Dari mana
- PROJECT-ID adalah project ID Google Cloud.
- UPSTREAM_LOCATION adalah lokasi repositori upstream. Perhatikan bahwa repositori dan upstream virtual harus berada di region atau multi-region yang sama.
- UPSTREAM_REPOSITORY_ID adalah ID repositori upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION adalah deskripsi opsional dari 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, kunci enkripsi yang dikelola Google.
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas lebih besar akan diprioritaskan dalam urutan pull.
Artifact Registry membuat repositori Anda. Jalankan perintah berikut untuk melihat deskripsi repositori:
gcloud artifacts repositories describe REPOSITORY \
--location=LOCATION
Setelah Anda membuat repositori:
- Berikan akses ke repositori.
Konfigurasikan 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.
Dalam daftar repositori, pilih repositori virtual, lalu klik Edit Repository.
Dalam daftar Virtual Repository Upstream, buat perubahan yang diperlukan. Anda dapat menambahkan dan menghapus repositori atau mengubah prioritas repositori dalam daftar
Klik Simpan.
gcloud
Edit file kebijakan upstream dengan perubahan yang Anda buat. 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 Anda ke 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 memadai repository update.
Mengedit deskripsi repositori
Anda dapat mengubah deskripsi repositori dari Google Cloud Console atau gcloud CLI.
Konsol
Buka halaman Repositories di Konsol Google Cloud.
Dalam daftar repositori, pilih repositori, lalu klik Edit Repository.
Edit deskripsi repositori, lalu klik Save.
gcloud
Untuk memperbarui deskripsi repositori, jalankan perintah:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT] \
--location=LOCATION \
--description="DESCRIPTION"
Ganti nilai berikut:
- REPOSITORY adalah nama repositori. Jika mengonfigurasi repositori default, Anda dapat menghilangkan flag ini untuk menggunakan repositori default.
- PROJECT adalah project ID Google Cloud. Jika flag ini dihilangkan, project saat ini atau default akan digunakan.
- LOCATION adalah lokasi regional atau multi-regional. Gunakan flag ini untuk melihat repositori di lokasi tertentu. Jika mengonfigurasi lokasi default, Anda dapat menghilangkan tanda ini untuk menggunakan lokasi default.
- DESCRIPTION adalah deskripsi untuk repositori.