specde AlloyDB Omni. En Google Kubernetes Engine (GKE), un balanceador de carga creado de forma predeterminada es de tipo externo y está vinculado a la dirección IP externa para permitir las conexiones desde Internet. Sin embargo, si la anotación networking.gke.io/load-balancer-type: "internal" se incluye en el campo metadata.annotations[] del manifiesto del balanceador de carga, GKE crea un balanceador de carga interno.
Cada plataforma proporciona sus propias anotaciones para crear un tipo específico de balanceador de carga.
AlloyDB Omni te permite especificar anotaciones de balanceador de carga mediante la sección spec del manifiesto del clúster de base de datos. El controlador de la base de datos añade esas anotaciones al balanceador de carga spec al crear un clúster de base de datos.
Crear un balanceador de carga interno con la especificación de la base de datos
Para crear un balanceador de carga interno, configura el campo dbLoadBalancerOptions en la sección spec del manifiesto DBCluster.
Kubernetes
Las anotaciones definen el tipo y las propiedades de un balanceador de carga. Un balanceador de carga interno requiere la presencia de la siguiente anotación:
networking.gke.io/load-balancer-type: "internal"
Para crear un balanceador de carga interno que permita conexiones desde fuera del clúster de GKE en el mismo proyecto, aplica el siguiente manifiesto:
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
Haz los cambios siguientes:
DB_CLUSTER_NAME: el nombre de tu clúster de bases de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.
En este manifiesto:
- networking.gke.io/load-balancer-type: "internal": la anotación del balanceador de carga interno de GKE en tu clúster de base de datos
- allowExternalIncomingTraffic: true: el campo
allowExternalIncomingTrafficse define comotruepara permitir el tráfico entrante desde fuera del clúster de Kubernetes.
Obtener los detalles del clúster de base de datos y de la conectividad
Kubernetes
Para verificar que el recurso de clúster de base de datos tiene el estado Ready, utiliza el siguiente comando:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -wEl resultado debería ser similar al siguiente:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME 10.95.0.84 Ready DBClusterReady
Verifica que la anotación y la dirección IP del balanceador de carga interno estén en el servicio de balanceador de carga, de la siguiente manera:
kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yamlHaz los cambios siguientes:
LOAD_BALANCER_SERVICE_NAME: el nombre del servicio de balanceador de carga que crea una dirección IP única a la que pueden acceder las redes externas.NAMESPACE: el nombre del espacio de nombres de Kubernetes de tu servicio de balanceador de carga.
El resultado debería ser similar al siguiente:
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.84La salida tiene los siguientes atributos:
networking.gke.io/load-balancer-type: internal: debe haber un balanceador de carga interno en el servicio de balanceador de cargaip: el valor del endpoint principal en la salida de verificación del clúster de la base de datos coincide con el valor del controlador de entrada del balanceador de carga.