Observação
Este recurso não está disponÃvel para nenhuma das seguintes implantações:
M0clustersClusters flexÃveis
O Atlas Kubernetes Operator oferece suporte ao gerenciamento de endpoints privados para cluster dedicado nas seguintes plataformas:
AWS usando o recurso AWS PrivateLink.
Azure usando a funcionalidade Azure Private Link.
Google Cloud usando a funcionalidade Private Service Connect.
Antes de começar, consulte managed endpoints privados.
Procedimento
Para permitir que os clientes se conectem ao cluster dedicado do Atlas utilizando endpoints privados:
Especifique o parâmetro spec.privateEndpoints.
Specify the spec.privateEndpoints parameter for the AtlasProject Custom Resource. In the spec.privateEndpoints.provider field, specify AWS. Replace the placeholder {aws-region} with the AWS region information for your private endpoints and run the following command:
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.serviceNamedo Recurso Personalizado doAtlasProject.
Use a Amazon Web Services CLI para configurar cada endpoint privado.
To create your application VPC interface endpoint:
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 AWS VPC :
your-application-vpc-idString exclusiva que identifica o emparelhamento VPC da AWS. Encontre esse valor no dashboard da VPC em sua conta da AWS .
aws-regionEtiqueta que identifica a região do Amazon Web Services do private endpoint.
service-name-stringSequência exclusiva que identifica o nome do serviço para seu endpoint privado. Encontre este valor dentro do campo
status.privateEndpoints.serviceNamedo Recurso PersonalizadoAtlasProject.your-application-subnet-idsStrings exclusivas que identificam as sub-redes que sua AWS VPC usa. Separe cada sub-rede com um espaço. Encontre esses valores no painel Subnet da sua conta da AWS.
IMPORTANT: You must specify at least one subnet. If you don't, AWS won't provision a interface endpoint in your VPC. An interface endpoint is required for clients in your VPC to send traffic to the private endpoint.
Execute o comando com a CLI do Amazon Web Services.
Observe o valor
VpcEndpointIdna 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 parâmetro spec.privateEndpoints.
Update the spec.privateEndpoints parameter for the AtlasProject Custom Resource. Specify the AWS region and replace vpce-id with the VpcEndpointId values for your private endpoints and run the following command:
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
jq1.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-projectEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasProject.my-atlas-clusterEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasDeployment.my-database-userEspecifique o valor do campo
metadatado 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
connectionStringPrivateeconnectionStringPrivateSvrcom o sufixo numérico apropriado (por exemplo,connectionStringPrivate1,connectionStringPrivate2e 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 aplicação:
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: my-project-my-atlas-cluster-my-database-user key: connectionStringPrivate
Especifique o parâmetro spec.privateEndpoints.
Specify the spec.privateEndpoints parameter for the AtlasProject Custom Resource. In the spec.privateEndpoints.provider field, specify AZURE. Replace the placeholder {azure-region} with the Azure region information for your private endpoints and run the following command:
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-nameEtiqueta 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-nameEtiqueta 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-nameEtiqueta legÃvel por humanos que identifica a sub-rede em sua VNet 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 private endpoints 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.serviceResourceIdestatus.privateEndpoints.serviceNamedoAtlasProjectRecurso 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-nameEtiqueta 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-nameEtiqueta legÃvel para humanos que identifica seu endpoint privado. Especifique isso agora.
vnet-nameEtiqueta 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-nameEtiqueta legÃvel por humanos que identifica a sub-rede em sua VNet do Azure. Encontre esse valor na página Virtual Network Subnets em seu dashboard do Azure.
serviceResourceIdstring exclusiva que identifica o recurso de serviço para seu endpoint privado. Encontre este valor no campo
status.privateEndpoints.serviceResourceIddo Recurso PersonalizadoAtlasProject.serviceNameSequência exclusiva que identifica o nome do serviço para seu endpoint privado. Encontre este valor dentro do campo
status.privateEndpoints.serviceNamedo Recurso PersonalizadoAtlasProject.Execute o comando com o Azure CLI.
Atualize o parâmetro spec.privateEndpoints.
Update the spec.privateEndpoints parameter for the AtlasProject Custom Resource. Specify the the Azure region, Resource ID, and IP address information for your private endpoints and run the following command:
Observação
A página Properties no seu dashboard Azure exibe o identificador exclusivo para o private endpoints que você criou no campo Resource ID.
A página Overview no seu dashboard do Azure exibe o endereço IP privado da interface de rede do private endpoint 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
jq1.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-projectEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasProject.my-atlas-clusterEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasDeployment.my-database-userEspecifique o valor do campo
metadatado 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
connectionStringPrivateeconnectionStringPrivateSvrcom o sufixo numérico apropriado (por exemplo,connectionStringPrivate1,connectionStringPrivate2e 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 aplicação:
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: my-project-my-atlas-cluster-my-database-user key: connectionStringPrivate
Especifique o parâmetro spec.privateEndpoints.
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 private endpoints 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 private endpoints.
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.
To edit the private endpoints and generate the necessary script with the Atlas UI, see Configure Private Endpoints.
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-idID único que identifica seu projeto Google Cloud Platform . Encontre esse valor na página Dashboard em sua Google Cloud Platform.
private-service-connect-endpoint-prefixEtiqueta legÃvel por humanos que prefixa todos os endpoints criados e identifica o grupo de endpoints.
gcp-regionLabel that identifies the Google Cloud Platform region of the private endpoint.
subnet-nameetiqueta legÃvel por humanos que identifica a sub-rede na sua VPC do Google Cloud. Encontre esse valor na página VPC Networks do painel do Google Cloud.
vpc-nameRótulo 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 painel do Google Cloud.
unique-idstring exclusiva que você anotou ao retornar o status do projeto.
org-idUnique 24-digit hexadecimal string that identifies the Atlas organization.
Salve o arquivo de shell como
setup_psc.she 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}.jsonque 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 parâmetro spec.privateEndpoints.
Update the spec.privateEndpoints parameter for the AtlasProject Custom Resource. Specify the Google Cloud Platform region, Google Cloud Project ID, Private Service Endpoint Prefix, your output information, and run the following command:
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
jq1.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-projectEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasProject.my-atlas-clusterEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasDeployment.my-database-userEspecifique o valor do campo
metadatado 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
connectionStringPrivateeconnectionStringPrivateSvrcom o sufixo numérico apropriado (por exemplo,connectionStringPrivate1,connectionStringPrivate2e 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 aplicação:
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: my-project-my-atlas-cluster-my-database-user key: connectionStringPrivate