Docs Menu
Docs Home
/ /
MongoDB Atlas Kubernetes Operator
/

네트워크 피어링 구성

이 페이지의 내용

  • 전제 조건
  • 절차

참고

다음 배포에서는 이 기능 을 사용할 수 없습니다.

  • 서버리스 인스턴스

  • M0 클러스터

  • M2/M5 클러스터

  • Flex 클러스터

Atlas는 AWS, Google Cloud 및 Azure에서 호스팅되는 전용 클러스터와 멀티 클라우드 샤딩된 클러스터에 대한 네트워크 피어링 연결을 지원합니다.

네트워크 피어링은 Atlas VPC와 클라우드 제공자의 VPC 간에 비공개 연결을 설정합니다. 연결은 보안 강화를 위해 공용 네트워크에서의 트래픽을 격리합니다.

Atlas는 다른 클라우드 제공자의 단일 리전에 배포된 클러스터 사이에 네트워크 피어링을 지원하지 않습니다.

Atlas Kubernetes Operator 를 사용하여 네트워크 피어링 연결을 관리 하려면 AtlasProject Custom Resource(사용자 지정 리소스) 에 대해 매개변수를 지정하고spec.networkPeers 업데이트 할 수 있습니다. 지원되는 사용자 지정 리소스 중 하나에서 spec 필드 를 변경할 때마다 Atlas Kubernetes Operator 가 해당 Atlas 구성을 생성하거나 업데이트 합니다.

Atlas Kubernetes Operator를 사용하여 네트워크 피어링을 구성하려면 다음이 필요합니다.

  • Atlas Kubernetes Operator가 배포된 실행 중인 Kubernetes 클러스터입니다.

  • Atlas Project Owner 에서 또는 Organization Owner 역할 .

  • 아직 생성하지 않았다면 에서 를 VPC Amazon Web Services생성합니다. 학습 내용은 Get Started with Amazon VPC(Amazon VPC 시작하기)를 참조하세요.

  • 아웃바운드 트래픽에 대한 네트워크 트래픽 규칙.

    Atlas에 연결되는 리소스에 연결된 AWS 보안 그룹에 다음과 같은 네트워크 트래픽 규칙을 생성하세요.

    권한
    방향
    포트
    대상

    허용

    아웃바운드

    27015-27017 포함

    Atlas CIDR에 대한 규칙

  • Atlas Kubernetes Operator가 배포된 실행 중인 Kubernetes 클러스터입니다.

  • Atlas에서 Project Owner 또는 Organization Owner 역할.

  • 아직 생성하지 않았다면 Azure 에서 VNet을 생성하세요. 학습 내용 은 Azure Portal을 사용하여 가상 네트워크 만들기를 참조하세요.

  • 네트워크 피어링 연결 을 구성하는 데 필요한 Azure 역할입니다.

    학습내용은 Azure 권한을 참조하세요.

  • Atlas 피어링 애플리케이션 ID 에 대한 서비스 주체입니다.

    각 Azure 네트워크 피어링 연결 을 만들기 전에 다음 단계를 완료해야 합니다.

    1. 다음 Azure CLI 명령을 실행하여 지정된 Atlas 피어링 애플리케이션 ID 를 사용하여 서비스 주체를 만듭니다.

      az ad sp create --id e90a1407-55c3-432d-9cb1-3638900a9d22

      각 구독 에 대해 한 번만 이 작업을 수행하면 됩니다. 다음 메시지가 표시되면 Atlas 피어링 애플리케이션 ID 를 가진 서비스 주체가 이미 존재합니다. 다음 단계로 진행합니다.

      Another object with the same value for property servicePrincipalNames already exists.
    2. 다음 예시 peering-role.json 파일 을 복사하여 현재 작업 디렉토리 에 저장합니다.

      1{
      2 "Name":"AtlasPeering/<azureSubscriptionId>/<resourceGroupName>/<vnetName>",
      3 "IsCustom":true,
      4 "Description":"Grants MongoDB access to manage peering connections on network /subscriptions/<azureSubscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>",
      5 "Actions":[
      6 "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read",
      7 "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write",
      8 "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/delete",
      9 "Microsoft.Network/virtualNetworks/peer/action"
      10 ],
      11 "AssignableScopes":[
      12 "/subscriptions/<azureSubscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>"
      13 ]
      14}
    3. peering-role.json 의 변수를 피어링 연결을 만들려는 Azure VNet에 대한 세부 정보로 바꿉니다.

      변수
      설명

      azureSubscriptionId

      VNet이 있는 Azure 구독 의 고유 식별자입니다.

      resourceGroupName

      Azure 리소스 그룹의 이름입니다.

      vnetName

      Azure VNet의 이름입니다.

    4. 다음 Azure CLI 명령을 실행하여 peering-role.json 파일 을 사용하여 역할 정의를 만듭니다.

      az role definition create --role-definition peering-role.json
    5. 아래에 표시된 Azure CLI 명령을 실행하여 생성한 역할 을 서비스 주체에 할당합니다.

      변수를 peering-role.json 파일 에 사용한 것과 동일한 값으로 바꿉니다.

      az role assignment create \
      --role "AtlasPeering/<azureSubscriptionId>/<resourceGroupName>/<vnetName>" \
      --assignee "e90a1407-55c3-432d-9cb1-3638900a9d22" \
      --scope "/subscriptions/<azureSubscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>"

다음 절차에 따라 클라이언트가 네트워크 피어링 연결을 사용하여 Atlas 클러스터에 연결할 수 있도록 활성화하세요.

1

기존 컨테이너 또는 새 컨테이너를 사용하도록 네트워크 피어링을 구성할 수 있습니다.

  1. AtlasProject Custom Resource(사용자 지정 spec.networkPeers 리소스 )에 매개변수를 지정합니다. 다음 자리 표시자를 원하는 값으로 바꿉니다.

    자리 표시자
    설명

    spec.networkPeers.providerName

    클라우드 제공자 이름. AWS를 지정합니다.

    spec.networkPeers.containerId

    사용하려는 네트워크 피어링 컨테이너 의 고유 식별자입니다. containerId 을(를) 지정하지 않으면 atlasCIDRblock 을(를) 설정하다 해야 합니다. 학습 내용은 이 절차의 Create New Container 섹션을 참조하세요.

    spec.networkPeers.accepterRegionName

    Amazon Web Services 에 대한 VPC 리전 .

    spec.networkPeers.awsAccountId

    해당 AWS 계정의 고유 식별자입니다. 콘솔 홈페이지의 오른쪽 상단에 있는 계정 이름을 클릭하면 AWS에 계정 ID가 표시됩니다.

    spec.networkPeers.routeTableCidrBlock

    대한 CIDR Amazon Web Services VPC 차단 입니다. Amazon Web Services 는 의 세부 정보 페이지에 VPC CIDR 차단 을 표시합니다.

    spec.networkPeers.vpcId

    해당 AWS VPC의 고유 식별자입니다. AWS는 해당 VPC의 세부 정보 페이지에 VPC ID를 표시합니다.

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

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    networkPeers:
    - providerName: "AWS"
    containerID: "6dc5f17280eef56a459fa3fb"
    accepterRegionName: "us-east-2"
    awsAccountId: "12345678"
    routeTableCidrBlock: "10.0.0.0/24"
    vpcId: "vpc-12345678"
    EOF
  1. AtlasProject Custom Resource(사용자 지정 spec.networkPeers 리소스 )에 매개변수를 지정합니다. 다음 자리 표시자를 원하는 값으로 바꿉니다.

    자리 표시자
    설명

    spec.networkPeers.providerName

    클라우드 제공자 이름. AWS를 지정합니다.

    spec.networkPeers.atlasCidrBlock

    Atlas Atlas Kubernetes Operator 가 새 컨테이너 를 생성하는 Atlas CIDR 차단 입니다. atlasCidrBlock 를 지정하지 않으면 기존 컨테이너 의 containerId 을 지정해야 합니다. 학습 내용은 이 절차의 Use Existing Container 섹션을 참조하세요.

    spec.networkPeers.containerRegion

    (선택 사항) Amazon Web Services Atlas Kubernetes Operator 가 새 컨테이너 를 생성하는 리전 입니다. containerRegion 또는 containerId 중 하나를 지정하지 않으면 Atlas Kubernetes Operator 는 accepterRegionName 와 동일한 리전 에 새 컨테이너 를 생성합니다.

    spec.networkPeers.accepterRegionName

    Amazon Web Services 에 대한 VPC 리전 .

    spec.networkPeers.awsAccountId

    해당 AWS 계정의 고유 식별자입니다. 콘솔 홈페이지의 오른쪽 상단에 있는 계정 이름을 클릭하면 AWS에 계정 ID가 표시됩니다.

    spec.networkPeers.routeTableCidrBlock

    대한 CIDR Amazon Web Services VPC 차단 입니다. Amazon Web Services 는 의 세부 정보 페이지에 VPC CIDR 차단 을 표시합니다.

    spec.networkPeers.vpcId

    해당 AWS VPC의 고유 식별자입니다. AWS는 해당 VPC의 세부 정보 페이지에 VPC ID를 표시합니다.

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

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    networkPeers:
    - providerName: "AWS"
    atlasCidrBlock: "10.8.0.0/21"
    containerRegion: "us-west-1"
    accepterRegionName: "us-east-2"
    awsAccountId: "12345678"
    routeTableCidrBlock: "10.0.0.0/24"
    vpcId: "vpc-12345678"
    EOF
2
  1. 다음 명령을 실행합니다:

    kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.statusName}'
    WAITING FOR USER
  2. statusName 값이 WAITING FOR USER 인 경우 다음 단계로 진행합니다. 가 이 statusName 아닌 경우 WAITING FOR USER 몇 분 정도 기다렸다가 이 단계를 다시 시도하세요.

4

다음 명령을 다시 실행하여 VPC 연결 상태를 확인합니다. 네트워크 피어링 연결 이 완료되면 Atlas Kubernetes Operator 가 READY 를 반환합니다.

kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.statusName}'
READY
1

기존 컨테이너 또는 새 컨테이너를 사용하도록 네트워크 피어링을 구성할 수 있습니다.

  1. AtlasProject Custom Resource(사용자 지정 spec.networkPeers 리소스 )에 매개변수를 지정합니다. 다음 자리 표시자를 원하는 값으로 바꿉니다.

    자리 표시자
    설명

    spec.networkPeers.providerName

    클라우드 제공자 이름. AZURE를 지정합니다.

    spec.networkPeers.containerId

    사용하려는 네트워크 피어링 컨테이너의 고유 식별자입니다. containerId 을 지정하지 않으면 atlasCIDRblock 을 설정해야 합니다. 자세한 내용은 이 절차의 Create New Container 섹션을 참조하세요.

    spec.networkPeers.accepterRegionName

    VPC 에대한 Azure 리전 입니다.

    spec.networkPeers.azureSubscriptionId

    Azure 구독 의 고유 식별자입니다. Azure 는 구독의 세부 정보 페이지에 구독 ID 를 표시합니다.

    spec.networkPeers.resourceGroupName

    VPC 가 포함된 Azure 리소스 그룹 을 식별하는 사람이 읽을 수 있는 레이블입니다. Azure 는 리소스 그룹의 세부 정보 페이지에 리소스 그룹 이름을 표시합니다.

    spec.networkPeers.azureDirectoryId

    Azure Active Directory 테넌트의 고유 식별자입니다. Azure 는 이를 테넌트 속성 페이지에 Tenant ID 로 표시합니다.

    spec.networkPeers.vnetName

    Azure VNET을 식별하는 사람이 읽을 수 있는 레이블입니다. Azure 는 VNET의 세부 정보 페이지에 VNET 이름을 표시합니다.

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

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    networkPeers:
    - providerName: "AZURE"
    containerID: "6dc5f17280eef56a459fa3fb"
    atlasCidrBlock: "10.8.0.0/21"
    containerRegion: "US_WEST"
    accepterRegionName: "US_EAST_2"
    azureSubscriptionId: "12345678"
    resourceGroupName: "my-group"
    azureDirectoryId: "x0xxx10-00x0-0x01-0xxx-x0x0x01xx100"
    vnetName: "my-vnet"
    EOF
  1. AtlasProject Custom Resource(사용자 지정 spec.networkPeers 리소스 )에 매개변수를 지정합니다. 다음 자리 표시자를 원하는 값으로 바꿉니다.

    자리 표시자
    설명

    spec.networkPeers.providerName

    클라우드 제공자 이름. AZURE를 지정합니다.

    spec.networkPeers.atlasCidrBlock

    Atlas Atlas Kubernetes Operator 가 새 컨테이너 를 생성하는 Atlas CIDR 차단 입니다. atlasCidrBlock 를 지정하지 않으면 기존 컨테이너 의 containerId 을 지정해야 합니다. 학습 내용은 이 절차의 Use Existing Container 섹션을 참조하세요.

    spec.networkPeers.containerRegion

    (선택 사항) Atlas Kubernetes Operator 가 새 컨테이너 를 생성하는 Azure 리전 입니다. containerRegion 또는 containerId 를 지정하지 않으면 Atlas Kubernetes Operator 는 accepterRegionName 와 동일한 리전 에 새 컨테이너 를 생성합니다.

    spec.networkPeers.accepterRegionName

    VPC 에대한 Azure 리전 입니다.

    spec.networkPeers.azureSubscriptionId

    Azure 구독 의 고유 식별자입니다. Azure 는 구독의 세부 정보 페이지에 구독 ID 를 표시합니다.

    spec.networkPeers.resourceGroupName

    VPC 가 포함된 Azure 리소스 그룹 을 식별하는 사람이 읽을 수 있는 레이블입니다. Azure 는 리소스 그룹의 세부 정보 페이지에 리소스 그룹 이름을 표시합니다.

    spec.networkPeers.azureDirectoryId

    Azure Active 디렉토리 테넌트의 고유 식별자입니다. Azure 는 이를 테넌트 속성 페이지에 Tenant ID 로 표시합니다.

    spec.networkPeers.vnetName

    Azure VNET을 식별하는 사람이 읽을 수 있는 레이블입니다. Azure 는 VNET의 세부 정보 페이지에 VNET 이름을 표시합니다.

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

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    networkPeers:
    - providerName: "AZURE"
    atlasCidrBlock: "10.8.0.0/21"
    containerRegion: "US_WEST"
    accepterRegionName: "US_EAST_2"
    azureSubscriptionId: "12345678"
    resourceGroupName: "my-group"
    azureDirectoryId: "x0xxx10-00x0-0x01-0xxx-x0x0x01xx100"
    vnetName: "my-vnet"
    EOF
2

다음 명령을 실행하여 VPC 연결 상태를 확인합니다. 네트워크 피어링 연결 이 완료되면 Atlas Kubernetes Operator 가 READY 를 반환합니다.

kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.status}'
READY
1

기존 컨테이너 또는 새 컨테이너를 사용하도록 네트워크 피어링을 구성할 수 있습니다.

  1. AtlasProject Custom Resource(사용자 지정 spec.networkPeers 리소스 )에 매개변수를 지정합니다. 다음 자리 표시자를 원하는 값으로 바꿉니다.

    자리 표시자
    설명

    spec.networkPeers.providerName

    클라우드 제공자 이름. GCP를 지정합니다.

    spec.networkPeers.containerId

    사용하려는 네트워크 피어링 컨테이너 의 고유 식별자입니다. containerId 을 지정하지 않으면 atlasCIDRblockcontainerRegion 을 설정하다 해야 합니다. 학습 내용은 이 절차의 Create New Container 섹션을 참조하세요.

    spec.networkPeers.gcpProjectId

    Google Cloud Platform 프로젝트 의 고유 식별자입니다. Google Cloud Platform 은 프로젝트의 세부 정보 페이지에 프로젝트 ID 를 표시합니다.

    spec.networkPeers.routeTableCidrBlock

    에 대한CIDR 차단 Google Cloud Platform VPC 입니다. Google Cloud Platform 은 의 세부 정보 페이지에 VPC CIDR 차단 을 표시합니다.

    spec.networkPeers.networkName

    Google Cloud Platform VPC 의 사람이 읽을 수 있는 레이블입니다. Google Cloud Platform 은 VPC 의 세부 정보 페이지에 네트워크 이름을 표시합니다.

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

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    networkPeers:
    - providerName: "GCP"
    containerId: "6dc5f17280eef56a459fa3fb"
    gcpProjectId: "12345678"
    routeTableCidrBlock: "10.0.0.0/24"
    networkName: "my-vpc"
    EOF
  1. AtlasProject Custom Resource(사용자 지정 spec.networkPeers 리소스 )에 매개변수를 지정합니다. 다음 자리 표시자를 원하는 값으로 바꿉니다.

    자리 표시자
    설명

    spec.networkPeers.providerName

    클라우드 제공자 이름. GCP를 지정합니다.

    spec.networkPeers.atlasCidrBlock

    Atlas Atlas Kubernetes Operator 가 새 컨테이너 를 생성하는 Atlas CIDR 차단 입니다. atlasCidrBlock 를 지정하지 않으면 기존 컨테이너 의 containerId 을 지정해야 합니다. 학습 내용은 이 절차의 Use Existing Container 섹션을 참조하세요.

    spec.networkPeers.containerRegion

    Google Cloud Platform 에 대한 VPC 리전 입니다.

    spec.networkPeers.containerRegion

    Google Cloud Platform Atlas Kubernetes Operator 가 새 컨테이너 를 생성하는 리전 입니다. containerRegion 을 지정하지 않으면 기존 컨테이너 의 containerId 을 지정해야 합니다. 학습 내용은 이 절차의 Use Existing Container 섹션을 참조하세요.

    spec.networkPeers.gcpProjectId

    Google Cloud Platform 프로젝트 의 고유 식별자입니다. Google Cloud Platform 은 프로젝트의 세부 정보 페이지에 프로젝트 ID 를 표시합니다.

    spec.networkPeers.routeTableCidrBlock

    에 대한CIDR 차단 Google Cloud Platform VPC 입니다. Google Cloud Platform 은 의 세부 정보 페이지에 VPC CIDR 차단 을 표시합니다.

    spec.networkPeers.networkName

    Google Cloud Platform VPC 의 사람이 읽을 수 있는 레이블입니다. Google Cloud Platform 은 VPC 의 세부 정보 페이지에 네트워크 이름을 표시합니다.

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

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    spec:
    name: Test Atlas Operator Project
    networkPeers:
    - providerName: "GCP"
    atlasCidrBlock: "10.8.0.0/21"
    containerRegion: "us-east1"
    gcpProjectId: "12345678"
    routeTableCidrBlock: "10.0.0.0/24"
    networkName: "my-vpc"
    EOF
2
  1. 다음 명령을 실행합니다:

    kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.status}'
    PENDING ACCEPTANCE
  2. status 값이 PENDING ACCEPTANCE 인 경우 다음 단계로 진행합니다. 가 이 status 아닌 경우 PENDING ACCEPTANCE 몇 분 정도 기다렸다가 이 단계를 다시 시도하세요.

3

학습 내용은 VPC 네트워크 피어링 사용하기를 참조하세요.

4

다음 명령을 다시 실행하여 VPC 연결 상태를 확인합니다. 네트워크 피어링 연결 이 완료되면 Atlas Kubernetes Operator 가 READY 를 반환합니다.

kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.status}'
READY

돌아가기

비밀 저장소

이 페이지의 내용