Checkpoint
Create a Kubernetes cluster and launch Nginx container
/ 25
Create Monolith pods and service
/ 25
Allow traffic to the monolith service on the exposed nodeport
/ 5
Adding Labels to Pods
/ 20
Creating Deployments (Auth, Hello and Frontend)
/ 25
Mengorkestrasi Cloud dengan Kubernetes
- GSP021
- Ringkasan
- Tujuan
- Penyiapan dan persyaratan
- Tugas 1. Mendapatkan kode contoh
- Tugas 2. Demo Kubernetes Singkat
- Tugas 3. Pod
- Tugas 4. Membuat pod
- Tugas 5. Berinteraksi dengan pod
- Tugas 6. Service
- Tugas 7. Membuat service
- Tugas 8. Menambahkan label ke pod
- Tugas 9. Men-deploy aplikasi dengan Kubernetes
- Tugas 10. Membuat deployment
- Selamat!
GSP021
Ringkasan
Kubernetes adalah project open source (tersedia di kubernetes.io) yang dapat berjalan di berbagai lingkungan, dari laptop hingga cluster multi node dengan ketersediaan tinggi, dari cloud publik hingga deployment lokal, dan dari virtual machine hingga server khusus (bare metal).
Untuk lab ini, dengan menggunakan lingkungan terkelola seperti Kubernetes Engine, Anda dapat berfokus pada pengalaman menggunakan Kubernetes tanpa perlu repot-repot menyiapkan infrastrukturnya. Kubernetes Engine merupakan lingkungan terkelola untuk men-deploy aplikasi dalam kontainer. Kubernetes Engine menghadirkan inovasi terbaru dalam produktivitas developer, efisiensi resource, operasi otomatis, dan fleksibilitas open source untuk mempercepat waktu penyiapan produk Anda.
Tujuan
Di lab ini, Anda akan mempelajari cara:
- Menyediakan cluster Kubernetes lengkap menggunakan Kubernetes Engine.
- Men-deploy dan mengelola container Docker menggunakan
kubectl
. - Memecah aplikasi menjadi microservice menggunakan Deployment dan Service Kubernetes.
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.
Google Kubernetes Engine
- Di lingkungan Cloud Shell, ketik perintah berikut untuk menetapkan zona:
- Aktifkan cluster yang akan digunakan di lab ini:
gcloud container clusters get-credentials io
untuk mengautentikasi ulang.
Tugas 1. Mendapatkan kode contoh
- Salin kode sumber dari command line Cloud Shell:
- Buka direktori yang dibutuhkan oleh lab ini:
- Lihat daftar file untuk mengetahui file yang akan Anda kerjakan:
Contoh memiliki tata letak berikut:
Setelah Anda memiliki kodenya, mari kita coba menggunakan Kubernetes.
Tugas 2. Demo Kubernetes Singkat
Cara termudah untuk memulai Kubernetes adalah dengan menggunakan perintah kubectl create
.
- Gunakan perintah tersebut untuk meluncurkan satu instance container nginx:
Kubernetes telah membuat deployment, dan deployment akan dijelaskan lebih lanjut nanti. Namun, untuk saat ini, Anda hanya perlu mengetahui bahwa deployment menjaga pod tetap aktif dan berjalan meskipun node tempatnya berjalan tersebut gagal.
Di Kubernetes, semua container berjalan dalam pod.
- Gunakan perintah
kubectl get pods
untuk melihat container nginx yang berjalan:
- Setelah status container nginx menandakan Running (berjalan), Anda dapat mengeksposnya ke luar Kubernetes menggunakan perintah
kubectl expose
:
Jadi, apa yang baru saja terjadi? Di balik layar, Kubernetes membuat Load Balancer eksternal yang dilengkapi dengan alamat IP publik. Tiap klien yang membuka alamat IP publik tersebut akan dirutekan ke pod di belakang service. Dalam hal ini, pod tersebut adalah pod nginx.
- Sekarang, lihat daftar service menggunakan perintah
kubectl get services
:
ExternalIP
untuk service Anda terisi. Hal ini wajar. Cukup jalankan kembali perintah kubectl get services
tiap beberapa detik hingga kolom terisi.
- Tambahkan IP Eksternal ke perintah ini untuk membuka container Nginx dari jarak jauh:
Dan, berhasil! Kubernetes mendukung alur kerja yang siap pakai menggunakan perintah kubectl
untuk menjalankan dan mengekspos.
Menguji tugas yang sudah selesai
Klik Check my progress di bawah untuk memeriksa progres lab Anda. Jika Anda berhasil membuat cluster Kubernetes dan men-deploy container Nginx, skor penilaian akan terlihat.
Setelah melihat tur singkat Kubernetes, sekarang saatnya mempelajari tiap komponen dan abstraksi secara mendalam.
Tugas 3. Pod
Pod merupakan inti dari Kubernetes.
Pod mewakili dan menampung kumpulan dari satu atau beberapa container. Umumnya, jika Anda memiliki beberapa container yang sangat bergantung satu sama lain, Anda menggabungkan container ini di dalam satu pod.
Dalam contoh ini, ada pod yang berisi container monolit dan nginx.
Pod juga memiliki Volume. Volume adalah disk data yang berfungsi selama pod berfungsi, dan dapat digunakan oleh container yang ada dalam pod tersebut. Pod menyediakan namespace bersama untuk kontennya. Hal ini berarti kedua container di dalam pod pada contoh ini dapat saling berkomunikasi, dan juga memiliki volume terpasang yang sama.
Pod juga memiliki namespace jaringan bersama. Artinya, tiap pod memiliki satu Alamat IP.
Selanjutnya, mari kita pelajari pod secara lebih mendalam.
Tugas 4. Membuat pod
Pod dapat dibuat menggunakan file konfigurasi pod. Luangkan waktu untuk mempelajari file konfigurasi pod monolit.
- Buka direktori:
- Jalankan perintah berikut:
Output menunjukkan file konfigurasi yang terbuka:
Ada beberapa hal yang perlu Anda perhatikan di sini. Anda akan melihat bahwa:
- Pod terdiri atas satu container (monolit).
- Anda meneruskan beberapa argumen ke container saat pod dimulai.
- Anda membuka port 80 untuk traffic http.
- Buat pod monolit menggunakan
kubectl
:
- Periksa pod Anda. Gunakan perintah
kubectl get pods
untuk melihat daftar semua pod yang berjalan di namespace default:
- Setelah pod monolit berjalan, gunakan perintah
kubectl describe
untuk mendapatkan informasi selengkapnya tentang pod monolit:
Anda akan melihat berbagai informasi tentang pod monolit, termasuk alamat IP dan log aktivitas Pod. Informasi ini dapat berguna saat memecahkan masalah.
Kubernetes mempermudah pembuatan pod dengan menjelaskannya dalam file konfigurasi dan melihat informasi saat pod dijalankan. Di bagian ini, Anda sudah memiliki kemampuan untuk membuat semua pod yang diperlukan deployment.
Tugas 5. Berinteraksi dengan pod
Secara default, pod mendapatkan alamat IP pribadi yang tidak dapat dijangkau di luar cluster. Gunakan perintah kubectl port-forward
untuk memetakan port lokal ke port di dalam pod monolit.
-
Buka terminal Cloud Shell kedua. Sekarang Anda memiliki dua terminal, satu terminal untuk menjalankan perintah
kubectl port-forward
dan satu lagi untuk menjalankan perintahcurl
. -
Di terminal kedua, jalankan perintah berikut untuk menyiapkan penerusan port:
- Sekarang, di terminal pertama, mulai berinteraksi dengan pod Anda menggunakan
curl
:
Ya! Container mengirimkan respons "hello" kepada Anda.
- Sekarang gunakan perintah
curl
untuk melihat apa yang terjadi jika Anda membuka endpoint yang aman:
Maaf.
- Coba login untuk mendapatkan kembali token autentikasi dari monolit:
- Pada perintah login, gunakan sandi yang sangat rahasia
password
untuk login.
Proses login akan mencetak token JWT.
- Karena Cloud Shell tidak dapat menangani penyalinan string panjang dengan baik, buat variabel lingkungan untuk token.
-
Saat dimintai sandi host, masukkan kembali sandi yang sangat rahasia, yaitu
password
. -
Salin perintah ini, lalu gunakan token untuk membuka endpoint yang aman dengan
curl
:
Di bagian ini, Anda seharusnya menerima respons dari aplikasi yang memberitahukan bahwa semuanya berjalan dengan lancar.
- Gunakan perintah
kubectl logs
untuk melihat log Podmonolit
.
-
Buka terminal ketiga, lalu gunakan flag
-f
untuk mendapatkan aliran data log yang terjadi secara real time:
- Sekarang jika Anda menggunakan
curl
di terminal pertama untuk berinteraksi dengan monolit, Anda dapat melihat log diperbarui (di terminal ketiga):
- Gunakan perintah
kubectl exec
untuk menjalankan shell interaktif di dalam Pod Monolit. Hal ini dapat berguna saat Anda ingin memecahkan masalah dari dalam container:
- Misalnya, setelah Anda memasukkan shell ke dalam container monolit, konektivitas eksternal dapat diuji menggunakan perintah
ping
:
- Pastikan untuk logout setelah Anda selesai menggunakan shell interaktif ini.
Seperti yang dapat Anda lihat, berinteraksi dengan pod semudah menggunakan perintah kubectl
. Jika Anda perlu membuka container dari jarak jauh, atau mendapatkan info shell login, Kubernetes menyediakan semua hal yang diperlukan untuk menyiapkan dan mengerjakan project Anda.
Tugas 6. Service
Pod tidak dirancang untuk persisten. Pod dapat dimulai atau dihentikan karena berbagai alasan, misalnya pemeriksaan keaktifan dan kesiapan yang gagal, dan hal ini menyebabkan masalah:
Apa yang terjadi jika Anda ingin berkomunikasi dengan kumpulan Pod? Saat dimulai ulang, pod mungkin akan memiliki alamat IP yang berbeda.
Di sinilah Service berperan. Service menyediakan endpoint stabil untuk Pod.
Service menggunakan label untuk menentukan Pod yang digunakan untuk beroperasi. Jika memiliki label yang tepat, Pod akan dideteksi dan diekspos secara otomatis oleh service.
Tingkat akses yang diberikan oleh service ke kumpulan pod bergantung pada jenis Service. Saat ini ada tiga jenis Service:
-
ClusterIP
(internal) -- jenis default yang berarti Service ini hanya dapat dilihat di dalam cluster, -
NodePort
memberikan IP yang dapat diakses secara eksternal kepada setiap node di cluster, serta -
LoadBalancer
menambahkan load balancer dari penyedia cloud yang akan meneruskan traffic dari service ke Node di dalamnya.
Sekarang Anda akan mempelajari cara:
- Membuat service
- Menggunakan pemilih label untuk mengekspos kumpulan Pod terbatas secara eksternal
Tugas 7. Membuat service
Sebelum Anda dapat membuat service, buatlah pod aman terlebih dahulu yang dapat menangani traffic https.
- Jika direktori diubah, pastikan Anda kembali ke direktori
~/orchestrate-with-kubernetes/kubernetes
:
- Pelajari file konfigurasi service monolit:
- Buat pod secure-monolith dan data konfigurasinya:
Setelah Anda memiliki pod yang aman, saatnya untuk mengekspos Pod secure-monolith secara eksternal. Untuk melakukannya, buat service Kubernetes.
- Pelajari file konfigurasi service monolit:
(Output):
* Ada pemilih yang digunakan untuk menemukan dan mengekspos pod apa pun secara otomatis dengan label `app: monolith` dan `secure: enabled`.
* Sekarang, Anda harus mengekspos nodeport di sini karena inilah cara meneruskan traffic eksternal dari port 31000 ke nginx (di port 443).
- Gunakan perintah
kubectl create
untuk membuat service monolit dari file konfigurasi service monolit:
(Output):
Menguji tugas yang sudah selesai
Klik Check my progress di bawah untuk memeriksa progres lab Anda. Jika Anda berhasil membuat pod dan service Monolit, skor penilaian akan terlihat.
Anda menggunakan port untuk mengekspos service. Hal ini berarti bentrokan port dapat terjadi jika aplikasi lain mencoba mengikat ke port 31000 di salah satu server Anda.
Umumnya, Kubernetes akan menangani penugasan port ini. Di lab ini, Anda akan memilih port untuk memudahkan konfigurasi health check nanti.
- Gunakan perintah
gcloud compute firewall-rules
untuk mengizinkan traffic ke service monolit pada nodeport yang diekspos:
Menguji tugas yang sudah selesai
Klik Check my progress di bawah untuk memeriksa progres lab Anda. Jika Anda berhasil membuat aturan firewall untuk mengizinkan traffic TCP di port 31000, skor penilaian akan terlihat.
Setelah menyiapkan semuanya, Anda seharusnya dapat membuka service secure-monolith dari luar cluster tanpa perlu menggunakan penerusan port.
- Pertama-tama, dapatkan alamat IP eksternal untuk salah satu node.
- Sekarang coba buka service secure-monolith menggunakan
curl
:
Maaf. Waktu habis. Apa yang salah?
Catatan: Sekarang saatnya menguji pengetahuan Anda secara singkat.
Gunakan perintah berikut untuk menjawab pertanyaan di bawah ini:kubectl get services monolith
kubectl describe services monolith
Pertanyaan:
Petunjuk: ada kaitannya dengan label. Anda akan memperbaiki masalah ini di bagian berikutnya.
Tugas 8. Menambahkan label ke pod
Saat ini service monolit tidak memiliki endpoint. Salah satu cara untuk memecahkan masalah seperti ini adalah menggunakan perintah kubectl get pods
dengan kueri label.
- Anda dapat melihat bahwa ada beberapa pod yang berjalan menggunakan label monolit.
- Namun, bagaimana dengan "app=monolith" dan "secure=enabled"?
Kueri label ini tidak menampilkan hasil apa pun. Sepertinya label "secure=enabled" perlu ditambahkan ke pod tersebut.
- Gunakan perintah
kubectl label
untuk menambahkan labelsecure=enabled
yang tidak ada ke Pod secure-monolith. Setelah itu, Anda dapat memeriksa dan melihat bahwa label telah diperbarui.
- Setelah pod diberi label dengan benar, lihat daftar endpoint di service monolit:
Anda berhasil membuat endpoint!
- Uji endpoint dengan membuka kembali salah satu node.
Aha! Kita berhasil terhubung.
Menguji tugas yang sudah selesai
Klik Check my progress di bawah untuk memeriksa progres lab Anda. Jika Anda berhasil menambahkan label ke pod monolit, skor penilaian akan terlihat.
Tugas 9. Men-deploy aplikasi dengan Kubernetes
Sasaran lab ini adalah mempersiapkan Anda melakukan penskalaan dan mengelola container dalam produksi. Di sinilah Deployment berperan. Deployment adalah cara deklaratif untuk memastikan jumlah Pod yang berjalan sama dengan jumlah Pod yang diinginkan, yang ditentukan oleh pengguna.
Manfaat utama Deployment adalah menangani detail tingkat rendah dalam mengelola Pod. Di balik layar, Deployment menggunakan Kumpulan Replika untuk mengelola proses memulai dan menghentikan Pod. Jika Pod perlu diupdate atau diskalakan, Deployment akan menangani prosesnya. Deployment juga akan menangani proses mulai ulang Pod jika Pod terhenti karena alasan tertentu.
Lihat contoh singkat:
Pod terikat dengan durasi Node tempatnya dibuat. Pada contoh di atas, Node3 terhenti (diikuti dengan Pod). Alih-alih membuat Pod baru dan mencari Node untuknya secara manual, Deployment membuat Pod baru dan memulainya di Node2.
Cukup bagus!
Sekarang saatnya menggabungkan semua yang telah Anda pelajari tentang Pod dan Service untuk memecah aplikasi monolitik menjadi beberapa Service yang berukuran lebih kecil menggunakan Deployment.
Tugas 10. Membuat deployment
Anda akan memecah aplikasi monolitik menjadi tiga bagian yang terpisah:
- auth - Menghasilkan token JWT untuk pengguna yang terautentikasi.
- hello - Menyapa pengguna yang terautentikasi.
- frontend - Merutekan traffic ke service auth dan hello.
Deployment siap dibuat untuk tiap service. Setelah itu, Anda akan menentukan service internal untuk deployment auth dan hello, serta service eksternal untuk deployment frontend. Setelah selesai, Anda dapat berinteraksi dengan setiap microservice, sama seperti dengan Monolit. Namun, kini tiap bagian dapat diskalakan dan di-deploy secara terpisah.
- Mulai dengan mempelajari file konfigurasi deployment auth.
(Output)
Deployment membuat 1 replika, dan Anda menggunakan container auth versi 2.0.0.
Saat Anda menjalankan perintah kubectl create
untuk membuat deployment auth, sebuah pod yang sesuai dengan data dalam manifes Deployment akan dibuat. Hal ini berarti Anda dapat menskalakan jumlah Pod dengan mengubah angka yang ditentukan dalam kolom Replicas.
- Lanjutkan dan buat objek deployment Anda:
- Sekarang saatnya membuat service untuk deployment auth Anda. Gunakan perintah
kubectl create
untuk membuat service auth:
- Sekarang, lakukan langkah yang sama untuk membuat dan mengekspos deployment hello:
- Lakukan sekali lagi untuk membuat dan mengekspos Deployment frontend.
- Berinteraksilah dengan frontend dengan mengambil IP Eksternal-nya, lalu menggunakan curl:
EXTERNAL-IP
masih tertunda.Anda akan mendapatkan respons balik hello.
Menguji tugas yang sudah selesai
Klik Check my progress di bawah untuk memeriksa progres lab Anda. Jika Anda berhasil membuat deployment Auth, Hello, dan Frontend, skor penilaian akan terlihat.
Selamat!
Selamat! Anda telah berhasil mengembangkan aplikasi multi-service menggunakan Kubernetes. Dengan keterampilan yang Anda pelajari di sini, Anda dapat men-deploy aplikasi kompleks di Kubernetes menggunakan sekumpulan deployment dan service.
Langkah berikutnya/Pelajari lebih lanjut
- Anda dapat mengikuti kabar terbaru Kubernetes di X dan di blog komunitas.
- Ingat bahwa Kubernetes adalah project open source (http://kubernetes.io/) yang dihosting di GitHub. Kami selalu menanti kontribusi dan masukan dari Anda.
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 29 April 2024
Lab Terakhir Diuji pada 29 April 2024
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.