Exemple: Connectivité privée pour un cluster MongoDB Atlas

Cette page explique comment activer la connectivité des Integration Connectors à votre cluster MongoDB Atlas exécuté sur un réseau privé dans Google Cloud.

Configurer la connectivité privée pour un cluster Atlas

Pour configurer la connectivité privée d'un cluster Atlas, procédez comme suit:

  1. Connectez-vous à la console de gestion Atlas.
  2. Ouvrez le projet Atlas pour lequel vous devez établir la connectivité réseau.
  3. Ouvrez la page Accès réseau du projet, puis sélectionnez Point de terminaison privé.
  4. Sélectionnez Cluster dédié, puis cliquez sur Ajouter un point de terminaison privé.

    La boîte de dialogue permettant de choisir un fournisseur de services cloud s'ouvre.

  5. Sélectionnez Google Cloud, puis cliquez sur Next (Suivant).
  6. Sélectionnez une région de l'atlas, puis cliquez sur Suivant.

    Il s'agit de la région Google Cloud dans laquelle votre cluster Atlas est créé. Elle doit être la même que celle du projet Google Cloud dans lequel vous créez vos connexions. Pour obtenir la liste de toutes les régions compatibles avec Integration Connectors, consultez la section Emplacements.

  7. Saisissez l'ID de projet Google Cloud. Il s'agit de l'ID de projet du répertoire de services de l'environnement d'exécution des Integration Connectors. Pour en savoir plus, consultez Obtenir l'ID de projet de l'annuaire des services.
  8. Dans le champ Nom du VPC, saisissez default.
  9. Dans le champ Nom du sous-réseau, saisissez default.
  10. Dans le champ Préfixe du point de terminaison Private Service Connect, saisissez un préfixe.

    Ce texte est ajouté en préfixe à tous les noms de point de terminaison et permet d'identifier les points de terminaison privés que vous avez créés.

  11. Installez la CLI (interface de ligne de commande) gcloud. Pour en savoir plus, consultez la section Installer gcloud CLI.
  12. Copiez et enregistrez le script shell suivant sous le nom setup_psc.sh sur votre système local.

    Définissez les valeurs appropriées pour les variables suivantes dans le script:

    • PROJECT_ID
    • RÉGION
    • 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"
  13. Exécutez le script shell. Pour exécuter le script shell, accédez au répertoire dans lequel vous l'avez enregistré, puis exécutez la commande suivante:
    sh setup_psc.sh

    Ce script génère un fichier JSON contenant la liste des adresses IP et les noms de point de terminaison PSC correspondants. Le fichier JSON est enregistré dans le répertoire où le script shell est exécuté.

  14. Cliquez sur Suivant dans la console de gestion Atlas.
  15. Cliquez sur Importer un fichier JSON, puis importez le fichier JSON créé à l'étape 13.
  16. Cliquez sur Créer.

    Le processus de configuration du point de terminaison peut prendre jusqu'à 25 minutes. Si la configuration aboutit, le point de terminaison est à l'état Available.

  17. Vérifiez votre connectivité privée. Pour en savoir plus, consultez Valider la connectivité privée.

Obtenir l'ID du projet du répertoire de services

Pour obtenir l'ID de projet du répertoire de services, vous pouvez utiliser l'API List Connections, comme illustré dans l'exemple suivant.

Syntaxe

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"

Remplacez les éléments suivants :

  • CONNECTORS_PROJECT_ID: ID de votre projet Google Cloud dans lequel vous avez créé votre connexion.

Exemple

Cet exemple obtient l'ID de projet du répertoire de services pour le projet 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'exécution de cette commande dans le terminal affiche un résultat semblable à celui-ci:

.....
{
  "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
      }
    },
....

Dans l'exemple de sortie, pour le projet Google Cloud connectors-test, l'ID de projet du répertoire de services est abcdefghijk-tp.

Vérifier la connectivité privée

Pour vérifier la connectivité privée à votre ou vos clusters Atlas, procédez comme suit:

  1. Dans la console de gestion d'Atlas, ouvrez la page Déploiements de base de données.
  2. Faites défiler la page jusqu'au cluster souhaité, puis cliquez sur Connecter. La boîte de dialogue Se connecter à <CLUSTER_NAME> s'ouvre.
  3. Cliquez sur Point de terminaison privé pour le type de connexion.
  4. Sélectionnez le préfixe de point de terminaison privé que vous avez saisi dans l'interface utilisateur d'Atlas dans le menu déroulant Choisir un point de terminaison privé.
  5. Cliquez sur Choisir une méthode de connexion.
  6. Cliquez sur Pilotes dans la section Se connecter à votre application. Cette étape permet d'obtenir la chaîne de connexion srv.
  7. Copiez la chaîne de connexion srv de la section Ajouter votre chaîne de connexion dans le code de votre application.

    Format de la chaîne srv: mongodb+srv://{cluster-name}-pl-{index}.{unique-pin}.mongodb.net.

  8. Créez une connexion MongoDB en utilisant cette chaîne srv comme nom d'hôte. Pour en savoir plus, consultez la section Configurer un connecteur MongoDB.

    La connexion devrait être créée.