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.
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
Outputnya mirip dengan hal 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