Menu Docs
Página inicial do Docs
/ /
Kubernetes Operator do MongoDB Atlas
/ /

managed endpoints privados para cluster dedicado

Nesta página

  • Procedimento

Observação

Esta funcionalidade não está disponível para clusters gratuitos M0 e clusters M2 e M5 . Para saber mais sobre quais funcionalidades não estão disponíveis, consulte } Limites do Atlas M0 (cluster gratuito), M2 e M5 .

O Atlas Kubernetes Operator oferece suporte ao gerenciamento de endpoints privados para cluster dedicado nas seguintes plataformas:

Antes de começar, consulte Gerenciar endpoints privados.

Para permitir que os clientes se conectem ao cluster dedicado do Atlas utilizando endpoints privados:

1

Especifique o parâmetro spec.privateEndpoints para o AtlasProject Recurso Personalizado. No campo spec.privateEndpoints.provider , especifique AWS. Substitua o espaço reservado {aws-region} pelas informações da região doAmazon Web Services para seus endpoints privados e execute o seguinte 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

O Atlas cria os recursos de VPC na região selecionada. Isso pode levar alguns minutos para ser concluído.

2
  1. Execute o seguinte comando:

    kubectl get atlasproject my-project -o yaml
  2. Observe a string de nome de serviço para cada endpoint privado dentro do campo status.privateEndpoints.serviceName do Recurso Personalizado doAtlasProject .

3

Para criar o endpoint da interface VPC do seu aplicativo:

  1. Copie o seguinte 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. Substitua os seguintes placeholders pelos detalhes sobre sua Amazon Web Services VPC:

    your-application-vpc-id
    String exclusiva que identifica o emparelhamento VPC da AWS. Encontre esse valor no dashboard da VPC em sua conta da AWS .
    aws-region
    Etiqueta que identifica a região do Amazon Web Services do endpoint privado.
    service-name-string
    Sequência exclusiva que identifica o nome do serviço para seu endpoint privado. Encontre este valor dentro do campo status.privateEndpoints.serviceName do Recurso PersonalizadoAtlasProject .
    your-application-subnet-ids

    Strings únicas que identificam as sub-redes que seu Amazon Web Services VPC usa. Separe cada sub-rede com um espaço. Encontre esses valores no dashboard Subnet da sua conta Amazon Web Services .

    IMPORTANTE: você deve especificar pelo menos uma sub-rede. Caso contrário, Amazon Web Services não provisionará um ponto de extremidade da interface à sua VPC. Um ponto de conexão da ponto de extremidade da interface é necessário para que os clientes em sua VPC enviem tráfego para os endpoints privados.

  3. Execute o comando com a do Amazon Web Services.CLI

  4. Observe o valor VpcEndpointId na saída.

    Exemplo

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

Para saber mais,consulte Criar um ponto de conexão da interface na documentação do Amazon Web Services .

4

Atualize o parâmetro spec.privateEndpoints para o AtlasProject Recurso Personalizado. Especifique a região doAmazon Web Services e substitua vpce-id pelos valores VpcEndpointId dos seus endpoints privados e execute o seguinte comando:

Observação

Você pode encontrar o identificador exclusivo da AWS VPC de emparelhamento no dashboard da VPC em sua conta 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

Execute o seguinte comando:

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

    Importante

    O comando a seguir requer jq 1.6 ou superior.

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. Substitua os seguintes espaços reservados pelos detalhes dos seus recursos personalizados:

    my-project
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasProject .
    my-atlas-cluster
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasDeployment .
    my-database-user
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasDatabaseUser .
  3. Execute o comando.

    Observação

    Sua string de conexão será diferente do exemplo a seguir. Se você tiver vários endpoints privados, o segredo conterá vários campos connectionStringPrivate e connectionStringPrivateSvr com o sufixo numérico apropriado (por exemplo, connectionStringPrivate1, connectionStringPrivate2 e assim por diante).

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

    Você pode usar este segredo em seu aplicativo:

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

Especifique o parâmetro spec.privateEndpoints para o AtlasProject Recurso Personalizado. No campo spec.privateEndpoints.provider , especifique AZURE. Substitua o espaço reservado {azure-region} pelas informações da região do Azure para seus endpoints privados e execute o seguinte 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

O Atlas cria os recursos de VNET na região selecionada. Isso pode levar alguns minutos para ser concluído.

2

O Atlas não aceita políticas de rede para endpoints privados.

  1. Copie o seguinte 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. Substitua os seguintes espaços reservados pelos detalhes sobre sua VNet do Azure :

    resource-group-name
    Etiqueta legível por humanos para o grupo de recursos que contém a VNet que você deseja usar para se conectar ao Atlas. Encontre esse valor na página Resource Group Properties em seu dashboard do Azure .
    vnet-name
    Etiqueta legível por humanos que identifica a VNet que você deseja usar para se conectar ao Atlas. Encontre esse valor na página Virtual Network em seu dashboard do Azure .
    subnet-name
    Etiqueta legível por humanos que identifica a sub-rede em sua rede virtual do Azure . Encontre esse valor na página Virtual Network Subnets em seu dashboard do Azure .
  3. Execute o comando com o Azure CLI.

Para saber mais,consulte as políticas de rede Gerenciar para endpoints privados na documentação do Azure .

3
  1. Execute o seguinte comando:

    kubectl get atlasproject my-project -o yaml
  2. Observe o ID do recurso de serviço e o nome do serviço para cada endpoint privado nos campos status.privateEndpoints.serviceResourceId e status.privateEndpoints.serviceName do AtlasProject Recurso Personalizado.

4

Para criar seu endpoint privado:

  1. Copie o seguinte 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. Substitua os seguintes espaços reservados pelos detalhes sobre sua VNet do Azure :

    resource-group-name
    Etiqueta legível por humanos para o grupo de recursos que contém a VNet que você deseja usar para se conectar ao Atlas. Encontre esse valor na página Resource Group Properties em seu dashboard do Azure .
    endpoint-name
    Etiqueta legível para humanos que identifica seu endpoint privado. Especifique isso agora.
    vnet-name
    Etiqueta legível por humanos que identifica a VNet que você deseja usar para se conectar ao Atlas. Encontre esse valor na página Virtual Network em seu dashboard do Azure .
    subnet-name
    Etiqueta legível por humanos que identifica a sub-rede em sua rede virtual do Azure . Encontre esse valor na página Virtual Network Subnets em seu dashboard do Azure .
    serviceResourceId
    string exclusiva que identifica o recurso de serviço para seu endpoint privado. Encontre este valor no campo status.privateEndpoints.serviceResourceId do Recurso PersonalizadoAtlasProject .
    serviceName
    Sequência exclusiva que identifica o nome do serviço para seu endpoint privado. Encontre este valor dentro do campo status.privateEndpoints.serviceName do Recurso PersonalizadoAtlasProject .
  3. Execute o comando com o Azure CLI.

5

Atualize o parâmetro spec.privateEndpoints para o AtlasProject Recurso Personalizado. Especifique as informações de região do Azure, ID do recurso e endereço IP para seus endpoints privados e execute o seguinte comando:

Observação

A página Properties no painel do Azure exibe o identificador exclusivo do endpoint privado que você criou no campo Resource ID .

A página Overview no painel do Azure exibe o endereço IP privado da interface de rede do endpoint privado que você criou no 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

Execute o seguinte comando:

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

    Importante

    O comando a seguir requer jq 1.6 ou superior.

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. Substitua os seguintes espaços reservados pelos detalhes dos seus recursos personalizados:

    my-project
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasProject .
    my-atlas-cluster
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasDeployment .
    my-database-user
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasDatabaseUser .
  3. Execute o comando.

    Observação

    Sua string de conexão será diferente do exemplo a seguir. Se você tiver vários endpoints privados, o segredo conterá vários campos connectionStringPrivate e connectionStringPrivateSvr com o sufixo numérico apropriado (por exemplo, connectionStringPrivate1, connectionStringPrivate2 e assim por diante).

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

    Você pode usar este segredo em seu aplicativo:

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

Especifique o parâmetro spec.privateEndpoints para o AtlasProject Recurso Personalizado. No campo spec.privateEndpoints.provider , especifique GCP. Substitua o espaço reservado {gcp-region} pelas informações da região do Google Cloud Platform para seus endpoints privados e execute o seguinte 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

O Atlas cria os recursos de VPC na região selecionada. Isso pode levar alguns minutos para ser concluído.

2
  1. Execute o seguinte comando:

    kubectl get atlasproject my-project -o yaml
  2. Observe o {unique-id} que segue projects/ em cada nome de anexo de serviço. O {unique-id} no exemplo a seguir é p-ogyvk1plka2anycnzl6znr9p.

    Exemplo

    "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 os endpoints privados e gerar o script necessário com a UI do Atlas , consulte Configurar endpoints privados.

Para configurar seus endpoints privados manualmente:

  1. Copie o seguinte roteiro 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. Substitua os seguintes placeholders pelos detalhes da sua Google Cloud Platform VPC:

    google-cloud-project-id
    ID único que identifica seu projeto Google Cloud Platform . Encontre esse valor na página Dashboard em sua Google Cloud Platform.
    private-service-connect-endpoint-prefix
    Etiqueta legível por humanos que prefixa todos os endpoints criados e identifica o grupo de endpoints.
    gcp-region
    Etiqueta que identifica a região da Google Cloud Platform do endpoint privado.
    subnet-name
    Etiqueta legível por humanos que identifica a sub-rede em sua Google Cloud Platform VPC. Encontre esse valor na página VPC Networks do dashboard do Google Cloud Platform .
    vpc-name
    Etiqueta legível por humanos que identifica a VPC que você deseja usar para se conectar ao Atlas. Encontre esse valor na página VPC Networks do dashboard do Google Cloud Platform .
    unique-id
    string exclusiva que você anotou ao retornar o status do projeto.
    org-id
    string hexadecimal única de 24dígitos que identifica a organização Atlas .
  3. Salve o arquivo de shell como setup_psc.sh e execute o script a partir do diretório onde você salvou o arquivo com o seguinte comando:

    sh setup_psc.sh

    O script cria um arquivo de saída atlasEndpoints-{endpoint-name}.json que contém uma lista de endereços IP e nomes de regras de encaminhamento.

  4. Execute os seguintes comandos para formatar a saída para o 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

    A saída deve ser semelhante ao exemplo a seguir:

    - 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

Atualize o parâmetro spec.privateEndpoints para o AtlasProject Recurso Personalizado. Especifique a região do Google Cloud Platform, Google Cloud Project ID, Private Service Endpoint Prefix, suas informações de saída e execute o seguinte 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

Execute o seguinte comando:

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

    Importante

    O comando a seguir requer jq 1.6 ou superior.

    kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
  2. Substitua os seguintes espaços reservados pelos detalhes dos seus recursos personalizados:

    my-project
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasProject .
    my-atlas-cluster
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasDeployment .
    my-database-user
    Especifique o valor do campo metadata do seu Recurso PersonalizadoAtlasDatabaseUser .
  3. Execute o comando.

    Observação

    Sua string de conexão será diferente do exemplo a seguir. Se você tiver vários endpoints privados, o segredo conterá vários campos connectionStringPrivate e connectionStringPrivateSvr com o sufixo numérico apropriado (por exemplo, connectionStringPrivate1, connectionStringPrivate2 e assim por diante).

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

    Você pode usar este segredo em seu aplicativo:

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

Voltar

Endpoints privados

Nesta página