配置网络对等互连
注意
此功能不适用于
M0
免费集群、M2
和M5
集群。 要了解更多信息,请参阅 Atlas M 0 (免费集群)、M 2和 M 5限制。无服务器实例目前不支持此功能。 要了解更多信息,请参阅无服务器实例限制。
对于 AWS、Google Cloud 和 Azure 以及多云分片集群上托管的专用集群,Atlas 支持网络对等连接。
网络对等互连可在 Atlas VPC 和云提供商的 VPC 之间建立私有连接。该连接将流量与公共网络隔离以提高安全性。
Atlas 不支持 您在不同云提供商的单个区域部署的集群之间建立网络对等互连。
要使用Atlas Kubernetes Operator管理网络对等互连,您可以为spec.networkPeers
自定义资源AtlasProject
指定并更新 参数。每次更改任何支持的自定义资源中的spec
字段时, Atlas Kubernetes Operator都会创建或更新相应的Atlas配置。
先决条件
要使用 Atlas Kubernetes Operator 配置网络对等互连,您需要:
Atlas 中的
Project Owner
或Organization Owner
角色。如果尚未创建,请在VPC 中创建Amazon Web Services 。要学习;了解更多信息,请参阅 Amazon VPC入门。
出站流量的网络流量规则。
在附加到连接到 Atlas 的资源的 AWS 安全群组上创建以下网络流量规则:
许可方向端口目标允许出站27015-27017(含)到 Atlas CIDR
Atlas 中的
Project Owner
或Organization Owner
角色。如果尚未创建,请在Azure中创建 VNet。 要学习;了解详情,请参阅 使用Azure门户创建虚拟网络。
配置网络对等连接所需的Azure角色。
要学习;了解详情,请参阅 Azure权限。
Atlas对等互连应用程序 ID的服务主体。
注意
有关Atlas如何创建 网络对等互连 的详细信息 连接,Azure VPC 设置网络对等互连连接 中的
Azure
标签页。在创建每个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
角色。具有Google Cloud Platform IAM 用户策略和 计算网络管理员 的 用户帐户 角色,授予创建、修改和删除网络资源的权限。要学习;了解有关在 中管理私有端点和连接的更多信息,请参阅Google Cloud Platform 创建和修改虚拟私有云 (VPC ) 网络。
如果尚未创建,请在VPC 中创建Google Cloud Platform 。要学习;了解详情,请参阅 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
接受 AWS 中的 VPC 对等连接。
要学习;了解更多信息,请参阅 接受VPC对等互连。
使用Atlas Kubernetes Operator检查 VPC 连接状态。
再次运行以下命令,检查VPC连接状态。 当网络对等连接完成时, Atlas Kubernetes Operator返回READY
。
kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.statusName}'
READY
指定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" 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
创建一个新的容器
在
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" accepterRegionName: "US_EAST_2" azureSubscriptionId: "12345678" resourceGroupName: "my-group" azureDirectoryId: "x0xxx10-00x0-0x01-0xxx-x0x0x01xx100" vnetName: "my-vnet" EOF
使用Atlas Kubernetes Operator检查 VPC 连接状态。
运行以下命令,检查VPC连接状态。 当网络对等连接完成时, Atlas Kubernetes Operator返回READY
。
kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.status}'
READY
指定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" routeTableCidrBlock: "10.0.0.0/24" 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" containerRegion: "us-east1" gcpProjectId: "12345678" routeTableCidrBlock: "10.0.0.0/24" networkName: "my-vpc" EOF
在 Google Cloud 中创建 VPC 对等互连。
要学习;了解更多信息,请参阅 使用VPC网络对等互连。
使用Atlas Kubernetes Operator检查 VPC 连接状态。
再次运行以下命令,检查VPC连接状态。 当网络对等连接完成时, Atlas Kubernetes Operator返回READY
。
kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.status}'
READY