Mengonfigurasi nama domain dengan alamat IP statis

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.

Men-deploy aplikasi web Anda

Manifes berikut menjelaskan Deployment yang menjalankan image container aplikasi web contoh:

apiVersion: apps/v1 kind: Deployment metadata:   name: helloweb   labels:     app: hello spec:   selector:     matchLabels:       app: hello       tier: web   template:     metadata:       labels:         app: hello         tier: web     spec:       containers:       - name: hello-app         image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0         ports:         - containerPort: 8080         resources:           requests:             cpu: 200m

Membuat Deployment:

kubectl apply -f helloweb-deployment.yaml 

Mengekspos aplikasi Anda

Anda dapat mengekspos aplikasi Anda di GKE menggunakan salah satu metode berikut:

Untuk mempelajari lebih lanjut kelebihan dan kekurangan setiap metode, lihat Menyiapkan Load Balancer Aplikasi eksternal dengan Ingress.

Menggunakan Layanan

Untuk memastikan aplikasi Anda memiliki alamat IP eksternal statis, Anda harus mencadangkan alamat IP statis.

Jika memilih untuk mengekspos aplikasi Anda 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.

apiVersion: compute.cnrm.cloud.google.com/v1beta1 kind: ComputeAddress metadata:   name: helloweb-ip spec:   location: us-central1

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 dari 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:

apiVersion: v1 kind: Service metadata:   name: helloweb   labels:     app: hello spec:   selector:     app: hello     tier: web   ports:   - port: 80     targetPort: 8080   type: LoadBalancer   loadBalancerIP: "YOUR.IP.ADDRESS.HERE"

Buat Layanan:

kubectl apply -f helloweb-service-static-ip.yaml 

Melihat 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 Anda 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 saat men-deploy resource ingress internal untuk GKE beserta anotasi yang diperlukan.

Untuk mempelajari cara menggunakan Ingress untuk 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.

apiVersion: compute.cnrm.cloud.google.com/v1beta1 kind: ComputeAddress metadata:   name: helloweb-ip spec:   location: global

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 dengan type:NodePort
  • Ingress yang dikonfigurasi dengan nama layanan dan anotasi IP statis
apiVersion: networking.k8s.io/v1 kind: Ingress metadata:   name: helloweb   annotations:     kubernetes.io/ingress.global-static-ip-name: helloweb-ip   labels:     app: hello spec:   defaultBackend:     service:       name: helloweb-backend       port:         number: 8080 --- apiVersion: v1 kind: Service metadata:   name: helloweb-backend   labels:     app: hello spec:   type: NodePort   selector:     app: hello     tier: web   ports:   - port: 8080     targetPort: 8080

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 yang 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 cara menyetel 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 

Anda kini dapat mengarahkan browser web ke nama domain Anda dan mengunjungi situs Anda.