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

Gerenciar endpoints privados para instâncias sem servidor

Nesta página

  • Procedimento

O Atlas Kubernetes Operator oferece suporte ao gerenciamento de endpoints privados para instâncias sem servidor nas seguintes plataformas:

  • Amazon Web Services usando o AWS PrivateLink funcionalidade.

  • Azure usando a funcionalidade Azure Private Link.

Observação

As instâncias sem servidor não oferecem suporte ao Private Service Connect. Se você precisar configurar o Private Service Connect, use um cluster dedicado.

O MongoDB planeja adicionar suporte para mais configurações e capacidades em instâncias sem servidor ao longo do tempo. Para saber quais recursos o MongoDB planeja oferecer suporte para instâncias sem servidor no futuro, consulte Limites de instâncias sem servidor.

Antes de começar, consulte Gerenciar endpoints privados.

Para permitir que os clientes se conectem a instâncias sem servidor do Atlas utilizando endpoints privados:

1

Especifique o parâmetro spec.serverlessSpec.privateEndpoints para o Recurso Personalizado AtlasDeployment . No campo spec.serverlessSpec.privateEndpoints.name , especifique um rótulo exclusivo para identificar o endpoint privado e execute o seguinte comando:

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

O Atlas cria os recursos de VPC . Isso pode levar alguns minutos para ser concluído.

2
  1. Execute o seguinte comando:

    kubectl get atlasdeployment atlas-deployment-serverless -o yaml
  2. Observe a string de nome de serviço para cada endpoint privado dentro do campo status.serverlessPrivateEndpoints.EndpointServiceName do Recurso Personalizado doAtlasDeployment .

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.serverlessPrivateEndpoints.EndpointServiceName do Recurso PersonalizadoAtlasDeployment .

    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.serverlessSpec.privateEndpoints para o Recurso PersonalizadoAtlasDeployment . Substitua o vpce-id pelos valores VpcEndpointId para 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: 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

Execute o seguinte comando:

kubectl get atlasdeployment atlas-deployment-serverless -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.serverlessSpec.privateEndpoints para o Recurso Personalizado AtlasDeployment . No campo spec.serverlessSpec.privateEndpoints.name , especifique um rótulo exclusivo para identificar o endpoint privado e execute o seguinte comando:

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

O Atlas cria os recursos VNET. 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 atlasdeployment atlas-deployment-serverless -o yaml
  2. Observe o ID do recurso de serviço e o nome do serviço para cada endpoint privado nos campos status.serverlessPrivateEndpoints.PrivateLinkServiceResourceId e status.serverlessPrivateEndpoints.EndpointServiceName do AtlasDeployment 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.serverlessPrivateEndpoints.PrivateLinkServiceResourceId do Recurso PersonalizadoAtlasDeployment .

    serviceName

    Sequência exclusiva que identifica o nome do serviço para seu endpoint privado. Encontre este valor dentro do campo status.serverlessPrivateEndpoints.EndpointServiceName do Recurso PersonalizadoAtlasDeployment .

  3. Execute o comando com o Azure CLI.

5

Atualize o parâmetro spec.serverlessSpec.privateEndpoints para o AtlasDeployment Recurso Personalizado. Especifique as informações de ID do recurso e endereço IP dos 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: 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

Execute o seguinte comando:

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

Voltar

Dedicado

Nesta página