Docs Menu
Docs Home
/ /
MongoDB Atlas Kubernetes 演算子
/

ネットワークピアリングの構成

項目一覧

  • 前提条件
  • 手順

注意

この機能は、次の配置では使用できません。

  • サーバーレス インスタンス

  • M0 クラスター

  • M2/M5 クラスター

  • Flex クラスター

Atlas は、 AWS、Google Cloud、Azure でホストされている専有クラスターと、マルチクラウドのシャーディングされたクラスターにおけるネットワークピアリング接続をサポートしています。

ネットワークピアリングで、Atlas VPC とクラウドプロバイダーの VPC の間で確立されるプライベート接続では、パブリック ネットワークのトラフィックを分離することで、セキュリティが強化されます。

Atlas では、異なるクラウドプロバイダーの単一リージョンに配置するクラスター間のネットワークピアリングはサポートしていません。

Atlas Kubernetes Operator を使用してネットワークピアリング接続を管理するには、 カスタム リソース のspec.networkPeers AtlasProjectパラメータを指定して更新します。サポートされているカスタム リソースのいずれかでspecフィールドを変更するたびに、Atlas Kubernetes Operator は対応する Atlas 構成を作成または更新します。

Atlas Kubernetes Operator を使用してネットワークピアリングを構成するには、次のものが必要です。

  • Atlas Kubernetes Operatorが配置された実行中の Kubernetes クラスター。

  • AtlasOrganization OwnerProject Owner または ロール。

  • まだ作成していない場合は、VPCAmazon Web Services を作成します。詳細については、 「 Amazon VPC を使い始める 」を参照してください。

  • ネットワーク トラフィック ルール は、アウトバウンド トラフィック用です。

    Atlas に接続するリソースにアタッチされた AWS セキュリティ グループに、次のネットワーク トラフィック ルールを作成します。

    権限
    方向
    ポート
    ターゲット

    許可する

    アウトバウンド

    27015から27017

    使用している Atlas CIDR

  • Atlas Kubernetes Operatorが配置された実行中の Kubernetes クラスター。

  • Atlas のProject OwnerまたはOrganization Ownerロール。

  • まだ作成していない場合は、 Azureで VNet を作成します。 詳しくは、「 Azure portal を使用して仮想ネットワークを作成する 」を参照してください。

  • ネットワークピアリング接続を構成するために必要な Azure ロール。

    詳しくは、「 Azure 権限 」を参照してください。

  • Atlas ピアリング アプリケーション ID のサービスプリンシパル。

    注意

    Atlas が ネットワークピアリング を作成する方法の詳細 Azure VPC との接続については 、 ネットワークピアリング接続の設定 のAzure タブを参照してください。

    各 Azure ネットワークピアリング接続を作成する前に、次の手順を完了する必要があります。

    1. 次の Azure CLI コマンドを実行し、指定された Atlas ピアリング アプリケーション ID を使用してサービスプリンシパルを作成します。

      az ad sp create --id e90a1407-55c3-432d-9cb1-3638900a9d22

      これは、サブスクライブごとに 1 回だけ必要です。 次のメッセージが表示された場合は、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

    用のAmazon Web ServicesVPC CIDR ブロック。Amazon Web Servicesは、 の詳細ページに CIDR VPCブロックを表示します。

    spec.networkPeers.vpcId

    Amazon Web Services VPCの一意の識別子です。 Amazon Web ServicesVPCID 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 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

    spec.networkPeers.awsAccountId

    Amazon Web Servicesアカウントの一意の識別子です。 コンソールのホームページの右上隅にあるアカウント名をクリックすると、 Amazon Web ServicesにアカウントIDが表示されます。

    spec.networkPeers.routeTableCidrBlock

    用のAmazon Web ServicesVPC CIDR ブロック。Amazon Web Servicesは、 の詳細ページに CIDR VPCブロックを表示します。

    spec.networkPeers.vpcId

    Amazon Web Services VPCの一意の識別子です。 Amazon Web ServicesVPCID 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の場合は次のステップに進みます。 statusNameWAITING 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

    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 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

    spec.networkPeers.azureSubscriptionId

    Azure サブスクライブの一意な識別子です。 Azureでは、サブスクリプションの詳細ページにサブスクリプション ID が表示されます。

    spec.networkPeers.resourceGroupName

    VPC を含む Azure リソース グループを識別する、人間が判読可能なラベル。Azureでは、リソース グループの詳細ページにリソース グループ名が表示されます。

    spec.networkPeers.azureDirectoryId

    Azureアクティブ ディレクトリ テナントの一意な識別子です。 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 Kubernetes Operator が新しいコンテナを作成する Atlas CIDRブロック。 atlasCidrBlockを指定しない場合は、既存のコンテナのcontainerIdを指定する必要があります。 詳しくは、この手順のUse Existing Containerセクションを参照してください。

    spec.networkPeers.containerRegion

    spec.networkPeers.containerRegion

    Google Cloud PlatformAtlas 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の場合は次のステップに進みます。 statusPENDING ACCEPTANCEでない場合は、数分待ってからこのステップをもう一度試してください。

3

詳細については、「 VPC ネットワークピアリングの使用 」を参照してください。

4

次のコマンドを再度実行して、 VPC接続のステータスを確認します。 ネットワークピアリング接続が完了すると、Atlas Kubernetes Operator はREADYを返します。

kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.status}'
READY

戻る

シークレット ストレージ

項目一覧