Ejemplo: conectividad privada para un clúster de MongoDB Atlas
En esta página se explica cómo habilitar la conectividad de Integration Connectors a tu clúster de MongoDB Atlas que se ejecuta en una red privada de Google Cloud.
Configurar la conectividad privada de un clúster de Atlas
Para configurar la conectividad privada de un clúster de Atlas, haz lo siguiente:
- Inicia sesión en tu consola de administración de Atlas.
- Abre el proyecto de Atlas para el que necesites establecer la conectividad de red.
- Abre la página Acceso a la red del proyecto y, a continuación, selecciona Endpoint privado.
- Selecciona Clúster dedicado y, a continuación, haz clic en Añadir endpoint privado.
Se abrirá el cuadro de diálogo para elegir un proveedor de servicios en la nube.
- Seleccione Google Cloud y, a continuación, haga clic en Siguiente.
- Selecciona una región de Atlas y, a continuación, haz clic en Siguiente.
Esta es la región de Google Cloud en la que se crea tu clúster de Atlas. Debe ser la misma región que la del proyecto de Google Cloud en el que crees tus conexiones. Para ver la lista de todas las regiones admitidas de Integration Connector, consulta Ubicaciones.
- Introduce el ID de proyecto de Google Cloud. Es el ID de proyecto del directorio de servicios del tiempo de ejecución de Integration Connectors. Para obtener más información, consulta Obtener el ID de proyecto del directorio de servicios.
- En el campo Nombre de VPC, introduce
default
. - En el campo Nombre de subred, introduce
default
. - En el campo Prefijo del punto final de Private Service Connect, introduce un prefijo.
Este texto se añade como prefijo a todos los nombres de los endpoints y se puede usar para identificar los endpoints privados que hayas creado.
- Instala la
gcloud
CLI (interfaz de línea de comandos). Para obtener más información, consulta Instalar gcloud CLI. - Copia y guarda la siguiente secuencia de comandos de shell como
setup_psc.sh
en tu sistema local.Asigna los valores adecuados a las siguientes variables de la secuencia de comandos:
- PROJECT_ID
- PAÍSES
- PREFIX
- SERVICE_ATTACHMENT_ID_PREFIX
#!/bin/bash alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)"' # Set PROJECT_ID to the ID of the Google Cloud project where you create your connections. export PROJECT_ID=PROJECT_ID # Set REGION to the Google Cloud region where Atlas cluster is installed. export REGION=REGION export HOSTNAME=https://connectors.googleapis.com/v1 # Set ENDPOINT_PREFIX to the prefix value that you entered for the # "Private service connect endpoint prefix" field (in step 10). export PREFIX=ENDPOINT_PREFIX # Set SERVICE_ATTACHMENT_ID_PREFIX to the prefix of the service attachments # created by Atlas. The service attachments are present in the script # displayed on the Atlas UI and have the following naming format: # projects/{google-cloud-project-id-of-atlas-cluster}/regions/{region}/serviceAttachment/{prefix}-{index} # For example, if the service attachment is # "projects/p-ditnerelrvndieqhe3kh9pop/regions/us-west1/serviceAttachments/sa-us-west1-37204mg5wr0j6-$i", # you must set the value of SERVICE_ATTACHMENT_ID_PREFIX to # "projects/p-ditnerelrvndieqhe3kh9pop/regions/us-west1/serviceAttachments/sa-us-west1-37204mg5wr0j6" export SERVICE_ATTACHMENT_ID_PREFIX=SERVICE_ATTACHMENT_ID_PREFIX # Set ENDPOINT_GLOBAL_ACCESS to true if you want to enable global access for the endpoint, else false. export ENDPOINT_GLOBAL_ACCESS=ENDPOINT_GLOBAL_ACCESS if [ "$ENDPOINT_GLOBAL_ACCESS" != "true" ] && [ "$ENDPOINT_GLOBAL_ACCESS" != "false" ]; then echo "Error: Variable ENDPOINT_GLOBAL_ACCESS must be either 'true' or 'false'." exit 1 fi function poll_operation() { OPERATION_ID="$1" INDEX="$2" RESULT='' while [[ "$RESULT" != *"true"* ]]; do RESULT=$(gcurl -s -X GET "${HOSTNAME}/${OPERATION_ID}" | grep '"done"') sleep 5 done echo "${PREFIX}-${INDEX} created" } echo "Creating Endpoint Attachments..." for i in {0..49} do export ENDPOINT=${HOSTNAME}/projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments?endpointAttachmentId=${PREFIX}-$i OPERATION_ID=$(gcurl -s -X POST -H "Content-Type: application/json" -d '{"name": "'"projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments/${PREFIX}-$i"'","serviceAttachment": "'"${SERVICE_ATTACHMENT_ID_PREFIX}-$i"'", "endpointGlobalAccess":'${ENDPOINT_GLOBAL_ACCESS}'}' "${ENDPOINT}" | sed 's/ //' | grep -E '"name"' | sed -E 's/"name": "//' | sed 's/",//') poll_operation "$OPERATION_ID" "$i" & done wait echo "All endpoint attachments created." echo "[" > atlasEndpoints-${PREFIX}.json echo "Fetching IP Addresses..." for i in {0..49} do ENDPOINT=${HOSTNAME}/projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments/${PREFIX}-$i response=$(gcurl -s -X GET "${ENDPOINT}" | sed 's/ //g' | grep -E 'name|endpointIp' | sed 's/"endpointIp"/"IPAddress"/g' | sed -E 's/"name": "projects\/.+\/locations\/.+\/endpointAttachments\//"name": "/g' | sed '1 s/"/{"/1') if [ "$ENDPOINT_GLOBAL_ACCESS" = "true" ]; then echo "${response}" | sed '2 s/"/"}/4' >> atlasEndpoints-${PREFIX}.json else echo "${response}" | sed '2 s/"/"},/4' >> atlasEndpoints-${PREFIX}.json fi done sed -i '$s/,/]/' atlasEndpoints-${PREFIX}.json echo "Created atlasEndpoints-${PREFIX}.json"
- Ejecuta la secuencia de comandos shell. Para ejecutar la secuencia de comandos del shell, ve al directorio en el que la hayas guardado y, a continuación, ejecuta el siguiente comando:
sh setup_psc.sh
Esta secuencia de comandos genera un archivo JSON que contiene la lista de direcciones IP y sus nombres de endpoint de PSC correspondientes. El archivo JSON se guarda en el directorio en el que se ejecuta la secuencia de comandos shell.
- En la consola de gestión de Atlas, haz clic en Siguiente.
- Haz clic en Subir archivo JSON y, a continuación, sube el archivo JSON que se ha creado en el paso 13.
- Haz clic en Crear.
El proceso de configuración del endpoint puede tardar hasta 25 minutos en completarse. Si la configuración se realiza correctamente, el endpoint tendrá el estado
Available
. - Verifica tu conectividad privada. Para obtener más información, consulta Verificar la conectividad privada.
Obtener el ID de proyecto del directorio de servicios
Para obtener el ID del proyecto del directorio de servicios, puedes usar la API List Connections, como se muestra en el siguiente ejemplo.
Sintaxis
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Haz los cambios siguientes:
- CONNECTORS_PROJECT_ID: el ID de tu proyecto de Google Cloud en el que has creado la conexión.
Ejemplo
En este ejemplo se obtiene el ID de proyecto del directorio de servicios del proyecto de Google Cloud connectors-test
.
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
Al ejecutar este comando en el terminal, se muestra un resultado similar al siguiente:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
En la salida de ejemplo, para el proyecto de Google Cloud connectors-test
, el ID del proyecto del directorio de servicios es abcdefghijk-tp
.
Verificar la conectividad privada
Para verificar la conectividad privada a tus clústeres de Atlas, haz lo siguiente:
- En la consola de gestión de Atlas, abre la página Database Deployments (Despliegues de bases de datos).
- Desplázate hasta el clúster que quieras y haz clic en Conectar. Se abrirá el cuadro de diálogo Conectar con <CLUSTER_NAME>.
- En Tipo de conexión, haz clic en Endpoint privado.
- En el menú desplegable Elige un endpoint privado, selecciona el prefijo del endpoint privado que habías introducido en la interfaz de usuario de Atlas.
- Haz clic en Elegir un método de conexión.
- Haz clic en Drivers (Controladores) en la sección Connect to your application (Conectar con tu aplicación). Este paso consiste en obtener la cadena de conexión
srv
. - Copia la
srv
cadena de conexión de la sección Añade la cadena de conexión al código de tu aplicación.Formato de la cadena
srv
:mongodb+srv://{cluster-name}-pl-{index}.{unique-pin}.mongodb.net
. - Crea una conexión MongoDB con esta cadena
srv
como nombre de host. Para obtener más información, consulta el artículo sobre cómo configurar un conector de MongoDB.La conexión se creará correctamente.