Mengonfigurasi load balancer eksternal

Load balancer eksternal (ELB) mengekspos layanan untuk diakses dari luar organisasi dari kumpulan alamat IP yang ditetapkan ke organisasi dari kumpulan IP eksternal instance yang lebih besar.

Alamat IP Virtual (VIP) ELB tidak bertentangan antar-organisasi dan bersifat unik di semua organisasi. Oleh karena itu, Anda harus menggunakan layanan ELB hanya untuk layanan yang perlu diakses oleh klien di luar organisasi.

Workload yang berjalan di dalam organisasi dapat mengakses layanan ELB selama Anda mengaktifkan workload untuk keluar dari organisasi. Pola traffic ini secara efektif memerlukan traffic keluar dari organisasi sebelum kembali ke layanan internal.

Ada petunjuk berbeda untuk menyiapkan ELB untuk cluster bersama dan standar.

Membuat load balancer eksternal untuk cluster bersama

Anda dapat membuat ELB global atau zona. Cakupan ELB global mencakup seluruh universe GDC. Cakupan ELB zona terbatas pada zona yang ditentukan pada saat pembuatan. Untuk mengetahui informasi selengkapnya, lihat Load balancer global dan zona.

Sebelum memulai

Untuk mengonfigurasi layanan ELB, Anda harus:

  • Memiliki project yang load balancer-nya sedang Anda konfigurasi. Untuk mengetahui informasi selengkapnya, lihat Membuat project.
  • Memiliki kebijakan ingress ProjectNetworkPolicy (PNP) yang disesuaikan untuk mengizinkan traffic ke layanan ELB ini. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi PNP untuk mengizinkan traffic ke ELB.
  • Memiliki peran identitas dan akses yang diperlukan:

    • Project NetworkPolicy Admin: memiliki akses untuk mengelola kebijakan jaringan project di namespace project. Minta Admin IAM Org Anda untuk memberi Anda peran Project NetworkPolicy Admin (project-networkpolicy-admin).
    • Load Balancer Admin: Minta Admin Org IAM Anda untuk memberi Anda peran Load Balancer Admin (load-balancer-admin).
    • Admin Load Balancer Global: Untuk ELB global, minta Admin Org IAM Anda untuk memberi Anda peran Admin Load Balancer Global (global-load-balancer-admin). Untuk mengetahui informasi selengkapnya, lihat Deskripsi peran yang telah ditetapkan.

Mengonfigurasi PNP untuk mengizinkan traffic ke ELB

Agar layanan ELB berfungsi, Anda harus mengonfigurasi dan menerapkan kebijakan ingress ProjectNetworkPolicy yang disesuaikan sendiri untuk mengizinkan traffic ke workload layanan ELB ini. Kebijakan jaringan mengontrol akses ke workload Anda, bukan load balancer itu sendiri. ELB mengekspos workload ke jaringan pelanggan Anda, sehingga memerlukan kebijakan jaringan eksplisit untuk mengizinkan traffic eksternal ke port workload, seperti 8080.

Tentukan alamat CIDR eksternal untuk mengizinkan traffic ke workload ELB ini:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: allow-inbound-traffic-from-external
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - ipBlock:
        cidr: CIDR
    ports:
    - protocol: TCP
      port: PORT
EOF

Ganti kode berikut:

  • MANAGEMENT_API_SERVER: jalur kubeconfig dari jalur kubeconfig Server API Management. Jika Anda belum membuat file kubeconfig untuk server API di zona yang ditargetkan, lihat Login untuk mengetahui detailnya.
  • PROJECT: nama project GDC Anda.
  • CIDR: CIDR eksternal yang perlu diakses oleh ELB. Kebijakan ini diperlukan karena load balancer eksternal menggunakan Direct Server Return (DSR), yang mempertahankan alamat IP eksternal sumber dan mengabaikan load balancer di jalur kembali. Untuk mengetahui informasi selengkapnya, lihat Membuat aturan firewall ingress global untuk traffic eksternal organisasi.
  • PORT: port backend pada pod di belakang load balancer. Nilai ini ditemukan di kolom .spec.ports[].targetPort manifes untuk resource Service. Kolom ini bersifat opsional.

Membuat ELB menggunakan tiga metode berbeda di GDC:

Anda dapat menargetkan workload pod atau VM menggunakan KRM API dan gdcloud CLI. Anda hanya dapat menargetkan workload di cluster tempat objek Service dibuat saat Anda menggunakan Service Kubernetes secara langsung di cluster Kubernetes.

Membuat ELB zona

Buat ELB zona menggunakan gdcloud CLI, KRM API, atau Kubernetes Service di cluster Kubernetes:

gdcloud

Buat ELB yang menargetkan workload pod atau VM menggunakan gdcloud CLI.

ELB ini menargetkan semua workload dalam project yang cocok dengan label yang ditentukan dalam objek Backend.

Untuk membuat ELB menggunakan gdcloud CLI, ikuti langkah-langkah berikut:

  1. Buat resource Backend untuk menentukan endpoint ELB:

    gdcloud compute backends create BACKEND_NAME \
      --labels=LABELS \
      --project=PROJECT_NAME \
      --zone=ZONE \
      --cluster-name=CLUSTER_NAME
    

    Ganti kode berikut:

    • BACKEND_NAME: nama yang Anda pilih untuk resource backend, seperti my-backend.
    • LABELS: Pemilih yang menentukan endpoint mana antara pod dan VM yang akan digunakan untuk resource backend ini. Contoh, app=web.
    • PROJECT_NAME: nama project Anda.
    • ZONE: zona yang akan digunakan untuk pemanggilan ini. Untuk menetapkan flag zona untuk semua perintah yang memerlukannya, jalankan: gdcloud config set core/zone ZONE. Flag zona hanya tersedia di lingkungan multi-zona. Kolom ini bersifat opsional.
    • CLUSTER_NAME: cluster yang membatasi cakupan pemilih yang ditentukan. Jika kolom ini tidak ditentukan, semua endpoint dengan label yang diberikan akan dipilih. Kolom ini bersifat opsional.
  2. Lewati langkah ini jika ELB ini ditujukan untuk workload pod. Jika Anda mengonfigurasi ELB untuk workload VM, tentukan jenis health check untuk ELB. Misalnya, untuk membuat Health Check TCP, tentukan sebagai berikut:

    gdcloud compute health-checks create tcp HEALTH_CHECK_NAME \
      --check-interval=CHECK_INTERVAL \
      --healthy-threshold=HEALTHY_THRESHOLD \
      --timeout=TIMEOUT \
      --unhealthy-threshold=UNHEALTHY_THRESHOLD \
      --port=PORT \
      --zone=ZONE
    

    Ganti kode berikut:

    • HEALTH_CHECK_NAME: nama yang Anda pilih untuk resource health check, seperti my-health-check.
    • CHECK_INTERVAL: jumlah waktu dalam detik dari awal satu pemeriksaan hingga awal pemeriksaan berikutnya. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0. Sebaiknya jangan menetapkan waktu tunggu lebih lama dari checkInterval.
    • HEALTHY_THRESHOLD: jumlah pemeriksaan berurutan yang harus lulus agar endpoint dianggap responsif. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0.
    • TIMEOUT: jumlah waktu dalam detik untuk menunggu sebelum mengklaim kegagalan. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0. Sebaiknya jangan menetapkan waktu tunggu lebih lama dari checkInterval.
    • UNHEALTHY_THRESHOLD: jumlah pemeriksaan berurutan yang harus gagal agar endpoint dianggap tidak responsif. Nilai defaultnya adalah 2 jika dihilangkan atau ditetapkan ke 0.
    • PORT: port tempat health check dilakukan. Nilai defaultnya adalah 80. Kolom ini bersifat opsional.
    • ZONE: zona tempat Anda membuat ELB ini.
  3. Buat resource BackendService dan tambahkan resource Backend yang dibuat sebelumnya:

    gdcloud compute backend-services create BACKEND_SERVICE_NAME \
      --project=PROJECT_NAME \
      --target-ports=TARGET_PORTS \
      --zone=ZONE \
      --health-check=HEALTH_CHECK_NAME
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama yang dipilih untuk layanan backend ini.
    • TARGET_PORT: daftar port target yang dipisahkan koma yang diterjemahkan oleh layanan backend ini, dengan setiap port target menentukan protokol, port pada aturan penerusan, dan port pada instance backend. Anda dapat menentukan beberapa port target. Kolom ini harus dalam format protocol:port:targetport, seperti TCP:80:8080. Kolom ini bersifat opsional.
    • HEALTH_CHECK_NAME: nama resource health check. Kolom ini bersifat opsional. Hanya sertakan kolom ini jika Anda mengonfigurasi ELB untuk workload VM.
  4. Tambahkan resource BackendService ke resource Backend yang dibuat sebelumnya:

    gdcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --backend=BACKEND_NAME \
      --project=PROJECT_NAME \
      --zone=ZONE
    
  5. Opsional: Gunakan afinitas sesi untuk ELB guna memastikan bahwa permintaan dari klien yang sama dirutekan secara konsisten ke backend yang sama. Untuk mengaktifkan afinitas sesi bagi load balancer, buat kebijakan layanan backend menggunakan perintah gdcloud compute load-balancer-policy create:

     gdcloud compute load-balancer-policy create POLICY_NAME
     --session-affinity=MODE
     --selectors=RESOURCE_LABEL
    

    Ganti kode berikut:

    • POLICY_NAME: nama yang Anda pilih untuk kebijakan layanan backend.
    • MODE: mode afinitas sesi. Ada dua mode yang didukung:

      • NONE: Afinitas sesi dinonaktifkan. Permintaan dirutekan ke backend yang tersedia. Ini adalah mode defaultnya.
      • CLIENT_IP_DST_PORT_PROTO: Permintaan dari empat tuple yang sama (alamat IP sumber, alamat IP tujuan, port tujuan, dan protokol) dirutekan ke backend yang sama.
    • RESOURCE_LABEL: pemilih label yang memilih layanan backend yang menerapkan resource BackendServicePolicy di namespace project. Jika beberapa resource BackendServicePolicy cocok dengan layanan backend yang sama, dan setidaknya salah satu kebijakan ini mengaktifkan afinitas sesi, afinitas sesi untuk resource BackendService ini akan diaktifkan.

  6. Buat resource ForwardingRule eksternal yang menentukan VIP tempat layanan tersedia:

    gdcloud compute forwarding-rules create FORWARDING_RULE_EXTERNAL_NAME \
      --backend-service=BACKEND_SERVICE_NAME \
      --cidr=CIDR \
      --ip-protocol-port=PROTOCOL_PORT \
      --load-balancing-scheme=EXTERNAL \
      --zone=ZONE \
      --project=PROJECT_NAME
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama layanan backend Anda.
    • FORWARDING_RULE_EXTERNAL_NAME: nama yang Anda pilih untuk aturan penerusan.
    • CIDR: kolom ini bersifat opsional. Jika tidak ditentukan, CIDR IPv4/32 akan otomatis dicadangkan dari kumpulan IP zona. Tentukan nama resource Subnet dalam namespace yang sama dengan aturan penerusan ini. Resource Subnet mewakili informasi permintaan dan alokasi subnet zona. Untuk mengetahui informasi selengkapnya tentang resource Subnet, lihat Contoh resource kustom.
    • PROTOCOL_PORT: protokol dan port yang akan diekspos pada aturan penerusan. Kolom ini harus dalam format ip-protocol=TCP:80. Port yang diekspos harus sama dengan yang diekspos aplikasi sebenarnya di dalam container.
  7. Untuk memverifikasi ELB yang dikonfigurasi, konfirmasi kondisi Ready pada setiap objek yang dibuat. Untuk mendapatkan alamat IP yang ditetapkan dari load balancer, deskripsikan aturan penerusan:

    gdcloud compute forwarding-rules describe FORWARDING_RULE_EXTERNAL_NAME
    
  8. Untuk memvalidasi ELB yang dikonfigurasi, konfirmasi kondisi Ready pada setiap objek yang dibuat. Verifikasi traffic dengan permintaan curl ke VIP:

    1. Untuk mendapatkan VIP yang ditetapkan, deskripsikan aturan penerusan:

      gdcloud compute forwarding-rules describe FORWARDING_RULE_EXTERNAL_NAME
      
    2. Verifikasi traffic dengan permintaan curl ke VIP di port yang ditentukan di kolom PROTOCOL_PORT dalam aturan penerusan:

      curl http://FORWARDING_RULE_VIP:PORT
      

      Ganti kode berikut:

      • FORWARDING_RULE_VIP: VIP aturan penerusan.
      • PORT: nomor port kolom PROTOCOL_PORT dalam aturan penerusan.

API

Membuat ELB yang menargetkan workload pod atau VM menggunakan KRM API. ELB ini menargetkan semua workload dalam project yang cocok dengan label yang ditentukan dalam objek Backend.

Untuk membuat ELB zona menggunakan KRM API, ikuti langkah-langkah berikut:

  1. Buat resource Backend untuk menentukan endpoint ELB. Buat resource Backend untuk setiap zona tempat workload ditempatkan:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: Backend
    metadata:
      namespace: PROJECT_NAME
      name: BACKEND_NAME
    spec:
      clusterName: CLUSTER_NAME
      endpointsLabels:
        matchLabels:
          app: server
    EOF
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER: jalur kubeconfig dari jalur kubeconfig Server API Management zona. Untuk mengetahui informasi selengkapnya, lihat Beralih ke konteks zona.
    • PROJECT_NAME: nama project Anda.
    • BACKEND_NAME: nama resource Backend.
    • CLUSTER_NAME: Kolom ini bersifat opsional. Kolom ini menentukan cluster yang menjadi batasan cakupan pemilih yang ditentukan. Kolom ini tidak berlaku untuk workload VM. Jika resource Backend tidak menyertakan kolom clusterName, label yang ditentukan akan berlaku untuk semua workload dalam project.
  2. Lewati langkah ini jika ELB ini ditujukan untuk workload pod. Jika Anda mengonfigurasi ELB untuk workload VM, tentukan health check untuk ELB:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: HealthCheck
    metadata:
      namespace: PROJECT_NAME
      name: HEALTH_CHECK_NAME
    spec:
      tcpHealthCheck:
        port: PORT
      timeoutSec: TIMEOUT
      checkIntervalSec: CHECK_INTERVAL
      healthyThreshold: HEALTHY_THRESHOLD
      unhealthyThreshold: UNHEALTHY_THRESHOLD
    EOF
    

    Ganti kode berikut:

    • HEALTH_CHECK_NAME: nama yang Anda pilih untuk resource health check, seperti my-health-check.
    • PORT: port tempat health check dilakukan. Nilai defaultnya adalah 80.
    • TIMEOUT: jumlah waktu dalam detik untuk menunggu sebelum mengklaim kegagalan. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0. Sebaiknya jangan menetapkan waktu tunggu lebih lama dari checkInterval.
    • CHECK_INTERVAL: jumlah waktu dalam detik dari awal satu pemeriksaan hingga awal pemeriksaan berikutnya. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0. Sebaiknya jangan menetapkan waktu tunggu lebih lama dari checkInterval.
    • HEALTHY_THRESHOLD: jumlah pemeriksaan berurutan yang harus lulus agar endpoint dianggap responsif. Nilai defaultnya adalah 2 jika dihilangkan atau ditetapkan ke 0.
    • UNHEALTHY_THRESHOLD: jumlah pemeriksaan berurutan yang harus gagal agar endpoint dianggap tidak responsif. Nilai defaultnya adalah 2 jika dihilangkan atau ditetapkan ke 0.
  3. Buat objek BackendService menggunakan resource Backend yang dibuat sebelumnya. Jika Anda mengonfigurasi ELB untuk workload VM, sertakan resource HealthCheck.

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: BackendService
    metadata:
      namespace: PROJECT_NAME
      name: BACKEND_SERVICE_NAME
    spec:
      backendRefs:
      - name: BACKEND_NAME
      healthCheckName: HEALTH_CHECK_NAME
    EOF
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama yang dipilih untuk resource BackendService Anda.
    • HEALTH_CHECK_NAME: nama resource HealthCheck yang Anda buat sebelumnya. Jangan sertakan kolom ini jika Anda mengonfigurasi ELB untuk workload pod.
  4. Opsional: Gunakan afinitas sesi untuk ELB guna memastikan bahwa permintaan dari klien yang sama dirutekan secara konsisten ke backend yang sama. Untuk mengaktifkan afinitas sesi untuk load balancer, buat resource BackendServicePolicy. Resource ini menentukan setelan afinitas sesi dan menerapkan resource BackendServicePolicy ke resource BackendService. Buat dan terapkan resource BackendServicePolicy:

     kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
     apiVersion: networking.global.gdc.goog/v1
     kind: BackendServicePolicy
     metadata:
         namespace: PROJECT_NAME
         name: POLICY_NAME
     spec:
         sessionAffinity: MODE
         selector:
             matchLabels:
               RESOURCE_LABEL
    

    Ganti kode berikut:

    • POLICY_NAME: nama yang Anda pilih untuk kebijakan layanan backend.
    • MODE: mode afinitas sesi. Ada dua mode yang didukung:

      • NONE: Afinitas sesi dinonaktifkan. Permintaan dirutekan ke backend yang tersedia. Ini adalah mode defaultnya.
      • CLIENT_IP_DST_PORT_PROTO: Permintaan dari empat tuple yang sama (alamat IP sumber, alamat IP tujuan, port tujuan, dan protokol) dirutekan ke backend yang sama.
    • RESOURCE_LABEL: pemilih label yang memilih layanan backend yang menerapkan resource BackendServicePolicy di namespace project. Jika beberapa resource BackendServicePolicy cocok dengan layanan backend yang sama, dan setidaknya salah satu kebijakan ini mengaktifkan afinitas sesi, afinitas sesi untuk resource BackendService ini akan diaktifkan.

  5. Buat resource ForwardingRule eksternal yang menentukan VIP tempat layanan tersedia.

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: ForwardingRuleExternal
    metadata:
      namespace: PROJECT_NAME
      name: FORWARDING_RULE_EXTERNAL_NAME
    spec:
      cidrRef:
        name: CIDR_NAME
      ports:
      - port: PORT
        protocol: PROTOCOL
      backendServiceRef:
        name: BACKEND_SERVICE_NAME
    EOF
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama resource BackendService Anda.
    • FORWARDING_RULE_EXTERNAL_NAME: nama yang Anda pilih untuk resource ForwardingRuleExternal.
    • CIDR_NAME: kolom cidrRef bersifat opsional. Jika tidak ditentukan, CIDR IPv4/32 akan otomatis dicadangkan dari kumpulan IP zona. Tentukan nama resource Subnet di namespace yang sama dengan aturan penerusan ini. Resource Subnet mewakili informasi permintaan dan alokasi subnet zona. Untuk mengetahui informasi selengkapnya tentang resource Subnet, lihat Contoh resource kustom.
    • PORT: Gunakan kolom ports untuk menentukan array port L4 yang paketnya diteruskan ke backend yang dikonfigurasi dengan aturan penerusan ini. Setidaknya satu port harus ditentukan. Gunakan kolom port untuk menentukan nomor port. Port yang diekspos harus sama dengan yang diekspos oleh aplikasi sebenarnya di dalam container.
    • PROTOCOL: protokol yang akan digunakan untuk aturan penerusan, seperti TCP. Entri dalam array ports harus terlihat seperti berikut:

      ports:
      - port: 80
        protocol: TCP
      
  6. Untuk memvalidasi ELB yang dikonfigurasi, konfirmasi kondisi Ready pada setiap objek yang dibuat. Verifikasi traffic dengan permintaan curl ke VIP:

    1. Untuk mendapatkan VIP, gunakan kubectl get:

      kubectl get forwardingruleexternal -n PROJECT_NAME
      

      Outputnya akan terlihat seperti berikut:

      NAME           BACKENDSERVICE                               CIDR              READY
      elb-name       BACKEND_SERVICE_NAME        10.200.32.59/32   True
      
    2. Verifikasi traffic dengan permintaan curl ke VIP di port yang ditentukan di kolom PORT dalam aturan penerusan:

      curl http://FORWARDING_RULE_VIP:PORT
      

      Ganti FORWARDING_RULE_VIP dengan VIP aturan penerusan.

Layanan Kubernetes

Anda dapat membuat ELB di GDC dengan membuat Service Kubernetes jenis LoadBalancer di cluster Kubernetes.

Untuk membuat layanan ELB, lakukan hal berikut:

  1. Buat file YAML untuk definisi Service dari jenis LoadBalancer.

    Objek Service berikut adalah contoh layanan ELB:

    apiVersion: v1
    kind: Service
    metadata:
      name: ELB_SERVICE_NAME
      namespace: PROJECT_NAME
    spec:
      ports:
      - port: 1235
        protocol: TCP
        targetPort: 1235
      selector:
        k8s-app: my-app
      type: LoadBalancer
    

    Ganti kode berikut:

    • ELB_SERVICE_NAME: nama layanan ELB.
    • PROJECT_NAME: namespace project Anda yang berisi workload backend.

    Kolom port mengonfigurasi port frontend yang Anda ekspos di alamat VIP. Kolom targetPort mengonfigurasi port backend yang ingin Anda gunakan untuk meneruskan traffic pada workload backend. Load balancer mendukung Network Address Translation (NAT). Port frontend dan backend dapat berbeda.

  2. Di kolom selector pada definisi Service, tentukan pod atau virtual machine sebagai workload backend.

    Pemilih menentukan workload mana yang akan diambil sebagai workload backend untuk layanan ini, berdasarkan pencocokan label yang Anda tentukan dengan label pada workload. Service hanya dapat memilih workload backend dalam project yang sama dan cluster yang sama tempat Anda menentukan Service.

    Untuk mengetahui informasi selengkapnya tentang pemilihan layanan, lihat https://kubernetes.io/docs/concepts/services-networking/service/.

  3. Simpan file definisi Service dalam project yang sama dengan workload backend.

  4. Terapkan file definisi Service ke cluster:

    kubectl apply -f ELB_FILE
    

    Ganti ELB_FILE dengan nama file definisi Service untuk layanan ELB.

    Saat Anda membuat ELB, layanan akan mendapatkan dua alamat IP. Salah satunya adalah alamat IP internal yang hanya dapat diakses dari dalam cluster yang sama. Alamat IP lainnya adalah alamat IP eksternal, yang dapat diakses dari dalam dan luar organisasi. Anda bisa mendapatkan alamat IP layanan ELB dengan melihat status layanan:

    kubectl -n PROJECT_NAME get svc ELB_SERVICE_NAME
    

    Ganti kode berikut:

    • PROJECT_NAME: namespace project Anda yang berisi workload backend.
    • ELB_SERVICE_NAME: nama layanan ELB.

    Anda harus mendapatkan output yang mirip dengan contoh berikut:

    NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)          AGE
    elb-service             LoadBalancer   10.0.0.1      20.12.1.11      1235:31931/TCP   22h
    

    EXTERNAL-IP adalah alamat IP layanan yang dapat diakses dari luar organisasi.

    Jika Anda tidak mendapatkan output, pastikan Anda telah berhasil membuat layanan ELB.

Membuat ELB global

Buat ELB global menggunakan gdcloud CLI atau KRM API.

gdcloud

Buat ELB yang menargetkan workload pod atau VM menggunakan gdcloud CLI.

ELB ini menargetkan semua workload dalam project yang cocok dengan label yang ditentukan dalam objek Backend. Resource kustom Backend harus dicakupkan ke zona.

Untuk membuat ELB menggunakan gdcloud CLI, ikuti langkah-langkah berikut:

  1. Buat resource Backend untuk menentukan endpoint ELB:

    gdcloud compute backends create BACKEND_NAME \
      --labels=LABELS \
      --project=PROJECT_NAME \
      --cluster-name=CLUSTER_NAME \
      --zone=ZONE
    

    Ganti kode berikut:

    • BACKEND_NAME: nama yang Anda pilih untuk resource backend, seperti my-backend.
    • LABELS: Pemilih yang menentukan endpoint mana antara pod dan VM yang akan digunakan untuk resource backend ini. Contoh, app=web.
    • PROJECT_NAME: nama project Anda.
    • CLUSTER_NAME: cluster yang menjadi batas cakupan pemilih yang ditentukan. Jika kolom ini tidak ditentukan, semua endpoint dengan label yang diberikan akan dipilih. Kolom ini bersifat opsional.
    • ZONE: zona yang akan digunakan untuk pemanggilan ini. Untuk menetapkan flag zona untuk semua perintah yang memerlukannya, jalankan: gdcloud config set core/zone ZONE. Flag zona hanya tersedia di lingkungan multi-zona. Kolom ini bersifat opsional.
  2. Lewati langkah ini jika ELB ini ditujukan untuk workload pod. Jika Anda mengonfigurasi ELB untuk workload VM, tentukan health check untuk ELB:

    gdcloud compute health-checks create tcp HEALTH_CHECK_NAME \
      --check-interval=CHECK_INTERVAL \
      --healthy-threshold=HEALTHY_THRESHOLD \
      --timeout=TIMEOUT \
      --unhealthy-threshold=UNHEALTHY_THRESHOLD \
      --port=PORT \
      --global
    

    Ganti kode berikut:

    • HEALTH_CHECK_NAME: nama yang Anda pilih untuk resource health check, seperti my-health-check.
    • CHECK_INTERVAL: jumlah waktu dalam detik dari awal satu pemeriksaan hingga awal pemeriksaan berikutnya. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0. Sebaiknya jangan menetapkan waktu tunggu lebih lama dari checkInterval.
    • HEALTHY_THRESHOLD: waktu tunggu sebelum mengklaim kegagalan. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0.
    • TIMEOUT: jumlah waktu dalam detik untuk menunggu sebelum mengklaim kegagalan. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0. Sebaiknya jangan menetapkan waktu tunggu lebih lama dari checkInterval.
    • UNHEALTHY_THRESHOLD: jumlah pemeriksaan berurutan yang harus gagal agar endpoint dianggap tidak responsif. Nilai defaultnya adalah 2 jika dihilangkan atau ditetapkan ke 0.
    • PORT: port tempat health check dilakukan. Nilai defaultnya adalah 80. Kolom ini bersifat opsional.
  3. Buat resource BackendService dan tambahkan resource Backend yang dibuat sebelumnya:

    gdcloud compute backend-services create BACKEND_SERVICE_NAME \
      --project=PROJECT_NAME \
      --target-ports=TARGET_PORTS \
      --health-check=HEALTH_CHECK_NAME \
      --global
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama yang dipilih untuk layanan backend ini.
    • TARGET_PORTS: daftar port target yang dipisahkan koma yang diterjemahkan oleh layanan backend ini, dengan setiap port target menentukan protokol, port pada aturan penerusan, dan port pada instance backend. Anda dapat menentukan beberapa port target. Kolom ini harus dalam format protocol:port:targetport, seperti TCP:80:8080. Kolom ini bersifat opsional.
    • HEALTH_CHECK_NAME: nama resource health check. Kolom ini bersifat opsional. Hanya sertakan kolom ini jika Anda mengonfigurasi ELB untuk workload VM.
  4. Tambahkan resource BackendService ke resource Backend yang dibuat sebelumnya:

    gdcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --backend=BACKEND_NAME \
      --backend-zone BACKEND_ZONE \
      --project=PROJECT_NAME \
      --global
    
  5. Opsional: Gunakan afinitas sesi untuk ELB guna memastikan bahwa permintaan dari klien yang sama dirutekan secara konsisten ke backend yang sama. Untuk mengaktifkan afinitas sesi bagi load balancer, buat kebijakan layanan backend menggunakan perintah gdcloud compute load-balancer-policy create:

     gdcloud compute load-balancer-policy create POLICY_NAME
     --session-affinity=MODE
     --selectors=RESOURCE_LABEL
    

    Ganti kode berikut:

    • POLICY_NAME: nama yang Anda pilih untuk kebijakan layanan backend.
    • MODE: mode afinitas sesi. Ada dua mode yang didukung:

      • NONE: Afinitas sesi dinonaktifkan. Permintaan dirutekan ke backend yang tersedia. Ini adalah mode defaultnya.
      • CLIENT_IP_DST_PORT_PROTO: Permintaan dari empat tuple yang sama (alamat IP sumber, alamat IP tujuan, port tujuan, dan protokol) dirutekan ke backend yang sama.
    • RESOURCE_LABEL: pemilih label yang memilih layanan backend yang menerapkan resource BackendServicePolicy di namespace project. Jika beberapa resource BackendServicePolicy cocok dengan layanan backend yang sama, dan setidaknya salah satu kebijakan ini mengaktifkan afinitas sesi, afinitas sesi untuk resource BackendService ini akan diaktifkan.

  6. Buat resource ForwardingRule eksternal yang menentukan VIP tempat layanan tersedia:

    gdcloud compute forwarding-rules create FORWARDING_RULE_EXTERNAL_NAME \
      --backend-service=BACKEND_SERVICE_NAME \
      --cidr=CIDR \
      --ip-protocol-port=PROTOCOL_PORT \
      --load-balancing-scheme=EXTERNAL \
      --project=PROJECT_NAME \
      --global
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama layanan backend Anda.
    • FORWARDING_RULE_EXTERNAL_NAME: nama yang Anda pilih untuk aturan penerusan.
    • CIDR: kolom ini bersifat opsional. Jika tidak ditentukan, CIDR IPv4/32 akan otomatis dicadangkan dari kumpulan IP global. Tentukan nama resource Subnet dalam namespace yang sama dengan aturan penerusan ini. Resource Subnet mewakili informasi permintaan dan alokasi subnet global. Untuk mengetahui informasi selengkapnya tentang resource Subnet, lihat Contoh resource kustom.
    • PROTOCOL_PORT: protokol dan port yang akan diekspos pada aturan penerusan. Kolom ini harus dalam format ip-protocol=TCP:80. Port yang diekspos harus sama dengan yang diekspos aplikasi sebenarnya di dalam container.
  7. Untuk memverifikasi ELB yang dikonfigurasi, konfirmasi kondisi Ready pada setiap objek yang dibuat. Untuk mendapatkan alamat IP yang ditetapkan dari load balancer, deskripsikan aturan penerusan:

    gdcloud compute forwarding-rules describe FORWARDING_RULE_EXTERNAL_NAME
    
  8. Untuk memvalidasi ELB yang dikonfigurasi, konfirmasi kondisi Ready pada setiap objek yang dibuat. Verifikasi traffic dengan permintaan curl ke VIP:

    1. Untuk mendapatkan VIP yang ditetapkan, deskripsikan aturan penerusan:

      gdcloud compute forwarding-rules describe FORWARDING_RULE_EXTERNAL_NAME --global
      
    2. Verifikasi traffic dengan permintaan curl ke VIP di port yang ditentukan di kolom PROTOCOL_PORT dalam aturan penerusan:

      curl http://FORWARDING_RULE_VIP:PORT
      

      Ganti kode berikut:

      • FORWARDING_RULE_VIP: VIP aturan penerusan.
      • PORT: nomor port dari kolom PROTOCOL_PORT dalam aturan penerusan.

API

Membuat ELB yang menargetkan workload pod atau VM menggunakan KRM API. ELB ini menargetkan semua workload dalam project yang cocok dengan label yang ditentukan dalam objek Backend. Untuk membuat ELB zona menggunakan KRM API, ikuti langkah-langkah berikut:

  1. Buat resource Backend untuk menentukan endpoint ELB. Buat resource Backend untuk setiap zona tempat workload ditempatkan:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: Backend
    metadata:
      namespace: PROJECT_NAME
      name: BACKEND_NAME
    spec:
      clusterName: CLUSTER_NAME
      endpointsLabels:
        matchLabels:
          app: server
    EOF
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER: jalur kubeconfig dari jalur kubeconfig Server API Management global. Untuk mengetahui informasi selengkapnya, lihat Beralih ke konteks global.
    • PROJECT_NAME: nama project Anda.
    • BACKEND_NAME: nama resource Backend.
    • CLUSTER_NAME: Kolom ini bersifat opsional. Kolom ini menentukan cluster yang menjadi batasan cakupan pemilih yang ditentukan. Kolom ini tidak berlaku untuk workload VM. Jika resource Backend tidak menyertakan kolom clusterName, label yang ditentukan akan berlaku untuk semua workload dalam project.
  2. Lewati langkah ini jika ELB ini ditujukan untuk workload pod. Jika Anda mengonfigurasi ELB untuk workload VM, tentukan health check untuk ELB:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: HealthCheck
    metadata:
      namespace: PROJECT_NAME
      name: HEALTH_CHECK_NAME
    spec:
      tcpHealthCheck:
        port: PORT
      timeoutSec: TIMEOUT
      checkIntervalSec: CHECK_INTERVAL
      healthyThreshold: HEALTHY_THRESHOLD
      unhealthyThreshold: UNHEALTHY_THRESHOLD
    EOF
    

    Ganti kode berikut:

    • HEALTH_CHECK_NAME: nama yang Anda pilih untuk resource health check, seperti my-health-check.
    • PORT: port tempat health check dilakukan. Nilai defaultnya adalah 80.
    • TIMEOUT: jumlah waktu dalam detik untuk menunggu sebelum mengklaim kegagalan. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0. Sebaiknya jangan menetapkan waktu tunggu lebih lama dari checkInterval.
    • CHECK_INTERVAL: jumlah waktu dalam detik dari awal satu pemeriksaan hingga awal pemeriksaan berikutnya. Nilai defaultnya adalah 5 jika dihilangkan atau ditetapkan ke 0. Sebaiknya jangan menetapkan waktu tunggu lebih lama dari checkInterval.
    • HEALTHY_THRESHOLD: jumlah pemeriksaan berurutan yang harus lulus agar endpoint dianggap responsif. Nilai defaultnya adalah 2 jika dihilangkan atau ditetapkan ke 0.
    • UNHEALTHY_THRESHOLD: jumlah pemeriksaan berurutan yang harus gagal agar endpoint dianggap tidak responsif. Nilai defaultnya adalah 2 jika dihilangkan atau ditetapkan ke 0.

    Karena ini adalah ELB global, buat health check di API global.

  3. Buat objek BackendService menggunakan resource Backend yang dibuat sebelumnya. Jika Anda mengonfigurasi ELB untuk workload VM, sertakan resource HealthCheck.

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: BackendService
    metadata:
      namespace: PROJECT_NAME
      name: BACKEND_SERVICE_NAME
    spec:
      backendRefs:
      - name: BACKEND_NAME
        zone: ZONE
      healthCheckName: HEALTH_CHECK_NAME
      targetPorts:
      - port: PORT
        protocol: PROTOCOL
        targetPort: TARGET_PORT
    EOF
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama yang dipilih untuk resource BackendService Anda.
    • HEALTH_CHECK_NAME: nama resource HealthCheck yang Anda buat sebelumnya. Jangan sertakan kolom ini jika Anda mengonfigurasi ELB untuk workload pod.
    • ZONE: zona tempat resource Backend dibuat. Anda dapat menentukan beberapa backend di kolom backendRefs. Contoh:

      - name: my-be
        zone: Zone-A
      - name: my-be
        zone: Zone-B
      
    • Kolom targetPorts bersifat opsional. Resource ini mencantumkan port yang diterjemahkan oleh resource BackendService ini. Jika Anda menggunakan objek ini, berikan nilai untuk hal berikut:

      • PORT: port yang diekspos oleh layanan.
      • PROTOCOL: protokol Lapisan-4 yang harus cocok dengan traffic. Hanya TCP dan UDP yang didukung.
      • TARGET_PORT: port yang menjadi tujuan penerjemahan nilai PORT, seperti 8080. Nilai TARGET_PORT tidak dapat diulang dalam objek tertentu. Contoh untuk targetPorts mungkin terlihat seperti berikut:

        targetPorts:
        - port: 80
          protocol: TCP
          targetPort: 8080
        
  4. Opsional: Gunakan afinitas sesi untuk ELB guna memastikan bahwa permintaan dari klien yang sama dirutekan secara konsisten ke backend yang sama. Untuk mengaktifkan afinitas sesi untuk load balancer, buat resource BackendServicePolicy. Resource ini menentukan setelan afinitas sesi dan menerapkan resource BackendServicePolicy ke resource BackendService. Buat dan terapkan resource BackendServicePolicy:

     kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
     apiVersion: networking.global.gdc.goog/v1
     kind: BackendServicePolicy
     metadata:
         namespace: PROJECT_NAME
         name: POLICY_NAME
     spec:
         sessionAffinity: MODE
         selector:
             matchLabels:
               RESOURCE_LABEL
    

    Ganti kode berikut:

    • POLICY_NAME: nama yang Anda pilih untuk kebijakan layanan backend.
    • MODE: mode afinitas sesi. Ada dua mode yang didukung:

      • NONE: Afinitas sesi dinonaktifkan. Permintaan dirutekan ke backend yang tersedia. Ini adalah mode defaultnya.
      • CLIENT_IP_DST_PORT_PROTO: Permintaan dari empat tuple yang sama (alamat IP sumber, alamat IP tujuan, port tujuan, dan protokol) dirutekan ke backend yang sama.
    • RESOURCE_LABEL: pemilih label yang memilih layanan backend yang menerapkan resource BackendServicePolicy di namespace project. Jika beberapa resource BackendServicePolicy cocok dengan layanan backend yang sama, dan setidaknya salah satu kebijakan ini mengaktifkan afinitas sesi, afinitas sesi untuk resource BackendService ini akan diaktifkan.

  5. Buat resource ForwardingRule eksternal yang menentukan VIP tempat layanan tersedia.

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ForwardingRuleExternal
    metadata:
      namespace: PROJECT_NAME
      name: FORWARDING_RULE_EXTERNAL_NAME
    spec:
      cidrRef:
        name: CIDR_NAME
      ports:
      - port: PORT
        protocol: PROTOCOL
      backendServiceRef:
        name: BACKEND_SERVICE_NAME
    EOF
    

    Ganti kode berikut:

    • FORWARDING_RULE_EXTERNAL_NAME: nama yang dipilih untuk resource ForwardingRuleExternal Anda.
    • CIDR_NAME: Kolom cidrRef bersifat opsional. Jika tidak ditentukan, CIDR IPv4/32 akan otomatis dicadangkan dari kumpulan IP global. Tentukan nama resource Subnet dalam namespace yang sama dengan aturan penerusan ini. Resource Subnet mewakili informasi permintaan dan alokasi subnet global. Untuk mengetahui informasi selengkapnya tentang resource Subnet, lihat Contoh resource kustom.
    • PORT: Gunakan kolom ports untuk menentukan array port L4 yang paketnya diteruskan ke backend yang dikonfigurasi dengan aturan penerusan ini. Setidaknya satu port harus ditentukan. Gunakan kolom port untuk menentukan nomor port. Port yang diekspos harus sama dengan yang diekspos oleh aplikasi sebenarnya di dalam container.
    • PROTOCOL: protokol yang akan digunakan untuk aturan penerusan, seperti TCP. Entri dalam array ports harus terlihat seperti berikut:

      ports:
      - port: 80
        protocol: TCP
      
  6. Untuk memvalidasi ELB yang dikonfigurasi, konfirmasi kondisi Ready pada setiap objek yang dibuat. Verifikasi traffic dengan permintaan curl ke VIP:

    1. Untuk mendapatkan VIP, gunakan kubectl get:

      kubectl get forwardingruleexternal -n PROJECT_NAME
      

      Outputnya akan terlihat seperti berikut:

      NAME           BACKENDSERVICE                               CIDR              READY
      elb-name       BACKEND_SERVICE_NAME        10.200.32.59/32   True
      
    2. Verifikasi traffic dengan permintaan curl ke VIP di port yang ditentukan di kolom PORT dalam aturan penerusan:

      curl http://FORWARDING_RULE_VIP:PORT
      

      Ganti FORWARDING_RULE_VIP dengan VIP aturan penerusan.

Membuat load balancer eksternal untuk cluster standar

Pemilik Aplikasi (AO) dapat membuat layanan Kubernetes berjenis LoadBalancer untuk mengekspos layanan secara eksternal. Layanan ini hanya dapat memilih backend dalam cluster standar tempat layanan dibuat. Ini setara dengan ELB Cakupan Cluster Zona. ELB global tidak didukung untuk cluster standar. Untuk mengetahui informasi selengkapnya, lihat Load balancer global dan zona.

Sebelum memulai

Untuk mengonfigurasi layanan ELB, Anda harus:

  • Memiliki project yang load balancer-nya sedang Anda konfigurasi. Untuk mengetahui informasi selengkapnya, lihat Membuat project.
  • Memiliki kebijakan ingress ProjectNetworkPolicy (PNP) yang disesuaikan untuk mengizinkan traffic ke layanan ELB ini. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi PNP untuk mengizinkan traffic ke ELB untuk cluster standar.
  • Memiliki peran identitas dan akses yang diperlukan:

    • Project NetworkPolicy Admin: memiliki akses untuk mengelola kebijakan jaringan project di namespace project. Minta Admin Org IAM Anda untuk memberi Anda peran Project NetworkPolicy Admin (project-networkpolicy-admin).
    • Load Balancer Admin: Minta Admin Org IAM Anda untuk memberi Anda peran Load Balancer Admin (load-balancer-admin).

Mengonfigurasi PNP untuk mengizinkan traffic ke ELB untuk cluster standar

Agar layanan ELB berfungsi, Anda harus mengonfigurasi dan menerapkan kebijakan ingress ProjectNetworkPolicy yang disesuaikan sendiri untuk mengizinkan traffic ke workload layanan ELB ini. Kebijakan jaringan mengontrol akses ke workload Anda, bukan load balancer itu sendiri. ELB mengekspos workload ke jaringan pelanggan Anda, sehingga memerlukan kebijakan jaringan eksplisit untuk mengizinkan traffic eksternal ke port workload, seperti 8080.

Contoh file YAML kebijakan jaringan project berikut mengizinkan traffic dari workload di project lain untuk mengakses workload di Project saat ini melalui ELB.

apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  name: allow-ingress-from-client-to-server
  namespace: ${VANILLA_CLUSTER_PROJECT}
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
    userWorkloadSelector:
      labelSelector:
        clusters:
          matchLabels:
            kubernetes.io/metadata.name: my-sc-1
        namespaces:
          matchLabels:
            kubernetes.io/metadata.name: my-app-ns
        workloads:
          matchLabels:
            app: my-internal-app
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - "$PROJECT_2"
        workloadSelector:
          labelSelector:
            workloads:
              matchLabels:
                app: my-client
    ports:
    - protocol: TCP
      port: 8080

Membuat ELB zona untuk cluster standar

Anda dapat membuat ELB di GDC dengan membuat Service Kubernetes jenis LoadBalancer di cluster Kubernetes standar.

Untuk membuat layanan ELB, lakukan hal berikut:

  1. Buat file YAML untuk definisi Service dari jenis LoadBalancer.

    Objek Service berikut adalah contoh layanan ELB:

    apiVersion: v1
    kind: Service
    metadata:
      name: ELB_SERVICE_NAME
      namespace: ELB_SERVICE_NAMESPACE
    spec:
      ports:
      - port: PORT
        protocol: TCP
        targetPort: TARGET_PORT
      selector:
        k8s-app: my-app # Example selector, replace with your workload's labels
      type: LoadBalancer
    

    Ganti kode berikut:

    • ELB_SERVICE_NAME: nama layanan ELB.
    • ELB_SERVICE_NAMESPACE: namespace di cluster standar Anda yang berisi workload backend.
    • PORT: port yang diekspos oleh Service Kubernetes itu sendiri. Layanan lain atau klien eksternal dalam cluster akan terhubung ke port ini di alamat IP Service.
    • TARGET_PORT: port di dalam container pod tempat aplikasi Anda berjalan secara aktif dan memproses koneksi masuk. Port ini dapat berupa port numerik atau port bernama yang ditentukan dalam spesifikasi container Pod.

    Kolom port mengonfigurasi port frontend yang Anda ekspos di alamat VIP. Kolom targetPort mengonfigurasi port backend yang ingin Anda gunakan untuk meneruskan traffic pada workload backend. Load balancer mendukung Network Address Translation (NAT). Port frontend dan backend dapat berbeda.

  2. Di kolom selector pada definisi Service, tentukan pasangan nilai kunci agar cocok dengan workload backend. Untuk cluster standar, hanya pod yang didukung sebagai workload.

    pemilih yang Anda tentukan, berdasarkan pencocokan label yang Anda tentukan dengan label pada workload. Service hanya dapat memilih workload backend di project dan cluster yang sama tempat Anda menentukan Service.

    Untuk mengetahui informasi selengkapnya tentang pemilihan layanan, lihat https://kubernetes.io/docs/concepts/services-networking/service/.

  3. Simpan spesifikasi Service dalam file YAML. Ganti nama file untuk ELB_FILE dalam perintah berikut.

  4. Terapkan file definisi Service ke cluster:

    export KUBECONFIG=KUBECONFIG_PATH
    kubectl apply -f ELB_FILE
    

    Ganti kode berikut:

    • ELB_FILE:nama file definisi Service untuk layanan ELB.
    • KUBECONFIG_PATH: jalur ke file kubeconfig untuk cluster standar.

    Anda bisa mendapatkan alamat IP layanan ELB dengan melihat status layanan:

    kubectl -n ELB_SERVICE_NAMESPACE get svc ELB_SERVICE_NAME
    

    Ganti kode berikut:

    • ELB_SERVICE_NAMESPACE: namespace yang berisi workload backend.
    • ELB_SERVICE_NAME: nama layanan ELB.

    Anda harus mendapatkan output yang mirip dengan contoh berikut:

    NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)          AGE
    elb-service             LoadBalancer   10.0.0.1      203.0.1.11      1235:31931/TCP   22h
    

    EXTERNAL-IP adalah alamat IP layanan yang dapat diakses dari luar organisasi.

Memilih VM sebagai backend untuk load balancer

Untuk menautkan VM ke load balancer:

  1. Pastikan VM memiliki label yang cocok dengan pemilih label yang digunakan dalam konfigurasi load balancer.

    Misalnya, jika VM Anda tidak memiliki label yang sesuai, Anda dapat menambahkan label yang ditentukan dari objek backend zona yang sesuai ke VM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER label virtualmachine VM_NAME -n PROJECT_NAMELABEL
    

    Ganti kode berikut:

    • LABEL: label yang cocok dengan LabelSelector dalam konfigurasi load balancer, seperti app=server.
    • VM_NAME: nama virtual machine yang ditautkan.
    • PROJECT_NAME: nama project Anda.
  2. Pastikan server memproses port yang sama seperti yang ditentukan dalam objek HealthCheck.