Docs Menu
Docs Home
/ /
/ / / /

Administrar puntos finales privados para clústeres dedicados

Nota

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

  • M0 grupos

  • M2/M5 grupos

  • Clústeres Flex

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

  • AWS utilizando el AWS PrivateLink característica.

  • Azure usando la funcionalidad Azure Private Link.

  • Google Cloud utiliza la función Conectar servicio privado.

Antes de empezar, consulte Administrar puntos finales privados.

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

1

Especifique el parámetro spec.privateEndpoints AtlasProject para el recurso personalizado. En el spec.privateEndpoints.provider campo,AWS especifique. Reemplace el marcador con la {aws-region} información de la región de AWS para sus endpoints privados y ejecute 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 de VPC en la región seleccionada. Este proceso puede tardar varios minutos.

2
  1. Ejecuta el siguiente comando:

    kubectl get atlasproject my-project -o yaml
  2. Tenga en cuenta la cadena del nombre del servicio para cada punto final privado dentro del status.privateEndpoints.serviceName campo del AtlasProject recurso personalizado.

3

Para crear el punto final de la interfaz VPC de su aplicación:

  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 la VPC de emparejamiento AWS VPC. Encontrar este valor en el tablero de VPC en la cuenta AWS.

    aws-region

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

    service-name-string

    Cadena única que identifica el nombre del servicio de su punto final privado. Encuentre este valor en el status.privateEndpoints.serviceName campo del AtlasProject recurso personalizado.

    your-application-subnet-ids

    Cadenas únicas que identifican las subredes que usa su VPC de AWS. Separe cada subred con un espacio. Encuentre estos valores en la Subnet panel de control en su cuenta de AWS.

    IMPORTANTE: Debe especificar al menos una subred. De lo contrario, AWS no aprovisionará un punto de conexión de interfaz en su VPC. Se requiere un punto de conexión de interfaz para que los clientes de su VPC envíen tráfico al punto de conexión privado.

  3. Ejecute el comando con la AWS CLI.

  4. Tenga en cuenta el 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, consulte Creación de un punto final de interfaz en la documentación de AWS.

4

Actualice el parámetro spec.privateEndpoints AtlasProject para el recurso personalizado. Especifique la región de AWS y reemplace vpce-id con los VpcEndpointId valores para sus puntos de conexión privados. Ejecute el siguiente comando:

Nota

Puede encontrar el identificador único de la VPC de AWS del mismo nivel en el panel de VPC de su 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. Reemplace los siguientes marcadores de posición con los detalles de sus recursos personalizados:

    my-project

    Especifique el valor del metadata campo de su AtlasProject recurso personalizado.

    my-atlas-cluster

    Especifique el valor del metadata campo de su AtlasDeployment recurso personalizado.

    my-database-user

    Especifique el valor del metadata campo de su AtlasDatabaseUser recurso personalizado.

  3. Ejecuta el comando.

    Nota

    Sus cadenas de conexión serán diferentes a las del siguiente ejemplo. Si tiene varios puntos finales privados, el secreto contiene varios campos connectionStringPrivate y connectionStringPrivateSvr con el sufijo numérico correspondiente (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 de VNET en la región seleccionada. Este proceso puede tardar varios minutos.

2

Atlas no admite políticas de red para puntos finales 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. Reemplace los siguientes marcadores de posición con los detalles sobre su red virtual de Azure:

    resource-group-name

    Etiqueta legible para el grupo de recursos que contiene la red virtual que desea usar para conectarse a Atlas. Encuentre este valor en la Resource Group Properties página de su panel de Azure.

    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 que identifica la subred en su red virtual de Azure. Encuentre este valor en la Virtual Network Subnets página de su panel de Azure.

  3. Ejecute el comando con la CLI de Azure.

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

3
  1. Ejecuta el siguiente comando:

    kubectl get atlasproject my-project -o yaml
  2. Anote el ID del recurso status.privateEndpoints.serviceResourceId status.privateEndpoints.serviceName de servicio y el nombre del servicio para cada punto final privado AtlasProject dentro de los campos y del recurso personalizado.

4

Para crear su punto final 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. Reemplace los siguientes marcadores de posición con los detalles sobre su red virtual de Azure:

    resource-group-name

    Etiqueta legible para el grupo de recursos que contiene la red virtual que desea usar para conectarse a Atlas. Encuentre este valor en la Resource Group Properties página de su panel de Azure.

    endpoint-name

    Etiqueta legible 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 que identifica la subred en su red virtual de Azure. Encuentre este valor en la Virtual Network Subnets página de su panel de Azure.

    serviceResourceId

    Cadena única que identifica el recurso de servicio para su punto final privado. Encuentre este valor en el status.privateEndpoints.serviceResourceId campo del AtlasProject recurso personalizado.

    serviceName

    Cadena única que identifica el nombre del servicio de su punto final privado. Encuentre este valor en el status.privateEndpoints.serviceName campo del AtlasProject recurso personalizado.

  3. Ejecute el comando con la CLI de Azure.

5

Actualice el parámetro spec.privateEndpoints AtlasProject para el recurso personalizado. Especifique la región de Azure, el identificador del recurso y la dirección IP de sus puntos de conexión privados y ejecute el siguiente comando:

Nota

La Properties página de su panel de Azure muestra el identificador único del punto de conexión privado que creó en el Resource ID campo.

La Overview página de su panel de Azure muestra la dirección IP privada de la interfaz de red del punto de conexión privado que creó en el Private IP campo.

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. Reemplace los siguientes marcadores de posición con los detalles de sus recursos personalizados:

    my-project

    Especifique el valor del metadata campo de su AtlasProject recurso personalizado.

    my-atlas-cluster

    Especifique el valor del metadata campo de su AtlasDeployment recurso personalizado.

    my-database-user

    Especifique el valor del metadata campo de su AtlasDatabaseUser recurso personalizado.

  3. Ejecuta el comando.

    Nota

    Sus cadenas de conexión serán diferentes a las del siguiente ejemplo. Si tiene varios puntos finales privados, el secreto contiene varios campos connectionStringPrivate y connectionStringPrivateSvr con el sufijo numérico correspondiente (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 de VPC en la región seleccionada. Este proceso puede tardar varios minutos.

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 archivo 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 puntos finales privados y generar el script necesario con la interfaz de usuario de Atlas, consulte Configurar puntos finales privados.

Para configurar sus puntos finales privados manualmente:

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

    google-cloud-project-id

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

    private-service-connect-endpoint-prefix

    Etiqueta legible por humanos que precede a todos los puntos finales creados e identifica el grupo de puntos finales.

    gcp-region

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

    subnet-name

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

    vpc-name

    Etiqueta legible que identifica la VPC que desea usar para conectarse a Atlas. Encuentre este valor en la VPC Networks página de su panel de Google Cloud.

    unique-id

    Cadena única que anotó cuando devolvió el estado del proyecto.

    org-id

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

  3. Guarde el archivo de shell como setup_psc.sh y ejecute el script desde el directorio donde guardó 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 del operador Atlas Kubernetes:

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

    La salida debería 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 parámetro spec.privateEndpoints AtlasProject para el recurso personalizado. Especifique la región de Google Cloud Google Cloud Project IDPlatform,,, Private Service Endpoint Prefix su información de salida y ejecute 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. Reemplace los siguientes marcadores de posición con los detalles de sus recursos personalizados:

    my-project

    Especifique el valor del metadata campo de su AtlasProject recurso personalizado.

    my-atlas-cluster

    Especifique el valor del metadata campo de su AtlasDeployment recurso personalizado.

    my-database-user

    Especifique el valor del metadata campo de su AtlasDatabaseUser recurso personalizado.

  3. Ejecuta el comando.

    Nota

    Sus cadenas de conexión serán diferentes a las del siguiente ejemplo. Si tiene varios puntos finales privados, el secreto contiene varios campos connectionStringPrivate y connectionStringPrivateSvr con el sufijo numérico correspondiente (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