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

サーバーレスインスタンスのプライベートエンドポイントの管理

項目一覧

  • 手順

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

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

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

注意

サーバーレスインスタンスは Private Service Connect をサポートしていません。 Private Service Connect を設定する必要がある場合は、専有クラスターを使用してください。

MongoDBは、サーバーレスインスタンスでサポートされる構成と機能を徐々に増やしていく予定です。 MongoDBがサーバーレスインスタンスでサポートする予定の機能については、「 サーバーレスインスタンスの制限 」を参照してください。

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

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

1

spec.serverlessSpec.privateEndpointsAtlasDeploymentカスタム リソース の パラメータを指定します。spec.serverlessSpec.privateEndpoints.nameフィールドに、プライベートエンドポイントを識別するための一意のラベルを指定し、次のコマンドを実行します。

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: atlas-deployment-serverless
spec:
projectRef:
name: my-project
serverlessSpec:
name: serverless-instance
tags:
- key: "environment"
value: "production"
providerSettings:
providerName: SERVERLESS
backingProviderName: AWS
regionName: US_EAST_1
privateEndpoints:
- name: "{unique-private-endpoint-label}"
EOF

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

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

    kubectl get atlasdeployment atlas-deployment-serverless -o yaml
  2. AtlasDeploymentカスタム リソース の stringフィールド内の各プライベートエンドポイントのサービス名の に注目してください。status.serverlessPrivateEndpoints.EndpointServiceName

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 。 この値は、 AtlasDeploymentカスタム リソースstatus.serverlessPrivateEndpoints.EndpointServiceNameフィールド内で見つけます。
    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.serverlessSpec.privateEndpointsAtlasDeploymentカスタム リソース の パラメータを更新します。プライベートエンドポイントのvpce-idVpcEndpointIdの値に置き換え、次のコマンドを実行します。

注意

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

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: atlas-deployment-serverless
spec:
projectRef:
name: my-project
serverlessSpec:
name: serverless-instance
tags:
- key: "environment"
value: "production"
providerSettings:
providerName: SERVERLESS
backingProviderName: AWS
regionName: US_EAST_1
privateEndpoints:
- name: "{unique-private-endpoint-label}"
cloudProviderEndpointID: "{vpce-id}"
EOF
5

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

kubectl get atlasdeployment atlas-deployment-serverless -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.serverlessSpec.privateEndpointsAtlasDeploymentカスタム リソース の パラメータを指定します。spec.serverlessSpec.privateEndpoints.nameフィールドに、プライベートエンドポイントを識別するための一意のラベルを指定し、次のコマンドを実行します。

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: atlas-deployment-serverless
spec:
projectRef:
name: my-project
serverlessSpec:
name: serverless-instance
tags:
- key: "environment"
value: "production"
providerSettings:
providerName: SERVERLESS
backingProviderName: AWS
regionName: US_EAST_1
privateEndpoints:
- name: "{unique-private-endpoint-label}"
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 atlasdeployment atlas-deployment-serverless -o yaml
  2. カスタムAtlasDeployment リソース の フィールドと フィールド内の各プライベートエンドポイントのサービス リソース ID とサービス名をメモします。status.serverlessPrivateEndpoints.PrivateLinkServiceResourceIdstatus.serverlessPrivateEndpoints.EndpointServiceName

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 。 この値は、 AtlasDeploymentカスタム リソースstatus.serverlessPrivateEndpoints.PrivateLinkServiceResourceIdフィールド内で見つけます。
    serviceName
    プライベートエンドポイントのサービス名を識別する一意のstring 。 この値は、 AtlasDeploymentカスタム リソースstatus.serverlessPrivateEndpoints.EndpointServiceNameフィールド内で見つけます。
  3. Azure CLI で コマンドを実行します。

5

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

注意

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

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

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: atlas-deployment-serverless
spec:
projectRef:
name: my-project
serverlessSpec:
name: serverless-instance
tags:
- key: "environment"
value: "production"
providerSettings:
providerName: SERVERLESS
backingProviderName: AWS
regionName: US_EAST_1
privateEndpoints:
- name: "{unique-private-endpoint-label}"
cloudProviderEndpointID: "{resource-id}"
privateEndpointIpAddress: "{private-ip}"
EOF
6

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

kubectl get atlasdeployment atlas-deployment-serverless -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

戻る

専用

項目一覧