Exemple: Connectivité privée pour un cluster Atlas

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

Configurer une connectivité privée pour un cluster Atlas

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

  1. Connectez-vous à votre console de gestion Atlas.
  2. Ouvrez le projet Atlas pour lequel vous devez établir la connectivité réseau.
  3. Ouvrez la page Accès au 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 Suivant.
  6. Sélectionnez une région Atlas, puis cliquez sur Next (Suivant).

    Il s'agit de la région Google Cloud où votre cluster Atlas est créé. Il doit s'agir de la même région que celle le projet Google Cloud dans lequel vous créez vos connexions. Pour le liste de toutes les régions d'Integration Connector compatibles, consultez la section Emplacements.

  7. Saisissez l'ID du projet Google Cloud. Il s'agit de l'ID de projet du répertoire de service provenant de l'environnement d'exécution Integration Connectors. Pour en savoir plus, consultez Obtenir l'ID de projet du répertoire de service.
  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 précédé de tous les noms de points de terminaison et peut être utilisé pour identifier les points de terminaison privés que vous avez créés.

  11. Installez la CLI gcloud (interface de ligne de commande). Pour plus d'informations, consultez la page 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
    • 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 avez enregistré le script, 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 adresses Noms des points de terminaison PSC. 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 des points de terminaison peut prendre jusqu'à 25 minutes, et si la configuration est réussi, 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 de services

Pour obtenir l'ID de projet de l'annuaire 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 du projet Google Cloud dans lequel vous avez créé votre connexion.

Exemple

Cet exemple obtient l'ID de l'annuaire 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 sur 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 résultat, pour le projet Google Cloud connectors-test, l'ID du projet du répertoire de service 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 Déploiements de bases de données.
  2. Faites défiler la page jusqu'au cluster requis, puis cliquez sur Connecter. Vous accédez ainsi Boîte de dialogue Se connecter à <CLUSTER_NAME>.
  3. Cliquez sur Point de terminaison privé pour le type de connexion.
  4. Sélectionnez le préfixe du point de terminaison privé que vous avez saisi dans l'interface utilisateur d'Atlas dans la liste déroulante Sélectionner un point de terminaison privé.
  5. Cliquez sur Sélectionner une méthode de connexion.
  6. Cliquez sur Drivers (Pilotes) dans la section Connect to your application (Se connecter à votre application). Cette étape consiste à obtenir le srv chaîne de connexion.
  7. Copiez la chaîne de connexion srv de la section Add your connection string into your application code (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 Configurez un connecteur MongoDB.

    La connexion devrait être correctement créée.