Exemple: Connectivité privée pour un cluster Atlas

Cette page explique comment activer la connectivité entre Integration Connectors et 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 une connectivité privée pour un cluster Atlas, procédez comme suit:

  1. Connectez-vous à votre console de gestion Versa 3.
  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 Suivant.
  6. Sélectionnez une région 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 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 dans l'environnement d'exécution Integration Connectors. Pour en savoir plus, consultez Obtenir l'ID de projet de l'annuaire 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 des 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 en savoir plus, consultez Installer la gcloud CLI.
  12. Copiez le script shell suivant et enregistrez-le 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
    
    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. 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 des points 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 Versa 3.
  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 réussit, 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 projet du répertoire de service 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 répertoire de service est abcdefghijk-tp.

Vérifier la connectivité privée

Pour vérifier la connectivité privée à 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. La boîte de dialogue Se connecter à <NOM_CLUSTER> s'ouvre.
  3. Cliquez sur Point de terminaison privé pour définir 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 Pilotes dans la section Associer à votre application. Cette étape consiste à obtenir la chaîne de connexion srv.
  7. Copiez la chaîne de connexion srv de la section Ajoutez 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.