Tutorial ini menunjukkan cara memvalidasi konfigurasi dengan Cloud Build saat menggunakan cluster edisi Google Kubernetes Engine (GKE) Enterprise. Penyiapan yang sama berfungsi di sistem CI/CD berbasis container, seperti CircleCI, dengan perubahan minimal.
Sebaiknya validasi setiap perubahan konfigurasi
di pipeline CI/CD Anda dengan
selain memeriksa validitas konfigurasi
Anda dengan menjalankan
Perintah nomos vet
.
Tujuan
- Membuat file konfigurasi Cloud Build yang menginstruksikan Config Sync untuk digunakan
nomos vet
pada konfigurasi di repositori Anda. - Buat pemicu Cloud Build agar konfigurasi Anda diperiksa setiap kali terdapat perubahan pada cabang pengembangan.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Config Sync (part of GKE Enterprise)
- Cloud Build
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Build.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Build.
- Membuat, atau memiliki akses ke, cluster GKE Enterprise yang memenuhi persyaratan untuk Config Sync. Untuk mengetahui detail tentang cara membuat cluster tersebut, lihat Memulai Config Sync.
Memberikan izin akun layanan Cloud Build
Beri akun layanan Cloud Build izin untuk mengakses GKE Enterprise.
gcloud
Untuk menambahkan peran Kubernetes Engine Developer
ke Cloud Build
akun layanan, jalankan perintah berikut:
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUM=$(gcloud projects list --filter="$PROJECT_ID" --format="value(PROJECT_NUMBER)")
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUM@cloudbuild.gserviceaccount.com \
--role=roles/container.developer
Konsol
Buka halaman IAM di Konsol Google Cloud.
Di kolom anggota, temukan baris yang berisi layanan Cloud Build akun:
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
Di baris tersebut, klik
Edit akun utama.Klik Add another role.
Di daftar Select a role, pilih
Kubernetes Engine Developer
, dan lalu klik Save.
Membuat konfigurasi Cloud Build
Membuat file konfigurasi Cloud Build dan menyimpannya
di direktori {i>root<i} dari repositori yang
berisi file konfigurasi Anda (untuk
contoh, my-repo/cloudbuild.yaml
).
steps:
- name: 'gcr.io/cloud-builders/kubectl'
args: ['config', 'current-context']
volumes:
- name: 'kube'
path: '/kube'
env:
- 'KUBECONFIG=/kube/config'
- 'CLOUDSDK_COMPUTE_ZONE=ZONE'
- 'CLOUDSDK_CONTAINER_CLUSTER=CLUSTER_NAME'
- 'CLOUDSDK_CONTAINER_USE_APPLICATION_DEFAULT_CREDENTIALS=true'
- name: 'bash'
args: ['chmod', '444', '/kube/config']
volumes:
- name: 'kube'
path: '/kube'
- name: 'gcr.io/config-management-release/nomos:stable'
args: ['nomos', 'vet', '--path', '/workspace/POLICY_DIR']
volumes:
- name: 'kube'
path: '/kube'
env:
- 'KUBECONFIG=/kube/config'
timeout: 30s
Ganti kode berikut:
ZONE
: zona tempat cluster Anda berjalanCLUSTER_NAME
: nama cluster AndaPOLICY_DIR
: jalur dalam repositori Git yang menunjukkan level teratas repositori yang akan disinkronkan
Ada tiga langkah dalam konfigurasi ini:
- Jalankan
kubectl config current-context
untuk membuat file kubeconfig yang diperlukan untuk melakukan autentikasi ke cluster GKEmy-cluster
. Tujuan pengguna root membuat file ini dengan izin terbatas. - Jalankan
chmod 444 /kube/config
untuk membuat file ini dapat dibaca di langkah berikutnya. - Jalankan
nomos vet
di repositori Git yang otomatis di-clone di/workspace
. Jika Anda menggunakan repo yang tidak terstruktur, jalankannomos vet --source-format=unstructured
saja.
Membuat pemicu build
Contoh berikut membuat pemicu yang berjalan untuk setiap commit ke master dari repositori Cloud Source Repositories.
Buka halaman Triggers di Konsol Google Cloud.
Klik Connect repository.
Pilih GitHub (diduplikasi), lalu klik Continue.
Pilih repositori Anda, lalu klik Connect repository.
Klik Tambahkan pemicu.
Masukkan atau pilih entri yang sesuai di setiap bidang yang dijelaskan dalam tabel berikut:
Kolom Entri Acara Push to a branch Cabang ^master$ Konfigurasi Cloud Build configuration file (yaml atau json) Lokasi file konfigurasi Cloud Build / cloudbuild.yaml Klik Buat untuk menyimpan pemicu build Anda.
Menguji pemicu build
Uji penyiapan secara manual dengan menjalankan pemicu:
Buka halaman Triggers di Konsol Google Cloud.
Temukan pemicu yang Anda buat, lalu klik Run trigger.
Pesan "Build started on master branch" muncul.
Klik Tampilkan.
Langkah-langkah Cloud Build akan berwarna hijau jika disiapkan dengan benar.
Konfigurasi Cloud Build tidak valid
Pemicu tidak dapat berjalan jika file konfigurasi Cloud Build tidak valid.
Untuk mengujinya, perbarui konfigurasi Cloud Build di repositori Anda dengan file berikut. Perhatikan indentasi yang tidak valid di baris 6:
steps:
- name: 'gcr.io/cloud-builders/kubectl'
args: ['config', 'current-context']
volumes:
- name: 'kube'
path: '/kube'
env:
- 'KUBECONFIG=/kube/config'
- 'CLOUDSDK_COMPUTE_ZONE=ZONE'
- 'CLOUDSDK_CONTAINER_CLUSTER=CLUSTER_NAME'
- 'CLOUDSDK_CONTAINER_USE_APPLICATION_DEFAULT_CREDENTIALS=true'
- name: 'bash'
args: ['chmod', '444', '/kube/config']
volumes:
- name: 'kube'
path: '/kube'
- name: 'gcr.io/nomos-release/nomos:stable'
args: ['nomos', 'vet', '--path', '/workspace/POLICY_DIR']
volumes:
- name: 'kube'
path: '/kube'
env:
- 'KUBECONFIG=/kube/config'
timeout: 30s
Jika Anda menjalankan pemicu kembali secara manual, Anda akan menerima pesan error berikut
karena path:
di baris 6 tidak diindentasi dengan benar:
Failed to trigger build: failed unmarshalling build config cloudbuild.yaml:
unknown field "path" in cloudbuild_go_proto.BuildStep.
Untuk memperbaiki konfigurasi ini, indentasi path:
di baris 6 ke level yang sama dengan name:
pada
baris 5. Untuk mengetahui informasi selengkapnya tentang struktur Cloud Build
file konfigurasi dasar, lihat Membuat Cloud Build dasar
konfigurasi.
Pembersihan
Menghapus project
Menghapus project Google Cloud:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
Untuk menghapus setiap resource, selesaikan langkah-langkah berikut:
- Hapus file konfigurasi Cloud Build.
- Menghapus pemicu Cloud Build yang Anda buat.
- Hapus cluster yang yang Anda gunakan untuk tutorial ini.