ネットワークピアリングの構成
注意
この機能は、次の配置では使用できません。
サーバーレス インスタンス
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 クラスター。
Atlas
Organization Owner
のProject Owner
または ロール。まだ作成していない場合は、VPC でAmazon 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 ネットワークピアリング接続を作成する前に、次の手順を完了する必要があります。
次の 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 を作成します。詳しくは、「 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" 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 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" 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
パラメータを指定します。
既存のコンテナまたは新しいコンテナを使用するようにネットワーク ピアリングを構成できます。
既存のコンテナを使用
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 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" containerRegion: "us-east1" gcpProjectId: "12345678" routeTableCidrBlock: "10.0.0.0/24" 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