注意
- 此功能不适用于 - 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 配置网络对等互连,您需要:
- Project OwnerAtlas中的- Organization Owner或 角色。
- 如果尚未创建,请在 Amazon Web Services 中创建 VPC 。要学习;了解更多信息,请参阅Amazon VPC入门。 
- 出站流量的网络流量规则。 - 在附加到连接到 Atlas 的资源的 AWS 安全群组上创建以下网络流量规则: 许可方向端口目标- 允许 - 出站 - 27015-27017(含) - 到 Atlas CIDR 
- Atlas 中的 - Project Owner或- Organization Owner角色。
- 如果尚未创建,请在Azure中创建 VNet。要学习;了解详情,请参阅使用Azure门户创建虚拟网络。 
- 配置网络对等连接所需的Azure角色。 - 要学习;了解详情,请参阅Azure权限。 
- Atlas对等互连应用程序 ID的服务主体。 - 在创建每个Azure网络对等连接之前,必须完成以下步骤: - 运行以下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. 
- 复制以下示例 - 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 - } 
- 将 - peering-role.json中的变量替换为要创建对等连接的Azure VNet 的详细信息:变量说明- azureSubscriptionId- VNet 所在的Azure订阅的唯一标识符。 - resourceGroupName- Azure 资源组的名称。 - vnetName- Azure VNet 的名称。 
- 运行以下Azure CLI命令以使用 - peering-role.json文件创建角色定义:- az role definition create --role-definition peering-role.json 
- 运行如下所示的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 中的 - Project Owner或- Organization Owner角色。
- 具有 IAM 用户策略和 计算网络管理员 角色的Google Cloud Platform用户帐户,该角色授予创建、修改和删除网络资源的权限。要学习;了解有关在Google Cloud Platform中管理私有端点和连接的更多信息,请参阅创建和修改VPC (VPC) 网络。 
- 如果尚未创建,请在Google Cloud Platform中创建VPC 。要学习;了解详情,请参阅GCP文档。 
步骤
通过以下步骤,使客户端能够使用网络对等互连连接到 Atlas 集群:
指定spec.networkPeers 参数。
您可以配置网络对等互连,从而使用现有的 容器或新容器。
使用现有container
- 在 - spec.networkPeers- AtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明- spec.networkPeers.providerName- 云提供商名称。指定 - AWS。- spec.networkPeers.containerId- 要使用的网络对等互连容器的唯一标识符。 如果您不指定 - containerId,则必须设立- atlasCIDRblock。 要学习;了解详情,请参阅此过程中的 Create New Container部分。- spec.networkPeers.accepterRegionName- 您的 的VPCAmazon Web Services 地区 。 - spec.networkPeers.awsAccountId- 您的Amazon Web Services帐户的唯一标识符。 当您单击控制台主页右上角的帐户名称时, Amazon Web Services会显示帐户ID 。 - spec.networkPeers.routeTableCidrBlock- AWS VPC 的 CIDR 块。AWS 在 VPC 的详细信息页面显示 CIDR 块。 - spec.networkPeers.vpcId- Amazon Web Services VPC的唯一标识符。 Amazon Web Services在 的详细信息页面上显示VPCID VPC。 
- 运行以下命令: - 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 
创建一个新的容器
- 在 - spec.networkPeers- AtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明- 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- 您的 的VPCAmazon Web Services 地区 。 - spec.networkPeers.awsAccountId- 您的Amazon Web Services帐户的唯一标识符。 当您单击控制台主页右上角的帐户名称时, Amazon Web Services会显示帐户ID 。 - spec.networkPeers.routeTableCidrBlock- AWS VPC 的 CIDR 块。AWS 在 VPC 的详细信息页面显示 CIDR 块。 - spec.networkPeers.vpcId- Amazon Web Services VPC的唯一标识符。 Amazon Web Services在 的详细信息页面上显示VPCID VPC。 
- 运行以下命令: - 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 
接受AmazonVPC WebAmazon Web Services Services中的VPC对等连接。
要学习;了解更多信息,请参阅接受VPC对等连接。
指定spec.networkPeers 参数。
您可以配置网络对等互连,从而使用现有的 容器或新容器。
使用现有container
- 在 - spec.networkPeers- AtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明- 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 名称。 
- 运行以下命令: - 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 
创建一个新的容器
- 在 - spec.networkPeers- AtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明- 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 名称。 
- 运行以下命令: - 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 
指定spec.networkPeers 参数。
您可以配置网络对等互连,从而使用现有的 容器或新容器。
使用现有container
- 在 - spec.networkPeers- AtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明- spec.networkPeers.providerName- 云提供商名称。指定 - GCP。- spec.networkPeers.containerId- 要使用的网络对等互连容器的唯一标识符。 如果您不指定 - containerId,则必须设立- atlasCIDRblock和- containerRegion。 要学习;了解详情,请参阅此过程中的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的详细信息页面上显示网络名称。 
- 运行以下命令: - 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 
创建一个新的容器
- 在 - spec.networkPeers- AtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明- spec.networkPeers.providerName- 云提供商名称。指定 - GCP。- spec.networkPeers.atlasCidrBlock- Atlas Atlas Kubernetes Operator创建新容器的Atlas CIDR区块。 如果不指定 - atlasCidrBlock,则必须指定现有容器的- containerId。 要学习;了解详情,请参阅此过程中的Use Existing Container部分。- spec.networkPeers.containerRegion- 您的 的VPCGoogle Cloud Platform 地区 。 - 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的详细信息页面上显示网络名称。 
- 运行以下命令: - 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 
VPC在Google CloudGoogle Cloud Platform Platform中创建VPC对等连接。
要学习;了解更多信息,请参阅使用VPC网络对等互连。