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

専有クラスターのプライベートエンドポイントの管理

項目一覧

  • 手順

注意

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

  • M0 クラスター

  • M2/M5 クラスター

  • Flex クラスター

Atlas Kubernetes Operator は、次のプラットフォーム上の専有クラスターのプライベートエンドポイントの管理をサポートしています。

  • Amazon Web Servicesを使用するAWS PrivateLink 機能。

  • AzureAzure Private Link 機能を使用しています。

  • Google Cloud Platform で Private Service Connect 機能を使用。

開始する前に、 プライベートエンドポイントの管理 を参照してください。

クライアントがプライベートエンドポイントを使用して Atlas 専用クラスターに接続できるようにするには、次の手順に従います。

1

spec.privateEndpointsAtlasProjectカスタム リソース の パラメータを指定します。spec.privateEndpoints.providerフィールドにAWSを指定します。 プレースホルダー {aws-region} をプライベートエンドポイントのAmazon Web Servicesのリージョン情報に置き換え、次のコマンドを実行します。

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
spec:
name: Test Atlas Operator Project
privateEndpoints:
- provider: "AWS"
region: "{aws-region}"
EOF

Atlas は選択したリージョンにVPCリソースを作成します。 これが完了するまでに数分かかる場合があります。

2
  1. 次のコマンドを実行します:

    kubectl get atlasproject my-project -o yaml
  2. AtlasProjectカスタム リソース の stringフィールド内の各プライベートエンドポイントのサービス名の に注目してください。status.privateEndpoints.serviceName

3

アプリケーションVPCインターフェイスエンドポイントを作成するには、次の手順に従います。

  1. 次のコマンドをコピーします。

    aws ec2 create-vpc-endpoint --vpc-id {your-application-vpc-id} --region {aws-region} --service-name {service-name-string} --vpc-endpoint-type Interface --subnet-ids {your-application-subnet-ids}
  2. 次のプレースホルダーをAmazon Web Services VPCの詳細に置き換えます。

    your-application-vpc-id

    ピア AWS VPCを識別する一意の文字列。この値は、AWS アカウントの VPC ダッシュボードで確認できます。

    aws-region

    プライベートエンドポイントのAmazon Web Servicesリージョンを識別するラベル。

    service-name-string

    プライベートエンドポイントのサービス名を識別する一意のstring 。 この値は、 AtlasProjectカスタム リソースstatus.privateEndpoints.serviceNameフィールド内で見つけます。

    your-application-subnet-ids

    Amazon Web Services VPCが使用するサブネットを識別する一意の文字列。 各サブネットはスペースで区切ります。 これらの値は、 アカウントの {4Subnet Amazon Web Servicesダッシュボードで確認できます。

    重要:少なくとも 1 つのサブネットを指定する必要があります。 そうしないと、Amazon Web Services は にVPC インターフェイスエンドポイント をプロビジョニングしません。VPC内のクライアントがプライベートエンドポイントにトラフィックを送信するには、インターフェイスエンドポイントが必要です。

  3. Amazon Web ServicesCLI コマンドを実行します。

  4. 出力のVpcEndpointId値に注目してください。

    "VpcEndpoint": {
    "VpcEndpointId": "vpce-XXXXXX",
    "VpcEndpointType": "Interface",
    "VpcId": "vpc-XXXXX",
    "ServiceName": "com.amazonaws.vpce.{aws-region}.vpce-svc-XXXX",
    "State": "pendingAcceptance",

詳細については、「 インターフェイスエンドポイントの作成 Amazon Web Services」を 参照してください。 ( のドキュメント)。

4

spec.privateEndpointsAtlasProjectカスタム リソース の パラメータを更新します。Amazon Web Servicesリージョンを指定し、vpce-id をプライベートエンドポイントの VpcEndpointId 値に置き換え、次のコマンドを実行します。

注意

ピア の一意の識別子は、Amazon Web ServicesVPC アカウントのVPC Amazon Web Servicesダッシュボードで確認できます。

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
spec:
name: Test Atlas Operator Project
privateEndpoints:
- provider: "AWS"
region: "{aws-region}"
id: "{vpce-id}"
EOF
5

次のコマンドを実行します:

kubectl get atlasproject my-project -o yaml
6
  1. 次のコマンドをコピーします。

    重要

    次のコマンドにはjq 1.6 以上が必要です。

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. 次のプレースホルダーをカスタム リソースの詳細に置き換えます。

    my-project

    AtlasProjectカスタム リソースmetadataフィールドの値を指定します。

    my-atlas-cluster

    AtlasDeploymentカスタム リソースmetadataフィールドの値を指定します。

    my-database-user

    AtlasDatabaseUserカスタム リソースmetadataフィールドの値を指定します。

  3. コマンドを実行します。

    注意

    接続文字列は次の例とは異なります。 複数のプライベートエンドポイントがある場合、シークレットには適切な数値サフィックスを持つ複数のconnectionStringPrivate フィールドとconnectionStringPrivateSvr フィールドが含まれます(例:connectionStringPrivate1connectionStringPrivate2 など)。

    {
    "connectionStringPrivate": "mongodb://pl-0-eastus2.uzgh6.mongodb.net:1024,pl-0-eastus2.uzgh6.mongodb.net:1025,pl-0-eastus2.uzgh6.mongodb.net:1026/?ssl=truereplicaSet=atlas-18bndf-shard-0",
    "connectionStringPrivateSrv": "mongodb+srv://cluster0-pl-0.uzgh6.mongodb.net",
    "password": "P@@sword%",
    "username": "theuser"
    }

    この シークレット を使用できます アプリケーション内の次のことを行います。

    containers:
    - name: test-app
    env:
    - name: "CONNECTION_STRING"
    valueFrom:
    secretKeyRef:
    name: my-project-my-atlas-cluster-my-database-user
    key: connectionStringPrivate
1

spec.privateEndpointsAtlasProjectカスタム リソース の パラメータを指定します。spec.privateEndpoints.providerフィールドにAZUREを指定します。 プレースホルダー{azure-region}をプライベートエンドポイントのAzure リージョン情報に置き換え、次のコマンドを実行します。

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
spec:
name: Test Atlas Operator Project
privateEndpoints:
- provider: "AZURE"
region: "{azure-region}"
EOF

Atlas は選択したリージョンに VNET リソースを作成します。 これが完了するまでに数分かかる場合があります。

2

Atlas はプライベートエンドポイントのネットワークポリシーをサポートしていません。

  1. 次のコマンドをコピーします。

    az network vnet subnet update --resource-group {resource-group-name} --vnet-name {vnet-name} --name {subnet-name} --disable-private-endpoint-network-policies true
  2. 次のプレースホルダーをAzure VNet の詳細で置き換えます。

    resource-group-name

    Atlas への接続に使用する VNet を含むリソース グループの、人間が判読可能なラベル。 この値は、 AzureダッシュボードのResource Group Propertiesページで確認できます。

    vnet-name

    Atlas への接続に使用する VNet を識別する、人間が判読可能なラベル。 この値は、 AzureダッシュボードのVirtual Networkページで確認できます。

    subnet-name

    Azure VNet 内のサブネットを識別する、人間が判読できるラベル。 この値は、 AzureダッシュボードのVirtual Network Subnetsページで確認できます。

  3. Azure CLI で コマンドを実行します。

詳しくは、「 プライベート エンドポイントのネットワーク ポリシーの管理 」を参照してください。 Azure ドキュメントを参照してください。

3
  1. 次のコマンドを実行します:

    kubectl get atlasproject my-project -o yaml
  2. カスタムAtlasProject リソース の フィールドと フィールド内の各プライベートエンドポイントのサービス リソース ID とサービス名をメモします。status.privateEndpoints.serviceResourceIdstatus.privateEndpoints.serviceName

4

プライベートエンドポイントを作成するには、次の手順に従います。

  1. 次のコマンドをコピーします。

    az network private-endpoint create --resource-group {resource-group-name} --name {endpoint-name} --vnet-name {vnet-name} --subnet {subnet-name} --private-connection-resource-id {serviceResourceId} --connection-name {serviceName} --manual-request true
  2. 次のプレースホルダーをAzure VNet の詳細で置き換えます。

    resource-group-name

    Atlas への接続に使用する VNet を含むリソース グループの、人間が判読可能なラベル。 この値は、 AzureダッシュボードのResource Group Propertiesページで確認できます。

    endpoint-name

    プライベートエンドポイントを識別する、人間が判読可能なラベル。 これをここで指定します。

    vnet-name

    Atlas への接続に使用する VNet を識別する、人間が判読可能なラベル。 この値は、 AzureダッシュボードのVirtual Networkページで確認できます。

    subnet-name

    Azure VNet 内のサブネットを識別する、人間が判読できるラベル。 この値は、 AzureダッシュボードのVirtual Network Subnetsページで確認できます。

    serviceResourceId

    プライベートエンドポイントのサービス リソースを識別する一意のstring 。 この値は、 AtlasProjectカスタム リソースstatus.privateEndpoints.serviceResourceIdフィールド内で見つけます。

    serviceName

    プライベートエンドポイントのサービス名を識別する一意のstring 。 この値は、 AtlasProjectカスタム リソースstatus.privateEndpoints.serviceNameフィールド内で見つけます。

  3. Azure CLI で コマンドを実行します。

5

spec.privateEndpointsAtlasProjectカスタム リソース の パラメータを更新します。プライベートエンドポイントのAzure リージョン、リソース ID、IP アドレス情報を指定し、次のコマンドを実行します。

注意

AzureダッシュボードのPropertiesページには、 Resource IDフィールドで作成したプライベートエンドポイントの一意の識別子が表示されます。

AzureダッシュボードのOverviewページには、 Private IPフィールドに作成したプライベートエンドポイント ネットワーク インターフェイスのプライベート IP アドレスが表示されます。

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
spec:
name: Test Atlas Operator Project
privateEndpoints:
- provider: "Azure"
region: "{azure-region}"
id: "{resource-id}"
ip: "{private-ip}"
EOF
6

次のコマンドを実行します:

kubectl get atlasproject my-project -o yaml
7
  1. 次のコマンドをコピーします。

    重要

    次のコマンドにはjq 1.6 以上が必要です。

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. 次のプレースホルダーをカスタム リソースの詳細に置き換えます。

    my-project

    AtlasProjectカスタム リソースmetadataフィールドの値を指定します。

    my-atlas-cluster

    AtlasDeploymentカスタム リソースmetadataフィールドの値を指定します。

    my-database-user

    AtlasDatabaseUserカスタム リソースmetadataフィールドの値を指定します。

  3. コマンドを実行します。

    注意

    接続文字列は次の例とは異なります。 複数のプライベートエンドポイントがある場合、シークレットには適切な数値サフィックスを持つ複数のconnectionStringPrivate フィールドとconnectionStringPrivateSvr フィールドが含まれます(例:connectionStringPrivate1connectionStringPrivate2 など)。

    {
    "connectionStringPrivate": "mongodb://pl-0-eastus2.uzgh6.mongodb.net:1024,pl-0-eastus2.uzgh6.mongodb.net:1025,pl-0-eastus2.uzgh6.mongodb.net:1026/?ssl=truereplicaSet=atlas-18bndf-shard-0",
    "connectionStringPrivateSrv": "mongodb+srv://cluster0-pl-0.uzgh6.mongodb.net",
    "password": "P@@sword%",
    "username": "theuser"
    }

    この シークレット を使用できます アプリケーション内の次のことを行います。

    containers:
    - name: test-app
    env:
    - name: "CONNECTION_STRING"
    valueFrom:
    secretKeyRef:
    name: my-project-my-atlas-cluster-my-database-user
    key: connectionStringPrivate
1

spec.privateEndpointsAtlasProjectカスタム リソース の パラメータを指定します。spec.privateEndpoints.providerフィールドにGCPを指定します。 プレースホルダー{gcp-region}をプライベートエンドポイントのGoogle Cloud Platform リージョン情報に置き換え、次のコマンドを実行します。

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
spec:
name: Test Atlas Operator Project
privateEndpoints:
- provider: "GCP"
region: "{gcp-region}"
EOF

Atlas は選択したリージョンにVPCリソースを作成します。 これが完了するまでに数分かかる場合があります。

2
  1. 次のコマンドを実行します:

    kubectl get atlasproject my-project -o yaml
  2. 各サービス アタッチメント名で、 projects/の後に続く{unique-id}に注意してください。 次の例の{unique-id}p-ogyvk1plka2anycnzl6znr9pです。

    "serviceAttachmentNames": [
    "projects/p-ogyvk1plka2anycnzl6znr9p/regions/us-east1/serviceAttachments/sa-us-east1-6274f45bcce0e51662a29b05-0",
    "projects/p-ogyvk1plka2anycnzl6znr9p/regions/us-east1/serviceAttachments/sa-us-east1-6274f45bcce0e51662a29b05-1",
    "projects/p-ogyvk1plka2anycnzl6znr9p/regions/us-east1/serviceAttachments/sa-us-east1-6274f45bcce0e51662a29b05-2",
    "projects/p-ogyvk1plka2anycnzl6znr9p/regions/us-east1/serviceAttachments/sa-us-east1-6274f45bcce0e51662a29b05-3",
    "projects/p-ogyvk1plka2anycnzl6znr9p/regions/us-east1/serviceAttachments/sa-us-east1-6274f45bcce0e51662a29b05-4",
    "projects/p-ogyvk1plka2anycnzl6znr9p/regions/us-east1/serviceAttachments/sa-us-east1-6274f45bcce0e51662a29b05-5"
    ]
3

Atlas UI を使用してプライベートエンドポイントを編集し、必要なスクリプトを生成するには、「プライベートエンドポイントの構成 」を参照してください。

プライベートエンドポイントを手動で設定する方法

  1. 次の shell スクリプトをコピーします。

    #!/bin/bash
    gcloud config set project {google-cloud-project-id}
    for i in {0..5}
    do
    gcloud compute addresses create {private-service-connect-endpoint-prefix}-ip-$i --region={gcp-region} --subnet={subnet-name}
    done
    for i in {0..5}
    do
    if [ $(gcloud compute addresses describe {private-service-connect-endpoint-prefix}-ip-$i --region={gcp-region} --format="value(status)") != "RESERVED" ]; then
    echo "{private-service-connect-endpoint-prefix}-ip-$i is not RESERVED";
    exit 1;
    fi
    done
    for i in {0..5}
    do
    gcloud compute forwarding-rules create {private-service-connect-endpoint-prefix}-$i --region={gcp-region} --network={vpc-name} --address={private-service-connect-endpoint-prefix}-ip-$i --target-service-attachment=projects/{unique-ID}/regions/{gcp-region}/serviceAttachments/sa-{gcp-region}-{org-id}-$i
    done
    if [ $(gcloud compute forwarding-rules list --regions={gcp-region} --format="csv[no-heading](name)" --filter="name:{private-service-connect-endpoint-prefix}" | wc -l) -gt 50 ]; then
    echo "Project has too many forwarding rules that match prefix {endpoint-name}. Either delete the competing resources or choose another endpoint prefix."
    exit 2;
    fi
    gcloud compute forwarding-rules list --regions={gcp-region} --format="json(IPAddress,name)" --filter="name:{private-service-connect-endpoint-prefix}" > atlasEndpoints-{endpoint-name}.json
  2. 次のプレースホルダーを、 Google Cloud Platform VPCの詳細に置き換えます。

    google-cloud-project-id

    IDGoogle Cloud Platformプロジェクトを識別する一意の 。この値は、 Google Cloud Platformの Dashboard ページで確認できます。

    private-service-connect-endpoint-prefix

    作成されたすべてのエンドポイントのプレフィックスを付け、エンドポイントグループを識別する、人間が判読可能なラベル。

    gcp-region

    プライベートエンドポイントのGoogle Cloud Platform リージョンを識別するラベル。

    subnet-name

    Google Cloud Platform VPC内のサブネットを識別する、人間に判読可能なラベル。 この値は、 Google Cloud Platformダッシュボードの VPC Networks ページで確認できます。

    vpc-name

    Atlas への接続に使用するVPCを識別する、人間が判読可能なラベル。 この値は、 Google Cloud Platformダッシュボードの VPC Networks ページで確認できます。

    unique-id

    プロジェクトのステータスを返すときに記録した一意string 。

    org-id

    組織 を識別する一意の 24桁の 16 進数 。stringAtlas

  3. shell ファイルをsetup_psc.shとして保存し、次のコマンドでファイルを保存したディレクトリからスクリプトを実行します。

    sh setup_psc.sh

    このスクリプトでは、IP アドレスと転送ルール名のリストを含むatlasEndpoints-{endpoint-name}.json出力ファイルが作成されます。

  4. Atlas Kubernetes Operator の出力をフォーマットするには、次のコマンドを実行します。

    yq e -P atlasEndpoints-{endpoint-name}.json > atlasEndpoints-user-private-endpoint.yaml
    awk 'sub("name","endpointName")sub("IPAddress","ipAddress")' atlasEndpoints-user-private-endpoint.yaml

    出力は、次の例のようになります。

    - ipAddress: 10.0.0.00
    endpointName: {endpoint-name}-0
    - ipAddress: 10.0.0.01
    endpointName: {endpoint-name}-1
    - ipAddress: 10.0.0.02
    endpointName: {endpoint-name}-2
    - ipAddress: 10.0.0.03
    endpointName: {endpoint-name}-3
    - ipAddress: 10.0.0.04
    endpointName: {endpoint-name}-4
    - ipAddress: 10.0.0.05
    endpointName: {endpoint-name}-5
4

spec.privateEndpointsAtlasProjectカスタム リソース の パラメータを更新します。Google Cloud Platform リージョンGoogle Cloud Project IDPrivate Service Endpoint Prefix 、出力情報を指定し、次のコマンドを実行します。

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
spec:
name: Test Atlas Operator Project
privateEndpoints:
- provider: "GCP"
region: "{gcp-region}"
gcpProjectId: "{project-id}"
endpointGroupName: "{endpoint-name}"
endpoints:
- ipAddress: {ip-address}
endpointName: {endpoint-name}-0
- ipAddress: {ip-address}
endpointName: {endpoint-name}-1
- ipAddress: {ip-address}
endpointName: {endpoint-name}-2
- ipAddress: {ip-address}
endpointName: {endpoint-name}-3
- ipAddress: {ip-address}
endpointName: {endpoint-name}-4
- ipAddress: {ip-address}
endpointName: {endpoint-name}-5
EOF
5

次のコマンドを実行します:

kubectl get atlasproject my-project -o yaml
6
  1. 次のコマンドをコピーします。

    重要

    次のコマンドにはjq 1.6 以上が必要です。

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. 次のプレースホルダーをカスタム リソースの詳細に置き換えます。

    my-project

    AtlasProjectカスタム リソースmetadataフィールドの値を指定します。

    my-atlas-cluster

    AtlasDeploymentカスタム リソースmetadataフィールドの値を指定します。

    my-database-user

    AtlasDatabaseUserカスタム リソースmetadataフィールドの値を指定します。

  3. コマンドを実行します。

    注意

    接続文字列は次の例とは異なります。 複数のプライベートエンドポイントがある場合、シークレットには適切な数値サフィックスを持つ複数のconnectionStringPrivate フィールドとconnectionStringPrivateSvr フィールドが含まれます(例:connectionStringPrivate1connectionStringPrivate2 など)。

    {
    "connectionStringPrivate": "mongodb://pl-0-eastus2.uzgh6.mongodb.net:1024,pl-0-eastus2.uzgh6.mongodb.net:1025,pl-0-eastus2.uzgh6.mongodb.net:1026/?ssl=truereplicaSet=atlas-18bndf-shard-0",
    "connectionStringPrivateSrv": "mongodb+srv://cluster0-pl-0.uzgh6.mongodb.net",
    "password": "P@@sword%",
    "username": "theuser"
    }

    この シークレット を使用できます アプリケーション内の次のことを行います。

    containers:
    - name: test-app
    env:
    - name: "CONNECTION_STRING"
    valueFrom:
    secretKeyRef:
    name: my-project-my-atlas-cluster-my-database-user
    key: connectionStringPrivate

戻る

プライベートエンドポイント

項目一覧