Esempio: connettività privata per un cluster MongoDB Atlas
Questa pagina spiega come abilitare la connettività da Integration Connectors al tuo cluster MongoDB Atlas in esecuzione su una rete privata in Google Cloud.
Configurare la connettività privata per un cluster Atlas
Per configurare la connettività privata per un cluster Atlas:
- Accedi alla console di gestione di Atlas.
- Apri il progetto Atlas per cui devi stabilire la connettività di rete.
- Apri la pagina Accesso alla rete per il progetto e seleziona Endpoint privato.
- Seleziona Cluster dedicato e poi fai clic su Aggiungi endpoint privato.
Si aprirà la finestra di dialogo per scegliere un provider cloud.
- Seleziona Google Cloud e poi fai clic su Avanti.
- Seleziona una regione dell'atlante e poi fai clic su Avanti.
Si tratta della regione Google Cloud in cui viene creato il cluster Atlas e deve essere la stessa regione del progetto Google Cloud in cui crei le connessioni. Per l'elenco di tutte le regioni di Integration Connectors supportate, consulta Località.
- Inserisci l'ID progetto Google Cloud. Si tratta dell'ID progetto della directory dei servizi dal runtime di Integration Connectors. Per ulteriori informazioni, consulta Ottenere l'ID progetto della directory dei servizi.
- Nel campo Nome VPC, inserisci
default
. - Nel campo Nome sottorete, inserisci
default
. - Nel campo Prefisso endpoint Private Service Connect, inserisci un prefisso.
Questo testo viene anteposto a tutti i nomi degli endpoint e può essere utilizzato per identificare gli endpoint privati che hai creato.
- Installa l'interfaccia a riga di comando
gcloud
. Per ulteriori informazioni, consulta Installare gcloud CLI. - Copia e salva il seguente script shell come
setup_psc.sh
sul tuo sistema locale.Imposta i valori appropriati per le seguenti variabili nello script:
- PROJECT_ID
- REGIONE
- 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"
- Esegui lo script shell. Per eseguire lo script shell, vai alla directory in cui hai salvato lo script e poi esegui il seguente comando:
sh setup_psc.sh
Questo script genera un file JSON contenente l'elenco degli indirizzi IP e i relativi nomi degli endpoint PSC. Il file JSON viene salvato nella directory in cui viene eseguito lo script shell.
- Fai clic su Avanti nella console di gestione di Atlas.
- Fai clic su Carica file JSON e carica il file JSON creato nel passaggio 13.
- Fai clic su Crea.
Il completamento della procedura di configurazione dell'endpoint potrebbe richiedere fino a 25 minuti e, se la configurazione è riuscita, l'endpoint sarà nello stato
Available
. - Verifica la connettività privata. Per saperne di più, vedi Verificare la connettività privata.
Recupera l'ID progetto della directory dei servizi
Per ottenere l'ID progetto della directory dei servizi, puoi utilizzare l'API List Connections come mostrato nell'esempio seguente.
Sintassi
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"
Sostituisci quanto segue:
- CONNECTORS_PROJECT_ID: l'ID del progetto Google Cloud in cui hai creato la connessione.
Esempio
Questo esempio recupera l'ID progetto della directory dei servizi per il progetto 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"
L'esecuzione di questo comando sul terminale mostra un output simile al seguente:
..... { "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 } }, ....
Nell'output di esempio, per il progetto Google Cloud connectors-test
, l'ID progetto della directory del servizio è abcdefghijk-tp
.
Verifica la connettività privata
Per verificare la connettività privata ai tuoi cluster Atlas:
- Nella console di gestione di Atlas, apri la pagina Database Deployments (Deployment di database).
- Scorri fino al cluster richiesto e fai clic su Connetti. Viene visualizzata la finestra di dialogo Connetti a <CLUSTER_NAME>.
- Fai clic su Endpoint privato per il tipo di connessione.
- Seleziona il prefisso dell'endpoint privato che hai inserito nell'interfaccia utente di Atlas dal menu a discesa Scegli un endpoint privato.
- Fai clic su Scegli un metodo di connessione.
- Fai clic su Driver nella sezione Connetti all'applicazione. Questo passaggio serve per ottenere la stringa di connessione
srv
. - Copia la stringa di connessione
srv
dalla sezione Aggiungi la stringa di connessione al codice dell'applicazione.Formato della stringa
srv
:mongodb+srv://{cluster-name}-pl-{index}.{unique-pin}.mongodb.net
. - Crea una connessione MongoDB utilizzando questa stringa
srv
come nome host. Per ulteriori informazioni, consulta la pagina Configurare un connettore MongoDB.La connessione dovrebbe essere stata creata correttamente.