Topik ini menunjukkan cara menyiapkan AWS Elastic Load Balancer (ELB) dengan GKE di AWS.
Saat Anda membuat Service jenis LoadBalancer
, pengontrol GKE di AWS akan mengonfigurasi ELB Klasik atau Jaringan di AWS.
Anda juga dapat mengikuti Panduan memulai untuk membuat ELB Klasik yang menghadap ke luar dari konsol Google Cloud atau Membuat Load Balancer Aplikasi (ALB) AWS.
Sebelum memulai
Sebelum Anda mulai menggunakan GKE di AWS, pastikan Anda telah melakukan tugas berikut:
- Selesaikan Prasyarat.
- Instal layanan pengelolaan.
- Buat cluster pengguna.
- Dari direktori
anthos-aws
, gunakananthos-gke
untuk beralih konteks ke cluster pengguna Anda. Ganti CLUSTER_NAME dengan nama cluster pengguna Anda.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
- Sudah menginstal alat command line
curl
atau alat serupa.
Memilih load balancer eksternal atau internal
GKE di AWS membuat load balancer eksternal (di subnet publik Anda) atau internal (di subnet pribadi Anda) bergantung pada anotasi ke resource LoadBalancer.
Jika Anda memilih load balancer eksternal, load balancer tersebut dapat diakses oleh alamat IP yang diizinkan di grup keamanan node pool dan daftar kontrol akses (ACL) jaringan subnet.
Memilih jenis load balancer
Pilih apakah Anda ingin membuat Load Balancer Klasik (ELB Klasik) atau Network Load Balancer (NLB). Untuk mengetahui informasi selengkapnya tentang perbedaan antara jenis load balancer, lihat Jenis load balancer dalam dokumentasi AWS.
Membuat LoadBalancer
Anda membuat load balancer dengan membuat deployment dan mengekspos deployment tersebut dengan layanan.
Buat deployment Anda. Container dalam Deployment ini memproses port 50001. Simpan YAML berikut ke file bernama
my-deployment-50001.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment-50001 spec: selector: matchLabels: app: products department: sales replicas: 3 template: metadata: labels: app: products department: sales spec: containers: - name: hello image: "gcr.io/google-samples/hello-app:2.0" env: - name: "PORT" value: "50001"
Buat Deployment dengan
kubectl apply
:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-deployment-50001.yaml
Pastikan bahwa tiga Pod sedang berjalan:
env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods --selector=app=products
Buat Service jenis
LoadBalancer
untuk deployment Anda. Anda dapat membuat ELB Klasik atau Jaringan di subnet publik atau pribadi. Pilih dari salah satu opsi berikut:- ELB Klasik di subnet publik
- NLB di subnet publik
- ELB Klasik di subnet pribadi
- NLB di subnet pribadi
Kemudian, salin manifes berikut ke file bernama
my-lb-service.yaml
.Publik Klasik
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
NLB Public
Anda membuat NLB dengan menyetel anotasi
service.beta.kubernetes.io/aws-load-balancer-type
kenlb
. YAML berikut menyertakan anotasi ini.apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Privasi Klasik
Anda membuat LoadBalancer pribadi dengan menyetel anotasi
service.beta.kubernetes.io/aws-load-balancer-internal
ke"true"
. YAML berikut menyertakan anotasi ini.apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
NLB Private
Anda membuat NLB pribadi dengan menyetel anotasi:
service.beta.kubernetes.io/aws-load-balancer-internal
ke"true"
service.beta.kubernetes.io/aws-load-balancer-type
kenlb
YAML berikut menyertakan kedua anotasi.
apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" service.beta.kubernetes.io/aws-load-balancer-type: nlb spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Buat Layanan dengan
kubectl apply
:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-lb-service.yaml
Lihat nama host Service dengan
kubectl get service
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get service my-lb-service \ --output jsonpath="{.status.loadBalancer.ingress..hostname}{'\n'}"
Outputnya akan terlihat seperti
elb-id.elb.aws-region.amazonaws.com
.Jika telah membuat load balancer yang menghadap ke luar dan memiliki akses ke subnet VPC publik, Anda dapat terhubung ke load balancer dengan
curl
. Ganti external-ip dengan IP dari outputkubectl get service
dari langkah sebelumnya.curl external-ip:60000
Outputnya akan terlihat seperti berikut:
Hello, world! Version: 2.0.0 Hostname: my-deployment-50001-84b6dc5555-zmk7q
Pembersihan
Untuk menghapus Service dan Deployment, gunakan kubectl delete
.
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f my-lb-service.yaml
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f my-deployment-50001.yaml
Pemecahan masalah
Jika Anda tidak dapat mengakses endpoint load balancer, coba beri tag pada subnet Anda.
Langkah Berikutnya
Ikuti Panduan memulai untuk membuat Classic ELB yang menghadap ke luar dari konsol Google Cloud .
Baca dokumentasi GKE on Google Cloud tentang Mengekspos aplikasi menggunakan layanan.