Docs 菜单
Docs 主页
/ /
MongoDB Atlas Kubernetes Operator
/

配置网络对等互连

在此页面上

  • 先决条件
  • 步骤

注意

此功能不适用于以下任何部署:

  • 无服务器实例

  • 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 配置网络对等互连,您需要:

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

  • Project OwnerAtlas中的Organization Owner 或 角色。

  • 如果尚未创建,请在VPC 中创建Amazon Web Services 。要学习;了解更多信息,请参阅 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
    Amazon Web Services VPC的唯一标识符。 Amazon Web Services在 的详细信息页面上显示VPCID 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: "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 Atlas Kubernetes Operator创建新容器的Atlas CIDR区块。 如果不指定atlasCidrBlock ,则必须指定现有容器的containerId 。 要学习;了解详情,请参阅此过程中的Use Existing Container部分。
    spec.networkPeers.containerRegion
    (可选)Amazon Web Services Atlas Kubernetes Operator在其中创建新容器的 地区。如果您未指定containerRegioncontainerId , Atlas Kubernetes Operator将在与accepterRegionName相同的地区中创建一个新容器。
    spec.networkPeers.accepterRegionName
    spec.networkPeers.awsAccountId
    您的Amazon Web Services帐户的唯一标识符。 当您单击控制台主页右上角的帐户名称时, Amazon Web Services会显示帐户ID 。
    spec.networkPeers.routeTableCidrBlock
    AWS VPCCIDR 块。AWSVPC 的详细信息页面显示 CIDR 块。
    spec.networkPeers.vpcId
    Amazon Web Services VPC的唯一标识符。 Amazon Web Services在 的详细信息页面上显示VPCID 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: "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"
    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
  1. spec.networkPeersAtlasProject 自定义资源 中指定 参数。将以下占位符替换为您的值:

    占位符
    说明
    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地区。 如果您未指定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"
    accepterRegionName: "US_EAST_2"
    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"
    routeTableCidrBlock: "10.0.0.0/24"
    networkName: "my-vpc"
    EOF
  1. spec.networkPeersAtlasProject 自定义资源 中指定 参数。将以下占位符替换为您的值:

    占位符
    说明
    spec.networkPeers.providerName
    云提供商名称。指定 GCP
    spec.networkPeers.atlasCidrBlock
    Atlas Atlas Kubernetes Operator创建新容器的Atlas CIDR区块。 如果不指定atlasCidrBlock ,则必须指定现有容器的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"
    containerRegion: "us-east1"
    gcpProjectId: "12345678"
    routeTableCidrBlock: "10.0.0.0/24"
    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

后退

密钥存储

在此页面上