注意
- この機能は、 - M0クラスターと- 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 クラスター。 
- Atlas - Organization Ownerの- Project Ownerまたは ロール。
- まだ作成していない場合は、 Amazon Web Services で VPC を作成します。詳細については、 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 ネットワークピアリング接続を作成する前に、次の手順を完了する必要があります。 - 次の 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. 
- 次の例の - 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 Kubernetes Operatorが配置された実行中の Kubernetes クラスター。 
- Atlas の - Project Ownerまたは- Organization Ownerロール。
- IAM ユーザー ポリシーが定められ、かつ コンピュート ネットワーク管理者 ロール(ネットワーク リソースの作成、変更、削除が可能)を持つGoogle Cloud Platformユーザー アカウント。Google Cloud Platformでプライベートエンドポイントと接続を管理する方法について詳しくは、 「 VPC (VPC)ネットワークの作成と変更 」を参照してください。 
- まだ作成していない場合は、 Google Cloud PlatformでVPCを作成します。詳しくは、 「 GCPドキュメント 」を参照してください。 
手順
次の手順で、クライアントがネットワークピアリング接続を使用して Atlas クラスターに接続できるようにします。
spec.networkPeersパラメータを指定します。
既存のコンテナまたは新しいコンテナを使用するようにネットワーク ピアリングを構成できます。
既存のコンテナを使用
- spec.networkPeers- AtlasProjectカスタム リソース で パラメータを指定します。次のプレースホルダーを自分の値に置き換えます。プレースホルダー説明- 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 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 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 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 
VPCAmazon WebAmazon Web Services ServicesでVPCピアリング接続を受け入れます。
詳細については、 VPCピアリング接続の受け入れ を参照してください。
Atlas Kubernetes Operator を使用してVPC接続のステータスを確認します。
次のコマンドを再度実行して、 VPC接続のステータスを確認します。 ネットワークピアリング接続が完了すると、Atlas Kubernetes Operator はREADYを返します。
kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.statusName}' 
READY 
spec.networkPeersパラメータを指定します。
既存のコンテナまたは新しいコンテナを使用するようにネットワーク ピアリングを構成できます。
既存のコンテナを使用
- 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" - 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 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アクティブ ディレクトリ テナントの一意な識別子です。 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パラメータを指定します。
既存のコンテナまたは新しいコンテナを使用するようにネットワーク ピアリングを構成できます。
既存のコンテナを使用
- 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" - networkName: "my-vpc" - EOF 
新しいコンテナの作成
- spec.networkPeers- AtlasProjectカスタム リソース で パラメータを指定します。次のプレースホルダーを自分の値に置き換えます。プレースホルダー説明- 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の詳細ページにネットワーク名が表示されます。 
- 次のコマンドを実行します: - 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 
VPCGoogle Cloud PlatformでVPCピアリング接続を作成します。Google Cloud Platform
詳細については、 VPCネットワークピアリングの使用 を参照してください。
Atlas Kubernetes Operator を使用してVPC接続のステータスを確認します。
次のコマンドを再度実行して、 VPC接続のステータスを確認します。 ネットワークピアリング接続が完了すると、Atlas Kubernetes Operator はREADYを返します。
kubectl get atlasprojects my-project -o=jsonpath='{.status.networkPeers.status}' 
READY