Halaman ini menunjukkan cara menyinkronkan artefak OCI dari Artifact Registry.
Anda bisa mengonfigurasi Config Sync yang akan disinkronkan dari OCI dengan menggunakan Artifact Registry. Untuk menggunakan fitur ini, Anda harus mengaktifkan tindakan API RootSync dan RepoSync.
Karena Artifact Registry adalah layanan terkelola sepenuhnya dengan dukungan untuk
pada image container dan artefak non-container, sebaiknya gunakan
untuk penyimpanan dan pengelolaan image container Anda di Google Cloud. Ada
yang tersedia untuk mengirim artefak ke Artifact Registry. Misalnya,
Anda dapat
push image Docker,
push chart Helm, atau gunakan
tindakan
library go-containerregistry
agar dapat digunakan dengan registry container. Pilih alat yang paling sesuai untuk Anda.
Halaman ini menunjukkan cara membuat dan memublikasikan gambar ke
repositori di Artifact Registry dengan crane
dan oras
.
Membuat repositori Artifact Registry
Di bagian ini, Anda akan membuat repositori Artifact Registry. Untuk mempelajari lebih lanjut tentang membuat repositori Artifact Registry, 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
: regional atau multi-regional lokasi repositori.
Variabel yang digunakan di bagian berikut:
FLEET_HOST_PROJECT_ID
: jika Anda menggunakan GKE Workload Identity Federation untuk GKE, sama sepertiPROJECT_ID
. Jika Anda menggunakan fleet Workload Identity Federation for GKE, ini adalah project ID fleet yang cluster terdaftar.GSA_NAME
: nama akun layanan Google kustom yang ingin Anda gunakan untuk terhubung ke Artifact Registry.KSA_NAME
: akun layanan Kubernetes untuk rekonsiliasi.- Untuk repositori root, jika nama
RootSync
adalahroot-sync
, tambahkanroot-reconciler
. Atau, tambahkanroot-reconciler-ROOT_SYNC_NAME
. - Untuk repositori namespace, jika nama
RepoSync
adalahrepo-sync
, tambahkanns-reconciler-NAMESPACE
. Atau, 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 pembaca
Jika versi Config Sync adalah 1.17.2 atau yang lebih baru pada cluster, Anda dapat menggunakan akun layanan Kubernetes untuk melakukan autentikasi ke Artifact Registry. Jika tidak, menggunakan akun layanan Google untuk otentikasi.
Menggunakan akun layanan Kubernetes
Berikan Pembaca Artifact Registry (roles/artifactregistry.reader
)
Peran IAM ke akun layanan Kubernetes dengan
Workload Identity Federation untuk kumpulan GKE:
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 Pembaca Artifact Registry (
roles/artifactregistry.reader
) Peran IAM 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
Membuat binding kebijakan IAM antara 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 jarak jauh dan registry.Kemas file:
tar -cf test-namespace.tar test-namespace.yaml
Instal
crane
menyediakan alat command line gcloud.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 jarak jauh dan registry.Kemas file:
tar -czf test-namespace.tar.gz test-namespace.yaml
Instal
oras
menyediakan alat command line gcloud.Mengirim image ke Artifact Registry:
oras push AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME/test-namespace:v1 test-namespace.tar.gz
Mengonfigurasikan Sinkronisasi Konfigurasi untuk menyinkronkan dari gambar Anda
Di bagian ini, Anda akan membuat objek RootSync
dan mengonfigurasi Config Sync
untuk melakukan sinkronisasi 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 harus unik di cluster dan tidak lebih dari 26 karakter. Untuk 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 image:
nomos status --contexts=$(kubectl config current-context)
Anda akan melihat output yang mirip dengan contoh berikut:
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.