managed endpoints privados para cluster dedicado
Nesta página
Observação
Este recurso não está disponível para nenhuma das seguintes implantações:
M0
clustersM2/M5
clustersClusters flexíveis
O Atlas Kubernetes Operator oferece suporte ao gerenciamento de endpoints privados para cluster dedicado nas seguintes plataformas:
Amazon Web Services usando o AWS PrivateLink funcionalidade.
Azure usando a funcionalidade Azure Private Link.
Google Cloud usando a funcionalidade Private Service Connect.
Antes de começar, consulte Gerenciar endpoints privados.
Procedimento
Para permitir que os clientes se conectem ao cluster dedicado do Atlas utilizando endpoints privados:
Especifique spec.privateEndpoints
o parâmetro.
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.
Encontre os nomes de serviço para seus endpoints privados.
Execute o seguinte comando:
kubectl get atlasproject my-project -o yaml Observe a string de nome de serviço para cada endpoint privado dentro do campo
status.privateEndpoints.serviceName
do Recurso Personalizado doAtlasProject
.
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.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.
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.privateEndpoints
parâmetro.
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
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.privateEndpoints
o parâmetro.
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.
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 atlasproject my-project -o yaml Observe o ID do recurso de serviço e o nome do serviço para cada endpoint privado nos campos
status.privateEndpoints.serviceResourceId
estatus.privateEndpoints.serviceName
doAtlasProject
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.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
.Execute o comando com o Azure CLI.
Atualize o spec.privateEndpoints
parâmetro.
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
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.privateEndpoints
o parâmetro.
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.
Encontre o {unique-ID}
para seus endpoints privados.
Execute o seguinte comando:
kubectl get atlasproject my-project -o yaml Observe o
{unique-id}
que segueprojects/
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" ]
Configure seus endpoints privados.
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:
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 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 .
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.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
Atualize o spec.privateEndpoints
parâmetro.
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
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