注意
此功能不适用于以下任何部署:
无服务器实例
M0集群M2/M5集群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 的详细信息:变量说明azureSubscriptionIdVNet 所在的Azure订阅的唯一标识符。
resourceGroupNameAzure 资源组的名称。
vnetNameAzure 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.networkPeersAtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明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.routeTableCidrBlockAWS VPC 的 CIDR 块。AWS 在 VPC 的详细信息页面显示 CIDR 块。
spec.networkPeers.vpcIdAmazon 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.networkPeersAtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明spec.networkPeers.providerName云提供商名称。指定
AWS。spec.networkPeers.atlasCidrBlockAtlas 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.routeTableCidrBlockAWS VPC 的 CIDR 块。AWS 在 VPC 的详细信息页面显示 CIDR 块。
spec.networkPeers.vpcIdAmazon 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.networkPeersAtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明spec.networkPeers.providerName云提供商名称。指定
AZURE。spec.networkPeers.containerId要使用的网络对等互连容器的唯一标识符。 如果您不指定
containerId,则必须设置atlasCIDRblock。 要了解详情,请参阅此过程中的Create New Container部分。spec.networkPeers.accepterRegionNameVPC 的 Azure地区 。
spec.networkPeers.azureSubscriptionIdAzure订阅的唯一标识符。 Azure在订阅的详细信息页面上显示订阅ID 。
spec.networkPeers.resourceGroupName人类可读标签,用于标识包含 VPC 的 Azure 资源群组。Azure在资源组的详细信息页面显示资源群组名称。
spec.networkPeers.azureDirectoryIdAzure 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.networkPeersAtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明spec.networkPeers.providerName云提供商名称。指定
AZURE。spec.networkPeers.atlasCidrBlockAtlas 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.accepterRegionNameVPC 的 Azure地区 。
spec.networkPeers.azureSubscriptionIdAzure订阅的唯一标识符。 Azure在订阅的详细信息页面上显示订阅ID 。
spec.networkPeers.resourceGroupName人类可读标签,用于标识包含 VPC 的 Azure 资源群组。Azure在资源组的详细信息页面显示资源群组名称。
spec.networkPeers.azureDirectoryIdAzure 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.networkPeersAtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明spec.networkPeers.providerName云提供商名称。指定
GCP。spec.networkPeers.containerId要使用的网络对等互连容器的唯一标识符。 如果您不指定
containerId,则必须设立atlasCIDRblock和containerRegion。 要学习;了解详情,请参阅此过程中的Create New Container部分。spec.networkPeers.gcpProjectIdGoogle Cloud Platform项目的唯一标识符。 Google Cloud Platform在项目的详细信息页面上显示项目ID 。
spec.networkPeers.routeTableCidrBlock的 CIDRGoogle Cloud PlatformVPC 区块。Google Cloud Platform会在 的详细信息页面上显示 CIDR VPC区块。
spec.networkPeers.networkNameGoogle 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.networkPeersAtlasProject自定义资源 中指定 参数。将以下占位符替换为您的值:占位符说明spec.networkPeers.providerName云提供商名称。指定
GCP。spec.networkPeers.atlasCidrBlockAtlas 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.gcpProjectIdGoogle Cloud Platform项目的唯一标识符。 Google Cloud Platform在项目的详细信息页面上显示项目ID 。
spec.networkPeers.routeTableCidrBlock的 CIDRGoogle Cloud PlatformVPC 区块。Google Cloud Platform会在 的详细信息页面上显示 CIDR VPC区块。
spec.networkPeers.networkNameGoogle 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网络对等互连。