Tutorial ini ditujukan untuk arsitek cloud dan administrator operasi yang tertarik untuk men-deploy aplikasi web ke cluster Google Kubernetes Engine (GKE) dan mengeksposnya dengan load balancer HTTPS.
Tujuan
Dalam tutorial ini, Anda akan mempelajari cara:
- Membuat cluster GKE.
- Membuat alamat IP global dan zona Cloud DNS dengan Terraform.
- Mengonfigurasi load balancing HTTPS.
- Men-deploy contoh aplikasi web.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Menyiapkan project
- 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, klik Buat project untuk mulai membuat project Google Cloud baru.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Google Kubernetes Engine, Cloud DNS.
-
Di konsol Google Cloud, pada halaman pemilih project, klik Buat project untuk mulai membuat project Google Cloud baru.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Google Kubernetes Engine, Cloud DNS.
- Anda harus memiliki nama domain. Nama domain tidak boleh lebih dari 63 karakter. Anda dapat menggunakan Google Domains atau registrar lain.
Menyiapkan lingkungan
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang dihosting di Google Cloud. Cloud Shell telah diinstal sebelumnya dengan software yang Anda perlukan untuk tutorial ini, termasuk Terraform, kubectl
, dan gcloud CLI.
Menetapkan variabel lingkungan:
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1
Clone repositori kode:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
Ubah ke direktori kerja:
cd kubernetes-engine-samples/autopilot/networking-tutorial
Membuat cluster GKE
File Terraform berikut membuat cluster GKE:
File Terraform berikut membuat alamat IP global dan zona Cloud DNS:
Lakukan inisialisasi Terraform:
terraform init
Lihat perubahan infrastruktur:
terraform plan
Saat diminta, masukkan domain Anda, seperti
my-domain.net
.Terapkan konfigurasi Terraform:
terraform apply --auto-approve
Saat diminta, masukkan domain Anda, seperti
my-domain.net
.Output akan mirip dengan yang berikut ini:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"
Membuat Load Balancer Aplikasi eksternal
Manifes berikut menjelaskan ManagedCertificate, FrontendConfig, Deployment, Service, dan Ingress:
Ganti
DOMAIN_NAME
dengan nama domain Anda, sepertimy-domain.net
.Manifes ini memiliki properti berikut:
networking.gke.io/managed-certificates
: nama ManagedCertificate.networking.gke.io/v1beta1.FrontendConfig
: nama resource FrontendConfig.kubernetes.io/ingress.global-static-ip-name
: nama alamat IP.kubernetes.io/ingress.class
: menginstruksikan pengontrol GKE Ingress untuk membuat Load Balancer Aplikasi eksternal.
Terapkan manifes ke cluster Anda:
kubectl apply -f kubernetes-manifests.yaml
Pastikan Ingress telah dibuat:
kubectl describe ingress frontend
Output akan mirip dengan yang berikut ini:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...
Diperlukan waktu beberapa menit untuk menyediakan Ingress.
Aplikasi pengujian
Periksa status sertifikat SSL:
kubectl get managedcertificates.networking.gke.io networking-managed-cert
Penyediaan sertifikat SSL mungkin memerlukan waktu hingga 30 menit. Output berikut menunjukkan bahwa sertifikat SSL sudah siap:
NAME AGE STATUS networking-managed-cert 28m Active
Jalankan perintah
curl
:curl -Lv https://DOMAIN_NAME
Output akan mirip dengan yang berikut ini:
* Trying 34.160.115.33:443... * Connected to DOMAIN_NAME (34.160.115.33) port 443 (#0) ... * TLSv1.3 (IN), TLS handshake, Certificate (11): ... * Server certificate: * subject: CN=DOMAIN_NAME ... > Host: DOMAIN_NAME
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Menghapus project Google Cloud:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
Hapus resource kubernetes:
kubectl delete -f kubernetes-manifests.yaml
Hapus resource Terraform:
terraform destroy --auto-approve
Saat diminta, masukkan domain Anda, seperti
my-domain.net
.
Langkah berikutnya
- Pelajari jejaring GKE lebih lanjut.