Contoh: Konektivitas pribadi untuk cluster Atlas

Halaman ini menjelaskan cara mengaktifkan konektivitas dari Integration Connectors ke cluster MongoDB Atlas yang berjalan di jaringan pribadi dalam Google Cloud.

Mengonfigurasi konektivitas pribadi untuk cluster Atlas

Untuk mengonfigurasi konektivitas pribadi untuk cluster Atlas, lakukan hal berikut:

  1. Login ke konsol pengelolaan Atlas.
  2. Buka proyek Versa 3 yang konektivitas jaringannya perlu Anda buat.
  3. Buka halaman Akses jaringan untuk project, lalu pilih Endpoint pribadi.
  4. Pilih Cluster Khusus, lalu klik Add private endpoint.

    Tindakan ini akan membuka dialog untuk memilih penyedia cloud.

  5. Pilih Google Cloud, lalu klik Next.
  6. Pilih Region Atlas, lalu klik Next.

    Ini adalah region Google Cloud tempat cluster Atlas Anda dibuat, dan harus sama dengan region Google Cloud tempat Anda membuat koneksi. Untuk daftar semua region Integration Connector yang didukung, lihat Locations.

  7. Masukkan ID project Google Cloud. Ini adalah project ID direktori layanan dari runtime Konektor Integrasi. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan project ID direktori layanan.
  8. Di kolom VPC name, masukkan default.
  9. Di kolom Subnet name, masukkan default.
  10. Di kolom Private service connect endpoint prefiks, masukkan awalan.

    Teks ini ditambahkan ke semua nama endpoint dan dapat digunakan untuk mengidentifikasi endpoint pribadi yang telah Anda buat.

  11. Instal CLI gcloud (antarmuka command line). Untuk mengetahui informasi selengkapnya, baca Menginstal gcloud CLI.
  12. Salin dan simpan skrip shell berikut sebagai setup_psc.sh di sistem lokal Anda.

    Tetapkan nilai yang sesuai untuk variabel berikut dalam skrip:

    • PROJECT_ID
    • WILAYAH
    • 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. Jalankan skrip shell. Untuk menjalankan skrip shell, buka direktori tempat Anda menyimpan skrip, lalu jalankan perintah berikut:
    sh setup_psc.sh

    Skrip ini, menghasilkan file JSON yang berisi daftar alamat IP dan nama endpoint PSC yang sesuai. File JSON disimpan di direktori tempat skrip shell dijalankan.

  14. Klik Next di konsol pengelolaan Versa 3.
  15. Klik Upload file JSON, lalu upload file JSON yang dibuat di langkah 13.
  16. Klik Create.

    Proses penyiapan endpoint mungkin memerlukan waktu hingga 25 menit, dan jika penyiapan berhasil, endpoint akan berada dalam status Available.

  17. Verifikasi konektivitas pribadi Anda. Untuk mengetahui informasi selengkapnya, lihat Memverifikasi konektivitas pribadi.

Mendapatkan project ID direktori layanan

Untuk mendapatkan project ID direktori layanan, Anda dapat menggunakan List Connections API seperti yang ditunjukkan dalam contoh berikut.

Sintaksis

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"

Ganti kode berikut:

  • CONNECTORS_PROJECT_ID: ID project Google Cloud tempat Anda membuat koneksi.

Contoh

Contoh ini mendapatkan project ID dari direktori layanan untuk project 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"

Menjalankan perintah ini di terminal akan menampilkan output yang mirip dengan berikut ini:

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

Dalam contoh output, untuk project Google Cloud connectors-test, project ID direktori layanan adalah abcdefghijk-tp.

Memverifikasi konektivitas pribadi

Untuk memverifikasi konektivitas pribadi ke cluster Versa 3 Anda, lakukan hal berikut:

  1. Di konsol pengelolaan Versa 3, buka halaman Database Deployments.
  2. Scroll ke cluster yang diperlukan, lalu klik Hubungkan. Tindakan ini akan membuka dialog Connect to <CLUSTER_NAME>.
  3. Klik Endpoint Pribadi untuk jenis koneksi.
  4. Pilih awalan titik akhir pribadi yang telah Anda masukkan di UI Versa 3 dari drop-down Pilih titik akhir pribadi.
  5. Klik Choose a connection method.
  6. Klik Driver di bagian Connect to your application. Langkah ini adalah untuk mendapatkan string koneksi srv.
  7. Salin string koneksi srv dari bagian Tambahkan string koneksi ke kode aplikasi Anda.

    Format string srv: mongodb+srv://{cluster-name}-pl-{index}.{unique-pin}.mongodb.net.

  8. Buat koneksi MongoDB dengan menggunakan string srv ini sebagai nama host. Untuk informasi selengkapnya, lihat Mengonfigurasi konektor MongoDB.

    Koneksi akan berhasil dibuat.