Docs Menu
Docs Home
/ /
MongoDB Atlas Kubernetes Operator
/ /

서버리스 인스턴스에 대한 비공개 엔드포인트 관리

이 페이지의 내용

  • 절차

Atlas Kubernetes Operator는 다음 플랫폼에서 서버리스 인스턴스에 대한 비공개 엔드포인트 관리를 지원합니다.

  • 를 사용하는Amazon Web Services AWS PrivateLink 기능.

  • Azure Private Link 기능을 사용하는 Azure .

참고

서버리스 인스턴스는 Private Service Connect를 지원하지 않습니다. Private Service Connect를 설정해야 하는 경우 전용 클러스터를 사용하세요.

MongoDB는 시간이 지남에 따라 서버리스 인스턴스에서 더 많은 구성 및 기능에 대한 지원을 추가할 계획입니다. 향후 MongoDB가 서버리스 인스턴스에 대해 지원할 계획인 기능을 알아보려면 서버리스 인스턴스 제한을 참조하세요.

시작하기 전에 비공개 엔드포인트 관리를 참조하세요.

클라이언트가 비공개 엔드포인트를 사용하여 Atlas 서버리스 인스턴스에 연결할 수 있도록 하려면 다음과 같이 하세요:

1

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 리소스를 생성합니다. 이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다.

2
  1. 다음 명령을 실행합니다:

    kubectl get atlasdeployment atlas-deployment-serverless -o yaml
  2. AtlasDeployment 사용자 지정 리소스status.serverlessPrivateEndpoints.EndpointServiceName 필드에 있는 각 비공개 엔드포인트에 대한 서비스 이름 문자열을 확인합니다.

3

애플리케이션 VPC 인터페이스 엔드포인트를 생성하려면 다음을 수행합니다.

  1. 다음 명령을 복사합니다.

    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}
  2. 다음 자리 표시자를 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 의 클라이언트가 비공개 엔드포인트로 트래픽을 전송하려면 인터페이스 엔드포인트 가 필요합니다.

  3. Amazon Web Services 를 CLI 사용하여명령을 실행합니다.

  4. 출력에서 VpcEndpointId 값을 확인합니다.

    예시

    "VpcEndpoint": {
    "VpcEndpointId": "vpce-XXXXXX",
    "VpcEndpointType": "Interface",
    "VpcId": "vpc-XXXXX",
    "ServiceName": "com.amazonaws.vpce.{aws-region}.vpce-svc-XXXX",
    "State": "pendingAcceptance",

자세한 내용 은 인터페이스 엔드포인트 생성 을 참조하세요. Amazon Web Services 문서에서 확인 가능합니다.

4

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
5

다음 명령을 실행합니다:

kubectl get atlasdeployment atlas-deployment-serverless -o yaml
6
  1. 다음 명령을 복사합니다.

    중요

    다음 명령을 실행하려면 jq 1.6 이상이 필요합니다.

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. 다음 자리 표시자를 원하는 사용자 지정 리소스의 세부 정보로 바꾸세요.

    my-project
    AtlasProject 사용자 지정 리소스metadata 필드 값을 지정합니다.
    my-atlas-cluster
    AtlasDeployment 사용자 지정 리소스metadata 필드 값을 지정합니다.
    my-database-user
    AtlasDatabaseUser 사용자 지정 리소스metadata 필드 값을 지정합니다.
  3. 명령을 실행합니다.

    참고

    연결 문자열은 다음 예제와 다를 수 있습니다. 비공개 엔드포인트가 여러 개 있는 경우 비밀에는 적절한 숫자 접미사가 붙은 connectionStringPrivateconnectionStringPrivateSvr 필드가 여러 개 포함됩니다(예: 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
1

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 리소스를 생성합니다. 이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다.

2

Atlas는 비공개 엔드포인트에 대한 네트워크 정책을 지원하지 않습니다.

  1. 다음 명령을 복사합니다.

    az network vnet subnet update --resource-group {resource-group-name} --vnet-name {vnet-name} --name {subnet-name} --disable-private-endpoint-network-policies true
  2. 다음 자리 표시자를 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 페이지에서 찾을 수 있습니다.
  3. Azure CLI 를사용하여 명령을 실행합니다.

학습내용 은 비공개 엔드포인트 에 대한 네트워크 정책 관리 를 참조하세요. Azure 설명서에 있습니다.

3
  1. 다음 명령을 실행합니다:

    kubectl get atlasdeployment atlas-deployment-serverless -o yaml
  2. AtlasDeployment Custom Resource(사용자 지정 리소스 )의 status.serverlessPrivateEndpoints.PrivateLinkServiceResourceIdstatus.serverlessPrivateEndpoints.EndpointServiceName 필드에 있는 각 비공개 엔드포인트에 대한 서비스 리소스 ID 및 서비스 이름을 확인합니다.

4

비공개 엔드포인트를 생성하려면 다음을 수행합니다.

  1. 다음 명령을 복사합니다.

    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
  2. 다음 자리 표시자를 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 필드 내에서 이 값을 찾습니다.
  3. Azure CLI 를사용하여 명령을 실행합니다.

5

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
6

다음 명령을 실행합니다:

kubectl get atlasdeployment atlas-deployment-serverless -o yaml
7
  1. 다음 명령을 복사합니다.

    중요

    다음 명령을 실행하려면 jq 1.6 이상이 필요합니다.

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. 다음 자리 표시자를 원하는 사용자 지정 리소스의 세부 정보로 바꾸세요.

    my-project
    AtlasProject 사용자 지정 리소스metadata 필드 값을 지정합니다.
    my-atlas-cluster
    AtlasDeployment 사용자 지정 리소스metadata 필드 값을 지정합니다.
    my-database-user
    AtlasDatabaseUser 사용자 지정 리소스metadata 필드 값을 지정합니다.
  3. 명령을 실행합니다.

    참고

    연결 문자열은 다음 예제와 다를 수 있습니다. 비공개 엔드포인트가 여러 개 있는 경우 비밀에는 적절한 숫자 접미사가 붙은 connectionStringPrivateconnectionStringPrivateSvr 필드가 여러 개 포함됩니다(예: 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

돌아가기

Dedicated

이 페이지의 내용