Dokumen ini adalah bagian dari rangkaian yang membahas pola arsitektur yang dapat digunakan perusahaan untuk mengoptimalkan jejak cloud mereka dalam skala besar menggunakan Active Assist. Tutorial ini menunjukkan cara mem-build pipeline otomatisasi untuk rekomendasi Active Assist yang berfungsi dengan toolchain GKE Enterprise. Panduan ini ditujukan untuk pengguna yang menggunakan Config Sync untuk mengelola lingkungan GKE Enterprise dan Config Connector untuk mengelola resource Google Cloud . Bagian lain dari seri ini adalah sebagai berikut:
- Pola untuk menggunakan Active Assist dalam skala besar
- Menggunakan pipeline serverless dengan Active Assist
- Menggunakan toolchain GKE Enterprise dengan Active Assist (dokumen ini)
Pipeline otomatisasi yang Anda buat dalam tutorial ini dapat membantu Anda mencapai hal berikut:
- Menskalakan penggunaan portofolio Active Assist di organisasi Anda.
- Membuat Active Assist sebagai bagian dari pipeline continuous integration dan continuous delivery (CI/CD) Anda.
- Mengontrol peninjauan dan pengaktifan rekomendasi Active Assist menggunakan konstruksi seperti masalah GitHub dan permintaan pull.
Tutorial ini juga menggunakan kpt, toolkit open source yang dikembangkan oleh Google untuk membantu Anda mengelola, memanipulasi, menyesuaikan, dan menerapkan file data konfigurasi resource Kubernetes.
Arsitektur
Diagram arsitektur berikut menunjukkan komponen yang Anda gunakan dalam tutorial ini.
Komponen tersebut digunakan dengan cara berikut:
- Repositori GitHub don't repeat yourself (DRY), yang digunakan untuk template Config Connector yang Anda deploy di seluruh project di organisasi Google Cloud Anda.
- Satu atau beberapa repositori GitHub yang khusus untuk project atau lingkungan dan menyimpan file konfigurasi yang di-hydrate. Repositori yang di-hydrate ini adalah untuk lingkungan yang dikelola Config Sync. Config Connector digunakan untuk mengaktifkan dan mengelola Google Cloud resource di Google Cloud organisasi.
- Cluster GKE yang menggunakan Config Sync untuk kontrol versi dan deteksi penyimpangan. Cluster ini juga telah menginstal Config Connector. Config Connector memungkinkan cluster mengelola resource Google Clouddi seluruh organisasi Google Cloud .
- Pemicu Cloud Build yang memicu build saat template di-push ke repositori DRY GitHub.
- Pemicu Cloud Build terjadwal yang memicu build secara berkala. Tugas build menggunakan fungsi kpt. Fungsi ini memanggil Active Assist Recommender API untuk mengambil rekomendasi aktif. Alat ini meninjau dan mengurai rekomendasi untuk menentukan apakah resourceGoogle Cloud yang dikelola Config Connector perlu diubah ukurannya atau dioptimalkan. Fungsi kpt membuat masalah GitHub di repositori DRY dengan detail perubahan yang direkomendasikan jika resource Google Cloud yang dikelola Config Connector perlu diubah ukurannya atau dioptimalkan.
Alur kerja untuk arsitektur ini adalah sebagai berikut:
- Tim resmi yang memiliki akses ke repositori DRY membuat dan mengelola template Config Connector di repositori.
- Tugas Cloud Build dipicu saat template dibuat atau
diubah dan di-checkin ke cabang
main
. - Tugas Cloud Build akan mengisi template dengan memanggil penyetel kpt. Tugas ini akan mendorong file konfigurasi yang di-hydrate ke repositori GitHub yang di-hydrate. Pengelola Secret digunakan untuk menyimpan kunci deployment GitHub untuk repositori pribadi.
- Config Sync memantau perubahan pada repositori yang di-hydrate dan menerapkan update yang ditemukan di repositori ke cluster terkelola.
- Config Connector memantau perubahan dan mengaktifkan resource Google Cloudjika ada resource yang perlu dibuat atau diperbarui sebagai akibat dari perubahan Model Resource Kubernetes (KRM) yang diterapkan oleh Config Sync.
- Pemicu Cloud Build terjadwal berjalan secara berkala untuk memanggil Recommender API guna mengambil rekomendasi aktif untuk project yang dikelola Config Connector.
- Tugas Cloud Build terjadwal mengeksekusi fungsi kpt kustom untuk memanggil Recommender API serta mengambil dan mengurai rekomendasi aktif.
- Fungsi kpt membuat masalah GitHub yang menunjukkan perbandingan antara konfigurasi resource saat ini dan konfigurasi yang direkomendasikan untuk resource tersebut. Dengan pendekatan ini, masalah GitHub dibuat di repositori DRY, yang memudahkan untuk melacak perubahan repositori.
Tujuan
- Buat contoh repositori GitHub berikut:
- Repositori DRY untuk KRM Config Connector.
- Repositori untuk menyimpan file konfigurasi yang dihidrasi yang dihasilkan menggunakan penyetel kpt.
- Buat cluster GKE dengan Config Sync dan Config Connector.
- Buat contoh fungsi kpt untuk mengambil rekomendasi Active Assist untuk project yang dikelola oleh Config Connector.
- Buat pemicu Cloud Build yang dipicu saat template dikirim ke cabang
main
repositori DRY. - Buat tugas Cloud Build terjadwal yang berjalan secara berkala untuk mengambil rekomendasi Active Assist yang tersedia untuk resource yang dikelola oleh Config Connector.
- Uji pipeline menyeluruh dengan rekomendasi stub yang disediakan di repositori GitHub untuk tutorial ini.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- Cloud Build
- Cloud Run
- Firestore
- Pub/Sub
- Container Registry
- Cloud Scheduler
- Google Kubernetes Engine (GKE) Enterprise edition
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
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
- Catat ID project Google Cloud. Anda akan menggunakan ID ini di bagian berikutnya saat menyiapkan lingkungan. Project ini disebut di seluruh
tutorial sebagai project
build
. -
Enable the Cloud Build, Firestore, App Engine, Pub/Sub, Cloud Run, Cloud Scheduler, and Cloud Source Repositories APIs.
Anda menggunakan kredensial aplikasi default untuk tutorial ini. Jika Anda diminta untuk membuat kredensial di halaman Tambahkan kredensial ke project Anda, klik Batal. -
Make sure that billing is enabled for your Google Cloud project.
Menyiapkan lingkungan Anda
Dalam tutorial ini, Anda akan menjalankan semua perintah di Cloud Shell.
In the Google Cloud console, activate Cloud Shell.
Tetapkan variabel untuk project ID dan nomor project project Google Cloud
build
saat ini:export RECO_MGR_PROJECT=PROJECT_ID gcloud config set project $RECO_MGR_PROJECT export RECO_MGR_PROJECT_NUMBER=$(gcloud projects describe $RECO_MGR_PROJECT --format='value(projectNumber)')
Ganti
PROJECT_ID
dengan project ID yang Anda catat di bagian sebelumnya.Tetapkan variabel untuk region deployment:
export REGION=us-central1 export ZONE=us-central1-a
Clone repositori yang berisi kode untuk aplikasi contoh yang digunakan dalam tutorial ini:
git clone https://github.com/GoogleCloudPlatform/activeassist-anthos-toolchain.git
Buka direktori project:
cd activeassist-anthos-toolchain
Mem-build pipeline
Di bagian ini, Anda akan membuat komponen untuk mem-build pipeline. Rekomendasi Active Assist dibuat berdasarkan pola penggunaan dan metrik sistem. Setiap kategori rekomendasi dapat menggunakan periode waktu default yang berbeda untuk menganalisis data dan metrik penggunaan berdasarkan rekomendasi yang dihasilkan. Untuk menguji pipeline menyeluruh, repositori yang Anda clone pada langkah sebelumnya memberikan rekomendasi contoh (stub) yang Anda gunakan untuk menjalankan pipeline menyeluruh.
Atau, jika Anda menjalankan pipeline dalam project contoh yang memiliki rekomendasi dan resource yang ada, Anda dapat membuat perubahan yang sesuai pada kode contoh, lalu menjalankan pipeline.
Menyiapkan contoh repositori GitHub pribadi
Di bagian berikut, Anda akan menyiapkan repositori GitHub contoh untuk tutorial ini.
Menyiapkan repositori GitHub DRY pribadi
Buat repositori GitHub pribadi untuk repositori DRY. Catat nama yang Anda berikan ke repositori.
Di Cloud Shell, buat variabel lingkungan untuk nama pengguna GitHub dan nama repositori DRY:
export REPO_OWNER=YOUR_GITHUB_USERNAME export DRY_REPO_NAME=YOUR_PRIVATE_DRY_REPO
Ganti kode berikut:
YOUR_GITHUB_USERNAME
: nama pengguna GitHub Anda.YOUR_PRIVATE_DRY_REPO
: nama repositori DRY Anda.
Buat token akses pribadi (PAT) untuk membuat masalah di repositori ini. Pipeline akan membuat masalah GitHub jika ada rekomendasi Active Assist yang perlu ditinjau. Untuk mengetahui informasi selengkapnya tentang cara membuat PAT di GitHub, lihat dokumentasi GitHub.
Saat menetapkan cakupan untuk token ini, pilih Kontrol penuh repositori pribadi.
Di Cloud Shell, buat variabel lingkungan untuk PAT yang Anda buat:
export GITHUB_TOKEN=YOUR_PERSONAL_ACCESS_TOKEN
Ganti
YOUR_PERSONAL_ACCESS_TOKEN
dengan token Anda sendiri.
Menyiapkan repositori GitHub pribadi yang di-hydrate
Buat repositori GitHub pribadi untuk repositori yang di-hydrate. Catat nama yang Anda berikan ke repositori.
Di Cloud Shell, tetapkan variabel lingkungan untuk repositori yang diaktifkan:
export HYDRATED_REPO_NAME=YOUR_PRIVATE_HYDRATED_REPO export HYDRATED_REPO='git@github.com:$REPO_OWNER/$HYDRATED_REPO_NAME.git'
Ganti
YOUR_PRIVATE_HYDRATED_REPO
dengan nama repositori yang diaktifkan.Buat pasangan kunci deploy:
ssh-keygen -t rsa -b 4096 \ -C 'active-assist-robot' \ -N '' \ -f $(pwd)/active-assist-robot
Kunci deployment memungkinkan Anda men-deploy ke repositori GitHub pribadi saat menjalankan tugas Cloud Build untuk mengisi ulang file konfigurasi.
Cetak kunci yang dihasilkan:
cat $(pwd)/active-assist-robot.pub
Tambahkan kunci deployment ke repositori GitHub pribadi. Pastikan untuk memilih Izinkan akses tulis saat Anda menambahkan kunci deployment. Untuk mempelajari cara menambahkan kunci deployment ke repositori GitHub, lihat dokumentasi GitHub untuk Mengelola kunci deployment.
Mengupload kunci GitHub ke Secret Manager
Di Cloud Shell, buat secret untuk menyimpan kunci pribadi dari pasang pasangan kunci:
gcloud secrets create github-ssh-key \ --data-file=$(pwd)/active-assist-robot
Buat secret untuk menyimpan PAT:
echo $GITHUB_TOKEN | gcloud secrets create github-pat --data-file=-
Membuat cluster GKE
Di bagian ini, Anda akan membuat cluster GKE dengan add-on Config Connector, membuat identitas, dan mengonfigurasi Config Connector. Anda juga akan mengonfigurasi Config Sync. Anda dapat menggunakan Config Sync untuk membuat konfigurasi umum di seluruh infrastruktur, termasuk kebijakan kustom, dan menerapkannya di infrastruktur lokal dan di cloud. Config Sync mengevaluasi perubahan dan meluncurkannya ke semua cluster Kubernetes sehingga status yang Anda inginkan selalu tercermin di cluster Anda.
Di Cloud Shell, buat cluster GKE baru dengan mengaktifkan add-on Config Connector:
gcloud container clusters create sample-ops \ --machine-type n1-standard-4 \ --zone $ZONE \ --release-channel regular \ --addons ConfigConnector \ --workload-pool=$RECO_MGR_PROJECT.svc.id.goog \ --enable-stackdriver-kubernetes \ --enable-ip-alias
Selesaikan bagian berikut dalam panduan Menginstal dengan add-on GKE, untuk membuat identitas dan mengonfigurasi Config Connector.
Instal Config Sync di cluster GKE yang Anda buat. Saat mengonfigurasi Config Sync, Anda harus melakukan hal berikut:
- Gunakan
token
untuk
memberikan akses hanya baca ke Git kepada Config Sync.
Gunakan token GitHub yang Anda
buat saat menyiapkan repositori GitHub DRY pribadi.
Token tersedia melalui variabel lingkungan
$GITHUB_TOKEN
. - Mengonfigurasi Config Sync menggunakan gcloud.
Tetapkan setelan berikut:
- sourceFormat:
hierarchy
- syncRepo:
https://github.com/YOUR_GITHUB_USERNAME/YOUR_PRIVATE_HYDRATED_REPO
- syncBranch:
main
- secretType:
token
- policyDir: Jangan isi opsi ini
- sourceFormat:
- Gunakan
token
untuk
memberikan akses hanya baca ke Git kepada Config Sync.
Gunakan token GitHub yang Anda
buat saat menyiapkan repositori GitHub DRY pribadi.
Token tersedia melalui variabel lingkungan
Membuat pemicu Cloud Build untuk melakukan push ke repositori yang di-hydrate
Di bagian berikut, Anda akan membuat pemicu Cloud Build yang
dipicu saat template dikirim ke cabang utama repositori YOUR_PRIVATE_DRY_REPO
Anda. Pemicu ini menjalankan langkah-langkah yang mengaktifkan template KRM konfigurasi sebagai data di repositori YOUR_PRIVATE_DRY_REPO
dan mengirimkan file konfigurasi yang diaktifkan ke repositori YOUR_PRIVATE_HYDRATED_REPO
.
Menghubungkan Cloud Build ke repositori GitHub Anda
Di bagian ini, Anda akan
menghubungkan
repositori GitHub YOUR_PRIVATE_DRY_REPO
dan YOUR_PRIVATE_HYDRATED_REPO
ke Cloud Build.
Buka halaman marketplace GitHub untuk aplikasi Cloud Build.
Klik Setup dengan Google Cloud Build.
Jika diminta, login ke GitHub.
Pilih Hanya pilih repositori.
Gunakan drop-down Select repositories untuk mengaktifkan akses ke repositori
YOUR_PRIVATE_DRY_REPO
danYOUR_PRIVATE_HYDRATED_REPO
melalui aplikasi Cloud Build.Klik Instal.
Login ke Google Cloud. Halaman Otorisasi akan ditampilkan dan Anda akan diminta untuk mengizinkan aplikasi Google Cloud Build terhubung ke Google Cloud.
Klik otorisasikan Google Cloud Build dengan GoogleCloudBuild. Anda akan dialihkan ke konsol Google Cloud.
Pilih project Google Cloud Anda.
Centang kotak izin, lalu klik Berikutnya.
Klik Instal.
Login ke Google Cloud. Halaman Otorisasi akan ditampilkan dan Anda akan diminta untuk mengizinkan aplikasi Google Cloud Build terhubung ke Google Cloud.
Klik otorisasikan Google Cloud Build dengan GoogleCloudBuild. Anda akan dialihkan ke konsol Google Cloud.
Pilih project Google Cloud Anda.
Centang kotak izin, lalu klik Berikutnya.
Di halaman Select repository yang muncul, pilih repositori GitHub berikut:
YOUR_PRIVATE_DRY_REPO
YOUR_PRIVATE_HYDRATED_REPO
Klik Connect, lalu klik Done.
Membuat pemicu Cloud Build untuk repositori DRY
Jalankan perintah berikut di Cloud Shell:
envsubst < cloudbuild.template.yaml > cloudbuild.yaml
Perintah ini akan menghasilkan file
cloudbuild.yaml
.Buat pemicu:
gcloud beta builds triggers create github \ --name ActiveAssistDemo \ --repo-name=$DRY_REPO_NAME \ --repo-owner=$REPO_OWNER \ --branch-pattern="main" \ --build-config=cloudbuild.yaml
Berikan izin akun layanan Cloud Build untuk mengakses Secret Manager:
gcloud secrets add-iam-policy-binding github-ssh-key \ --member="serviceAccount:${RECO_MGR_PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor" gcloud secrets add-iam-policy-binding github-pat \ --member="serviceAccount:${RECO_MGR_PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
Membuat pemicu Cloud Build terjadwal untuk rekomendasi Active Assist
Di bagian berikut, Anda akan membuat pemicu Cloud Build terjadwal yang berjalan secara berkala. Pemicu ini mengambil rekomendasi Active Assist menggunakan fungsi kpt dan menentukan apakah ada rekomendasi aktif untuk resource di repositori YOUR_PRIVATE_HYDRATED_REPO
Anda. Fungsi kpt juga membuat masalah GitHub di repositori
YOUR_PRIVATE_HYDRATED_REPO
Anda jika ada rekomendasi aktif untuk konfigurasi resource yang
perlu ditinjau dan diaktifkan.
Membuat image Cloud Build
Di bagian ini, Anda akan membuat image Cloud Build yang memiliki komponen kpt, gh, dan Node.
Di Cloud Shell, build dan kirim image Docker ke Container Registry:
gcloud auth configure-docker docker build -t gcr.io/$RECO_MGR_PROJECT/kpt-dev-gh:1 ./recommender-kpt-function docker push gcr.io/$RECO_MGR_PROJECT/kpt-dev-gh:1
Membuat pemicu Cloud Build untuk repo yang di-hydrate
Di Cloud Shell, buat file konfigurasi yang diperlukan untuk menyiapkan pemicu Cloud Build terjadwal:
envsubst < cloudbuild-scheduled-recommendations.template.yaml > cloudbuild-scheduled-recommendations.yaml
Buat pemicu Cloud Build:
gcloud beta builds triggers create github \ --name ActiveAssistScheduledRecommendations \ --repo-name=YOUR_PRIVATE_HYDRATED_REPO \ --repo-owner=$REPO_OWNER \ --branch-pattern="main" \ --build-config=cloudbuild-scheduled-recommendations.yaml
Dapatkan ID pemicu ini:
export TRIGGER_ID=`gcloud beta builds triggers describe \ ActiveAssistScheduledRecommendations \ --format="value(id)"`
Membuat tugas Cloud Scheduler untuk memanggil pemicu
Di Cloud Shell, buat akun layanan:
gcloud iam service-accounts create build-invoker \ --description "Service Account used by Cloud Scheduler to invoke the sample scheduled Cloud Build job" \ --display-name "recommender-scheduler-sa" \ --project $RECO_MGR_PROJECT
Tugas Cloud Scheduler menggunakan akun layanan ini untuk menjalankan layanan
recommender-parser
.Berikan izin ke akun layanan untuk memanggil tugas Cloud Build:
gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \ --member serviceAccount:build-invoker@$RECO_MGR_PROJECT.iam.gserviceaccount.com \ --role roles/cloudbuild.builds.editor \ --project $RECO_MGR_PROJECT gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \ --member serviceAccount:build-invoker@$RECO_MGR_PROJECT.iam.gserviceaccount.com \ --role roles/serviceusage.serviceUsageConsumer \ --project $RECO_MGR_PROJECT
Buat tugas Cloud Scheduler untuk memanggil pemicu yang Anda buat di langkah sebelumnya:
gcloud scheduler jobs create http scheduled-build \ --project $RECO_MGR_PROJECT \ --time-zone "America/Los_Angeles" \ --schedule="0 */3 * * *" \ --uri="https://cloudbuild.googleapis.com/v1/projects/${RECO_MGR_PROJECT}/triggers/${TRIGGER_ID}:run" \ --description="Scheduler job to invoke Cloud Build" \ --oauth-service-account-email="build-invoker@$RECO_MGR_PROJECT.iam.gserviceaccount.com" \ --headers="Content-Type=application/json" \ --http-method="POST" \
Pilih
Y
jika Anda melihat pesan berikut:There is no App Engine app in the project.
Jika Anda diminta untuk memilih region tempat Anda ingin aplikasi App Engine berada, pilih region
us-central
.
Melakukan commit dan mengirim file konfigurasi Cloud Build ke GitHub
Kirim dua file konfigurasi Cloud Build yang Anda buat ke repositori YOUR_PRIVATE_DRY_REPO
:
git remote add dry https://github.com/$REPO_OWNER/$DRY_REPO_NAME.git
git add cloudbuild.yaml
git add cloudbuild-scheduled-recommendations.yaml
git commit -m "Added cloudbuild configuration YAMLs"
git push dry main
Anda mungkin diminta untuk memasukkan kredensial GitHub saat melakukan push ke repositori pribadi.
Meninjau hasil tugas Cloud Build
Saat Anda melakukan commit dan mengirim perubahan ke repositori YOUR_PRIVATE_DRY_REPO
, tugas Cloud Build akan dipicu. Jika tugas Cloud Build berhasil dijalankan, beberapa resource akan dibuat. Di bagian ini, Anda akan memverifikasi apakah resource dibuat setelah tugas Cloud Build selesai.
Di Cloud Shell, di cluster
sample-ops
, validasikan bahwa Anda memiliki namespace bernamaactiveassist-kcc
:kubectl get ns | grep activeassist-kcc
Config Connector men-deploy contoh instance Compute Engine yang sedang berjalan ke project
PROJECT_ID
Anda.Validasi bahwa instance Compute Engine ada dalam project:
gcloud compute instances list | grep \ computeinstance-sample-cloudmachine
Jenis
MACHINE_TYPE
untuk mesin ini adalahn1-standard-1
.
Menjalankan pengujian menyeluruh
Agar Anda dapat menguji pipeline menyeluruh, repositori yang Anda clone untuk
tutorial ini memberikan contoh rekomendasi (stub). Anda menggunakan stub ini untuk menjalankan
pipeline menyeluruh. Stub meniru payload rekomendasi Active Assist dan memiliki rekomendasi untuk mengubah jenis mesin untuk instance Compute Engine yang di-deploy dari jenis instance n1-standard-1
ke jenis instance g1-small
.
Di bagian ini, Anda akan memanggil pemicu Cloud Build terjadwal secara manual untuk menjalankan tugas yang menggunakan fungsi kpt guna mengambil rekomendasi Active Assist. Anda juga memverifikasi bahwa masalah GitHub
dibuat di repositori
YOUR_PRIVATE_DRY_REPO
.
Buka halaman Build Triggers di Konsol Google Cloud.
Pilih pemicu
ActiveAssistScheduledRecommendations
.Untuk menguji pemicu secara manual, klik Run pada entri untuk pemicu Anda di daftar pemicu.
Pemicu membuat masalah GitHub di repositori
YOUR_PRIVATE_DRY_REPO
Anda. Masalahnya mirip dengan berikut ini:gcloud auth configure-docker docker build -t gcr.io/$RECO_MGR_PROJECT/kpt-dev-gh:1 ./recommender-kpt-function docker push gcr.io/$RECO_MGR_PROJECT/kpt-dev-gh:1
Dalam masalah contoh, output fungsi kpt menunjukkan bahwa jenis
MACHINE_TYPE
saat ini untuk instance Compute Engine adalah jenisn1-standard-1
. Rekomendasi Active Assist adalah mengubahnya menjadi jenisg1-small
.Peninjau kontrol versi di perusahaan Anda dapat meninjau masalah GitHub otomatis dan menindaklanjutinya sesuai dengan kebutuhan perusahaan Anda.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah berikutnya
- Pelajari lebih lanjut teknologi Google Cloud serverless.
- Baca cara mengintegrasikan rekomendasi Policy Intelligence ke dalam pipeline Infrastructure as Code (IaC).