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): 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 terhadap 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:
-
Membuat repositori virtual dan memberikan akses ke setiap repositori:
Administrator Artifact Registry (
roles/artifactregistry.admin
) di Google Cloud project -
Berikan akses ke repositori di tingkat project:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) pada Google Cloud project -
Memberikan akses ke repositori di tingkat folder:
Folder Admin (
roles/resourcemanager.folderAdmin
) di folder tersebut -
Berikan akses ke repositori di tingkat organisasi:
Organization Admin (
roles/resourcemanager.organizationAdmin
) di 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 dalam 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 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 memberikan akses baca ke repositori upstream kepada agen layanan.
Anda dapat memberikan peran Artifact Registry Reader ke agen layanan Artifact Registry di level 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
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 ke agen layanan, tambahkan izin
artifactregistry.repositories.readViaVirtualRepository
ke peran kustom, lalu berikan peran tersebut ke agen layanan.Untuk 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 milik dan dikelola Google yang didukung Google Cloud 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 Konsol Google Cloud
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 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 lebih diutamakan daripada nilai yang lebih rendah. Biarkan 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 dikandungnya.
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 Encryption, pilih mekanisme enkripsi untuk repositori.
- Google-managed encryption key - Mengenkripsi konten repositori dengan Google-owned and Google-managed encryption key.
- Kunci yang dikelola pelanggan - Mengenkripsi konten repositori dengan kunci yang Anda kontrol melalui Cloud Key Management Service. Untuk petunjuk penyiapan kunci, lihat Menyiapkan CMEK untuk repositori.
Klik Create.
Artifact Registry membuat repositori dan menambahkannya ke daftar repositori.
Setelah membuat repositori:
- Berikan akses ke repositori.
Konfigurasikan Docker, pengelola paket, dan klien pihak ketiga lainnya untuk melakukan autentikasi 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 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
, sehingga 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, Artifact Registry dapat menayangkan 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 memberikan spasi 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 sehingga 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
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 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.
Diperlukan versi
5.0.0
atau yang lebih baru dari terraform-provider-google
.
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 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,kunci enkripsi milik dan dikelola Google .
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas yang lebih besar akan diprioritaskan dalam urutan pull.
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
}
}
}
Dari 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,kunci enkripsi milik dan dikelola Google .
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas yang lebih besar akan diprioritaskan dalam urutan pull.
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 paket rilis. Ini adalah setelan default.- RELEASE: 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 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,kunci enkripsi milik dan dikelola Google .
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas yang 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 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,kunci enkripsi milik dan dikelola Google .
- PRIORITY adalah nilai prioritas opsional. Prioritas tertinggi adalah 1. Entri dengan nilai prioritas yang lebih besar akan diprioritaskan dalam urutan pull.
Artifact Registry akan membuat repositori Anda. Jalankan perintah berikut untuk melihat deskripsi repositori:
gcloud artifacts repositories describe REPOSITORY \
--location=LOCATION
Setelah membuat repositori:
- Berikan akses ke repositori.
Konfigurasikan Docker, pengelola paket, dan klien pihak ketiga lainnya untuk melakukan autentikasi ke repositori.
Mengupdate 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 Repositori.
Di daftar Virtual Repository Upstream, buat perubahan yang diperlukan. Anda dapat menambahkan dan menghapus repositori atau mengubah prioritas repositori dalam daftar
Klik Save.
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 harus berisi kumpulan repositori kosong.
[]
Jalankan perintah berikut untuk menerapkan perubahan 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 ini, lihat dokumentasi referensi update repositori artefak gcloud.
Mengedit deskripsi repositori
Anda dapat mengubah deskripsi repositori dari Konsol Google Cloud atau gcloud CLI.
Konsol
Buka halaman Repositories di konsol Google Cloud.
Dalam daftar repositori, pilih repositori, lalu klik Edit Repositori.
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 mengonfigurasi repositori default, Anda dapat menghapus tanda ini untuk menggunakan default.PROJECT
: ID project Google Cloud. Jika flag ini dihilangkan, project saat ini atau default akan digunakan.-
LOCATION
adalah lokasi repositori regional atau multi-regional. Gunakan flag ini untuk melihat repositori di lokasi tertentu. Jika Anda mengonfigurasi lokasi default, Anda dapat menghilangkan tanda ini untuk menggunakan default. DESCRIPTION
: deskripsi untuk repositori.