Configurer un équilibreur de charge pour AlloyDB Omni sur Kubernetes

Cette page explique comment configurer un équilibreur de charge dans AlloyDB Omni à l'aide de l'spec AlloyDB Omni. Dans Google Kubernetes Engine (GKE), un équilibreur de charge créé par défaut est de type externe et associé à l'adresse IP externe pour autoriser les connexions depuis Internet. Toutefois, si l'annotation networking.gke.io/load-balancer-type: "internal" est incluse dans le champ metadata.annotations[] du fichier manifeste de l'équilibreur de charge, GKE crée un équilibreur de charge interne.

Différentes plates-formes fournissent leurs propres annotations pour créer le type spécifique d'équilibreur de charge. AlloyDB Omni vous permet de spécifier des annotations d'équilibrage de charge à l'aide de la section spec du fichier manifeste du cluster de base de données. Le contrôleur de base de données ajoute ces annotations à l'équilibreur de charge spec lors de la création d'un cluster de base de données.

Créer un équilibreur de charge interne à l'aide de la spécification de la base de données

Vous pouvez créer un équilibreur de charge interne en configurant le champ dbLoadBalancerOptions dans la section spec de votre fichier manifeste DBCluster.

Kubernetes

Les annotations définissent le type et les propriétés d'un équilibreur de charge. Un équilibreur de charge interne nécessite l'annotation suivante:

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

Pour créer un équilibreur de charge interne qui autorise les connexions en dehors du cluster GKE dans le même projet, appliquez le fichier manifeste suivant:

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

Remplacez les éléments suivants :

  • DB_CLUSTER_NAME: nom de votre cluster de base de données. Il s'agit du même nom de cluster de base de données que vous avez déclaré lors de sa création.

Dans le fichier manifeste :

  • networking.gke.io/load-balancer-type: "internal": annotation de l'équilibreur de charge interne GKE sur votre cluster de base de données
  • allowExternalIncomingTraffic: true: le champ allowExternalIncomingTraffic est défini sur true pour autoriser le trafic entrant provenant de l'extérieur du cluster Kubernetes.

Obtenir les détails du cluster de base de données et de la connectivité

Kubernetes

Pour vérifier que la ressource de cluster de base de données est à l'état Ready, exécutez la commande suivante:

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

Le résultat ressemble à ce qui suit :

NAME               PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
DB_CLUSTER_NAME    10.95.0.84        Ready          DBClusterReady

Vérifiez que l'annotation et l'adresse IP de l'équilibreur de charge interne existent dans le service d'équilibreur de charge, comme suit:

 $ kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yaml
 

Remplacez les éléments suivants :

  • LOAD_BALANCER_SERVICE_NAME: nom de votre service d'équilibrage de charge qui crée une adresse IP unique accessible par les réseaux externes.
  • NAMESPACE: nom de l'espace de noms Kubernetes de votre service d'équilibrage de charge.

Le résultat ressemble à ce qui suit :

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

Le résultat possède les attributs suivants :

  • networking.gke.io/load-balancer-type: internal: un équilibreur de charge interne doit exister dans le service d'équilibrage de charge
  • ip: la valeur du point de terminaison principal dans la sortie de validation du cluster de base de données correspond à la valeur du contrôleur d'entrée de l'équilibreur de charge.

Étape suivante