Men-deploy aplikasi dalam image container ke cluster GKE
Halaman ini menunjukkan cara melakukan hal berikut:
- Membuat aplikasi Halo Dunia.
- Memaketkan aplikasi ke dalam image container menggunakan Cloud Build.
- Membuat cluster di Google Kubernetes Engine (GKE).
- Men-deploy image container ke cluster Anda.
Contoh ini ditampilkan dalam beberapa bahasa, tetapi Anda dapat menggunakan bahasa lain selain yang ditampilkan.
Untuk mengikuti panduan langkah demi langkah tugas ini langsung di Cloud Shell Editor, klik Pandu saya:
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Artifact Registry, Cloud Build, and Google Kubernetes Engine.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Artifact Registry, Cloud Build, and Google Kubernetes Engine.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
kubectl
digunakan untuk mengelola Kubernetes, sistem orkestrasi cluster yang digunakan GKE. Anda dapat menginstalkubectl
menggunakangcloud
:gcloud components install kubectl
Menulis aplikasi contoh
Untuk petunjuk mengenai pembuatan aplikasi Halo Dunia yang berjalan di GKE, klik bahasa Anda:
Go
Buat direktori baru bernama
helloworld-gke
, lalu pindahlah ke direktori tersebut:mkdir helloworld-gke cd helloworld-gke
Buat modul baru bernama
example.com/helloworld
:go mod init example.com/helloworld
Buat file baru bernama
helloworld.go
dan tempelkan kode berikut ke dalamnya:Kode ini menghasilkan server web yang memantau port yang ditentukan oleh variabel lingkungan
PORT
.
Aplikasi Anda sudah jadi dan siap dipaketkan dalam container Docker, lalu diupload ke Artifact Registry.
Node.js
Buat direktori baru bernama
helloworld-gke
dan pindahlah ke direktori ini:mkdir helloworld-gke cd helloworld-gke
Buat file
package.json
dengan konten berikut:Dalam direktori yang sama, buat file
index.js
, lalu salin baris berikut ke dalamnya:Kode ini menghasilkan server web yang memantau port yang ditentukan oleh variabel lingkungan
PORT
.
Aplikasi Anda sudah jadi dan siap dikemas dalam container Docker dan diupload ke Artifact Registry.
Python
Buat direktori baru bernama
helloworld-gke
dan pindahlah ke direktori ini:mkdir helloworld-gke cd helloworld-gke
Buat file bernama
app.py
dan tempelkan kode berikut ke dalamnya:
C#
Instal .NET SDK. .NET SDK hanya diperlukan untuk membuat project web baru pada langkah berikutnya.
Dockerfile
, yang akan dijelaskan nanti, memuat semua dependensi ke dalam container.Dari terminal Anda, buat project web kosong baru:
dotnet new web -o helloworld-gke
Ubah direktori ke
helloworld-gke
.cd helloworld-gke
Update
Program.cs
untuk mendengarkan port8080
:
Aplikasi Anda sudah jadi dan siap dipaketkan dalam container Docker, lalu diupload ke Artifact Registry.
PHP
Buat direktori baru bernama
helloworld-gke
dan pindahlah ke direktori ini:mkdir helloworld-gke cd helloworld-gke
Buat file bernama
index.php
dan tempelkan kode berikut ke dalamnya:
Aplikasi Anda sudah jadi dan siap dipaketkan dalam container Docker, lalu diupload ke Artifact Registry.
Memasukkan aplikasi ke dalam container dengan Cloud Build
Untuk memasukkan aplikasi contoh ke dalam container, buat file baru bernama
Dockerfile
di dalam direktori yang sama dengan file sumber, lalu salin konten berikut:Go
Node.js
Tambahkan juga file
.dockerignore
untuk memastikan file lokal tidak memengaruhi proses build container:Python
Tambahkan file
.dockerignore
untuk memastikan file lokal tidak memengaruhi proses build container:C#
Tambahkan file
.dockerignore
untuk memastikan file lokal tidak memengaruhi proses build container:PHP
Tambahkan file
.dockerignore
untuk memastikan file lokal tidak memengaruhi proses build container:Dapatkan ID project Google Cloud Anda:
gcloud config get-value project
Dalam panduan memulai ini, Anda akan menyimpan container di Artifact Registry dan men-deploy container ke cluster dari registry. Jalankan perintah berikut untuk membuat repositori bernama
hello-repo
di lokasi yang sama dengan cluster Anda:gcloud artifacts repositories create hello-repo \ --project=PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="Docker repository"
Ganti nilai berikut:
PROJECT_ID
adalah ID project Google Cloud Anda
Bangun image container Anda menggunakan Cloud Build, seperti menjalankan
docker build
dandocker push
, tetapi build terjadi di Google Cloud:gcloud builds submit \ --tag us-central1-docker.pkg.dev/PROJECT_ID/hello-repo/helloworld-gke .
Image tersebut disimpan di Artifact Registry.
Membuat cluster GKE
Cluster GKE adalah serangkaian virtual machine Compute Engine terkelola yang beroperasi sebagai satu cluster GKE.
Buat cluster.
gcloud container clusters create-auto helloworld-gke \ --location us-central1
Pastikan Anda memiliki akses ke cluster. Perintah berikut mendaftar node di cluster container Anda yang aktif dan berjalan, serta menunjukkan bahwa Anda memiliki akses ke cluster tersebut.
kubectl get nodes
Jika Anda mengalami error, baca Panduan Pemecahan Masalah Kubernetes.
Men-deploy ke GKE
Untuk men-deploy aplikasi ke cluster GKE yang telah dibuat, Anda memerlukan dua objek Kubernetes.
- Deployment untuk menentukan aplikasi Anda.
- Service untuk menentukan cara mengakses aplikasi Anda.
Men-deploy aplikasi
Aplikasi memiliki server frontend yang menangani permintaan web. Anda menentukan
resource cluster yang diperlukan untuk menjalankan frontend dalam file baru bernama
deployment.yaml
. Resource ini disebut Deployment. Anda menggunakan
Deployment untuk membuat dan mengupdate
ReplicaSet
dan Pod yang terkait.
Buat file
deployment.yaml
di direktori yang sama dengan file Anda lainnya, lalu salin konten berikut. Ganti nilai berikut di file Anda:$GCLOUD_PROJECT
adalah ID project Google Cloud Anda:$LOCATION
adalah lokasi repositori, sepertius-central1
.
Deploy resource ke cluster:
kubectl apply -f deployment.yaml
Lacak status Deployment:
kubectl get deployments
Deployment selesai saat semua deployment
AVAILABLE
adalahREADY
.NAME READY UP-TO-DATE AVAILABLE AGE helloworld-gke 1/1 1 1 20s
Jika Deployment mengalami kesalahan, jalankan
kubectl apply -f deployment.yaml
lagi untuk mengupdate perubahan pada Deployment.Setelah Deployment selesai, Anda dapat melihat Pod yang dibuat oleh Deployment:
kubectl get pods
Men-deploy Layanan
Service menyediakan satu titik akses ke sekumpulan
Pod. Meskipun satu Pod dapat diakses, Pod bersifat sementara dan hanya dapat
diakses secara andal menggunakan alamat layanan. Di aplikasi Hello World, Layanan "hello" menentukan load balancer
untuk mengakses Pod hello-app
dari satu alamat IP. Service ini ditentukan dalam
file service.yaml
.
Buat file
service.yaml
dengan konten berikut di dalam direktori yang sama dengan file sumber Anda yang lain:Pod didefinisikan secara terpisah dari service yang menggunakan Pod. Kubernetes menggunakan label untuk memilih pod yang dialamatkan oleh layanan. Dengan label, Anda dapat memiliki service yang menangani Pod dari kumpulan replika yang berbeda dan memiliki beberapa service yang mengarah ke setiap Pod.
Membuat Service Halo Dunia:
kubectl apply -f service.yaml
Dapatkan alamat IP eksternal service:
kubectl get services
Diperlukan waktu hingga 60 detik untuk mengalokasikan alamat IP. Alamat IP eksternal tercantum di kolom
EXTERNAL-IP
untuk Servicehello
.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello LoadBalancer 10.22.222.222 35.111.111.11 80:32341/TCP 1m kubernetes ClusterIP 10.22.222.1 <none> 443/TCP 20m
Melihat aplikasi yang di-deploy
Anda kini telah men-deploy semua resource yang diperlukan untuk menjalankan aplikasi Hello World di GKE.
Gunakan alamat IP eksternal dari langkah sebelumnya untuk memuat aplikasi di browser web Anda, dan lihat aplikasi yang sedang berjalan:
http://EXTERNAL_IP
Atau, Anda dapat melakukan panggilan curl
ke alamat IP eksternal service:
curl EXTERNAL_IP
Outputnya menampilkan ini:
Hello World!
Pembersihan
Agar akun Google Cloud Anda tidak dikenakan biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
Anda akan dikenai biaya untuk instance Compute Engine yang berjalan di cluster, serta untuk image container di Artifact Registry.Menghapus project
Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
- 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.
Menghapus cluster dan container
Jika Anda ingin menghapus resource yang digunakan dalam tutorial ini tanpa menghapus project, hapus cluster dan image Anda.
Untuk menghapus cluster menggunakan Google Cloud CLI, jalankan perintah berikut untuk mode yang Anda gunakan:
gcloud container clusters delete helloworld-gke \
--location us-central1
Untuk menghapus image di repositori Artifact Registry, jalankan perintah berikut:
gcloud artifacts docker images delete \
us-central1-docker.pkg.dev/PROJECT_ID/hello-repo/helloworld-gke
Langkah selanjutnya
Untuk informasi selengkapnya tentang Kubernetes, lihat referensi berikut:
- Pelajari lebih lanjut tentang membuat cluster.
- Pelajari Kubernetes lebih lanjut.
- Baca dokumentasi referensi
kubectl
.
Untuk informasi selengkapnya tentang men-deploy ke GKE, lihat referensi berikut:
- Pelajari cara memaketkan, menghosting, dan men-deploy aplikasi server web sederhana.
- Buat aplikasi web multi-tingkat dengan Redis dan PHP.
- Men-deploy WordPress di GKE dengan Persistent Disk dan Cloud SQL.
- Menyiapkan Cloud Run di GKE.
Untuk mengetahui informasi selengkapnya tentang membuat, mengembangkan, dan menjalankan aplikasi di GKE langsung dari IDE Anda dengan Cloud Code, lihat artikel berikut: