Esempio: 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:

  1. Accedi alla console di gestione Atlas.
  2. Apri il progetto Atlas per il quale devi stabilire la connettività di rete.
  3. Apri la pagina Accesso alla rete per il progetto e seleziona Endpoint privato.
  4. Seleziona Cluster dedicato, quindi fai clic su Aggiungi endpoint privato.

    Viene visualizzata la finestra di dialogo per scegliere un provider cloud.

  5. Seleziona Google Cloud e fai clic su Avanti.
  6. 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à.

  7. 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.
  8. Nel campo Nome VPC, inserisci default.
  9. Nel campo Nome subnet, inserisci default.
  10. 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.

  11. Installa l'interfaccia a riga di comando di gcloud. Per maggiori informazioni, consulta Installare gcloud CLI.
  12. 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"
  13. 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.

  14. Fai clic su Avanti nella console di gestione di Versa 3.
  15. Fai clic su Carica file JSON, poi carica il file JSON creato nel passaggio 13.
  16. 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.

  17. 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:

  1. Nella console di gestione di Atlas, apri la pagina Deployment di database.
  2. Scorri fino al cluster richiesto e fai clic su Connetti. Viene visualizzata la finestra di dialogo Connetti a <CLUSTER_NAME>.
  3. Fai clic su Endpoint privato per il tipo di connessione.
  4. Seleziona il prefisso dell'endpoint privato che hai inserito nell'interfaccia utente di Atlas dal menu a discesa Scegli un endpoint privato.
  5. Fai clic su Scegli un metodo di connessione.
  6. Fai clic su Driver nella sezione Collega l'applicazione. Questo passaggio consente di ottenere la stringa di connessione srv.
  7. 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.

  8. 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.