Halaman ini menjelaskan cara men-deploy aplikasi Linux stateless menggunakan Google Kubernetes Engine (GKE). Anda juga dapat mempelajari cara men-deploy aplikasi Windows stateless.
Ringkasan
Aplikasi stateless adalah aplikasi yang tidak menyimpan data atau status aplikasi ke cluster atau ke penyimpanan persisten. Sebaliknya, status data dan aplikasi tetap berada di klien, yang membuat aplikasi stateless lebih skalabel. Misalnya, aplikasi frontend bersifat stateless: Anda dapat men-deploy beberapa replika untuk meningkatkan ketersediaannya dan menurunkan skalanya saat permintaan sedang rendah, dan replika tidak memerlukan identitas unik.
Kubernetes menggunakan pengontrol Deployment untuk men-deploy aplikasi stateless sebagai Pod yang seragam dan tidak unik. Deployment mengelola status yang diinginkan untuk aplikasi Anda: berapa banyak Pod yang harus menjalankan aplikasi Anda, versi image container apa yang harus dijalankan, label apa yang harus diberi pada Pod, dan seterusnya. Status yang diinginkan dapat diubah secara dinamis melalui update pada spesifikasi Pod Deployment.
Aplikasi stateless berbeda dengan aplikasi stateful, yang menggunakan penyimpanan persisten untuk menyimpan data dan yang menggunakan StatefulSets untuk men-deploy Pod dengan identitas yang unik.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
initialize
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Pastikan aplikasi Anda dalam container disimpan di registry image, seperti Artifact Registry.
Jika baru mengenal GKE, Anda harus menyelesaikan quickstart. Di sana, Anda akan mengaktifkan API GKE dan mempelajari cara kerja produk tersebut.
Anatomi Deployment
Berikut adalah contoh file manifes Deployment sederhana. Deployment ini
membuat tiga Pod replika berlabel app=my-app
yang menjalankan
image hello-app
yang disimpan di Artifact Registry:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
run: my-app
template:
metadata:
labels:
run: my-app
spec:
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Dalam contoh ini:
.spec.replicas
: adalah jumlah Pod replika yang dikelola Deployment..spec.template.metadata.labels
: adalah label yang diberikan ke setiap Pod, yang digunakan Deployment untuk mengelola Pod..spec.template.spec
: adalah spesifikasi Pod, yang menentukan cara menjalankan setiap Pod.spec.containers
berisi nama container yang akan dijalankan di setiap Pod dan image container yang akan dijalankan.
Untuk mengetahui informasi selengkapnya tentang spesifikasi Deployment, lihat referensi Deployment API.
Membuat Deployment
Anda membuat Deployment menggunakan salah satu metode berikut:
- Anda dapat menggunakan fitur Deploy pada menu Workload Google Cloud Console untuk membuat Deployment sederhana dari image container yang telah Anda simpan di Artifact Registry
Anda dapat menulis manifes Deployment dan menjalankan
kubectl apply
untuk membuat resource
kubectl apply
Anda dapat membuat dan mengupdate Deployment dari file manifes secara deklaratif
menggunakan kubectl apply
. Metode ini juga mempertahankan update yang dilakukan pada resource
live tanpa menggabungkan kembali perubahan ke dalam file manifes.
Untuk membuat Deployment dari file manifesnya, jalankan perintah berikut:
kubectl apply -f DEPLOYMENT_FILE
Ganti DEPLOYMENT_FILE
dengan file manifes, seperti config.yaml
.
Anda juga dapat menggunakan kubectl apply -f DIRECTORY/
untuk
membuat semua objek (kecuali yang sudah ada) yang ditentukan dalam file manifes yang disimpan dalam
direktori.
Konsol
Untuk membuat Deployment, lakukan langkah-langkah berikut:
Buka halaman Workload di Konsol Google Cloud.
Klik add_box Deploy.
Pada bagian Tentukan penampung, pilih salah satu dari opsi berikut:
Image container yang ada untuk memilih image container yang tersedia dari Artifact Registry atau DockerHub. Di Jalur image, masukkan jalur ke image container dan versinya.
Image container baru untuk menggunakan image yang dibuat dengan Cloud Source Repositories dan Cloud Build.
Konfigurasi deployment Anda dengan:
- Variabel lingkungan yang akan diteruskan ke dalam container.
- Perintah awal untuk menyesuaikan titik entri container saat runtime.
Klik Selesai, lalu klik Lanjutkan.
Di bagian Konfigurasi, beri deployment Anda nama Aplikasi dan tentukan Namespace Kubernetes untuk menerapkannya.
Secara opsional, di bagian Label, Anda dapat menambahkan Label Kubernetes ke deployment.
Untuk menyimpan YAML yang membuat deployment ini dan memperbaruinya di lain waktu, klik Lihat YAML. Salin dan tempel YAML ke dalam file, lalu simpan dan klik Tutup pada dialog Output YAML.
Dari menu drop-down Cluster Kubernetes, pilih cluster yang diinginkan.
Klik Deploy.
Memeriksa Deployment
Setelah membuat Deployment, Anda dapat menggunakan salah satu metode berikut untuk memeriksanya:
- Anda dapat menggunakan menu Workload
Anda dapat menggunakan
kubectl describe
dankubectl get
kubectl
Untuk mendapatkan informasi mendetail tentang Deployment, jalankan perintah berikut:
kubectl describe deployment DEPLOYMENT_NAME
Ganti DEPLOYMENT_NAME
dengan nama Deployment.
Untuk menampilkan daftar Pod yang dibuat oleh Deployment, jalankan perintah berikut:
kubectl get pods -l KEY=VALUE
Dalam perintah ini, flag -l
menginstruksikan kubectl
untuk mendapatkan semua Pod dengan
label nilai kunci. Misalnya, jika memberi label Deployment app: my-app
, Anda akan menjalankan kubectl get pods -l app=my-app
untuk melihat Pod dengan label tersebut.
Untuk mendapatkan informasi tentang Pod tertentu:
kubectl describe pod POD_NAME
Untuk melihat manifes Deployment, jalankan perintah berikut:
kubectl get deployments DEPLOYMENT_NAME -o yaml
Perintah ini menampilkan konfigurasi langsung Deployment dalam format YAML.
Konsol
Untuk memeriksa Deployment, lakukan langkah-langkah berikut:
Buka halaman Workload di Konsol Google Cloud.
Dalam daftar workload, klik nama Deployment yang ingin Anda ubah.
Di halaman Detail deployment, lakukan salah satu tindakan berikut:
- Klik tab Histori Revisi untuk melihat histori revisi Deployment.
- Klik tab Peristiwa untuk melihat semua peristiwa yang terkait dengan Deployment.
- Klik tab Logs untuk melihat log aktivitas container di Deployment.
- Klik tab YAML untuk melihat, menyalin, dan mendownload manifes YAML untuk Deployment.
Memperbarui Deployment
Anda dapat meluncurkan update untuk spesifikasi Pod Deployment, seperti gambar, penggunaan/permintaan resource, atau konfigurasi.
Anda dapat mengupdate Deployment menggunakan metode berikut:
- Anda dapat menggunakan menu Update bergulir dan editor YAML dari menu Workloads di Konsol Google Cloud.
- Anda dapat membuat perubahan pada file manifes dan menerapkannya dengan
kubectl apply
. - Anda dapat memperbarui kolom
image
,resources
, atauselector
spesifikasi Pod menggunakankubectl set
. Anda dapat mengupdate Deployment langsung dari shell atau di editor pilihan menggunakan
kubectl edit
.
kubectl apply
Anda dapat mengupdate Deployment dengan menerapkan file manifes baru atau yang telah diperbarui. Hal ini berguna untuk membuat berbagai perubahan pada Deployment Anda, seperti untuk menskalakan atau menentukan versi baru aplikasi Anda.
Untuk mengupdate Deployment, jalankan perintah berikut:
kubectl apply -f DEPLOYMENT_FILE
Ganti DEPLOYMENT_FILE
dengan file manifes yang telah diperbarui
Perintah kubectl apply
menerapkan file manifes ke resource. Jika
resource yang ditentukan tidak ada, resource tersebut akan dibuat oleh perintah.
kubectl set
Anda dapat menggunakan kubectl set
untuk mengubah image, resource (baik untuk permintaan atau batas) Deployment, atau kolom pemilih.
Untuk mengubah image Deployment, jalankan perintah berikut:
kubectl set image deployment DEPLOYMENT_NAME IMAGE IMAGE:TAG
Misalnya, untuk mengupdate Deployment dari nginx
versi 1.7.9 ke versi 1.9.1, jalankan perintah berikut:
kubectl set image deployment nginx nginx=nginx:1.9.1
Konsol
Untuk mengakses menu Update berkelanjutan Deployment:
Buka halaman Workload di Konsol Google Cloud.
Dalam daftar beban kerja, klik nama Penerapan yang ingin Anda ubah.
Klik list Tindakan > Update berkelanjutan.
Konfigurasikan parameter opsional berikut untuk strategi update:
- Detik minimum siap: Menentukan jumlah detik minimum saat Pod yang baru dibuat harus siap agar dianggap tersedia.
- Lonjakan maksimum: Menentukan jumlah Pod maksimum yang dapat dibuat atas jumlah Pod yang diinginkan. Nilai bisa berupa angka absolut atau persentase.
- Maksimum tidak tersedia: Menentukan jumlah maksimum Pod yang mungkin tidak tersedia selama proses update. Nilai bisa berupa angka absolut atau persentase.
Di bagian Image container, masukkan jalur dan versi image untuk image container yang telah diperbarui.
Klik Perbarui.
Me-roll back update
Anda dapat me-roll back update menggunakan
kubectl rollout undo
.
Anda dapat me-roll back update yang sedang berlangsung atau yang sudah selesai ke revisi sebelumnya:
kubectl rollout undo deployment my-deployment
Anda juga dapat melakukan roll back ke revisi tertentu:
kubectl rollout undo deployment my-deployment --to-revision=3
Menskalakan Deployment
Anda dapat menskalakan Deployment secara manual menggunakan Konsol Google Cloud atau kubectl scale
.
Anda dapat mempelajari lebih lanjut Deployment penskalaan secara otomatis.
kubectl
kubectl scale
dapat digunakan kapan saja untuk menskalakan Penerapan Anda.
Untuk menskalakan Deployment secara manual, jalankan perintah berikut:
kubectl scale deployment DEPLOYMENT_NAME --replicas NUMBER_OF_REPLICAS
Ganti NUMBER_OF_REPLICAS
dengan jumlah Pod replika yang diinginkan.
Konsol
Untuk menskalakan Deployment, lakukan langkah-langkah berikut:
Buka halaman Workload di Konsol Google Cloud.
Dalam daftar beban kerja, klik nama Penerapan yang ingin Anda ubah.
Klik list Tindakan > Penskalaan > Edit replika
Masukkan jumlah Replicas baru untuk Deployment.
Klik Menskalakan.
Menghapus Deployment
Anda dapat menghapus Deployment menggunakan Konsol Google Cloud atau kubectl delete
.
kubectl
Untuk menghapus Deployment, jalankan perintah berikut:
kubectl delete deployment DEPLOYMENT_NAME
Konsol
Untuk menghapus Deployment, lakukan langkah-langkah berikut:
Buka halaman Workload di Konsol Google Cloud.
Dalam daftar workload, pilih satu atau beberapa Deployment yang akan dihapus.
Klik delete Hapus.
Saat diminta untuk mengonfirmasi, klik Delete.