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

Cette page explique comment activer la connectivité depuis Integration Connectors vers 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 pour 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 Network access (Accès réseau) du projet, puis sélectionnez Private endpoint (Point de terminaison privé).
  4. Sélectionnez Dedicated Cluster (Cluster dédié), puis cliquez sur Add private endpoint (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 Atlas, puis cliquez sur Next (Suivant).

    Il s'agit de la région Google Cloud dans laquelle votre cluster Atlas est créé. Elle doit correspondre à celle du projet Google Cloud dans lequel vous créez vos connexions. Pour obtenir la liste de toutes les régions où Integration Connectors est disponible, consultez Emplacements.

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

    Ce texte est ajouté en tant que préfixe à tous les noms de points de terminaison et peut servir à identifier les points de terminaison privés que vous avez créés.

  11. Installez l'interface de ligne de commande (CLI) gcloud. Pour en savoir plus, consultez Installer la 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
    • REGION
    • 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 cela, 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 points de terminaison PSC correspondants. Le fichier JSON est enregistré dans le répertoire où le script shell est exécuté.

  14. Cliquez sur Next (Suivant) dans la console de gestion Atlas.
  15. Cliquez sur Upload JSON file (Importer un fichier JSON), puis importez le fichier JSON créé à l'étape 13.
  16. Cliquez sur Create (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 Vérifier la connectivité privée.

Obtenir l'ID de projet de l'annuaire des services

Pour obtenir l'ID de projet de l'annuaire des 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 l'élément suivant :

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

Exemple

Cet exemple obtient l'ID de projet de l'annuaire des 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 sur le terminal génère un résultat semblable au suivant :

.....
{
  "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 résultat, pour le projet Google Cloud connectors-test, l'ID de projet de l'annuaire des 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 Atlas, ouvrez la page Database Deployments (Déploiements de bases de données).
  2. Faites défiler la page jusqu'au cluster souhaité, puis cliquez sur Connect (Connecter). La boîte de dialogue Connect to <CLUSTER_NAME> (Se connecter à <NOM_CLUSTER>) s'ouvre.
  3. Cliquez sur Private Endpoint (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 Choose a private endpoint (Sélectionner un point de terminaison privé).
  5. Cliquez sur Choose a connection method (Choisir une méthode de connexion).
  6. Cliquez sur Drivers (Pilotes) dans la section Connect to your application (Se connecter à votre application). Cette étape permet d'obtenir la chaîne de connexion srv.
  7. Dans la section Add your connection string into your application code (Ajouter votre chaîne de connexion dans le code de votre application), copiez la chaîne de connexion srv.

    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 Configurer un connecteur MongoDB.

    La connexion doit être créée.