Halaman ini menunjukkan cara menyinkronkan artefak OCI dari Artifact Registry.
Anda dapat mengonfigurasi Config Sync agar disinkronkan dari image OCI menggunakan Artifact Registry. Untuk menggunakan fitur ini, Anda harus mengaktifkan RootSync dan RepoSync API.
Karena Artifact Registry adalah layanan terkelola sepenuhnya dengan dukungan untuk image container dan artefak non-container, sebaiknya gunakan untuk penyimpanan dan pengelolaan image container di Google Cloud. Ada
beberapa alat yang tersedia untuk mengirim artefak ke Artifact Registry. Misalnya,
Anda dapat
mengirim image Docker,
mengirim diagram Helm, atau menggunakan
library go-containerregistry
untuk menggunakan registry container. Pilih alat yang paling sesuai untuk Anda.
Halaman ini menunjukkan cara membuat dan memublikasikan image Anda ke repositori di Artifact Registry dengan crane
dan oras
.
Membuat repositori Artifact Registry
Di bagian ini, Anda akan membuat repositori Artifact Registry. Untuk mempelajari cara membuat repositori Artifact Registry lebih lanjut, lihat Membuat repositori.
Aktifkan Artifact Registry API:
gcloud services enable artifactregistry.googleapis.com --project=PROJECT_ID
Buat repositori Artifact Registry:
gcloud artifacts repositories create AR_REPO_NAME \ --repository-format=docker \ --location=AR_REGION \ --description="Config Sync Helm repo" \ --project=PROJECT_ID
Ganti kode berikut:
PROJECT_ID
: project ID organisasi.AR_REPO_NAME
: ID repositori.AR_REGION
: lokasi regional atau multi-regional repositori.
Variabel yang digunakan di bagian berikut:
FLEET_HOST_PROJECT_ID
: jika Anda menggunakan GKE Workload Identity, ini sama denganPROJECT_ID
. Jika Anda menggunakan fleet Workload Identity, adalah project ID fleet tempat cluster Anda terdaftar.GSA_NAME
: nama akun layanan Google kustom yang ingin Anda gunakan untuk terhubung ke Artifact Registry.KSA_NAME
: akun layanan Kubernetes untuk rekonsiler.- Untuk repositori root, jika nama
RootSync
adalahroot-sync
, tambahkanroot-reconciler
. Jika tidak, tambahkanroot-reconciler-ROOT_SYNC_NAME
. - Untuk repositori namespace, jika nama
RepoSync
adalahrepo-sync
, tambahkanns-reconciler-NAMESPACE
. Jika tidak, tambahkanns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
denganREPO_SYNC_NAME_LENGTH
adalah jumlah karakter dalamREPO_SYNC_NAME
.
- Untuk repositori root, jika nama
Berikan izin kepada pembaca
Jika versi Config Sync adalah 1.17.2 atau yang lebih baru di cluster, Anda dapat menggunakan akun layanan Kubernetes untuk melakukan autentikasi ke Artifact Registry. Jika tidak, gunakan akun layanan Google untuk autentikasi.
Menggunakan akun layanan Kubernetes
Berikan peran IAM Artifact Registry Reader (roles/artifactregistry.reader
) ke akun layanan Kubernetes dengan kumpulan Workload Identity:
gcloud artifacts repositories add-iam-policy-binding AR_REPO_NAME \
--location=AR_REGION \
--member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
--role=roles/artifactregistry.reader \
--project=PROJECT_ID
Menggunakan akun layanan Google
Berikan peran IAM Artifact Registry Reader (
roles/artifactregistry.reader
) ke akun layanan Google:gcloud artifacts repositories add-iam-policy-binding AR_REPO_NAME \ --location=AR_REGION \ --member=serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/artifactregistry.reader \ --project=PROJECT_ID
Buat binding kebijakan IAM antara akun layanan Kubernetes dan akun layanan Google:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --project=PROJECT_ID
Mengirim image ke repositori Artifact Registry
Di bagian ini, Anda akan membuat image OCI dan mengirimnya ke Artifact Registry.
Buat file manifes
Namespace
:cat <<EOF> test-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: test EOF
Login ke Artifact Registry:
gcloud auth configure-docker AR_REGION-docker.pkg.dev
Kemas dan kirim image ke Artifact Registry:
crane
Perintah di bagian ini menggunakan
crane
untuk berinteraksi dengan gambar dan registri jarak jauh.Kemas file:
tar -cf test-namespace.tar test-namespace.yaml
Instal alat
crane
.Mengirim image ke Artifact Registry:
crane append -f test-namespace.tar -t AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME/test-namespace:v1
oras
Perintah di bagian ini menggunakan
oras
untuk berinteraksi dengan gambar dan registri jarak jauh.Kemas file:
tar -czf test-namespace.tar.gz test-namespace.yaml
Instal alat
oras
.Mengirim image ke Artifact Registry:
oras push AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME/test-namespace:v1 test-namespace.tar.gz
Mengonfigurasi Config Sync agar disinkronkan dari gambar Anda
Di bagian ini, Anda akan membuat objek RootSync
dan mengonfigurasi Config Sync agar disinkronkan dari image OCI.
Buat objek
RootSync
dengan nama unik:cat <<EOF>> ROOT_SYNC_NAME.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceFormat: unstructured sourceType: oci oci: image: AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME/test-namespace:v1 dir: . # The k8sserviceaccount auth type is available in version 1.17.2 and # later. Use `gcpserviceaccount` if using an older version. # auth: gcpserviceaccount # gcpServiceAccountEmail: GSA_NAME@PROJECT_ID.iam.gserviceaccount.com auth: k8sserviceaccount EOF
Ganti
ROOT_SYNC_NAME
dengan nama objekRootSync
Anda. Nama dalam cluster harus unik dan tidak lebih dari 26 karakter. Untuk mengetahui daftar lengkap opsi saat mengonfigurasi objekRootSync
, lihat kolomRootSync
danRepoSync
.Terapkan objek
RootSync
:kubectl apply -f ROOT_SYNC_NAME.yaml
Pastikan bahwa Config Sync disinkronkan dari gambar:
nomos status --contexts=$(kubectl config current-context)
Anda akan melihat output yang mirip dengan contoh berikut ini:
Connecting to clusters... *publish-config-registry -------------------- <root>:root-sync-test AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME/test-namespace:v1 SYNCED 05e6a6b77de7a62286387cfea833d45290105fe84383224938d7b3ab151a55a1 Managed resources: NAMESPACE NAME STATUS SOURCEHASH namespace/test Current 05e6a6b
Anda berhasil menyinkronkan gambar ke cluster.
Langkah selanjutnya
- Pelajari lebih lanjut cara menginstal Config Sync.