Gerenciar endpoints privados para instâncias sem servidor
Nesta página
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.
Procedimento
Para permitir que os clientes se conectem a instâncias sem servidor do Atlas utilizando endpoints privados:
Especifique spec.serverlessSpec.privateEndpoints
o parâmetro.
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.
Encontre os nomes de serviço para seus endpoints privados.
Execute o seguinte comando:
kubectl get atlasdeployment atlas-deployment-serverless -o yaml Observe a string de nome de serviço para cada endpoint privado dentro do campo
status.serverlessPrivateEndpoints.EndpointServiceName
do Recurso Personalizado doAtlasDeployment
.
Use a Amazon Web Services CLI para configurar cada endpoint privado.
Para criar o endpoint da interface VPC do seu aplicativo:
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} 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.
Execute o comando com a do Amazon Web Services.CLI
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 .
Atualize o spec.serverlessSpec.privateEndpoints
parâmetro.
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
Recupere o segredo que o Atlas Kubernetes Operator criou para conectar ao cluster.
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)'; 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
.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
econnectionStringPrivateSvr
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
Especifique spec.serverlessSpec.privateEndpoints
o parâmetro.
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.
Desative as políticas de rede de endpoints privados.
O Atlas não aceita políticas de rede para endpoints privados.
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 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 .
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 .
Encontre as IDs e os nomes de serviço dos seus endpoints privados.
Execute o seguinte comando:
kubectl get atlasdeployment atlas-deployment-serverless -o yaml Observe o ID do recurso de serviço e o nome do serviço para cada endpoint privado nos campos
status.serverlessPrivateEndpoints.PrivateLinkServiceResourceId
estatus.serverlessPrivateEndpoints.EndpointServiceName
doAtlasDeployment
Recurso Personalizado.
Utilize o Azure CLI para configurar cada endpoint privado.
Para criar seu endpoint privado:
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 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
.Execute o comando com o Azure CLI.
Atualize o spec.serverlessPrivateEndpoints
parâmetro.
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
Recupere o segredo que o Atlas Kubernetes Operator criou para conectar ao cluster.
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)'; 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
.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
econnectionStringPrivateSvr
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