Mengonfigurasi load balancer untuk AlloyDB Omni di Kubernetes

Halaman ini merangkum cara mengonfigurasi load balancer di AlloyDB Omni menggunakan spec AlloyDB Omni. Di Google Kubernetes Engine (GKE), load balancer yang dibuat secara default adalah jenis eksternal dan terikat dengan alamat IP eksternal untuk mengizinkan koneksi dari internet. Namun, jika anotasi networking.gke.io/load-balancer-type: "internal" disertakan dalam kolom metadata.annotations[] manifes load balancer, GKE akan membuat load balancer internal.

Platform yang berbeda menyediakan anotasi mereka sendiri untuk membuat jenis load balancer tertentu. AlloyDB Omni memungkinkan Anda menentukan anotasi load balancer menggunakan bagian spec dalam manifes cluster database. Pengontrol database menambahkan anotasi tersebut ke load balancer spec saat membuat cluster database.

Membuat load balancer internal menggunakan spesifikasi database

Anda dapat membuat load balancer internal dengan mengonfigurasi kolom dbLoadBalancerOptions di bagian spec dalam manifes DBCluster.

Kubernetes

Anotasi menentukan jenis dan properti load balancer. Load balancer internal memerlukan adanya anotasi berikut:

networking.gke.io/load-balancer-type: "internal"

Untuk membuat load balancer internal yang mengizinkan koneksi dari luar cluster GKE dalam project yang sama, terapkan manifes berikut:

kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.5.0"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      memory: 5Gi
      cpu: 1
      disks:
      - name: DataDisk
        size: 10Gi
    dbLoadBalancerOptions:
      annotations:
        networking.gke.io/load-balancer-type: "internal"
  allowExternalIncomingTraffic: true
EOF

Ganti kode berikut:

  • DB_CLUSTER_NAME: nama cluster database Anda. Ini adalah nama cluster database yang sama dengan yang Anda deklarasikan saat membuatnya.

Dalam manifes ini:

  • networking.gke.io/load-balancer-type: "internal": anotasi load balancer internal GKE ke cluster database Anda
  • allowExternalIncomingTraffic: true: kolom allowExternalIncomingTraffic ditetapkan ke true untuk mengizinkan traffic masuk dari luar cluster Kubernetes

Mendapatkan detail konektivitas dan cluster database

Kubernetes

Untuk memverifikasi bahwa resource cluster database berada dalam status Ready, gunakan perintah berikut:

kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -w

Outputnya mirip dengan hal berikut ini:

NAME               PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
DB_CLUSTER_NAME    10.95.0.84        Ready          DBClusterReady

Pastikan anotasi dan alamat IP load balancer internal ada di layanan load balancer, sebagai berikut:

 $ kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yaml
 

Ganti kode berikut:

  • LOAD_BALANCER_SERVICE_NAME: nama layanan load balancer Anda yang membuat alamat IP unik yang dapat diakses oleh jaringan eksternal.
  • NAMESPACE: nama namespace Kubernetes untuk layanan load balancer Anda.

Outputnya mirip dengan hal berikut ini:

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/neg: '{"ingress":true}'
    networking.gke.io/load-balancer-type: internal
  creationTimestamp: "2024-02-22T15:26:18Z"
  finalizers:
  − gke.networking.io/l4-ilb-v1
  − service.kubernetes.io/load-balancer-cleanup
  labels:
    alloydbomni.internal.dbadmin.gdc.goog/dbcluster: DB_CLUSTER_NAME
    alloydbomni.internal.dbadmin.gdc.goog/dbcluster-ns: NAMESPACE
    alloydbomni.internal.dbadmin.gdc.goog/instance: ad98-foo
    alloydbomni.internal.dbadmin.gdc.goog/task-type: database
    egress.networking.gke.io/enabled: "true"
  name: LOAD_BALANCER_SERVICE_NAME
  namespace: NAMESPACE
 ownerReferences:
  − apiVersion: alloydbomni.dbadmin.goog/v1
    blockOwnerDeletion: true
    controller: true
    kind: DBCluster
    name: DB_CLUSTER_NAME
    uid: 2dd76c9f-7698-4210-be41-6d2259840a85
  resourceVersion: "33628320"
  uid: 1f45362b-6d6f-484d-ad35-11c14e91933e
spec:
  allocateLoadBalancerNodePorts: true
  clusterIP: 10.60.4.76
  clusterIPs:
  − 10.60.4.76
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
  − IPv4
  ipFamilyPolicy: SingleStack
  loadBalancerSourceRanges:
  − 0.0.0.0/0
  ports:
  − name: db
    nodePort: 31453
    port: 5432
    protocol: TCP
    targetPort: 5432
  selector:
    alloydbomni.internal.dbadmin.gdc.goog/dbcluster: DB_CLUSTER_NAME
    alloydbomni.internal.dbadmin.gdc.goog/dbcluster-ns: NAMESPACE
    alloydbomni.internal.dbadmin.gdc.goog/instance: ad98-foo
    alloydbomni.internal.dbadmin.gdc.goog/task-type: database
    egress.networking.gke.io/enabled: "true"
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    − ip: 10.95.0.84

Output memiliki atribut berikut:

  • networking.gke.io/load-balancer-type: internal: load balancer internal harus ada di layanan load balancer
  • ip: nilai endpoint utama dalam output verifikasi cluster database cocok dengan nilai pengontrol ingress load balancer

Langkah selanjutnya