Men-deploy aplikasi ke GKE dan melihat insight keamanan
Pelajari cara men-deploy container yang sengaja rentan ke cluster GKE dan dapatkan insight keamanan tentang kerentanan di dasbor postur keamanan. Dasbor postur keamanan GKE menampilkan informasi tentang kerentanan sistem operasi yang diketahui. Jika Anda juga menginginkan pemindaian bahasa untuk mendeteksi kerentanan dalam paket Go atau Java, lihat Membangun aplikasi dan melihat insight keamanan.
Tujuan
- Bangun dan kirim aplikasi dalam container ke Artifact Registry menggunakan Cloud Build.
- Membuat pipeline pengiriman di Cloud Deploy.
- Men-deploy aplikasi ke cluster GKE staging dan mempromosikannya ke cluster produksi.
- Lihat insight tentang kerentanan dalam aplikasi yang di-deploy menggunakan dasbor postur keamanan di Konsol Google Cloud.
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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com
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.
Menyiapkan lingkungan Anda
Tetapkan project ID Anda sebagai variabel lingkungan:
export PROJECT_ID=$(gcloud config get project)
Tetapkan region Google Cloud default untuk Cloud Deploy:
gcloud config set deploy/region us-central1
Clone repositori GitHub yang berisi kode contoh untuk tugas ini:
git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git cd ~/software-delivery-shield-demo-java/backend
Membuat akun layanan IAM untuk GKE Anda
untuk digunakan:
gcloud iam service-accounts create sds-runtime \ --display-name="SDS with GKE service account"
Berikan izin ke akun layanan IAM:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.nodeServiceAccount" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.developer" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/artifactregistry.reader"
Beri akun layanan Compute Engine default akses ke cluster GKE. Cloud Deploy menggunakan akses ini untuk men-deploy aplikasi ke cluster dalam pipeline pengiriman Anda.
PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')" gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role=roles/container.developer
Membuat repositori Artifact Registry untuk image Anda
Buat repositori:
gcloud artifacts repositories create containers \ --repository-format=docker \ --location=us-central1 \ --description="SDS with GKE repository"
Pastikan repositori ada:
gcloud artifacts repositories list \ --location=us-central1 \ --filter="REPOSITORY:containers"
Output akan menampilkan repositori
containers
yang Anda buat.
Membuat cluster GKE
Buat dua cluster GKE, cluster staging bernama dev-cluster
dan cluster produksi bernama prod-cluster
. Dalam Autopilot, pemindaian kerentanan workload otomatis diaktifkan untuk cluster baru yang menjalankan versi 1.27 dan yang lebih baru. Jika Anda menggunakan cluster
Standar, tentukan flag --workload-vulnerability-scanning=standard
.
gcloud container clusters create-auto dev-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
gcloud container clusters create-auto prod-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
Pembuatan cluster dapat memerlukan waktu hingga lima menit. Anda juga dapat mengaktifkan pemindaian kerentanan workload dengan mengupdate cluster GKE yang ada.
Membangun image
Buat dan kirim image menggunakan Cloud Build:
gcloud builds submit --region us-central1 --config cloudbuild.yaml
Setelah build selesai, outputnya akan serupa dengan berikut ini:
DONE
-----------------------------------------------------------------------------
ID: 3e23094f-7f57-4449-bc68-51c37hn34d03
CREATE_TIME: 2022-09-19T15:41:07+00:00
DURATION: 54S
SOURCE: gs://my-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f.tgz
IMAGES: us-central1-docker.pkg.dev/PROJECT_ID/containers/java-guestbook-backend:quickstart
STATUS: SUCCESS
Men-deploy image ke GKE menggunakan Cloud Deploy
Perbarui file konfigurasi Cloud Deploy dengan project ID Anda:
sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
Daftarkan pipeline dan target:
gcloud deploy apply --file=clouddeploy.yaml
Untuk memverifikasi bahwa pipeline Anda ada, buka halaman Pipeline pengiriman di Konsol Google Cloud:
Daftar pipeline akan menampilkan pipeline baru Anda,
guestbook-app-delivery
.Klik nama pipeline untuk memantau progres. Halaman Detail pipeline pengiriman akan terbuka.
Buat rilis baru di Cloud Deploy:
gcloud deploy releases create guestbook-release-001 \ --delivery-pipeline=guestbook-app-delivery \ --images=java-guestbook-backend=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
Rilis baru akan muncul di bagian Rilis di halaman Detail pipeline pengiriman.
Di halaman Detail pipeline pengiriman, pantau tampilan Visualisasi Pipeline hingga tombol Promosikan ditampilkan untuk
dev-cluster
. Anda mungkin perlu memuat ulang halaman.Klik Promosikan di visualisasi
dev-cluster
.Di panel Promosikan rilis, klik Promosikan untuk mengonfirmasi promosi ke cluster produksi Anda.
Untuk memastikan bahwa rilis Anda berhasil, periksa bagian Rilis. Kolom Status peluncuran terakhir menampilkan
Successfully deployed to prod-cluster
.
Lihat kerentanan
Di bagian ini, lihat insight kerentanan OS menggunakan dasbor postur keamanan. Dasbor ini menampilkan informasi tentang kerentanan dalam workload yang sedang berjalan setelah Anda men-deploy-nya ke cluster.
Buka halaman pasangan keamanan GKE di Konsol Google Cloud.
Untuk melihat hasil pemindaian, muat ulang halaman. Pemindaian awal mungkin memerlukan waktu hingga 15 menit.
Di halaman Postur keamanan GKE, tinjau bagian Kerentanan Workload OS. Bagian ini mencantumkan CVE teratas yang memengaruhi beban kerja yang di-deploy.
Untuk mengetahui detailnya, klik Lihat semua masalah kerentanan. Tab Concerns akan terbuka dan menerapkan filter untuk jenis masalah Kerentanan. Tabel ini menunjukkan ringkasan dari setiap kerentanan dan dampaknya.
Untuk mengetahui detail tentang kerentanan tertentu, klik nama masalah yang dimaksud dalam tabel. Panel Kerentanan akan terbuka. Di panel ini, Anda dapat melakukan hal berikut:
- Baca deskripsi mendetail tentang CVE, termasuk versi, paket, dan skor CVSS yang terpengaruh.
- Lihat tindakan yang disarankan untuk mengurangi masalah, seperti dokumentasi dan informasi versi patch.
- Lihat workload tertentu yang terpengaruh oleh kerentanan di tab workload yang terpengaruh.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, hapus project Google Cloud yang berisi resource tersebut.
Menghapus resource satu per satu
Hapus pipeline Cloud Deploy:
gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
Hapus cluster GKE:
gcloud container clusters delete dev-cluster \ --region=us-central1 gcloud container clusters delete prod-cluster \ --region=us-central1
Hapus repositori Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1
Hapus akun layanan IAM:
gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
Menghapus project
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.