Configurazione della connettività privata per un cluster Atlas
Questa pagina spiega come abilitare la connettività da Integration Connectors al tuo cluster MongoDB Atlas in esecuzione su una rete privata all'interno di Google Cloud.
Configurazione della connettività privata per un cluster Atlas
Per configurare la connettività privata per un cluster Atlas, segui questi passaggi:
- Accedi alla console di gestione Atlas.
- Apri il progetto Atlas per il quale devi stabilire la connettività di rete.
- Apri la pagina Accesso alla rete per il progetto e seleziona Endpoint privato.
- Seleziona Cluster dedicato, quindi fai clic su Aggiungi endpoint privato.
Viene visualizzata la finestra di dialogo per scegliere un provider cloud.
- Seleziona Google Cloud e fai clic su Avanti.
- Seleziona una regione dell'Atlante e fai clic su Avanti.
Questa è la regione Google Cloud in cui viene creato il cluster Atlas e deve essere la stessa del progetto Google Cloud in cui crei le connessioni. Per l'elenco di tutte le regioni di Integration Connector supportate, consulta Località.
- Inserisci l'ID progetto Google Cloud. Questo è l'ID progetto della directory dei servizi del runtime di Integration Connectors. Per maggiori informazioni, consulta Recuperare l'ID progetto della directory dei servizi.
- Nel campo Nome VPC, inserisci
default
. - Nel campo Nome subnet, inserisci
default
. - Nel campo Prefisso endpoint di Private Service Connect, inserisci un prefisso.
Questo testo è preceduto da un prefisso 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 di
gcloud
. Per maggiori informazioni, consulta Installare gcloud CLI. - Copia e salva il seguente script shell come
setup_psc.sh
nel tuo sistema locale.Imposta i valori appropriati per le seguenti variabili nello script:
- PROJECT_ID
- REGIONE
- PREFISSO
- 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 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"'"}' "${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 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' | sed '2 s/"/"},/4' >> atlasEndpoints-${PREFIX}.json 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, quindi esegui questo comando:
sh setup_psc.sh
Questo script genera un file JSON contenente l'elenco degli indirizzi IP e i nomi degli endpoint PSC corrispondenti. Il file JSON viene salvato nella directory in cui viene eseguito lo script shell.
- Fai clic su Avanti nella console di gestione di Versa 3.
- Fai clic su Carica file JSON, poi carica il file JSON creato nel passaggio 13.
- Fai clic su Crea.
Il processo di configurazione dell'endpoint potrebbe richiedere fino a 25 minuti e, se la configurazione ha esito positivo, l'endpoint sarà nello stato
Available
. - Verifica la tua 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 di 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 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 nel terminale visualizza 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 dei servizi è abcdefghijk-tp
.
Verifica la connettività privata
Per verificare la connettività privata ai tuoi cluster Atlas:
- Nella console di gestione di Atlas, apri la pagina 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 Collega l'applicazione. Questo passaggio consente di 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 maggiori informazioni, consulta Configurare un connettore MongoDB.La connessione dovrebbe essere stata creata.