注意
- 此功能不适用于
M0集群和Flex集群。
Atlas 支持 AWS、Google Cloud 和 Azure 托管的专用集群,以及多云分片集群的网络对等连接。
网络对等互连可在 Atlas VPC 与云提供商的 VPC 之间建立私有连接。该连接将流量与公共网络隔离以提高安全性。
Atlas 不支持 您在不同云提供商的单个区域部署的集群之间建立网络对等互连。
要使用Atlas Kubernetes Operator管理网络对等连接,您可以指定并更新spec.networkPeersAtlasProject 自定义资源的参数。每次更改任何支持的自定义资源中的 spec 字段时,Atlas Kubernetes Operator 创建或更新 相应的 Atlas 配置。
先决条件
要使用 Atlas Kubernetes Operator 配置网络对等互连,您需要:
The
Project OwnerorOrganization Ownerrole in Atlas.如果尚未创建,请在 AWS 中创建 VPC 。要了解更多信息,请参阅开始使用 Amazon VPC。
The
Project OwnerorOrganization Ownerrole in Atlas.如果尚未创建,请在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 的详细信息:变量说明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>"
The
Project OwnerorOrganization Ownerrole in Atlas.具有 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.accepterRegionNameAWS region for your VPC.
spec.networkPeers.awsAccountIdAWS 账户的唯一标识符。当您单击控制台主页右上角的帐户名称时,AWS 会显示帐户 ID。
spec.networkPeers.routeTableCidrBlockAWS VPC 的 CIDR 块。AWS 在 VPC 的详细信息页面显示 CIDR 块。
spec.networkPeers.vpcIdAWS VPC 的唯一标识符。AWS 在 VPC 的详细信息页面显示 VPC ID。
运行以下命令:
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.atlasCidrBlockAtlas Kubernetes Operator 为其创建新容器的 Atlas CIDR 块。如果您不指定
atlasCidrBlock,则必须指定现有容器的containerId。要了解更多信息,请参阅本过程中的 Use Existing Container 部分。spec.networkPeers.containerRegion(可选)Atlas Kubernetes Operator 在其中创建新容器的 AWS 区域。如果您不指定
containerRegion或containerId,则 Atlas Kubernetes Operator 将在与accepterRegionName相同的区域创建新容器。spec.networkPeers.accepterRegionNameAWS region for your VPC.
spec.networkPeers.awsAccountIdAWS 账户的唯一标识符。当您单击控制台主页右上角的帐户名称时,AWS 会显示帐户 ID。
spec.networkPeers.routeTableCidrBlockAWS VPC 的 CIDR 块。AWS 在 VPC 的详细信息页面显示 CIDR 块。
spec.networkPeers.vpcIdAWS VPC 的唯一标识符。AWS 在 VPC 的详细信息页面显示 VPC ID。
运行以下命令:
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.accepterRegionNameAzure region for your VPC.
spec.networkPeers.azureSubscriptionIdAzure订阅的唯一标识符。 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" 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.atlasCidrBlockAtlas Kubernetes Operator 为其创建新容器的 Atlas CIDR 块。如果您不指定
atlasCidrBlock,则必须指定现有容器的containerId。要了解更多信息,请参阅本过程中的 Use Existing Container 部分。spec.networkPeers.containerRegion(Optional) Azure region in which Atlas Kubernetes Operator creates a new container. If you don't specify either a
containerRegionor acontainerId, Atlas Kubernetes Operator creates a new container in the same region as theaccepterRegionName.spec.networkPeers.accepterRegionNameAzure region for your VPC.
spec.networkPeers.azureSubscriptionIdAzure订阅的唯一标识符。 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
使用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.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.networkPeers
AtlasProject自定义资源中的参数。将以下占位符替换为您的值:占位符说明spec.networkPeers.providerName云提供商名称。指定
GCP。spec.networkPeers.atlasCidrBlockAtlas Kubernetes Operator 为其创建新容器的 Atlas CIDR 块。如果您不指定
atlasCidrBlock,则必须指定现有容器的containerId。要了解更多信息,请参阅本过程中的 Use Existing Container 部分。spec.networkPeers.containerRegionGoogle Cloud region for your VPC.
spec.networkPeers.containerRegionGoogle Cloud region in which Atlas Kubernetes Operator creates a new container. If you don't specify
containerRegion, you must specify thecontainerIdof an existing container. To learn more, see the Use Existing Container section in this procedure.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
在 Google Cloud 中创建 VPC 对等互连连接。
要学习;了解更多信息,请参阅使用VPC网络对等互连。
使用Atlas Kubernetes Operator检查VPC连接状态。
再次运行以下命令,检查 VPC 连接状态。当网络对等连接完成时,Atlas Kubernetes Operator 返回 READY。
kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.status}'
READY