예시: Atlas 클러스터의 비공개 연결
이 페이지에서는 Integration Connectors에서 Google Cloud 내부의 비공개 네트워크에서 실행되는 MongoDB Atlas 클러스터로 연결을 사용 설정하는 방법을 설명합니다.
Atlas 클러스터의 비공개 연결 구성
Atlas 클러스터의 비공개 연결을 구성하려면 다음을 수행합니다.
- Atlas 관리 콘솔에 로그인합니다.
- 네트워크 연결을 설정해야 하는 Atlas 프로젝트를 엽니다.
- 프로젝트의 네트워크 액세스 페이지를 연 후 비공개 엔드포인트를 선택합니다.
- 전용 클러스터를 선택한 후 비공개 엔드포인트 추가를 클릭합니다.
그러면 클라우드 제공업체를 선택하는 대화상자가 열립니다.
- Google Cloud를 선택한 후 다음을 클릭합니다.
- Atlas 리전을 선택한 후 다음을 클릭합니다.
이것은 Atlas 클러스터가 생성된 Google Cloud 리전이며, 연결을 만드는 Google Cloud 프로젝트의 리전과 동일해야 합니다. 지원되는 모든 Integration Connectors 리전 목록은 위치를 참조하세요.
- Google Cloud 프로젝트 ID를 입력합니다. 이것은 Integration Connectors 런타임에서 가져온 서비스 디렉터리의 프로젝트 ID입니다. 자세한 내용은 서비스 디렉터리의 프로젝트 ID 가져오기를 참조하세요.
- VPC 이름 필드에
default
를 입력합니다. - 서브넷 이름 필드에
default
를 입력합니다. - 비공개 서비스 연결 엔드포인트 프리픽스 필드에 프리픽스를 입력합니다.
이 텍스트는 모든 엔드포인트 이름에 프리픽스로 추가되며 생성된 비공개 엔드포인트를 식별하는 데 사용될 수 있습니다.
gcloud
CLI(명령줄 인터페이스)를 설치합니다. 자세한 내용은 gcloud CLI 설치를 참조하세요.- 다음 셸 스크립트를 복사하여 로컬 시스템에
setup_psc.sh
로 저장합니다.스크립트에서 다음 변수에 적절한 값을 설정합니다.
- 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"
- 셸 스크립트를 실행합니다. 셸 스크립트를 실행하려면 스크립트를 저장한 디렉터리로 이동한 후 다음 명령어를 실행합니다.
sh setup_psc.sh
이 스크립트는 IP 주소 목록과 해당 PSC 엔드포인트 이름이 포함된 JSON 파일을 생성합니다. JSON 파일은 셸 스크립트가 실행되는 디렉터리에 저장됩니다.
- Atlas 관리 콘솔에서 다음을 클릭합니다.
- JSON 파일 업로드를 클릭한 후 13단계에서 만든 JSON 파일을 업로드합니다.
- 만들기를 클릭합니다.
엔드포인트 설정 프로세스를 완료하는 데 최대 25분이 걸릴 수 있으며 설정이 성공하면 엔드포인트가
Available
상태가 됩니다. - 비공개 연결을 확인합니다. 자세한 내용은 비공개 연결 확인을 참조하세요.
서비스 디렉터리의 프로젝트 ID 가져오기
서비스 디렉터리의 프로젝트 ID를 가져오려면 다음 예시와 같이 List Connections API를 사용할 수 있습니다.
구문
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"
다음을 바꿉니다.
- CONNECTORS_PROJECT_ID: 연결을 만든 Google Cloud 프로젝트의 ID
예
이 예시에서는 connectors-test
Google Cloud 프로젝트에 대한 서비스 디렉터리의 프로젝트 ID를 가져옵니다.
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"
터미널에서 이 명령어를 실행하면 다음과 비슷한 출력이 표시됩니다.
..... { "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 } }, ....
샘플 출력에서 connectors-test
Google Cloud 프로젝트의 서비스 디렉터리 프로젝트 ID는 abcdefghijk-tp
입니다.
비공개 연결 확인
Atlas 클러스터에 대한 비공개 연결을 확인하려면 다음을 수행합니다.
- Atlas 관리 콘솔에서 데이터베이스 배포 페이지를 엽니다.
- 필요한 클러스터로 스크롤한 후 연결을 클릭합니다. 그러면 <CLUSTER_NAME>에 연결 대화상자가 열립니다.
- 연결 유형으로 비공개 엔드포인트를 클릭합니다.
- 비공개 엔드포인트 선택 드롭다운에서 Atlas UI에 입력한 비공개 엔드포인트 프리픽스를 선택합니다.
- 연결 방법 선택을 클릭합니다.
- 애플리케이션에 연결 섹션에서 드라이버를 클릭합니다. 이 단계에서는
srv
연결 문자열을 가져옵니다. - 연결 문자열을 애플리케이션 코드에 추가 섹션에서
srv
연결 문자열을 복사합니다.srv
문자열 형식은mongodb+srv://{cluster-name}-pl-{index}.{unique-pin}.mongodb.net
입니다. - 이
srv
문자열을 호스트 이름으로 사용하여 MongoDB 연결을 만듭니다. 자세한 내용은 MongoDB 커넥터 구성을 참조하세요.연결이 성공적으로 생성됩니다.