Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs 菜单
Docs 主页
/ /
/ / /

配置网络对等互连

注意

  • 此功能不适用于 M0 集群和 Flex 集群。

对于 AWS、Google Cloud 和 Azure 以及多云分片集群上托管的专用集群,Atlas 支持网络对等连接。

网络对等互连可在 Atlas VPC 和云提供商的 VPC 之间建立私有连接。该连接将流量与公共网络隔离以提高安全性。

Atlas 不支持 您在不同云提供商的单个区域部署的集群之间建立网络对等互连。

要使用Atlas Kubernetes Operator管理网络对等连接,您可以指定并更新spec.networkPeers AtlasProject 自定义资源的参数。每次更改任何支持的自定义资源中的 spec 字段时,Atlas Kubernetes Operator 创建或更新相应的 Atlas 配置。

要使用 Atlas Kubernetes Operator 配置网络对等互连,您需要:

  • 部署了 Atlas Kubernetes Operator 的正在运行的 Kubernetes 集群。

  • Project OwnerAtlas中的Organization Owner 或 角色。

  • 如果尚未创建,请在 AWS 中创建 VPC 。要学习;了解更多信息,请参阅GET Started with Amazon VPC。

  • 出站流量的网络流量规则

    在附加到连接到 Atlas 的资源的 AWS 安全群组上创建以下网络流量规则:

    许可
    方向
    端口
    目标

    允许

    出站

    27015-27017(含)

    到 Atlas CIDR

  • 部署了 Atlas Kubernetes Operator 的正在运行的 Kubernetes 集群。

  • Atlas 中的Project OwnerOrganization Owner角色。

  • 如果尚未创建,请在Azure中创建 VNet。要学习;了解详情,请参阅使用Azure门户创建虚拟网络。

  • 配置网络对等连接所需的Azure角色。

    要学习;了解详情,请参阅Azure权限。

  • Atlas对等互连应用程序 ID的服务主体。

    注意

    有关Atlas如何创建与Azure VPC的网络对等互连连接的详细信息,请参阅设置网络对等互连连接中的 Azure标签页。

    在创建每个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. 指定 spec.networkPeersAtlasProject 自定义资源中的参数。将以下占位符替换为您的值:

    占位符
    说明

    spec.networkPeers.providerName

    云提供商名称。指定 AWS

    spec.networkPeers.containerId

    要使用的网络对等互连容器的唯一标识符。 如果您不指定containerId ,则必须设立atlasCIDRblock 。 要学习;了解详情,请参阅此过程中的 Create New Container部分。

    spec.networkPeers.accepterRegionName

    spec.networkPeers.awsAccountId

    您的Amazon Web Services帐户的唯一标识符。当您单击控制台主页右上角的帐户名称时, Amazon Web Services会显示帐户 ID。

    spec.networkPeers.routeTableCidrBlock

    AWS VPCCIDR 块。AWSVPC 的详细信息页面显示 CIDR 块。

    spec.networkPeers.vpcId

    AWS VPC的唯一标识符。 Amazon Web Services 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. 指定 spec.networkPeersAtlasProject 自定义资源中的参数。将以下占位符替换为您的值:

    占位符
    说明

    spec.networkPeers.providerName

    云提供商名称。指定 AWS

    spec.networkPeers.atlasCidrBlock

    Atlas Kubernetes Operator 为其创建新container的 Atlas CIDR区块。如果您不指定atlasCidrBlock ,则必须指定现有container的containerId 。要了解详情,请参阅此过程中的Use Existing Container部分。

    spec.networkPeers.containerRegion

    (可选)Atlas Kubernetes Operator 在其中创建新容器的AWS区域。 如果您未指定containerRegioncontainerId ,Atlas Kubernetes Operator 将在与accepterRegionName相同的地区中创建一个新container。

    spec.networkPeers.accepterRegionName

    spec.networkPeers.awsAccountId

    您的Amazon Web Services帐户的唯一标识符。当您单击控制台主页右上角的帐户名称时, Amazon Web Services会显示帐户 ID。

    spec.networkPeers.routeTableCidrBlock

    AWS VPCCIDR 块。AWSVPC 的详细信息页面显示 CIDR 块。

    spec.networkPeers.vpcId

    AWS VPC的唯一标识符。 Amazon Web Services 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 ,请等待几分钟,然后重试此步骤。

3

要学习;了解更多信息,请参阅接受VPC对等连接。

4

再次运行以下命令,检查VPC连接状态。 当网络对等互连完成时,Atlas Kubernetes Operator 返回READY

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

您可以配置网络对等互连,从而使用现有的 容器或新容器。

  1. 指定 spec.networkPeersAtlasProject 自定义资源中的参数。将以下占位符替换为您的值:

    占位符
    说明

    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"
    accepterRegionName: "US_EAST_2"
    azureSubscriptionId: "12345678"
    resourceGroupName: "my-group"
    azureDirectoryId: "x0xxx10-00x0-0x01-0xxx-x0x0x01xx100"
    vnetName: "my-vnet"
    EOF
  1. 指定 spec.networkPeersAtlasProject 自定义资源中的参数。将以下占位符替换为您的值:

    占位符
    说明

    spec.networkPeers.providerName

    云提供商名称。指定 AZURE

    spec.networkPeers.atlasCidrBlock

    Atlas Kubernetes Operator 为其创建新container的 Atlas CIDR区块。如果您不指定atlasCidrBlock ,则必须指定现有container的containerId 。要了解详情,请参阅此过程中的Use Existing Container部分。

    spec.networkPeers.containerRegion

    (可选) Atlas Kubernetes Operator在其中创建新容器的Azure地区。 如果您未指定containerRegioncontainerId , 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"
    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. 指定 spec.networkPeersAtlasProject 自定义资源中的参数。将以下占位符替换为您的值:

    占位符
    说明

    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

    CIDRGoogle Cloud PlatformVPC 区块。Google Cloud Platform会在 的详细信息页面上显示 CIDR VPC区块。

    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"
    networkName: "my-vpc"
    EOF
  1. 指定 spec.networkPeersAtlasProject 自定义资源中的参数。将以下占位符替换为您的值:

    占位符
    说明

    spec.networkPeers.providerName

    云提供商名称。指定 GCP

    spec.networkPeers.atlasCidrBlock

    Atlas Kubernetes Operator 为其创建新container的 Atlas CIDR区块。如果您不指定atlasCidrBlock ,则必须指定现有container的containerId 。要了解详情,请参阅此过程中的Use Existing Container部分。

    spec.networkPeers.containerRegion

    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

    CIDRGoogle Cloud PlatformVPC 区块。Google Cloud Platform会在 的详细信息页面上显示 CIDR VPC区块。

    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"
    gcpProjectId: "12345678"
    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

后退

密钥存储

在此页面上