Exemplo: conetividade privada para um cluster do MongoDB Atlas
Esta página explica como ativar a conetividade dos Integration Connectors ao seu cluster do MongoDB Atlas em execução numa rede privada no Google Cloud.
Configure a conetividade privada para um cluster do Atlas
Para configurar a conetividade privada para um cluster do Atlas, faça o seguinte:
- Inicie sessão na consola de gestão do Atlas.
- Abra o projeto do Atlas para o qual precisa de estabelecer a conetividade de rede.
- Abra a página Acesso à rede do projeto e, de seguida, selecione Ponto final privado.
- Selecione Cluster dedicado e, de seguida, clique em Adicionar ponto final privado.
Esta ação abre a caixa de diálogo para escolher um fornecedor de nuvem.
- Selecione Google Cloud e, de seguida, clique em Seguinte.
- Selecione uma região do Atlas e, de seguida, clique em Seguinte.
Esta é a região do Google Cloud onde o cluster do Atlas é criado e deve ser a mesma região do projeto do Google Cloud onde cria as suas ligações. Para ver a lista de todas as regiões do conector de integração suportadas, consulte Localizações.
- Introduza o ID do projeto do Google Cloud. Este é o ID do projeto do diretório de serviços do tempo de execução dos Integration Connectors. Para mais informações, consulte o artigo Obtenha o ID do projeto do diretório de serviços.
- No campo Nome da VPC, introduza
default
. - No campo Nome da sub-rede, introduza
default
. - No campo Prefixo do ponto final do Private Service Connect, introduza um prefixo.
Este texto é adicionado como prefixo a todos os nomes dos pontos finais e pode ser usado para identificar os pontos finais privados que criou.
- Instale a
gcloud
CLI (interface de linhas de comando). Para mais informações, consulte o artigo Instale a CLI gcloud. - Copie e guarde o seguinte script de shell como
setup_psc.sh
no seu sistema local.Defina valores adequados para as seguintes variáveis no 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"
- Execute o script shell. Para executar o script de shell, aceda ao diretório no qual guardou o script
e, de seguida, execute o seguinte comando:
sh setup_psc.sh
Este script gera um ficheiro JSON com a lista de endereços IP e os respetivos nomes de pontos finais do PSC. O ficheiro JSON é guardado no diretório onde o script de shell é executado.
- Clique em Seguinte na consola de gestão do Atlas.
- Clique em Carregar ficheiro JSON e, de seguida, carregue o ficheiro JSON criado no passo 13.
- Clique em Criar.
O processo de configuração do ponto final pode demorar até 25 minutos a ser concluído e, se a configuração for bem-sucedida, o ponto final vai estar no estado
Available
. - Valide a sua conetividade privada. Para mais informações, consulte o artigo Valide a conetividade privada.
Obtenha o ID do projeto do diretório de serviços
Para obter o ID do projeto do diretório de serviços, pode usar a API List Connections, conforme mostrado no exemplo seguinte.
Sintaxe
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"
Substitua o seguinte:
- CONNECTORS_PROJECT_ID: o ID do seu projeto do Google Cloud onde criou a ligação.
Exemplo
Este exemplo obtém o ID do projeto do diretório de serviços para o projeto do 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"
A execução deste comando no terminal apresenta um resultado semelhante ao seguinte:
..... { "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 } }, ....
No resultado de exemplo, para o projeto do Google Cloud, o ID do projeto do diretório de serviços é abcdefghijk-tp
.connectors-test
Valide a conetividade privada
Para validar a conetividade privada aos seus clusters do Atlas, faça o seguinte:
- Na consola de gestão do Atlas, abra a página Implementações de bases de dados.
- Desloque a página até ao cluster necessário e, de seguida, clique em Associar. Esta ação abre a caixa de diálogo Associar a <CLUSTER_NAME>.
- Clique em Ponto final privado para o tipo de ligação.
- Selecione o prefixo do ponto final privado que introduziu na IU do Atlas no menu pendente Escolha um ponto final privado.
- Clique em Escolher um método de associação.
- Clique em Drivers na secção Associe à sua aplicação. Este passo destina-se a obter a string de ligação
srv
. - Copie a
srv
string de ligação da secção Adicione a string de ligação ao código da sua aplicação.Formato da string
srv
:mongodb+srv://{cluster-name}-pl-{index}.{unique-pin}.mongodb.net
. - Crie uma ligação MongoDB usando esta string
srv
como o nome de anfitrião. Para mais informações, consulte o artigo Configure um conetor do MongoDB.A associação deve ser criada com êxito.