이 가이드 Terraform을 사용하여 제로 배포에서 전체 Atlas 배포서버 로 쉽게 이동할 수 있는 공식 Terraform MongoDB Atlas 모듈을 사용하여 엔터프라이즈급 MongoDBAtlas 환경을 배포하는 방법을 안내합니다.
각 모듈은 cloud 제공자와의 안전한 비공개 연결에 필요한 종속성과 함께 Atlas 리소스를 프로비저닝하는 재사용 가능한 빌딩 차단 입니다.
이 가이드 AWS, Azure 또는 Google Cloud에 다음 리소스를 배포 위한 예제를 제공합니다.
Atlas 프로젝트 및 샤딩된 클러스터.
PrivateLink 연결을 통한 클라우드 제공자 네트워킹.
cloud 저장 로 백업 내보내기 .
엔드 투 엔드 연결을 확인하기 위한 선택적 유효성 검사 가상 머신(현재 Google Cloud에서는 사용할 수 없음. 가상 머신은 향후 업데이트 에서 사용할 수 있음).
참고
전제 조건
이 튜토리얼을 시작하기 전에 다음 전제 조건이 있는지 확인하세요.
필수 도구
이 가이드 에 설명된 프로세스 진행하려면 다음 도구가 필요합니다.
Terraform(V 부터.1 9 이후)
mongosh ( 유효성 검사 단계에만 필요합니다. 유효성 검사 VM을 배포할 때
mongosh가 기본값 으로 설치됩니다)
인증 및 자격 증명
MongoDB Atlas
이 가이드 인증 에 Atlas 서비스 계정을 사용합니다. 서비스 계정은 프로그래밍 방식 액세스 에 권장되는 인증 방법입니다.
서비스 계정 자격 증명 환경 변수로 설정합니다.
export MONGODB_ATLAS_CLIENT_ID="<your-client-id>" export MONGODB_ATLAS_CLIENT_SECRET="<your-client-secret>" 참고
서비스 계정은 Terraform을 사용한 프로그래밍 방식의 액세스 에 권장되는 인증 방법입니다. 서비스 계정 설정에 대한 자세한 내용은 조직에 프로그래밍 방식 액세스 권한 부여를 참조하세요.
클라우드 제공자
다음 방법 중 하나를 사용하여 AWS 자격 증명 구성합니다.
환경 변수:
export AWS_ACCESS_KEY_ID="<your-access-key-id>" export AWS_SECRET_ACCESS_KEY="<your-secret-access-key>" AWS CLI 프로필: 를 실행하여
aws configureAWS CLI 에 대한 자격 증명 저장 .IAM 역할:AWS에서 실행 때 적절한 권한을 사용하여 인스턴스 또는 작업 에 IAM 역할 연결합니다.
참고
자세한 내용은 AWS IAM 인증을 참조하세요.
다음 방법 중 하나를 사용하여 Azure 자격 증명 구성합니다.
Azure CLI:
az login 서비스 주체 환경 변수:
export ARM_CLIENT_ID="<your-client-id>" export ARM_CLIENT_SECRET="<your-client-secret>" export ARM_SUBSCRIPTION_ID="<your-subscription-id>" export ARM_TENANT_ID="<your-tenant-id>"
참고
자세한 내용은 Azure 서비스 주체 액세스 설정 및 관리를 참조하세요.
다음 방법 중 하나를 사용하여 Google Cloud 자격 증명 구성합니다.
애플리케이션 기본 자격 증명:
gcloud auth application-default login 서비스 계정 키 파일:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json" 서비스 계정 가장:
service_account_email의 변수를terraform.tfvars가장할 서비스 계정의 이메일 로 설정합니다.
참고
자세한 내용은 GCP 액세스 관리를 참조하세요.
절차
예시 구성 파일 가져오기
Atlas 예시 리포지토리 에서 cloud 제공자 에 대한 전체 예시 다운로드하고 예시 디렉토리 로 이동합니다.
git clone https://github.com/terraform-mongodbatlas-modules/atlas-examples.git cd atlas-examples/aws/atlas-aws-module-complete
git clone https://github.com/terraform-mongodbatlas-modules/atlas-examples.git cd atlas-examples/azure/atlas-azure-module-complete
git clone https://github.com/terraform-mongodbatlas-modules/atlas-examples.git cd atlas-examples/gcp/atlas-gcp-module-complete
배포서버 변수를 구성합니다.
예시 terraform.tfvars 파일 복사하고 값을 입력합니다.
cp terraform.tfvars.example terraform.tfvars
다음 표에서는 필수 변수에 대해 설명합니다. 사용 가능한 변수의 전체 목록은 cloud 제공자 에 해당하는 예시 디렉토리 의 variables.tf 파일 참조하세요.
공통 변수
변수 | 설명 |
|---|---|
| MongoDB Atlas 조직 ID. 이를 찾으려면 Atlas UI 에서 Organization > Settings (으)로 이동하세요. |
| 새 Atlas 프로젝트 의 이름입니다. |
| Atlas cluster 의 이름입니다. |
| 클러스터 및 PrivateLink 엔드포인트가 배포된 리전 목록입니다. 아래에서 클라우드 제공자별 세부 정보를 참조하세요. |
클라우드 제공자별 변수
변수 | 설명 |
|---|---|
| 제공자 작업을 위한 프라이머리 AWS 리전 ( |
| 클러스터 샤드 의 Atlas 리전 이름( |
| 이 리전 에 있는 기존 VPC 의 ID . DNS 호스트 이름 및 DNS 확인이 VPC 에서 활성화되어 있어야 합니다. |
| PrivateLink 엔드포인트 배치에 사용되는 VPC 내의 서로 다른 가용영역에 있는 2개 이상의 비공개 서브넷 ID를 나열합니다. |
다음 예시 terraform.tfvars AWS에 대한 최소 를 보여줍니다.
atlas_org_id = "<YOUR_ATLAS_ORG_ID>" atlas_project_name = "my-atlas-project" atlas_cluster_name = "my-atlas-cluster" aws_region = "us-east-1" regions = [ { name = "US_EAST_1" vpc_id = "<YOUR_VPC_ID>" subnet_ids = ["<YOUR_SUBNET_ID_1>", "<YOUR_SUBNET_ID_2>"] } ]
변수 | 설명 |
|---|---|
| 비공개 엔드포인트, 백업 저장 및 선택적 유효성 검사 VM이 생성되는Azure 리소스 그룹입니다. 리소스 그룹이 이미 존재해야 합니다. |
| Azure 구독 ID 입니다. 생략하면 모듈은 Azure 자격 증명 의 기본값 구독 사용합니다. |
| 클러스터 샤드 의 Atlas 리전 이름( |
| 이 리전 의 Azure 위치 ( |
| 비공개 엔드포인트 및 유효성 검사 VM이 생성되는 Azure 서브넷 ID . |
다음 예시 terraform.tfvars Azure 에 대한 최소 를 보여줍니다.
atlas_org_id = "<YOUR_ATLAS_ORG_ID>" atlas_project_name = "my-atlas-project" atlas_cluster_name = "my-atlas-cluster" azure_resource_group_name = "<YOUR_RESOURCE_GROUP>" regions = [ { name = "US_EAST_2" azure_location = "eastus2" subnet_id = "<YOUR_SUBNET_ID>" } ]
변수 | 설명 |
|---|---|
| Google Cloud 프로젝트 ID. |
| Atlas 형식( |
| PSC 전달 규칙이 생성되는 하위 네트워크 |
다음 예시 Google Cloud에 대한 최소한의 terraform.tfvars 를 보여줍니다.
atlas_org_id = "<YOUR_ATLAS_ORG_ID>" atlas_project_name = "my-atlas-project" atlas_cluster_name = "my-atlas-cluster" gcp_project_id = "<YOUR_GCP_PROJECT_ID>" regions = [ { name = "US_EAST_4" subnetwork = "<YOUR_SUBNETWORK_SELF_LINK>" } ]
초기화 및 배포
다음 Terraform 명령을 실행하여 작업 디렉토리 초기화하고 인프라를 배포 .
terraform init terraform plan -var-file terraform.tfvars terraform apply -var-file terraform.tfvars
terraform init 필요한 제공자 및 모듈 플러그인을 다운로드합니다. terraform plan 은 생성될 리소스를 미리 봅니다. 신청하기 전에 계획을 주의 깊게 검토하세요.
terraform apply 가 완료되면 계정에 다음 리소스가 프로비저닝됩니다.
MongoDB Atlas: 조직 액세스, 새 프로젝트 및 멀티 리전 샤딩된 클러스터.
AWS IAM 역할: Atlas 클라우드 제공자 액세스를 위해 사용자의 AWS 계정과 상호 작용 하기 위해 맡는 역할 입니다.
AWS VPC 엔드포인트: 리전 하나의 VPC 엔드포인트로, 비공개의 안전한 연결을 위해 Atlas PrivateLink 서비스에 연결됩니다.
AWS S3 버킷: Atlas 백업 내보내기용 버킷입니다.
유효성 검사 VM(선택 사항, 기본값 으로 활성화됨):2 PrivateLink를 통한 Atlas 연결을 확인하기 위한 첫 번째 리전의 서브넷에 있는 EC 인스턴스 .
MongoDB Atlas: 조직 액세스, 새 프로젝트 및 멀티 리전 샤딩된 클러스터.
Azure 서비스 주체: Atlas 가 Azure 구독 과 상호 작용 데 사용하는 Azure AD 서비스 주체입니다.
Azure 비공개 엔드포인트: 리 리전 1개의 비공개 엔드포인트로, 비공개의 안전한 연결을 위해 Atlas PrivateLink 서비스에 연결됩니다.
Azure Storage 계정: Atlas 백업 내보내기를 위한 저장 계정 및 Blob 컨테이너 .
유효성 검사 VM(선택 사항, 기본값 으로 활성화됨): PrivateLink를 통한 Atlas 연결을 확인하기 위한 첫 번째 리전의 서브넷에 있는 Linux VM입니다.
MongoDB Atlas: 조직 액세스, 새 프로젝트 및 멀티 리전 샤딩된 클러스터.
GCP 액세스: Google Cloud 프로젝트 와 상호 작용 수 있는 권한이 부여된 Atlas 서비스 계정입니다.
PSC 전달 규칙: 리 리전 하나의 Google Cloud 전달 규칙 및 컴퓨팅 주소 , 비공개의 안전한 연결을 위해 PSC(Private Service Connect)를 통해 Atlas PrivateLink 서비스에 연결됩니다.
GCP Storage Bucket: Atlas 백업 내보내기를 위한 Google Cloud Storage 버킷입니다.
배포서버 서버 유효성 검사
예시 에서 생성하는 가상 머신(VM)을 사용하거나 PrivateLink 연결 문자열 사용하여 mongosh 에 직접 연결하여 배포서버 의 유효성을 검사할 수 있습니다.
가상 머신으로 연결 및 테스트
유효성 검사 VM을 배포한 경우( 기본값 으로 활성화되어 있음), 이를 사용하여 비공개 네트워크 내에서 Atlas 연결을 확인할 수 있습니다. VM에는 mongosh 이(가) 사전 설치되어 있고 연결 문자열 사전 구성되어 있습니다.
인스턴스 ID 및 액세스 명령에 대한
validation_vm출력을 확인합니다.terraform output validation_vm AWS 시스템 관리자 (SSM) 세션 관리자 통해 연결합니다(기본값, SSH 필요 없음):
aws ssm start-session --target <instance-id> 또는 를 설정하다
validation_vm_create_ec2_instance_connect_endpoint = true경우 EC2 인스턴스 연결을 통해 연결합니다.aws ec2-instance-connect ssh --instance-id <instance-id> --os-user ubuntu VM에서 유효성 검사 스크립트 실행하여 연결을 테스트합니다.
./validate-atlas 스크립트
mongosh가 연결할 수 있는지 확인하고 클러스터 에 대해 CRUD 작업을 실행합니다.
VM 이름 및 사용자 이름 에 대한
validation_vm출력을 확인합니다.terraform output validation_vm Retrieve the VM password:
terraform output -raw validation_vm_password Azure Portal의 Azure 직렬 콘솔을 통해 연결하거나, 로 SSH 키를 제공한 경우 Azure Bastion을 통해
validation_vm_ssh_key연결합니다.VM에서 유효성 검사 스크립트 실행하여 연결을 테스트합니다.
./validate-atlas 스크립트
mongosh가 연결할 수 있는지 확인하고 클러스터 에 대해 CRUD 작업을 실행합니다.
현재 Google Cloud 예시 유효성 검사 VM이 포함되어 있지 않습니다. 아래의 mongosh 연결 메서드를 사용하여 배포서버 확인합니다. 이 메서드가 성공적인 하려면 Google Cloud 하위 네트워크 중 하나에서 mongosh 를 실행 해야 합니다.
연결 및 테스트 mongosh
비공개 네트워크에 액세스 할 수 있는 모든 호스팅하다 에서 연결을 테스트할 수도 있습니다.
연결 문자열 조회합니다.
배포서버 완료되면 Terraform 출력에서 PrivateLink 연결 문자열 조회 .
terraform output connection_string 연결 문자열 비공개 엔드포인트 SRV 형식을 사용하고 PrivateLink 연결을 통해 트래픽을 라우팅합니다.
다음 명령을 실행하여
<connection-string>을terraform output connection_string명령의 값으로 바꿉니다.mongosh "<connection-string>" 연결 후 다음 명령을 실행 테스트 문서 쓰기 (write) 하고 조회 .
db.test.insertOne({ msg: "Hello Atlas" }) db.test.findOne()
성공적인 응답은 클러스터 에 연결할 수 있고 읽기 및 쓰기 (write) 작업을 허용한다는 의미입니다.
추가 리소스
Atlas 예제 리포지토리: AWS, Azure 및 Google Cloud에 대한 실행 가능한 완전하고 실행 가능한 Terraform 예제입니다.
Terraform- MongoDB Atlas 모듈: 사용 가능한 모든 모듈이 포함된 공식 Terraform 모듈 레지스트리 네임스페이스 .
Atlas Terraform 제공자: 전체 제공자 설명서입니다.
Terraform 시작하기: Terraform으로 기본 Atlas cluster 프로비저닝 위한 빠른 시작 가이드 .
Atlas 조직, 프로젝트 및 클러스터를 위한 지침: Atlas 인프라를 설계하기 위한 Atlas 아키텍처 센터 지침 .