Men-deploy aplikasi Linux stateless


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:

  1. Buka halaman Workload di Konsol Google Cloud.

    Buka Workload

  2. Klik Deploy.

  3. 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.

  4. Konfigurasi deployment Anda dengan:

    • Variabel lingkungan yang akan diteruskan ke dalam container.
    • Perintah awal untuk menyesuaikan titik entri container saat runtime.
  5. Klik Selesai, lalu klik Lanjutkan.

  6. Di bagian Konfigurasi, beri deployment Anda nama Aplikasi dan tentukan Namespace Kubernetes untuk menerapkannya.

  7. Secara opsional, di bagian Label, Anda dapat menambahkan Label Kubernetes ke deployment.

  8. 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.

  9. Dari menu drop-down Cluster Kubernetes, pilih cluster yang diinginkan.

  10. Klik Deploy.

Memeriksa Deployment

Setelah membuat Deployment, Anda dapat menggunakan salah satu metode berikut untuk memeriksanya:

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:

  1. Buka halaman Workload di Konsol Google Cloud.

    Buka Workload

  2. Dalam daftar workload, klik nama Deployment yang ingin Anda ubah.

  3. 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, atau selector spesifikasi Pod menggunakan kubectl 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:

  1. Buka halaman Workload di Konsol Google Cloud.

    Buka Workload

  2. Dalam daftar beban kerja, klik nama Penerapan yang ingin Anda ubah.

  3. Klik Tindakan > Update berkelanjutan.

  4. 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.
  5. Di bagian Image container, masukkan jalur dan versi image untuk image container yang telah diperbarui.

  6. 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:

  1. Buka halaman Workload di Konsol Google Cloud.

    Buka Workload

  2. Dalam daftar beban kerja, klik nama Penerapan yang ingin Anda ubah.

  3. Klik Tindakan > Penskalaan > Edit replika

  4. Masukkan jumlah Replicas baru untuk Deployment.

  5. 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:

  1. Buka halaman Workload di Konsol Google Cloud.

    Buka Workload

  2. Dalam daftar workload, pilih satu atau beberapa Deployment yang akan dihapus.

  3. Klik Hapus.

  4. Saat diminta untuk mengonfirmasi, klik Delete.

Langkah selanjutnya