Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
/ / / /

Administra los nodos privados para clústeres dedicados

Nota

Esta característica no está disponible para ninguna de las siguientes implementaciones:

  • M0 Clústeres

  • M2/M5 Clústeres

  • Clústeres Flex

Atlas Kubernetes Operator admite la gestión de nodos privados para clústeres dedicados en las siguientes plataformas:

  • AWS utilizando el AWS PrivateLink funcionalidad.

  • Azure usando la característica Azure Private Link.

  • Google Cloud utiliza la funcionalidad Private Service Connect.

Antes de comenzar, consulta Gestiona nodos privados.

Para permitir que los clientes se conecten a los clústeres dedicados de Atlas mediante nodos privados:

1

Especifique los spec.privateEndpoints parámetro para el AtlasProject Recurso personalizado. En el campo spec.privateEndpoints.provider, especifique AWS. Reemplaza el marcador de posición {aws-region} con la información de la región de AWS para tus nodos privados y ejecuta el siguiente comando:

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 crea los recursos VPC en la región que seleccionó. Esto puede llevar varios minutos completarse.

2
  1. Ejecuta el siguiente comando:

    kubectl get atlasproject my-project -o yaml
  2. Tome nota de la string del nombre del servicio para cada uno de los nodos privados dentro del campo status.privateEndpoints.serviceName de AtlasProject Custom Resource.

3

Para crear el VPC de tu aplicación, endpoint de la interfaz:

  1. Copie el siguiente comando:

    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. Reemplace los siguientes marcadores de posición con los detalles sobre su AWS VPC:

    your-application-vpc-id

    String única que identifica el par AWS VPC. Encontrar este valor en el tablero VPC de la cuenta AWS.

    aws-region

    Etiqueta que identifica la región de AWS del endpoint privado.

    service-name-string

    string única que identifica el nombre del servicio para tu endpoint privado. Encuentra este valor en el status.privateEndpoints.serviceName campo del AtlasProject recurso personalizado

    your-application-subnet-ids

    Cadenas únicas que identifican las subredes que utiliza tu AWS VPC. Separe cada subred con un espacio. Encuentra estos valores en la Subnet tablero en tu cuenta de AWS.

    IMPORTANTE: Debe especificar al menos una subred. Si no lo haces, AWS no aprovisionará un endpoint de la interfaz en tu VPC. Se requiere un endpoint de la interfaz para que los clientes en tu VPC envíen tráfico al punto de acceso privado.

  3. Ejecuta el comando con el AWS CLI.

  4. Toma nota del valor VpcEndpointId en la salida.

    Ejemplo

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

Para obtener más información, consulta Crear un endpoint de la interfaz en la documentación de AWS.

4

Actualice el spec.privateEndpoints parámetro para el AtlasProject Recurso personalizado. Especifica la región AWS y se reemplaza vpce-id con los valores VpcEndpointId de tus nodos privados y se ejecuta el siguiente comando:

Nota

Puedes encontrar el identificador único de la paridad AWS VPC en el tablero de VPC en tu cuenta de AWS.

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

Ejecuta el siguiente comando:

kubectl get atlasproject my-project -o yaml
6
  1. Copie el siguiente comando:

    Importante

    El siguiente comando requiere jq 1.6 o superior.

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. Reemplaza los siguientes marcadores de posición con los detalles para tus recursos personalizados:

    my-project

    Especifica el valor del campo metadata de tu AtlasProject Recurso Personalizado.

    my-atlas-cluster

    Especifica el valor del campo metadata de tu AtlasDeployment Recurso Personalizado.

    my-database-user

    Especifica el valor del campo metadata de tu AtlasDatabaseUser Recurso Personalizado.

  3. Ejecuta el comando.

    Nota

    Tus cadenas de conexión serán diferentes del siguiente ejemplo. Si tienes varios nodos privados, el secreto contiene varios campos connectionStringPrivate y connectionStringPrivateSvr con el correspondiente sufijo numérico (por ejemplo, connectionStringPrivate1, connectionStringPrivate2, etc.).

    {
    "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"
    }

    Puedes usar este secreto en tu aplicación:

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

Especifique los spec.privateEndpoints parámetro para el AtlasProject Custom recurso. En el campo spec.privateEndpoints.provider, especifica AZURE. Reemplaza el marcador de posición {azure-region} con la información de la región de Azure para tus nodos privados y ejecuta el siguiente comando:

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 crea los recursos VNET en la región que seleccionaste. Esto puede tardar varios minutos en completarse.

2

Atlas no admite políticas de red para nodos privados.

  1. Copie el siguiente comando:

    az network vnet subnet update --resource-group {resource-group-name} --vnet-name {vnet-name} --name {subnet-name} --disable-private-endpoint-network-policies true
  2. Reemplaza los siguientes marcadores de posición con los detalles de tu VNet de Azure:

    resource-group-name

    Etiqueta legible por humanos para el grupo de recursos que contiene la VNet que deseas utilizar para conectarse a Atlas. Busca este valor en la página Resource Group Properties de tu Azure tablero.

    vnet-name

    Etiqueta legible por humanos que identifica la VNet que desea utilizar para conectarse a Atlas. Encuentre este valor en la página Virtual Network de su tablero Azure.

    subnet-name

    Etiqueta legible por humanos que identifica la subred en la VNet de Azure. Encuentra este valor en la página Virtual Network Subnets de tu tablero Azure.

  3. Ejecutar el comando con el Azure CLI.

Para obtener más información, consulta Administrar políticas de red para nodos privados en la documentación de Azure.

3
  1. Ejecuta el siguiente comando:

    kubectl get atlasproject my-project -o yaml
  2. Toma nota del ID del recurso de servicio y el nombre del servicio para cada uno de los nodos privados dentro de los campos status.privateEndpoints.serviceResourceId y status.privateEndpoints.serviceName del AtlasProject recurso personalizado.

4

Para crear tu endpoint privado:

  1. Copie el siguiente comando:

    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. Reemplaza los siguientes marcadores de posición con los detalles de tu VNet de Azure:

    resource-group-name

    Etiqueta legible por humanos para el grupo de recursos que contiene la VNet que deseas utilizar para conectarse a Atlas. Busca este valor en la página Resource Group Properties de tu Azure tablero.

    endpoint-name

    Etiqueta legible por humanos que identifica tu endpoint privado. Especifica esto ahora.

    vnet-name

    Etiqueta legible por humanos que identifica la VNet que desea utilizar para conectarse a Atlas. Encuentre este valor en la página Virtual Network de su tablero Azure.

    subnet-name

    Etiqueta legible por humanos que identifica la subred en la VNet de Azure. Encuentra este valor en la página Virtual Network Subnets de tu tablero Azure.

    serviceResourceId

    string única que identifica el recurso de servicio para tu nodo privado. Encuentra este valor en el campo status.privateEndpoints.serviceResourceId del AtlasProject Recurso Personalizado.

    serviceName

    string única que identifica el nombre del servicio para tu endpoint privado. Encuentra este valor en el status.privateEndpoints.serviceName campo del AtlasProject recurso personalizado

  3. Ejecutar el comando con el Azure CLI.

5

Actualice el spec.privateEndpoints parámetro para el AtlasProject Recurso personalizado. Especifica la región de Azure, la ID del recurso y la información de dirección IP para tus nodos privados y ejecutar el siguiente comando:

Nota

La página Properties en el tablero de Azure muestra el identificador único del nodo privado que se creó en el campo Resource ID.

La página Overview en tu tablero de Azure muestra la dirección IP privada de la interfaz de red del punto final privado que creaste en el campo Private 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

Ejecuta el siguiente comando:

kubectl get atlasproject my-project -o yaml
7
  1. Copie el siguiente comando:

    Importante

    El siguiente comando requiere jq 1.6 o superior.

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. Reemplaza los siguientes marcadores de posición con los detalles para tus recursos personalizados:

    my-project

    Especifica el valor del campo metadata de tu AtlasProject Recurso Personalizado.

    my-atlas-cluster

    Especifica el valor del campo metadata de tu AtlasDeployment Recurso Personalizado.

    my-database-user

    Especifica el valor del campo metadata de tu AtlasDatabaseUser Recurso Personalizado.

  3. Ejecuta el comando.

    Nota

    Tus cadenas de conexión serán diferentes del siguiente ejemplo. Si tienes varios nodos privados, el secreto contiene varios campos connectionStringPrivate y connectionStringPrivateSvr con el correspondiente sufijo numérico (por ejemplo, connectionStringPrivate1, connectionStringPrivate2, etc.).

    {
    "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"
    }

    Puedes usar este secreto en tu aplicación:

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

Especifique los spec.privateEndpoints parámetro para el AtlasProject Custom recurso. En el campo spec.privateEndpoints.provider, especifica GCP. Reemplaza el marcador de posición {gcp-region} con la información de la región de Google Cloud Platform para tus nodos privados y ejecuta el siguiente comando:

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 crea los recursos VPC en la región que seleccionó. Esto puede llevar varios minutos completarse.

2
  1. Ejecuta el siguiente comando:

    kubectl get atlasproject my-project -o yaml
  2. Tenga en cuenta el {unique-id} que sigue a projects/ en cada nombre de adjunto de servicio. El {unique-id} en el siguiente ejemplo es p-ogyvk1plka2anycnzl6znr9p.

    Ejemplo

    "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

Para editar los nodos privados y generar el script necesario con Atlas Interfaz de Usuario, consulta Configurar nodos privados

Para configurar tus nodos privados manualmente:

  1. Copia el siguiente script de 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. Reemplaza los siguientes marcadores de posición con los detalles de tu VPC en Google Cloud:

    google-cloud-project-id

    ID único que identifica tu proyecto de Google Cloud. Encuentre este valor en la página Dashboard de su plataforma de Google Cloud.

    private-service-connect-endpoint-prefix

    Etiqueta legible por humanos que antepone a todos los endpoint creados y que identifica el grupo de endpoint.

    gcp-region

    Etiqueta que identifica la región de Google Cloud Platform del endpoint privado.

    subnet-name

    Etiqueta legible por humanos que identifica la subred en tu Google Cloud VPC. Encuentra este valor en la página VPC Networks de tu tablero de Google Cloud.

    vpc-name

    Etiqueta legible por humanos que identifica la Nube privada virtual (VPC) que deseas usar para conectar a Atlas. Encuentra este valor en la página VPC Networks de tu tablero de Google Cloud.

    unique-id

    string única que apuntaste al volver a comprobar el estado del proyecto.

    org-id

    Cadena hexadecimal única de 24dígitos que identifica la organizaciónde Atlas.

  3. Guarda el archivo de shell como setup_psc.sh y ejecuta el script desde el directorio donde guardaste el archivo con el siguiente comando:

    sh setup_psc.sh

    El script crea un archivo de salida atlasEndpoints-{endpoint-name}.json que contiene una lista de direcciones IP y nombres de reglas de reenvío.

  4. Ejecute los siguientes comandos para formatear la salida para 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

    El resultado debe parecerse al siguiente ejemplo:

    - 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

Actualice el spec.privateEndpoints parámetro para el AtlasProject Recurso personalizado. Especifica la región de Google Cloud Platform, Google Cloud Project ID, Private Service Endpoint Prefix, la información de salida y ejecuta el siguiente comando:

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

Ejecuta el siguiente comando:

kubectl get atlasproject my-project -o yaml
6
  1. Copie el siguiente comando:

    Importante

    El siguiente comando requiere jq 1.6 o superior.

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. Reemplaza los siguientes marcadores de posición con los detalles para tus recursos personalizados:

    my-project

    Especifica el valor del campo metadata de tu AtlasProject Recurso Personalizado.

    my-atlas-cluster

    Especifica el valor del campo metadata de tu AtlasDeployment Recurso Personalizado.

    my-database-user

    Especifica el valor del campo metadata de tu AtlasDatabaseUser Recurso Personalizado.

  3. Ejecuta el comando.

    Nota

    Tus cadenas de conexión serán diferentes del siguiente ejemplo. Si tienes varios nodos privados, el secreto contiene varios campos connectionStringPrivate y connectionStringPrivateSvr con el correspondiente sufijo numérico (por ejemplo, connectionStringPrivate1, connectionStringPrivate2, etc.).

    {
    "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"
    }

    Puedes usar este secreto en tu aplicación:

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

Volver

Nodos privados

En esta página