Peering VPC entre o MongoDB Atlas e o Google Cloud

Francesco Virga Segue 15 de jul · 6 min ler

Introdução

Ao implantar um cluster do MongoDB no Atlas, a única maneira de protegê-lo corretamente é pela lista branca de endereços IP com permissão para acessar o cluster. Esse é um método bastante eficaz, mas pode representar problemas em determinados cenários.

Recentemente, implantei um cluster do Kubernetes no Google Kubernetes Engine e logo percebi que não havia um intervalo de endereços IP definitivo para meus pods, o que me impediu de proteger o cluster usando a lista de desbloqueio do Mongo Atlas. Para aqueles que não têm experiência com o Kubernetes, o sistema de orquestração de microsserviço mantém um conjunto de aplicativos e serviços, redimensionando, recriando e corrigindo-os automaticamente. Cada instância de um aplicativo é chamada de pod e, como esses pods são constantemente recriados, não pode ter um endereço IP predefinido.

Depois de muita pesquisa, descobri que o único método para contornar isso (no Google Cloud e na maioria dos outros provedores de nuvem) é usar um gateway NAT (Network Address Translation). O NAT roteia todo o tráfego de saída dentro de uma rede VPC (Virtual Private Cloud) através do mesmo endereço IP, permitindo a inclusão desse endereço na lista de permissões. Eu anteriormente escrevi um tutorial sobre como configurar essa infraestrutura aqui , que também inclui uma breve descrição de como funciona um gateway NAT .

Embora esta solução funcione muito bem, percebi que estava me custando US $ 50 / mês apenas para executar este gateway NAT. Para pequenos projetos, isso parece ridículo. Felizmente, o Atlas tem uma ferramenta chamada Private Network Peering, que permite conectar seu cluster do MongoDB Atlas a uma rede VPC do Cloud Provider como se eles estivessem na mesma rede privada. O problema era que, até alguns meses atrás, isso só estava disponível na AWS. Agora, eles adicionaram suporte para o Google Cloud e o Azure .

Configurar o Google Cloud

Se você já tem uma conta do Google Cloud e criou um projeto, pule esta etapa.

Vá até https://cloud.google.com/free para obter instruções sobre como criar sua conta. Após a inscrição, você recebe US $ 300 de créditos gratuitos, portanto, não se preocupe em pagar pelos recursos que você criou neste tutorial.

Crie um novo projeto no console do Google Cloud. Se você nunca fez isso antes, consulte https://cloud.google.com/resource-manager/docs/creating-managing-projects . Vamos chamar nosso projeto de vpc-peering-tutorial .

Configuração do MongoDB Atlas

Vá até https://www.mongodb.com/cloud/atlas e clique em Experimentar gratuitamente. Depois de se inscrever, você deve ser levado imediatamente para uma página na qual poderá configurar e implantar seu primeiro cluster do MongoDB. Não crie um cluster ainda, já que precisamos configurar nosso ponto de VPC antes de fazer isso.

Criar VPC Peer

Dirija-se ao seu painel do Atlas , crie um projeto, se ainda não o fez, e clique em Acesso à rede, em Segurança, na barra lateral. Clique em Peering and New Peering Connection . Selecione Google Cloud Platform e clique em Avançar .

Digite o ID do seu projeto do GCP, que pode ser encontrado no Google Cloud Console, no cartão de informações do projeto , no canto superior esquerdo. Em seguida, insira o nome da sua rede VPC, que será o padrão se você não alterou ou criou outro. Deixe o Atlas CIDR como o padrão, que deve ser 192.168.0.0/16 . Clique em Iniciar Peering .

Agora, vá para o VPC Network Peering no console do GCP e clique em Criar conexão e continuar . Nomeie a conexão atlas-peer e selecione o padrão em Sua rede VPC . Sob Peering rede VPC selecione Em outro projeto . Agora precisamos pegar o ID do projeto do GCP e o nome do projeto da nossa implantação do Atlas. Esses dois valores podem ser encontrados na guia Peering da seção Network Access no painel do Atlas, em Atlas GCP Project ID e Atlas VPC Name (se ainda não forem exibidos, aguarde alguns minutos para que o Atlas termine de inicializar o par). Insira esses valores nos formulários de ID de projeto e nome de rede VPC no GCP e clique em Criar para concluir a configuração do seu VPC Peer.

A última coisa que precisamos fazer é colocar na lista de permissões nossa faixa de endereços IP GCP VPC no Atlas. No painel de Rede Peering da Atlas, você verá um aviso acima da nossa rede VPC listada que termina com “… as redes GCP geradas no modo automático usam um intervalo CIDR de 10.128.0.0 ”. Copie este intervalo CIDR, clique na guia IP Whitelist e clique em Adicionar endereço IP . Digite o intervalo copiado em Whitelist Entry e clique em Confirm . Esse intervalo corresponderá a todas as regiões em nossa rede VPC padrão do GCP (para o projeto atual).

Testando

Antes de prosseguir, assegure-se de que a conexão VPC peer esteja conectada com sucesso tanto pelo GCP quanto pelo Atlas, e a Whitelist de IP que adicionamos está concluída a configuração.

Nós vamos criar um cluster do MongoDB. Tentaremos nos conectar ao cluster em nosso computador local (o que não deve funcionar) e, em seguida, criar uma VM no Google Cloud para garantir que ela possa ser conectada com sucesso.

Vá para o seu painel do Atlas e clique em Clusters sob o Atlas na barra lateral e, em seguida, clique em Criar um Cluster . Em Cloud Provider & Region, selecione Google Cloud Platform e iowa (us-central1) . Em Cluster Tier , selecione M10 (qualquer valor inferior não nos permitirá usar o peer VPC) e, em Nome do Cluster, insira o cluster de teste . Clique em Criar Cluster . O cluster levará alguns minutos para acelerar.

Teste local

Assegure-se de ter a CLI do Mongo instalada e, assim que o cluster concluir a configuração, clique em Conectar sob o nome do cluster. Em Criar um usuário do MongoDB , insira o nome de usuário admin e qualquer senha (não se preocupe em tornar isso muito complicado se for apenas para este tutorial). Clique em Criar usuário do MongoDB e escolha um método de conexão . Selecione Conectar com o Mongo Shell e clique em Copiar ao lado da cadeia de conexão. A string deve ser algo como

 mongo "mongodb + srv: //test-cluster-2m6rh.gcp.mongodb.net/test" --username admin 

Digite-o em seu terminal ou linha de comando e digite sua senha escolhida, uma vez solicitado. O shell do Mongo deve tentar se conectar várias vezes, mas falhar a cada vez com os seguintes erros:

 Não é possível acessar o primário para o conjunto test-cluster-shard-0 Não é possível alcançar nenhum nó para o conjunto test-cluster-shard-0. Por favor, verifique a conectividade de rede e o status do aparelho. Isso aconteceu por duas verificações consecutivas. 

Após algumas tentativas, terminará com uma exceção com connection failed .

Teste de GCP

Agora vamos criar uma VM no Google Cloud. Dirija-se ao painel da VM do Compute Engine do GCP e clique em Criar (ou Criar Instância se você já tiver uma VM).

Em Disco de inicialização, clique em Alterar , selecione Ubuntu 18.04 LTS e clique em Selecionar . Deixe todos os outros padrões iguais e clique em Criar na parte inferior. Quando terminar de girar, clique na seta ao lado de SSH em Conectar e selecione Abrir na janela do navegador (você pode usar seu próprio terminal ou linha de comando, se preferir, mas para simplificar, o SSH será executado no navegador). Execute os seguintes comandos para instalar o shell do Mongo (a partir daqui ):

 sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 echo "deb [ arqu = amd64] https://repo.mongodb.org/apt/ubuntu bionic / mongodb-org / 4.0 multiverse "| sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list sudo apt-get update sudo apt-get instalar -y mongodb-org 

Agora, pegue a mesma seqüência de conexão de antes e insira-a. Quando solicitado, insira a mesma senha. Agora você deve ver um monte de saída, terminando com uma conexão bem-sucedida com o banco de dados:

 Versão do servidor MongoDB: 4.0.10 
Bem-vindo ao shell do MongoDB.
Para ajuda interativa, digite "help".
Para uma documentação mais abrangente, consulte http://docs.mongodb.org/
Questões? Experimente o grupo de suporte
http://groups.google.com/group/mongodb-user
MongoDB Enterprise test-cluster-shard-0: PRIMARY>

Parabéns! Agora você pode se conectar ao cluster do MongoDB Atlas usando uma rede privada, removendo a necessidade de um gateway NAT ao usar o Kubernetes Engine. Para evitar cobranças adicionais, exclua a VM do Google Compute Engine, o MongoDB Atlas Cluster e os projetos criados em cada um deles.

Espero que tenha gostado do tutorial, fique à vontade para deixar qualquer comentário ou pergunta abaixo!