Memvalidasi konfigurasi
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 lainnya, seperti CircleCI, dengan sedikit perubahan.
Sebaiknya validasi juga setiap perubahan konfigurasi di pipeline CI/CD
selain memeriksa validitas konfigurasi Anda dengan menjalankan
perintah nomos vet
.
Tujuan
- Buat file konfigurasi Cloud Build yang menginstruksikan Config Sync untuk menggunakan
nomos vet
pada konfigurasi di repositori Anda. - Buat pemicu Cloud Build agar konfigurasi Anda diperiksa setiap kali ada perubahan pada cabang pengembangan.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Sinkronisasi Konfigurasi (bagian dari 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
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Enable the Cloud Build API.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Enable the Cloud Build API.
- 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 cluster GKE Enterprise Anda.
gcloud
Untuk menambahkan peran Kubernetes Engine Developer
ke akun layanan Cloud Build, 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 akun layanan Cloud Build:
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
Di baris tersebut, klik
Edit utama.Klik Add another role.
Di daftar Pilih peran, pilih
Kubernetes Engine Developer
, lalu klik Simpan.
Membuat konfigurasi Cloud Build
Buat file konfigurasi Cloud Build dan simpan di direktori utama repositori yang berisi file konfigurasi Anda (misalnya, 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 mewakili tingkat 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
. Pengguna root membuat file ini dengan izin terbatas. - Jalankan
chmod 444 /kube/config
agar file ini dapat dibaca di langkah berikutnya. - Jalankan
nomos vet
di repositori Git yang di-clone secara otomatis di/workspace
. Jika Anda menggunakan repo tidak terstruktur, jalankannomos vet --source-format=unstructured
sebagai gantinya.
Membuat pemicu build
Contoh berikut membuat pemicu yang berjalan untuk setiap commit ke cabang master repositori Cloud Source Repositories.
Buka halaman Pemicu di Konsol Google Cloud.
Klik Connect repository.
Pilih GitHub (dicerminkan), lalu klik Continue.
Pilih repositori Anda, lalu klik Connect repository.
Klik Tambahkan pemicu.
Masukkan atau pilih entri yang sesuai di setiap kolom yang dijelaskan dalam tabel berikut:
Kolom Entri Acara Kirim ke cabang Branch ^master$ Konfigurasi File konfigurasi Cloud Build (yaml atau json) Lokasi file konfigurasi Build Cloud {i>/cloudbuild.yaml<i} Klik Buat untuk menyimpan pemicu build Anda.
Menguji pemicu build
Uji penyiapan secara manual dengan menjalankan pemicu:
Buka halaman Pemicu di Konsol Google Cloud.
Temukan pemicu yang Anda buat, lalu klik Jalankan pemicu.
Pesan "Build started on master branch" akan muncul.
Klik Tampilkan.
Langkah Cloud Build muncul berwarna hijau jika disiapkan dengan benar.
Konfigurasi Cloud Build tidak valid
Pemicu tidak dapat dijalankan 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 menjalankan pemicu lagi 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 tingkat yang sama dengan name:
di baris 5. Untuk mengetahui informasi selengkapnya tentang struktur file konfigurasi Cloud Build, lihat Membuat konfigurasi Cloud Build dasar.
Pembersihan
Menghapus project
Menghapus project Google Cloud:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
Untuk menghapus resource satu per satu, selesaikan langkah-langkah berikut:
- Menghapus file konfigurasi Cloud Build.
- Hapus pemicu Cloud Build yang Anda buat.
- Hapus cluster yang Anda gunakan untuk tutorial ini.