Checkpoint
Create a Kubernetes cluster and deployments (Auth, Hello, and Frontend)
/ 50
Canary Deployment
/ 50
Mengelola Deployment Menggunakan Kubernetes Engine
GSP053
Ringkasan
Praktik DevOps umumnya memanfaatkan beberapa deployment untuk mengelola berbagai skenario deployment aplikasi seperti "Deployment berkelanjutan", "Blue-Green deployment," "Deployment canary", dan banyak lagi. Lab ini mengajarkan Anda cara menskalakan dan mengelola container agar Anda dapat menyelesaikan skenario umum yang menggunakan beberapa deployment heterogen.
Tujuan
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
- Menggunakan alat
kubectl
- Membuat file
yaml
deployment - Meluncurkan, mengupdate, dan menskalakan deployment
- Mengupdate deployment dan mempelajari gaya deployment
Prasyarat
Untuk memaksimalkan pembelajaran Anda, berikut adalah rekomendasi untuk lab ini:
- Anda telah mengikuti lab Google Cloud Skills Boost berikut:
- Anda memiliki keahlian dalam hal Administrasi Sistem Linux.
- Anda memahami teori DevOps, konsep deployment berkelanjutan.
Pengantar deployment
Pada deployment heterogen, biasanya dua atau beberapa region atau lingkungan infrastruktur yang berbeda dihubungkan untuk memenuhi kebutuhan teknis atau operasional tertentu. Deployment heterogen disebut "hybrid", "multi-cloud", atau "publik-pribadi", tergantung spesifikasi deployment tersebut.
Untuk lab ini, deployment heterogen mencakup deployment yang meliputi region dengan satu lingkungan cloud, beberapa lingkungan cloud publik (multi-cloud), atau kombinasi antara lingkungan lokal dan cloud publik (hybrid atau publik-pribadi).
Berbagai tantangan bisnis dan teknis dapat timbul dalam deployment yang dibatasi pada lingkungan atau region tunggal:
- Keterbatasan resource: Pada lingkungan tunggal, khususnya lingkungan lokal, Anda mungkin tidak memiliki resource komputasi, networking, dan penyimpanan yang diperlukan untuk memenuhi kebutuhan produksi.
- Keterbatasan jangkauan geografis: Deployment pada lingkungan tunggal mengharuskan pengguna yang secara geografis terpisah jauh satu sama lain untuk mengakses satu deployment. Traffic mereka mungkin berkeliling dunia sebelum mencapai sebuah lokasi sentral.
- Keterbatasan ketersediaan: Pola traffic dengan skala web mengharuskan aplikasi untuk selalu fault-tolerant dan tangguh.
- Ketergantungan pada vendor: Abstraksi platform dan infrastruktur tingkat vendor dapat membuat Anda kesulitan mem-porting aplikasi.
- Resource yang tidak fleksibel: Resource Anda mungkin terbatas pada serangkaian penawaran komputasi, penyimpanan, atau jaringan tertentu.
Deployment heterogen dapat membantu mengatasi tantangan ini, tetapi harus didesain melalui proses dan prosedur yang terprogram dan determenistik. Prosedur deployment satu kali (one-off) atau ad-hoc dapat menyebabkan deployment atau proses menjadi rapuh dan rawan gagal. Proses ad-hoc dapat kehilangan data atau traffic. Proses deployment yang baik harus dapat diulang dan menggunakan pendekatan yang telah terbukti dalam mengelola penyediaan, konfigurasi, dan pemeliharaan.
Tiga skenario yang umum untuk deployment heterogen adalah:
- deployment multi-cloud
- fronting data lokal
- proses continuous integration/continuous delivery (CI/CD)
Latihan berikut mempraktikkan beberapa kasus penggunaan deployment heterogen yang umum, beserta pendekatan yang dirancang dengan baik menggunakan Kubernetes dan resource infrastruktur lainnya yang dapat membantu pengguna menyelesaikannya.
Penyiapan dan persyaratan
Sebelum mengklik tombol Mulai Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer, yang dimulai saat Anda mengklik Start Lab, akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab praktik ini dapat Anda gunakan untuk melakukan sendiri aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details dengan info berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account. -
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}} Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}} Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan. -
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
- Klik Activate Cloud Shell di bagian atas konsol Google Cloud.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Output berisi baris yang mendeklarasikan PROJECT_ID untuk sesi ini:
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
-
Klik Authorize.
-
Output Anda sekarang akan terlihat seperti ini:
Output:
- (Opsional) Anda dapat menampilkan daftar project ID dengan perintah ini:
Output:
Contoh output:
gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Menetapkan zona
Tetapkan zona Google Cloud kerja Anda dengan menjalankan perintah berikut, yang mengganti zona lokal sebagai
Mendapatkan kode contoh untuk lab ini
- Dapatkan kode contoh untuk membuat serta menjalankan container dan deployment:
- Buatlah sebuah cluster yang terdiri dari 3 node (proses ini perlu waktu beberapa menit):
Tugas 1. Mempelajari objek deployment
Untuk memulai, mari kita lihat objek deployment.
- Perintah
explain
dikubectl
dapat memberi tahu kita tentang objek deployment:
- Anda juga bisa melihat semua kolomnya menggunakan opsi
--recursive
:
- Anda dapat menggunakan perintah explain selama menjalankan lab ini untuk memahami struktur sebuah objek deployment dan kegunaan setiap kolomnya:
Tugas 2. Membuat deployment
- Update file konfigurasi
deployments/auth.yaml
:
- Mulai editor:
- Ubah
image
di bagian container deployment menjadi berikut:
- Simpan file
auth.yaml
: tekan<Esc>
, lalu ketik:
- Tekan
<Enter>
. Sekarang, buat sebuah deployment sederhana. Periksa file konfigurasi deployment:
Output:
Perhatikan cara deployment membuat satu replika dan menggunakan container auth versi 1.0.0.
Saat Anda menjalankan perintah kubectl create
untuk membuat deployment auth, sebuah pod yang sesuai dengan data dalam manifes deployment akan dibuat. Ini berarti Anda dapat menskalakan jumlah Pod dengan mengubah angka yang ditentukan dalam kolom replicas
.
- Lanjutkan dan buat objek deployment menggunakan
kubectl create
:
- Setelah membuat deployment, Anda dapat memverifikasi bahwa objek tersebut berhasil dibuat.
- Setelah deployment dibuat, Kubernetes akan membuat
ReplicaSet
untuk deployment tersebut. Anda dapat memverifikasi bahwaReplicaSet
telah dibuat untuk deployment:
Anda akan melihat ReplicaSet
dengan nama seperti auth-xxxxxxx
- Lihat Pod yang sudah dibuat sebagai bagian dari deployment. Pod tunggal ini dibuat oleh Kubernetes saat
ReplicaSet
dibuat:
Sekarang saatnya membuat layanan untuk deployment auth. Anda sudah melihat file manifes layanan, jadi detailnya tidak akan dibagikan di sini.
- Gunakan perintah
kubectl create
untuk membuat layanan auth:
- Sekarang, lakukan langkah yang sama untuk membuat dan mengekspos deployment
hello
:
- Lakukan sekali lagi untuk membuat dan mengekspos deployment
frontend
:
ConfigMap
untuk frontend.- Lakukan interaksi terhadap frontend dengan mengambil IP eksternalnya, lalu lakukan curl ke frontend tersebut:
Anda akan mendapatkan respons balik dari hello.
- Anda juga dapat menggunakan output yang menjadi template fitur
kubectl
untuk menggunakan curl sebagai baris tunggal:
Menguji tugas yang sudah selesai
Klik Check my progress di bawah untuk memeriksa progres lab Anda. Jika berhasil membuat cluster Kubernetes serta deployment Auth, Hello, dan Frontend, Anda akan melihat skor penilaian.
Menskalakan deployment
Setelah membuat deployment, Anda dapat menskalakannya. Lakukan hal ini dengan mengupdate kolom spec.replicas
.
- Lihat penjelasan kolom ini menggunakan perintah
kubectl explain
lagi:
- Kolom replicas dapat diupdate dengan mudah menggunakan perintah
kubectl scale
:
Setelah deployment diupdate, Kubernetes akan otomatis mengupdate ReplicaSet
yang terkait dan memulai Pod baru sehingga jumlah total Pod sama dengan 5.
- Pastikan bahwa sekarang ada 5 Pod
hello
yang berjalan:
- Sekarang, turunkan skala aplikasi:
- Sekali lagi, pastikan jumlah Pod Anda sudah benar:
Anda telah mempelajari deployment Kubernetes serta cara mengelola dan menskalakan kumpulan Pod.
Tugas 3. Update berkelanjutan
Deployment mendukung update image ke versi baru melalui mekanisme update berkelanjutan. Setelah diupdate dengan versi baru, deployment akan membuat ReplicaSet
baru dan perlahan-lahan meningkatkan jumlah replika di ReplicaSet
baru sembari menurunkan jumlah replika di ReplicaSet
lama.
Memicu update berkelanjutan
- Untuk mengupdate deployment, jalankan perintah berikut:
- Ubah
image
di bagian container deployment menjadi berikut:
- Simpan lalu keluar.
Deployment yang diupdate akan disimpan ke cluster Anda dan Kubernetes akan memulai update berkelanjutan.
- Lihat
ReplicaSet
baru yang dibuat oleh Kubernetes:
- Anda juga dapat melihat entri baru di histori peluncuran:
Menjeda update berkelanjutan
Jika ada masalah yang terdeteksi saat menjalankan peluncuran, jeda proses untuk menghentikan update.
- Jalankan perintah berikut untuk menjeda peluncuran:
- Verifikasi status terakhir peluncuran:
- Anda juga dapat memverifikasinya langsung di Pod:
Melanjutkan update berkelanjutan
Peluncuran dijeda yang berarti sebagian pod sudah dalam versi baru, tetapi sebagian lagi masih dalam versi lama.
- Lanjutkan peluncuran ini menggunakan perintah
resume
:
- Setelah peluncuran selesai, Anda akan melihat hasil berikut saat menjalankan perintah
status
:
Output:
Melakukan roll back pada update
Anggaplah ada bug yang terdeteksi dalam versi baru Anda. Karena versi baru diduga bermasalah, semua pengguna yang tersambung ke Pod baru akan mengalami masalah tersebut.
Anda harus melakukan rollback ke versi sebelumnya agar dapat melakukan penyelidikan dan merilis versi yang telah diperbaiki dengan tepat.
- Gunakan perintah
rollout
untuk melakukan rollback ke versi sebelumnya:
- Verifikasi rollback dalam histori:
- Terakhir, pastikan semua Pod telah di-rollback ke versi sebelumnya:
Oke. Anda telah mempelajari cara melakukan update berkelanjutan untuk deployment Kubernetes dan cara mengupdate aplikasi tanpa periode nonaktif.
Tugas 4. Deployment canary
Jika Anda ingin menguji deployment baru dalam fase produksi dengan sejumlah kecil pengguna, gunakan deployment canary. Dengan canary deployment, Anda dapat merilis perubahan ke sejumlah kecil pengguna untuk memitigasi risiko yang terkait dengan rilis baru.
Membuat deployment canary
Deployment canary terdiri dari sebuah deployment yang terpisah dari versi baru Anda dan sebuah layanan yang menargetkan baik deployment normal dan stabil maupun deployment canary.
- Pertama-tama, buat deployment canary baru untuk versi baru ini:
Output:
- Sekarang buatlah deployment canary:
- Setelah deployment canary dibuat, Anda akan memiliki dua deployment, yaitu
hello
danhello-canary
. Verifikasi dengan perintahkubectl
ini:
Pada service hello
, pemilih app:hello
akan mencocokkan pod baik di deployment produksi maupun deployment canary. Namun, karena deployment canary memiliki jumlah pod yang lebih sedikit, lebih sedikit pengguna yang bisa melihatnya.
Memverifikasi deployment canary
- Anda dapat memverifikasi versi
hello
yang dilayani dengan membuat permintaan:
- Jalankan permintaan ini beberapa kali dan Anda akan melihat bahwa beberapa permintaan dilayani oleh hello 1.0.0 dan sebagian kecil (1/4 = 25%) dilayani oleh hello 2.0.0.
Menguji tugas yang sudah selesai
Klik Check my progress di bawah untuk memeriksa progres lab Anda. Jika berhasil membuat Deployment canary, Anda akan melihat skor penilaian.
Deployment canary pada fase produksi - afinitas sesi
Dalam lab ini, tiap permintaan yang dikirim ke layanan Nginx berpeluang dilayani oleh deployment canary. Namun, bagaimana jika Anda ingin memastikan bahwa pengguna tidak dilayani oleh deployment canary? Salah satu kasus penggunaannya adalah saat UI untuk sebuah aplikasi diubah, dan Anda tidak ingin membuat pengguna bingung. Pada kasus semacam ini, Anda ingin pengguna "setia" pada satu deployment saja.
Anda dapat melakukannya dengan membuat layanan yang memiliki afinitas sesi. Dengan cara ini, pengguna yang sama akan selalu dilayani dari versi yang sama. Pada contoh di bawah, service-nya sama dengan sebelumnya, tetapi kolom baru sessionAffinity
telah ditambahkan dan ditetapkan ke ClientIP
. Permintaan dari semua klien dengan alamat IP yang sama akan dikirimkan ke versi aplikasi hello
yang sama.
Mengingat sulitnya menyiapkan lingkungan untuk menguji hal ini, Anda tidak perlu menyiapkannya di sini. Namun, Anda mungkin perlu menggunakan sessionAffinity
untuk deployment canary dalam fase produksi.
Tugas 5. Blue-green deployment
Meluncurkan update merupakan langkah ideal karena hal itu memungkinkan Anda men-deploy aplikasi perlahan-lahan dengan overhead, dampak performa, dan periode nonaktif yang minimal. Ada kalanya Anda akan mendapatkan keuntungan dengan mengubah load balancer agar menargetkan versi baru hanya setelah update di-deploy sepenuhnya. Pada kasus semacam ini, blue-green deployment merupakan pilihan tepat.
Kubernetes mencapai keadaan ini dengan membuat dua deployment terpisah; satu untuk versi "blue" lama, dan satu lagi untuk versi "green" baru. Gunakan hello
deployment yang ada untuk versi "blue". Deployment ini akan diakses melalui service yang berfungsi sebagai router. Setelah versi "green" baru aktif dan operasional, Anda harus beralih untuk menggunakan versi tersebut dengan mengupdate service.
Layanan
Gunakan layanan hello yang ada, tetapi lakukan update sehingga layanan memiliki pemilih app:hello
, versi: 1.0.0
. Pemilih ini akan cocok dengan "blue" deployment yang ada. Namun, pemilih tersebut tidak akan cocok dengan "green" deployment karena akan menggunakan versi berbeda.
- Pertama, update layanan:
resource service/hello is missing
karena hal ini di-patch otomatis.Melakukan update menggunakan Blue-Green deployment
Agar dapat mendukung gaya blue-green deployment, Anda akan membuat "green" deployment baru untuk versi barunya. Green deployment ini akan mengupdate label versi dan jalur image.
- Buat green deployment:
- Setelah green deployment siap dan dimulai dengan benar, pastikan versi 1.0.0 saat ini masih digunakan:
- Sekarang, update layanan agar menargetkan versi baru:
- Setelah layanan diupdate, "green" deployment akan langsung digunakan. Sekarang Anda dapat memastikan bahwa versi baru akan selalu digunakan:
Rollback Blue-Green
Jika perlu, Anda dapat melakukan rollback ke versi lama dengan cara yang sama.
- Selagi "blue" deployment masih berjalan, cukup update layanan kembali ke versi lamanya:
- Setelah layanan diupdate, rollback Anda akan berhasil. Sekali lagi, pastikan versi yang tepat digunakan:
Berhasil. Anda telah mempelajari blue-green deployment dan juga cara men-deploy update ke beberapa aplikasi yang perlu beralih versi sekaligus.
Selamat!
Anda telah berlatih cara menggunakan alat command line kubectl
dan berbagai gaya konfigurasi deployment yang disiapkan dalam file YAML untuk meluncurkan, mengupdate, dan menskalakan deployment Anda. Berbekal praktik dasar ini, Anda diharapkan dapat dengan yakin menerapkan keterampilan tersebut dalam praktik DevOps Anda sendiri.
Langkah berikutnya/Pelajari lebih lanjut
-
Solusi DevOps dan Panduan DevOps di dokumentasi Google Cloud.
-
Di situs Kubernetes, gabung ke Komunitas Kubernetes.
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 2 April 2024
Lab terakhir diuji pada 14 Agustus 2023
Hak cipta 2024 Google LLC Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.