서버리스 인스턴스에 대한 비공개 엔드포인트 관리
이 페이지의 내용
Atlas Kubernetes Operator 는 다음 플랫폼에서 서버리스 인스턴스에 대한 비공개 엔드포인트 관리를 지원합니다.
를 사용하는Amazon Web Services AWS PrivateLink 기능.
Azure Private Link 기능을 사용하는 Azure .
참고
서버리스 인스턴스는 Private Service Connect를 지원하지 않습니다. Private Service Connect를 설정해야 하는 경우 전용 클러스터를 사용하세요.
MongoDB 는 시간이 지남에 따라 서버리스 인스턴스에서 더 많은 구성 및 기능에 대한 지원 을 추가할 계획입니다. 향후 MongoDB 가 서버리스 인스턴스에 대해 지원 계획인 기능을 학습 보려면 서버리스 인스턴스 제한을 참조하세요.
시작하기 전에 비공개 엔드포인트 관리를 참조하세요.
절차
클라이언트가 비공개 엔드포인트 를 사용하여 Atlas Serverless 인스턴스에 연결할 활성화 하려면 다음을 수행합니다.
spec.serverlessSpec.privateEndpoints
매개변수를 지정합니다.
AtlasDeployment
사용자 spec.serverlessSpec.privateEndpoints
지정 리소스 에 매개 변수를 지정합니다. spec.serverlessSpec.privateEndpoints.name
필드에 비공개 엔드포인트를 식별하는 고유 레이블을 지정하고 다음 명령을 실행합니다.
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: atlas-deployment-serverless spec: projectRef: name: my-project serverlessSpec: name: serverless-instance tags: - key: "environment" value: "production" providerSettings: providerName: SERVERLESS backingProviderName: AWS regionName: US_EAST_1 privateEndpoints: - name: "{unique-private-endpoint-label}" EOF
Atlas 가 VPC 리소스를 생성합니다. 이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다.
비공개 엔드포인트의 서비스 이름을 찾습니다.
다음 명령을 실행합니다:
kubectl get atlasdeployment atlas-deployment-serverless -o yaml AtlasDeployment
사용자 지정 리소스의status.serverlessPrivateEndpoints.EndpointServiceName
필드에 있는 각 비공개 엔드포인트에 대한 서비스 이름 문자열을 확인합니다.
Amazon Web Services Atlas CLI를 사용하여 각 비공개 엔드포인트를 구성합니다.
애플리케이션 VPC 인터페이스 엔드포인트를 생성하려면 다음을 수행합니다.
다음 명령을 복사합니다.
aws ec2 create-vpc-endpoint --vpc-id {your-application-vpc-id} --region {aws-region} --service-name {service-name-string} --vpc-endpoint-type Interface --subnet-ids {your-application-subnet-ids} 다음 자리 표시자를 Amazon Web Services VPC 에 대한 세부 정보로 바꿉니다.
your-application-vpc-id
피어링 AWS VPC를 식별하는 고유 문자열입니다. 이 값은 AWS 계정의 VPC 대시보드에서 찾을 수 있습니다.
aws-region
비공개 엔드포인트의 Amazon Web Services 리전 을 식별하는 레이블입니다.
service-name-string
비공개 엔드포인트의 서비스 이름을 식별하는 고유 문자열입니다.
AtlasDeployment
사용자 지정 리소스의status.serverlessPrivateEndpoints.EndpointServiceName
필드 내에서 이 값을 찾습니다.your-application-subnet-ids
Amazon Web Services VPC 가 사용하는 서브넷을 식별하는 고유 문자열입니다. 각 서브넷을 공백으로 구분하세요. Amazon Web Services 계정의 Subnet 대시보드에서 이러한 값을 찾을 수 있습니다.
중요: 서브넷을 하나 이상 지정해야 합니다. 그렇지 않으면Amazon Web Services VPC는 에 인터페이스 엔드포인트 를 프로비저닝하지 않습니다. VPC 의 클라이언트가 비공개 엔드포인트로 트래픽을 전송하려면 인터페이스 엔드포인트 가 필요합니다.
Amazon Web Services 를 CLI 사용하여명령을 실행합니다.
출력에서
VpcEndpointId
값을 확인합니다.예시
"VpcEndpoint": { "VpcEndpointId": "vpce-XXXXXX", "VpcEndpointType": "Interface", "VpcId": "vpc-XXXXX", "ServiceName": "com.amazonaws.vpce.{aws-region}.vpce-svc-XXXX", "State": "pendingAcceptance",
자세한 내용 은 인터페이스 엔드포인트 생성 을 참조하세요. Amazon Web Services 문서에서 확인 가능합니다.
spec.serverlessSpec.privateEndpoints
매개변수를 업데이트합니다.
AtlasDeployment
사용자 spec.serverlessSpec.privateEndpoints
지정 리소스 에 대한 매개 변수를 업데이트합니다. vpce-id
를 비공개 엔드포인트의 VpcEndpointId
값으로 바꾸고 다음 명령을 실행합니다.
참고
AWS 계정의 VPC 대시보드에서 피어 AWS VPC 의 고유 식별자를 찾을 수 있습니다.
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: atlas-deployment-serverless spec: projectRef: name: my-project serverlessSpec: name: serverless-instance tags: - key: "environment" value: "production" providerSettings: providerName: SERVERLESS backingProviderName: AWS regionName: US_EAST_1 privateEndpoints: - name: "{unique-private-endpoint-label}" cloudProviderEndpointID: "{vpce-id}" EOF
Atlas Kubernetes Operator가 클러스터에 연결하기 위해 생성한 비밀을 조회하세요.
다음 명령을 복사합니다.
중요
다음 명령을 실행하려면
jq
1.6 이상이 필요합니다.kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)'; 다음 자리 표시자를 원하는 사용자 지정 리소스의 세부 정보로 바꾸세요.
my-project
AtlasProject
사용자 지정 리소스의metadata
필드 값을 지정합니다.my-atlas-cluster
AtlasDeployment
사용자 지정 리소스의metadata
필드 값을 지정합니다.my-database-user
AtlasDatabaseUser
사용자 지정 리소스의metadata
필드 값을 지정합니다.명령을 실행합니다.
참고
연결 문자열은 다음 예제와 다를 수 있습니다. 비공개 엔드포인트가 여러 개 있는 경우 비밀에는 적절한 숫자 접미사가 붙은
connectionStringPrivate
및connectionStringPrivateSvr
필드가 여러 개 포함됩니다(예:connectionStringPrivate1
,connectionStringPrivate2
등).{ "connectionStringPrivate": "mongodb://pl-0-eastus2.uzgh6.mongodb.net:1024,pl-0-eastus2.uzgh6.mongodb.net:1025,pl-0-eastus2.uzgh6.mongodb.net:1026/?ssl=truereplicaSet=atlas-18bndf-shard-0", "connectionStringPrivateSrv": "mongodb+srv://cluster0-pl-0.uzgh6.mongodb.net", "password": "P@@sword%", "username": "theuser" } 이 시크릿 을 사용할 수 있습니다. 다음을 수행합니다.
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: my-project-my-atlas-cluster-my-database-user key: connectionStringPrivate
spec.serverlessSpec.privateEndpoints
매개변수를 지정합니다.
AtlasDeployment
사용자 spec.serverlessSpec.privateEndpoints
지정 리소스 에 매개 변수를 지정합니다. spec.serverlessSpec.privateEndpoints.name
필드에 비공개 엔드포인트를 식별하는 고유 레이블을 지정하고 다음 명령을 실행합니다.
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: atlas-deployment-serverless spec: projectRef: name: my-project serverlessSpec: name: serverless-instance tags: - key: "environment" value: "production" providerSettings: providerName: SERVERLESS backingProviderName: AWS regionName: US_EAST_1 privateEndpoints: - name: "{unique-private-endpoint-label}" EOF
Atlas 는 VNET 리소스를 생성합니다. 이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다.
비공개 엔드포인트 네트워크 정책을 비활성화합니다.
Atlas는 비공개 엔드포인트에 대한 네트워크 정책을 지원하지 않습니다.
다음 명령을 복사합니다.
az network vnet subnet update --resource-group {resource-group-name} --vnet-name {vnet-name} --name {subnet-name} --disable-private-endpoint-network-policies true 다음 자리 표시자를 Azure VNet에 대한 세부 정보로 바꿉니다.
resource-group-name
Atlas 연결에 사용할 VNet이 포함된 리소스 그룹 에 대한 사람이 읽을 수 있는 레이블입니다. 이 값은 Azure 대시보드 의 Resource Group Properties 페이지에서 찾을 수 있습니다.
vnet-name
Atlas 에 연결하는 데 사용할 VNet을 식별하는 사람이 읽을 수 있는 레이블입니다. 이 값은 Azure 대시보드 의 Virtual Network 페이지에서 찾을 수 있습니다.
subnet-name
Azure VNet의 서브넷을 식별하는 사람이 읽을 수 있는 레이블입니다. 이 값은 Azure 대시보드 의 Virtual Network Subnets 페이지에서 찾을 수 있습니다.
Azure CLI 를사용하여 명령을 실행합니다.
학습내용 은 비공개 엔드포인트 에 대한 네트워크 정책 관리 를 참조하세요. Azure 설명서에 있습니다.
비공개 엔드포인트 의 서비스 ID와 이름을 찾습니다.
다음 명령을 실행합니다:
kubectl get atlasdeployment atlas-deployment-serverless -o yaml AtlasDeployment
Custom Resource(사용자 지정 리소스 )의status.serverlessPrivateEndpoints.PrivateLinkServiceResourceId
및status.serverlessPrivateEndpoints.EndpointServiceName
필드에 있는 각 비공개 엔드포인트에 대한 서비스 리소스 ID 및 서비스 이름을 확인합니다.
Azure CLI 를 사용하여 각 비공개 엔드포인트를 구성합니다.
비공개 엔드포인트를 생성하려면 다음을 수행합니다.
다음 명령을 복사합니다.
az network private-endpoint create --resource-group {resource-group-name} --name {endpoint-name} --vnet-name {vnet-name} --subnet {subnet-name} --private-connection-resource-id {serviceResourceId} --connection-name {serviceName} --manual-request true 다음 자리 표시자를 Azure VNet에 대한 세부 정보로 바꿉니다.
resource-group-name
Atlas 연결에 사용할 VNet이 포함된 리소스 그룹 에 대한 사람이 읽을 수 있는 레이블입니다. 이 값은 Azure 대시보드 의 Resource Group Properties 페이지에서 찾을 수 있습니다.
endpoint-name
비공개 엔드포인트를 식별하는 사람이 읽을 수 있는 레이블입니다. 지금 지정합니다.
vnet-name
Atlas 에 연결하는 데 사용할 VNet을 식별하는 사람이 읽을 수 있는 레이블입니다. 이 값은 Azure 대시보드 의 Virtual Network 페이지에서 찾을 수 있습니다.
subnet-name
Azure VNet의 서브넷을 식별하는 사람이 읽을 수 있는 레이블입니다. 이 값은 Azure 대시보드 의 Virtual Network Subnets 페이지에서 찾을 수 있습니다.
serviceResourceId
비공개 엔드포인트의 서비스 리소스 를 식별하는 고유 string 입니다.
AtlasDeployment
Custom Resource(사용자 지정 리소스 )의status.serverlessPrivateEndpoints.PrivateLinkServiceResourceId
필드 내에서 이 값을 찾습니다.serviceName
비공개 엔드포인트의 서비스 이름을 식별하는 고유 문자열입니다.
AtlasDeployment
사용자 지정 리소스의status.serverlessPrivateEndpoints.EndpointServiceName
필드 내에서 이 값을 찾습니다.Azure CLI 를사용하여 명령을 실행합니다.
spec.serverlessPrivateEndpoints
매개변수를 업데이트합니다.
AtlasDeployment
Custom Resource(사용자 지정 spec.serverlessSpec.privateEndpoints
리소스) 에 대한 매개변수를 업데이트합니다. 비공개 엔드포인트 에 대한 리소스 ID 및 IP 주소 정보를 지정하고 다음 명령을 실행 합니다.
참고
Azure 대시보드 의 Properties 페이지에는 Resource ID 필드 에서 만든 비공개 엔드포인트의 고유 식별자가 표시됩니다.
Azure 대시보드 의 Overview 페이지에는 Private IP 필드 에서 만든 비공개 엔드포인트 네트워크 인터페이스의 비공개 IP 주소 가 표시됩니다.
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: atlas-deployment-serverless spec: projectRef: name: my-project serverlessSpec: name: serverless-instance tags: - key: "environment" value: "production" providerSettings: providerName: SERVERLESS backingProviderName: AWS regionName: US_EAST_1 privateEndpoints: - name: "{unique-private-endpoint-label}" cloudProviderEndpointID: "{resource-id}" privateEndpointIpAddress: "{private-ip}" EOF
Atlas Kubernetes Operator가 클러스터에 연결하기 위해 생성한 비밀을 조회하세요.
다음 명령을 복사합니다.
중요
다음 명령을 실행하려면
jq
1.6 이상이 필요합니다.kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)'; 다음 자리 표시자를 원하는 사용자 지정 리소스의 세부 정보로 바꾸세요.
my-project
AtlasProject
사용자 지정 리소스의metadata
필드 값을 지정합니다.my-atlas-cluster
AtlasDeployment
사용자 지정 리소스의metadata
필드 값을 지정합니다.my-database-user
AtlasDatabaseUser
사용자 지정 리소스의metadata
필드 값을 지정합니다.명령을 실행합니다.
참고
연결 문자열은 다음 예제와 다를 수 있습니다. 비공개 엔드포인트가 여러 개 있는 경우 비밀에는 적절한 숫자 접미사가 붙은
connectionStringPrivate
및connectionStringPrivateSvr
필드가 여러 개 포함됩니다(예:connectionStringPrivate1
,connectionStringPrivate2
등).{ "connectionStringPrivate": "mongodb://pl-0-eastus2.uzgh6.mongodb.net:1024,pl-0-eastus2.uzgh6.mongodb.net:1025,pl-0-eastus2.uzgh6.mongodb.net:1026/?ssl=truereplicaSet=atlas-18bndf-shard-0", "connectionStringPrivateSrv": "mongodb+srv://cluster0-pl-0.uzgh6.mongodb.net", "password": "P@@sword%", "username": "theuser" } 이 시크릿 을 사용할 수 있습니다. 다음을 수행합니다.
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: my-project-my-atlas-cluster-my-database-user key: connectionStringPrivate