Tutorial ini menunjukkan cara mengaktivasi aplikasi baru, mengembangkan fitur untuk aplikasi, dan men-deploy aplikasi ke produksi menggunakan teknik continuous integration/continuous delivery (CI/CD) modern dengan Google Kubernetes Engine (GKE).
Dokumen ini adalah bagian dari rangkaian:
- CI/CD modern dengan GKE: Framework pengiriman software
- CI/CD modern dengan GKE: Membangun sistem CI/CD (arsitektur referensi)
- CI/CD modern dengan GKE: Menerapkan alur kerja developer (dokumen ini)
Dalam tutorial ini, Anda akan menggunakan alat seperti
Skaffold,
kustomize
,
Artifact Registry,
Config Sync,
Cloud Build, dan
Cloud Deploy untuk mengembangkan, membangun, dan men-deploy aplikasi Anda.
Dokumen ini ditujukan untuk arsitek perusahaan dan developer aplikasi, serta tim keamanan IT, DevOps, dan Site Reliability Engineering (SRE). Pengalaman dengan alat dan proses deployment otomatis berguna untuk memahami konsep dalam dokumen ini.
Arsitektur
Dalam tutorial ini, Anda telah melakukan aktivasi aplikasi baru. Kemudian, Anda akan mengembangkan fitur baru dan men-deploy aplikasi di lingkungan pengembangan, staging, dan produksi. Arsitektur referensi berisi infrastruktur dan alat yang diperlukan untuk mengaktivasi dan merilis aplikasi baru dengan alur kerja yang ditunjukkan dalam diagram berikut:
Mulai dari repositori kode untuk CI, alur kerja mencakup langkah-langkah berikut:
Anda membagikan kode sumber aplikasi melalui repositori aplikasi.
Saat Anda meng-commit dan mengirim kode ke repositori aplikasi, tindakan ini akan otomatis memicu pipeline CI di Cloud Build. Proses CI membuat dan mengirim image container ke Artifact Registry.
Proses CI juga membuat rilis CD untuk aplikasi di Cloud Deploy.
Rilis CD menghasilkan manifes kubernetes yang dirender sepenuhnya untuk pengembangan menggunakan
skaffold
dan men-deploy-nya di cluster GKE dev.Rilis CD kemudian dipromosikan dari pengembangan ke target staging, yang menghasilkan manifes staging yang dirender sepenuhnya dan men-deploy-nya di cluster GKE staging.
Kemudian, rilis CD dipromosikan dari staging ke production, yang menghasilkan manifes produksi yang dirender sepenuhnya dan men-deploy-nya di cluster GKE produksi.
Untuk mengetahui informasi selengkapnya tentang alat dan infrastruktur yang digunakan dalam alur kerja ini, lihat CI/CD modern dengan GKE: Membangun sistem CI/CD.
Tujuan
Melakukan aktivasi aplikasi baru.
Deploy aplikasi di lingkungan pengembangan.
Kembangkan fitur baru dan deploy di lingkungan pengembangan.
Promosikan fitur baru ke staging, lalu rilis ke produksi.
Menguji ketahanan aplikasi.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Google Kubernetes Engine
- Edisi Google Kubernetes Engine (GKE) Enterprise untuk Config SyncYES
- Artifact Registry
- Cloud Build
- Cloud Deploy
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
- Untuk tutorial ini, deploy arsitektur referensi dalam seri ini.
Menyiapkan lingkungan Anda
Jika Anda melanjutkan langsung dari CI/CD Modern dengan GKE: Membangun sistem CI/CD, lanjutkan ke bagian berikutnya. Namun, jika Anda memiliki sesi baru, atau sesi Anda telah berakhir, buka Cloud Shell dan tetapkan project tempat Anda menginstal infrastruktur arsitektur referensi:
gcloud config set core/project PROJECT_ID
Ganti
PROJECT_ID
dengan ID project Google Cloud Anda.
Melakukan aktivasi aplikasi baru
Arsitektur referensi berisi factory aplikasi. Factory ini adalah kumpulan repositori git bernama application-factory-repo
dan pemicu Cloud Build berikut:
create-app
tf-plan
tf-apply
create-team
Anda menggunakan factory aplikasi untuk mengaktivasi aplikasi baru dari repositori awal. Orientasi aplikasi terdiri dari langkah-langkah berikut:
Membuat definisi aplikasi: Anda membuat definisi aplikasi di file Terraform dan menyimpannya di
application-factory-repo
yang berfungsi sebagai katalog aplikasi.Membuat infrastruktur aplikasi: Anda menjalankan Terraform pada file definisi aplikasi untuk membuat infrastruktur aplikasi. Infrastruktur aplikasi terdiri dari:
Zona landing untuk aplikasi baru mencakup penentuan namespace, akun layanan, dan kebijakan dasar di repositori
acm-gke-infrastructure-repo
. Zona landing hanya dibuat di cluster GKE pengembangan saat melakukan orientasi aplikasi baru. Hal ini dilakukan untuk membatalkan pemblokiran developer sehingga mereka dapat menggunakan lingkungan pengembangan dan mulai melakukan iterasi. Zona landing di cluster staging dan produksi dibuat dengan pendekatan GitOps. Pendekatan ini ditunjukkan nanti dalam dokumen ini ketika Anda siap mempromosikan rilis di klaster tersebut.Repositori infrastruktur dari repositori awal infrastruktur yang menghosting kode untuk membuat pipeline CI di Cloud Build, pipeline CD di Cloud Deploy, dan repositori Artifact Registry untuk menyimpan artefak.
Pemicu Cloud Build infrastruktur yang mengambil kode dalam repositori infrastruktur dan membuat resource berdasarkan definisinya.
Repositori aplikasi dari repositori awal aplikasi yang menghosting kode sumber aplikasi.
Membuat resource CI/CD aplikasi: Anda menggunakan infrastruktur aplikasi untuk membuat resource CI/CD untuk aplikasi.
Membuat definisi aplikasi:
Jalankan pemicu create-app
untuk membuat file definisi aplikasi di application-factory-repo
. File definisi berisi definisi deklaratif dari resource yang diperlukan untuk membuat aplikasi.
Di konsol Google Cloud, buka halaman Cloud Build:
Klik pemicu
create-app
.Klik TAMPILKAN PRATINJAU URL untuk menampilkan URL yang diperlukan untuk memanggil webhook.
Di Cloud Shell, panggil pemicu dengan membuat permintaan curl pada URL yang diperoleh dari langkah sebelumnya dan meneruskan parameter sebagai payload ke pemicu tersebut.
curl "WEBHOOK_URL" -d '{"message": {"app": "sample","runtime": "python","trigger_type": "webhook","github_team": ""}}'
Pada contoh kode sebelumnya:
Ganti
WEBHOOK_URL
dengan URL yang diperoleh dari pemicu."app": "sample"
menentukan nama aplikasi."runtime": "python"
memberi tahu factory aplikasi agar menggunakan template Python untuk membuat repositori aplikasi."trigger_type": "webhook"
menentukan jenis pipeline CI/CD untuk aplikasi."github_team": ""
adalah tim di GitHub yang akan dikaitkan dengan repositori yang dibuat untuk aplikasi. Karena Anda belum membuat tim GitHub, teruskan sebagai string kosong.
Periksa pipeline untuk pemicu
create-app
:Buka halaman Cloud Build History.
Ada pipeline baru untuk pemicu
create-app
. Setelah selesai, definisi aplikasi dibuat diapplication-factory-repo
.Tinjau file definisi aplikasi:
Di browser web, buka GitHub dan login ke akun Anda.
Klik ikon foto dan klik
Your organizations
. Pilih organisasi Anda.Klik repositori
application-factory-repo
, buka folderapps/python
dan buka file baru bernamasample.tf
yang dibuat oleh pemicucreate-app
. Periksa file ini. File ini berisi kode Terraform untuk membuat aplikasi baru.
Membuat infrastruktur aplikasi:
Setelah membuat definisi aplikasi, jalankan tf-apply
pemicu untuk membuat infrastruktur aplikasi.
Di Konsol Google Cloud:
Klik pemicu
tf-apply
.Klik "TAMPILKAN PRATINJAU URL" untuk menampilkan URL yang diperlukan untuk memanggil webhook.
Panggil pemicu:
curl "WEBHOOK_URL" -d '{}'
Pada contoh kode sebelumnya:
- Ganti
WEBHOOK_URL
dengan URL yang diperoleh dari pemicu.
- Ganti
Periksa pipeline untuk pemicu
tf-apply
:Buka halaman Cloud Build History.
Ada pipeline baru untuk pemicu
tf-apply
. Tunggu hingga selesai.
Pemicu ini membuat infrastruktur aplikasi.
Tinjau infrastruktur aplikasi:
Meninjau berbagai komponen infrastruktur aplikasi.
Zona pendaratan
Buka Cloud Shell dan tetapkan project.
gcloud config set core/project PROJECT_ID
Ganti
PROJECT_ID
dengan ID project Google Cloud Anda.Mendapatkan kredensial ke cluster GKE pengembangan.
gcloud container clusters get-credentials gke-dev-us-central1 --zone us-central1-a
Periksa namespace aplikasi. Namespace ini dinamai menurut aplikasi, sampel.
kubectl get namespaces sample
Outputnya akan terlihat seperti berikut:
NAME STATUS AGE sample Active 15m
Periksa akun layanan di namespace.
kubectl get serviceaccounts -n sample
Ada akun layanan selain akun default. Outputnya akan terlihat seperti berikut:
NAME SECRETS AGE default 0 15m sample-ksa 0 15m
Repositori infrastruktur
Di browser web, buka GitHub dan login ke akun Anda. Klik ikon gambar. Lalu, klik Your organizations
. Pilih organisasi Anda, lalu klik repositori sample-infra
.
Repositori ini memiliki empat cabang: cicd-trigger
, dev
, staging
, dan prod
. Kode ini juga berisi empat folder cicd-trigger, dev, staging, dan prod. Cabang default-nya adalah cicd-trigger
dan Anda dapat mengirim kode ke folder tersebut selagi cabang lain memiliki aturan perlindungan, sehingga Anda tidak dapat mengirim kode langsung ke cabang tersebut. Untuk mengirim kode ke cabang tersebut, Anda perlu membuat permintaan pull. Folder cicd-trigger
memiliki kode untuk membuat resource CI/CD bagi aplikasi, sementara folder dev
, staging
, dan prod
memiliki kode untuk membuat infrastruktur bagi berbagai lingkungan aplikasi.
Pemicu infrastruktur
Di Konsol Google Cloud:
Ada pemicu baru bernama
deploy-infra-sample
.Pemicu ini terhubung ke repositori
sample-infra
sehingga saat pengiriman kode terjadi pada repositori ini, pemicu akan dipanggil dan mengidentifikasi cabang tempat push terjadi, lalu menuju ke folder yang sesuai di cabang tersebut dan menjalankan Terraform di sana. Misalnya, jika kode dikirim ke cabangcicd-trigger
, pemicu akan menjalankan Terraform di folder cicd-trigger dari cabang cicd-trigger. Demikian pula, saat push terjadi di cabangdev
, pemicu akan menjalankan Terraform di folder dev di cabang dev dan seterusnya.
Repositori aplikasi
- Buka GitHub dan lihat repositori di organisasi Anda. Ada repositori baru dengan nama
sample
. Repositori ini menghosting kode sumber dan langkah-langkah untuk mem-build container di konfigurasiDockerfile
,kustomize
yang menjelaskan konfigurasi aplikasi yang diperlukan, danskaffold.yaml
yang menentukan langkah-langkah deployment yang akan digunakan oleh Cloud Deploy untuk CD.
Membuat resource CI/CD aplikasi
Setelah Anda membuat kerangka aplikasi, jalankan deploy-infra-sample
pemicu untuk membuat resource CI/CD-nya. Anda dapat memanggil pemicu secara manual menggunakan URL webhook-nya atau dengan membuat commit ke repositori git sample-infra
.
Untuk memanggil pemicu Cloud Build, tambahkan baris baru pada file di repositori. Kemudian, terapkan perubahan:
Jika Anda belum pernah menggunakan Git di Cloud Shell, konfigurasikan Git dengan nama dan alamat email Anda. Git menggunakan informasi ini untuk mengidentifikasi Anda sebagai penulis commit yang Anda buat di Cloud Shell:
git config --global user.email "GITHUB_EMAIL_ADDRESS" git config --global user.name "GITHUB_USERNAME"
Ganti kode berikut:
GITHUB_EMAIL_ADDRESS
: alamat email yang terkait dengan akun GitHub AndaGITHUB_USERNAME
: nama pengguna yang terkait dengan akun GitHub Anda
Clone repositori git
sample-infra
:git clone https://github.com/GITHUB_ORG/sample-infra cd sample-infra
Ganti kode berikut:
GITHUB_ORG
dengan organisasi GitHub Anda.
Pemicu cicd cabang default dicentang.
Tambahkan baris baru ke file env/cicd-trigger/main.tf, commit perubahan, dan push.
echo "" >> env/cicd-trigger/main.tf
Commit dan kirim perubahan:
git add . git commit -m "A dummy commit to invoke the infrastrucutre trigger" git push cd ..
Segera setelah perubahan diterapkan, pemicu Cloud Deploy
deploy-infra-sample
dimulai.
Pantau status pemicu:
Buka halaman histori Cloud Build untuk melihat pipeline dan tunggu hingga selesai.
Meninjau resource CICD aplikasi
Meninjau berbagai resource CI/CD yang dibuat untuk aplikasi.
Di konsol Google Cloud:
Buka halaman Cloud Build dan lihat pemicu
deploy-app-sample
.Ini adalah pemicu pipeline CI. Terhubung ke repositori kode aplikasi
sample
. Pemicu akan dipanggil saat push dibuat ke repositori aplikasi dan melakukan langkah-langkah build seperti yang ditetapkan dalam konfigurasi pemicu. Untuk melihat langkah-langkah yang dijalankan pemicu saat dipanggil, klik nama pemicu, lalu klik tombol BUKA EDITOR.Buka halaman Artifact Registry dan lihat repositori baru dengan nama
sample
.Artifact Repository ini menyimpan artefak aplikasi.
Buka halaman pipeline Cloud Deploy dan lihat pipeline dengan nama
sample
. Ini adalah pipeline continuous deployment yang men-deploy aplikasi di cluster GKE.
Men-deploy aplikasi di lingkungan pengembangan
Pemicu deploy-app-sample
terhubung ke repositori aplikasi yang bernama sample
. Anda dapat memanggil pemicu secara manual, menggunakan URL webhook, atau melalui push ke repositori aplikasi.
Tambahkan baris baru dalam file di repositori
sample
dan kirim perubahan untuk memanggil pemicu Cloud Build:Clone repositori git
sample
:Dalam Cloud Shell:
git clone https://github.com/GITHUB_ORG/sample cd sample
Ganti
GITHUB_ORG
dengan pengelolaan GitHub Anda.Tambahkan baris baru ke file
skaffold.yaml
.echo "" >> skaffold.yaml
Commit dan kirim perubahan:
git add . git commit -m "A dummy commit to invoke CI/CD trigger" git push
Segera setelah perubahan diterapkan, pemicu Cloud Deploy
deploy-app-sample
dimulai.
Pantau status pemicu:
Buka halaman histori Cloud Build untuk melihat pipeline dan tunggu hingga selesai.
Pemicu menjalankan langkah-langkah yang ditentukan dalam konfigurasinya. Langkah pertama adalah mem-build image docker dari kode aplikasi di repositori
sample
. Langkah terakhir adalah memulai pipeline Cloud Deploy yang men-deploy aplikasi ke cluster GKE dev.Periksa deployment di cluster dev:
Buka halaman pipeline Cloud Deploy.
Klik pipeline
sample
, deployment ke cluster GKE dev telah dimulai. Tunggu hingga selesai.
Memverifikasi bahwa aplikasi telah berhasil di-deploy :
Mendapatkan kredensial ke cluster pengembangan.
gcloud container clusters get-credentials gke-dev-us-central1 --zone us-central1-a
Tunnel ke cluster GKE.
gcloud container clusters get-credentials gke-dev-us-central1 --zone us-central1-a && kubectl port-forward --namespace sample $(kubectl get pod --namespace sample --selector="deploy.cloud.google.com/delivery-pipeline-id=sample" --output jsonpath='{.items[0].metadata.name}') 8080:8080
Pada toolbar Cloud Shell, klik
Pratinjau Web, lalu klik Pratinjau di port 8080:
Output-nya adalah sebagai berikut:
Hello World!
Di Cloud Shell, tekan
CTRL+C
untuk mengakhiri penerusan port.
Menambahkan fitur baru ke aplikasi
Saat mengembangkan fitur baru, Anda perlu men-deploy perubahan dengan cepat ke lingkungan pengembangan agar dapat menguji dan melakukan iterasi. Dalam tutorial ini, Anda akan menggunakan cara membuat perubahan pada repositori kode aplikasi dan men-deploy-nya ke lingkungan pengembangan.
Di Cloud Shell, ubah direktori ke repositori
sample
yang sudah di-clone:Update aplikasi untuk menampilkan pesan yang berbeda:
sed -i "s/Hello World/My new feature/g" main.py
Commit dan kirim perubahan:
git add . git commit -m "Changed the message" git push
Segera setelah kode dikirim ke repositori GitHub, pemicu webhook
deploy-app-sample
akan dimulai.Pantau status pemicu di halaman histori Cloud Build dan tunggu hingga selesai.
Buka halaman pipeline Cloud Deploy
Klik pipeline
sample
, deployment ke cluster GKE dev telah dimulai. Tunggu hingga selesai.
Memverifikasi bahwa aplikasi telah berhasil di-deploy :
Dapatkan kredensial ke cluster pengembangan jika Anda membuka Cloud Shell baru:
gcloud container clusters get-credentials gke-dev-us-central1 --zone us-central1-a
Tunnel ke cluster GKE:
gcloud container clusters get-credentials gke-dev-us-central1 --zone us-central1-a && kubectl port-forward --namespace sample $(kubectl get pod --namespace sample --selector="deploy.cloud.google.com/delivery-pipeline-id=sample" --output jsonpath='{.items[0].metadata.name}') 8080:8080
Pada toolbar Cloud Shell, klik
Web Preview, lalu klik Preview on port 8080:
Output-nya adalah sebagai berikut:
My new feature!
Di Cloud Shell, tekan
CTRL+C
untuk mengakhiri penerusan port.
Mempromosikan perubahan Anda pada cluster staging dan produksi
Sebelum mempromosikan aplikasi ke lingkungan staging dan lingkungan production, Anda perlu membuat zona landing untuk aplikasi di cluster GKE untuk lingkungan tersebut. Saat Anda mengaktivasi aplikasi, zona landing untuk developer akan otomatis dibuat di cluster GKE dev dengan menambahkan kode ke acm-gke-infrastructure-repo
di cabang dev.
Membuat zona landing dalam cluster GKE staging dan produksi
Buat zona landing dalam cluster GKE staging: Anda perlu membuat permintaan pull dari pengembangan ke cabang staging di
acm-gke-infrastructure-repo
, lalu menggabungkannya.Buka GitHub dan buka repositori
acm-gke-infrastructure-repo
. KlikPull requests
lalu tombolNew pull request
. Di menu Dasar, pilih staging, lalu di menu Bandingkan, pilih dev. Klik tombolCreate pull request
.Biasanya, seseorang yang memiliki akses ke repositori meninjau perubahan, lalu menggabungkan PR untuk memastikan hanya perubahan yang diinginkan yang dipromosikan ke lingkungan staging. Agar seseorang dapat mencoba arsitektur referensi, aturan perlindungan cabang telah dilonggarkan sehingga administrator repositori dapat mengabaikan peninjauan dan menggabungkan PR. Jika Anda adalah administrator di repositori, gabungkan permintaan pull. Jika tidak, minta administrator untuk menggabungkannya.
Config Sync menyinkronkan perubahan yang muncul pada cabang staging dari repositori
acm-gke-infrastructure-repo
dengan cluster GKE staging yang menghasilkan pembuatan zona landing untuk aplikasi pada cluster GKE staging.Buat zona landing di cluster GKE produksi: Anda perlu membuat permintaan pull dari staging ke cabang produksi dan menggabungkannya.
Klik
Pull requests
lalu tombolNew pull request
. Di menu Dasar, pilih prod dan di menu Bandingkan, pilih staging. Klik tombolCreate pull request
.Jika Anda adalah administrator di repositori, gabungkan permintaan pull. Jika tidak, minta administrator untuk menggabungkannya.
Config Sync menyinkronkan perubahan yang ada pada cabang produksi dari repositori
acm-gke-infrastructure-repo
dengan cluster GKE produksi yang menghasilkan pembuatan zona landing untuk aplikasi pada cluster GKE produksi.
Mempromosikan perubahan dari pengembangan hingga staging
Setelah Anda membuat zona landing untuk aplikasi dalam staging dan memproduksi cluster GKE, promosikan aplikasi dari lingkungan pengembangan hingga staging.
Temukan nama rilis terbaru dan simpan sebagai variabel lingkungan:
export RELEASE=$(gcloud deploy targets describe dev --region=us-central1 --format="json" | jq -r '."Active Pipeline"[0]."projects/PROJECT_ID/locations/us-central1/deliveryPipelines/sample"."Latest release"' | awk -F '/' '{print $NF}')
Ganti
PROJECT_ID
dengan ID project Google Cloud Anda.Pastikan variabel lingkungan telah ditetapkan:
echo $RELEASE
Di Cloud Shell, jalankan perintah berikut untuk memicu promosi rilis dari lingkungan pengembangan ke staging:
gcloud deploy releases promote --release=$RELEASE --delivery-pipeline=sample --region=us-central1 --to-target=staging --quiet
Periksa deployment staging:
Buka halaman pipeline Cloud Deploy
Klik pipeline
sample
, deployment ke cluster GKE staging telah dimulai. Tunggu hingga selesai.Pastikan bahwa deployment staging telah berhasil dilakukan:
Dapatkan kredensial ke cluster staging:
gcloud container clusters get-credentials gke-staging-us-central1 --zone us-central1-a
Tunnel ke cluster GKE:
gcloud container clusters get-credentials gke-staging-us-central1 --zone us-central1-a && kubectl port-forward --namespace sample $(kubectl get pod --namespace sample --selector="deploy.cloud.google.com/delivery-pipeline-id=sample" --output jsonpath='{.items[0].metadata.name}') 8080:8080
Pada toolbar Cloud Shell, klik
Web Preview, lalu klik Preview on port 8080:
Output-nya adalah sebagai berikut:
My new feature!
Di Cloud Shell, tekan
CTRL+C
untuk mengakhiri penerusan port.
Mempromosikan perubahan dari staging ke produksi
Sekarang, promosikan rilis dari staging ke prod. Anda memiliki dua cluster produksi dan Cloud Deploy masing-masing memiliki target bernama prod1 dan prod2.
Di Cloud Shell, jalankan perintah berikut untuk memicu promosi rilis dari staging ke cluster prod1:
gcloud deploy releases promote --release=$RELEASE --delivery-pipeline=sample --region=us-central1 --to-target=prod1 --quiet
Rilis ke cluster produksi memerlukan persetujuan sehingga peluncuran menunggu sampai Anda menyetujuinya. Untuk melihatnya:
Buka halaman pipeline Cloud Deploy
Klik pipeline
sample
. Peluncuran ke prod1 memerlukan persetujuan dan peran clouddeploy.approvedr diperlukan untuk menyetujui peluncuran tersebut. Karena Anda adalah pemilik project, Anda memiliki akses untuk menyetujui rilis.Setujui rilis ke prod1:
Jalankan perintah berikut untuk mengambil nama peluncuran yang menunggu persetujuan dan menyimpannya dalam variabel lingkungan:
export ROLLOUT=$(gcloud deploy targets describe prod1 --region=us-central1 --format="json" | jq -r '."Pending Approvals"[]' | awk -F '/' '{print $NF}')
Setujui rilis:
gcloud deploy rollouts approve $ROLLOUT --delivery-pipeline=sample --region=us-central1 --release=$RELEASE --quiet
Setelah persetujuan diberikan, rilis prod1 dimulai. Pantau progresnya di halaman pipeline Cloud Deploy.
Setelah deployment prod1 selesai, mulai rilis prod2.
gcloud deploy releases promote --release=$RELEASE --delivery-pipeline=sample --region=us-central1 --to-target=prod2 --quiet
Rilis ke prod2 juga memerlukan persetujuan. Setujui rilis ke cluster prod2:
Jalankan perintah berikut untuk mengambil nama peluncuran yang menunggu persetujuan dan menyimpannya dalam variabel lingkungan:
export ROLLOUT=$(gcloud deploy targets describe prod2 --region=us-central1 --format="json" | jq -r '."Pending Approvals"[]' | awk -F '/' '{print $NF}')
Setujui rilis:
gcloud deploy rollouts approve $ROLLOUT --delivery-pipeline=sample --region=us-central1 --release=$RELEASE --quiet
Setelah persetujuan diberikan, rilis prod2 dimulai. Pantau progresnya di halaman pipeline Cloud Deploy.
Memverifikasi bahwa deployment di cluster produksi berhasil setelah pipeline Cloud Deploy dalam prod1 dan prod2 selesai.
Ada Multi Cluster Ingress yang dibuat di cluster produksi dan Anda menggunakan load balancer untuk mengakses aplikasi produksi. Konfigurasi Multi Cluster Ingress ini dibuat menggunakan file YAML k8s/prod/mci.yaml dan k8s/prod/mcs.yaml di repositori
sample
. Saat Anda mengirim permintaan ke alamat IP load balancer, Multi Cluster Ingress akan meneruskan permintaan ke salah satu dari dua instance aplikasi yang berjalan di dua cluster GKE berbeda.Buat daftar aturan penerusan yang terkait dengan load balancer untuk menemukan alamat IP.
gcloud compute forwarding-rules list
Outputnya akan terlihat seperti berikut:
NAME: mci-qqxs9x-fw-sample-sample-ingress REGION: IP_ADDRESS: 34.36.123.118 IP_PROTOCOL: TCP TARGET: mci-qqxs9x-sample-sample-ingress
Buka browser web dan masukkan URL berikut ini:
http://IP_ADDRESS:80
Ganti
IP_ADDRESS
dengan alamat IP load balancer.Output-nya adalah sebagai berikut:
My new feature!
Hal ini memastikan bahwa aplikasi di-deploy seperti yang diharapkan dalam cluster produksi.
Menguji ketahanan aplikasi
Di bagian ini, Anda menguji ketahanan aplikasi yang sedang berjalan dalam lingkungan production dengan memulai ulang salah satu dari dua node cluster GKE produksi tanpa memengaruhi aplikasi.
Aplikasi dalam produksi menggunakan multi-cluster ingress dan dapat diakses melalui IP load balancer. Saat aplikasi diakses melalui IP tersebut, multi-cluster ingress akan merutekannya ke salah satu dari dua instance aplikasi yang berjalan di dua cluster GKE yang berbeda. Jika salah satu cluster GKE tidak responsif dan instance aplikasi yang dijalankan tidak dapat dijangkau, multi-cluster ingress akan terus mengirimkan traffic ke instance aplikasi yang sehat yang berjalan di cluster GKE lain. Hal ini membuat penghentian cluster tidak terlihat oleh pengguna akhir dan aplikasi terus melayani permintaan.
Untuk menguji ketahanan:
Temukan kumpulan node cluster GKE produksi yang berjalan di us-west1.
gcloud container clusters describe gke-prod-us-west1 --zone=us-west1-a --format=json | jq ".nodePools[0].instanceGroupUrls[]" | tr '"' ' ' | awk -F '/' '{for(i=NF-2; i<=NF; i=i+2) printf ("%s ",$i); print ""}'
Outputnya akan terlihat seperti berikut:
us-west1-b gke-gke-prod-us-west1-node-pool-01-6ad4e1ed-grp us-west1-c gke-gke-prod-us-west1-node-pool-01-98407373-grp
Output-nya memiliki dua kolom, kolom pertama adalah zona dan kolom kedua adalah nama grup instance yang terkait dengan kumpulan node cluster GKE produksi di region us-west1.
Mulai ulang grup instance yang sesuai dengan kumpulan node:
gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_1 --zone=ZONE_1 --max-unavailable=100% gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_2 --zone=ZONE_2 --max-unavailable=100%
Ganti
INSTANCE_GROUP_1
dengan nama grup instance pertama.Ganti
ZONE_1
dengan zona grup instance pertama.Ganti
INSTANCE_GROUP_2
dengan nama grup instance kedua.Ganti
ZONE_2
dengan zona grup instance kedua.Periksa status grup instance.
Dua grup instance sedang dimulai ulang, sementara grup lainnya memiliki tanda centang hijau terhadap grup instance tersebut.
Buka browser web dan masukkan URL berikut ini:
http://IP_ADDRESS:80
Ganti
IP_ADDRESS
dengan alamat IP load balancer.Meskipun salah satu dari dua cluster GKE tidak aktif, aplikasi akan tersedia dan output-nya adalah sebagai berikut:
My new feature!
Hal ini menunjukkan bahwa aplikasi Anda tangguh dan sangat tersedia.
Mengelola aplikasi
Saat membuat aplikasi ini dari factory aplikasi, Anda mendapatkan repositori git, infrastruktur, dan pipeline CI/CD terpisah untuk aplikasi. Anda telah menggunakan resource ini untuk men-deploy aplikasi dan menambahkan fitur baru. Untuk mengelola aplikasi lebih lanjut, Anda hanya perlu berinteraksi dengan repositori git dan pipeline ini tanpa perlu mengupdate factory aplikasi. Anda dapat menyesuaikan pipeline aplikasi dan repositori git berdasarkan kebutuhan Anda. Sebagai pemilik aplikasi, Anda dapat menentukan siapa yang mendapatkan akses ke pipeline dan repositori git aplikasi Anda untuk mengelolanya.
Pembersihan
Agar tidak menimbulkan tagihan ke akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini:
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.
Langkah selanjutnya
- Pelajari praktik terbaik untuk menyiapkan penggabungan identitas.
- Baca Kubernetes dan tantangan deployment software berkelanjutan.
- Pelajari pola pemantauan dan logging hybrid dan multi-cloud.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.