Tutorial ini menunjukkan cara menggunakan Google Kubernetes Engine (GKE) untuk mengekspos aplikasi web Anda ke internet pada alamat IP eksternal statis, dan mengonfigurasi nama domain agar mengarah ke aplikasi Anda.
Tutorial ini mengasumsikan bahwa Anda adalah pemilik nama domain yang terdaftar, seperti example.com
.
Tujuan
Tutorial ini menunjukkan langkah-langkah berikut:
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
Lakukan langkah-langkah berikut untuk mengaktifkan Kubernetes Engine API:- Buka halaman Kubernetes Engine di Konsol Google Cloud.
- Buat atau pilih project.
- Tunggu hingga API dan layanan terkait diaktifkan. Proses ini dapat memerlukan waktu beberapa menit.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
Instal alat command line berikut yang digunakan dalam tutorial ini:
-
gcloud
digunakan untuk membuat dan menghapus cluster Kubernetes Engine.gcloud
disertakan dalamgcloud
CLI. -
kubectl
digunakan untuk mengelola Kubernetes, sistem orkestrasi cluster yang digunakan oleh Kubernetes Engine. Anda dapat menginstalkubectl
menggunakangcloud
:gcloud components install kubectl
Clone kode contoh dari GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
cd kubernetes-engine-samples/quickstarts/hello-app/manifests
Menetapkan default untuk alat command line gcloud
Untuk menghemat waktu saat mengetik opsi project ID dan Zona Compute Engine di alat command line gcloud
, Anda dapat menetapkan setelan default:
gcloud config set project project-id gcloud config set compute/zone compute-zone
Membuat cluster
Membuat cluster:
gcloud container clusters create-auto domain-test
Men-deploy aplikasi web Anda
Manifes berikut menjelaskan Deployment yang menjalankan image container aplikasi web contoh:
Membuat Deployment:
kubectl apply -f helloweb-deployment.yaml
Mengekspos aplikasi Anda
Anda dapat mengekspos aplikasi Anda di GKE menggunakan salah satu metode berikut:
Gunakan Layanan, yang membuat Load Balancer Jaringan passthrough eksternal yang berfungsi dengan alamat IP regional.
Gunakan Ingress, yang membuat Load Balancer Aplikasi dan mendukung alamat IP global.
Untuk mempelajari lebih lanjut kelebihan dan kekurangan setiap metode, baca artikel Menyiapkan Load Balancer Aplikasi eksternal dengan Ingress.
Menggunakan Layanan
Untuk memastikan aplikasi Anda memiliki alamat IP eksternal statis, Anda harus memesan alamat IP statis.
Jika memilih untuk mengekspos aplikasi menggunakan Service, Anda harus membuat alamat IP regional. Alamat IP global hanya berfungsi dengan jenis resource Ingress, seperti yang dijelaskan di bagian berikutnya.
Untuk menggunakan Layanan, buat alamat IP statis bernama helloweb-ip
di region us-central1
:
gcloud
gcloud compute addresses create helloweb-ip --region us-central1
Temukan alamat IP statis yang Anda buat:
gcloud compute addresses describe helloweb-ip --region us-central1
Outputnya mirip dengan hal berikut ini:
...
address: 203.0.113.32
...
Config Connector
Catatan: Langkah ini memerlukan Config Connector. Ikuti petunjuk penginstalan untuk menginstal Config Connector di cluster Anda.
Simpan manifes sebagai compute-address-regional.yaml
.
Terapkan manifes ke cluster Anda:
kubectl apply -f compute-address-regional.yaml
Temukan alamat IP statis yang Anda buat:
kubectl get computeaddress helloweb-ip -o jsonpath='{.spec.address}'
Manifes berikut menjelaskan Service jenis LoadBalancer, yang membuat Load Balancer Jaringan passthrough eksternal untuk mengekspos Pod dengan alamat IP eksternal.
Ganti YOUR.IP.ADDRESS.HERE
dengan alamat IP statis:
Buat Layanan:
kubectl apply -f helloweb-service-static-ip.yaml
Lihat alamat IP yang dicadangkan yang terkait dengan load balancer:
kubectl get service
Outputnya mirip dengan hal berikut ini:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s
Menggunakan Ingress
Jika memilih untuk mengekspos aplikasi menggunakan
Ingress,
Anda harus
memesan alamat IP statis global.
Gunakan anotasi kubernetes.io/ingress.global-static-ip-name
untuk menentukan alamat IP global.
Untuk mengekspos aplikasi Anda ke klien dan layanan di suatu region, gunakan alamat IP internal statis regional sambil men-deploy resource ingress internal untuk GKE beserta anotasi yang diperlukan.
Untuk mempelajari cara menggunakan Ingress guna mengekspos aplikasi Anda ke internet, lihat Menyiapkan Load Balancer Aplikasi eksternal dengan Ingress.
Untuk membuat alamat IP statis global bernama helloweb-ip
:
gcloud
gcloud compute addresses create helloweb-ip --global
Temukan alamat IP statis yang Anda buat:
gcloud compute addresses describe helloweb-ip --global
Outputnya mirip dengan hal berikut ini:
...
address: 203.0.113.32
...
Config Connector
Catatan: Langkah ini memerlukan Config Connector. Ikuti petunjuk penginstalan untuk menginstal Config Connector di cluster Anda.
Simpan manifes sebagai compute-address-global.yaml
.
Terapkan manifes ke cluster Anda:
kubectl apply -f compute-address-global.yaml
Manifes berikut menjelaskan Ingress yang mengekspos aplikasi web di IP statis dengan dua resource:
Service
dengantype:NodePort
Ingress
yang dikonfigurasi dengan nama layanan dan anotasi IP statis
Anotasi kubernetes.io/ingress.global-static-ip-name
menentukan nama
resource alamat IP global yang akan dikaitkan dengan
load balancer.
Terapkan manifes ke cluster Anda:
kubectl apply -f helloweb-ingress-static-ip.yaml
Lihat alamat IP yang terkait dengan load balancer:
kubectl get ingress
Outputnya mirip dengan berikut ini
NAME HOSTS ADDRESS PORTS AGE
helloweb * 203.0.113.32 80 4m
Melihat alamat IP statis yang dicadangkan
Untuk memverifikasi bahwa load balancer dikonfigurasi dengan benar, Anda dapat menggunakan browser web untuk mengunjungi alamat IP atau menggunakan curl
:
curl http://203.0.113.32/
Outputnya mirip dengan hal berikut ini:
Hello, world!
Hostname: helloweb-3766687455-8lvqv
Mengonfigurasi data nama domain Anda
Agar browser yang membuat kueri nama domain Anda, seperti example.com
, atau nama subdomain, seperti blog.example.com
, mengarah ke alamat IP statis yang Anda cadangkan, Anda harus mengupdate DNS (Domain Name Server) ) nama domain Anda.
Anda harus membuat data DNS jenis A (Address) untuk nama domain atau subdomain, serta mengonfigurasi nilainya dengan alamat IP yang dicadangkan
Data DNS domain Anda dikelola oleh server nama Anda. Server nama Anda mungkin adalah "registrar" tempat Anda mendaftarkan domain, layanan DNS seperti Cloud DNS, atau penyedia pihak ketiga lainnya.
Jika server nama Anda adalah Cloud DNS: Ikuti Panduan Memulai Cloud DNS untuk mengonfigurasi data A DNS untuk nama domain Anda dengan alamat IP yang dicadangkan untuk aplikasi Anda.
Jika server nama Anda adalah penyedia lain: Lihat dokumentasi penyedia DNS tentang setelan data A DNS untuk mengonfigurasi nama domain Anda. Jika Anda memilih untuk menggunakan Cloud DNS, lihat Bermigrasi ke Cloud DNS.
Kunjungi nama domain Anda
Untuk memverifikasi bahwa data DNS nama domain Anda ditetapkan ke alamat IP yang Anda cadangkan, kunjungi nama domain Anda.
Untuk membuat kueri DNS untuk data A nama domain Anda, jalankan perintah host
:
host example.com
Outputnya mirip dengan hal berikut ini:
example.com has address 203.0.113.32
Sekarang Anda dapat mengarahkan browser web ke nama domain dan mengunjungi situs Anda.
Pembersihan
Agar tidak dikenakan 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-nya.
Hapus Layanan dan Ingress:
kubectl delete ingress,service -l app=hello
Melepaskan IP statis yang dicadangkan. Setelah load balancer dihapus, alamat IP yang tidak digunakan tetapi dicadangkan akan ditagih per harga alamat IP yang tidak digunakan.
Jika Anda menggunakan Layanan:
gcloud compute addresses delete helloweb-ip --region us-central1
Jika Anda menggunakan Ingress:
gcloud compute addresses delete helloweb-ip --global
Hapus aplikasi contoh:
kubectl delete -f helloweb-deployment.yaml
Hapus kluster:
gcloud container clusters delete domain-test
Langkah selanjutnya
- Pelajari tutorial Kubernetes Engine lainnya.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.