spec de AlloyDB Omni. En Google Kubernetes Engine (GKE), un balanceador de cargas creado de forma predeterminada es de tipo externo y está vinculado con la dirección IP externa para permitir 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 cargas, GKE crea un balanceador de cargas interno.
Las diferentes plataformas proporcionan sus propias anotaciones para crear el tipo específico de balanceador de cargas.
AlloyDB Omni te permite especificar anotaciones del balanceador de cargas con la sección spec del manifiesto del clúster de base de datos. El controlador de la base de datos agrega esas anotaciones al balanceador de cargas spec cuando se crea un clúster de base de datos.
Crea un balanceador de cargas interno con la especificación de la base de datos
Puedes crear un balanceador de cargas interno configurando el campo dbLoadBalancerOptions en la sección spec de tu manifiesto de DBCluster.
Kubernetes
Las anotaciones definen el tipo y las propiedades de un balanceador de cargas. Un balanceador de cargas interno requiere la presencia de la siguiente anotación:
networking.gke.io/load-balancer-type: "internal"
Para crear un balanceador de cargas interno que permita conexiones desde fuera del clúster de GKE dentro del 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
Reemplaza lo siguiente:
DB_CLUSTER_NAME: Es el nombre de tu clúster de base de datos. Es el mismo nombre del clúster de la base de datos que declaraste cuando lo creaste.
En el manifiesto se muestra lo siguiente:
- networking.gke.io/load-balancer-type: "internal": Es la anotación del balanceador de cargas interno de GKE para tu clúster de base de datos.
- allowExternalIncomingTraffic: true: El campo
allowExternalIncomingTrafficse establece entruepara permitir el tráfico entrante desde fuera del clúster de Kubernetes.
Obtén los detalles del clúster de la base de datos y la conectividad
Kubernetes
Para verificar que el recurso del clúster de base de datos esté en el estado Ready, usa el siguiente comando:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -wEl resultado es similar a este:
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 cargas interno existan en el servicio del balanceador de cargas de la siguiente manera:
kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yamlReemplaza lo siguiente:
LOAD_BALANCER_SERVICE_NAME: Es el nombre de tu servicio de balanceador de cargas que crea una dirección IP única a la que se puede acceder desde redes externas.NAMESPACE: Es el nombre del espacio de nombres de Kubernetes para tu servicio de balanceador de cargas.
El resultado es similar a este:
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.84El resultado tiene los siguientes atributos:
networking.gke.io/load-balancer-type: internal: Debe existir un balanceador de cargas interno en el servicio de balanceador de cargas.ip: El valor del extremo principal en el resultado de la verificación del clúster de base de datos coincide con el valor del controlador de entrada del balanceador de cargas.