Crie um IP de saída único para uma determinada rede

12

Estou tentando determinar a melhor maneira no GCP de atribuir um único endereço IP externo para o tráfego OUTBOUND. Meu caso de uso: preciso fornecer um IP estático a terceiros para que eles possam incluí-lo na lista de permissões, para que minhas instâncias possam acessar sua API. Como posso adicionar ou subtrair instâncias de GCE no futuro, não quero fornecer a eles vários IPs estáticos que possam mudar.

Encontrei uma pergunta semelhante aqui, mas não tinha certeza de que ela aborda meu caso de uso.

Eu tenho uma rede GCP padrão configurada; não há VPNs e todas as VMs têm IPs externos exclusivos. Na verdade, gosto dessa maneira porque preciso poder fazer o SSH para as VMs. Mas das minhas VMs para a Internet, eu gostaria que o tráfego parecesse que tudo vem de um único IP. O pensamento imediato que me vem à cabeça e que os documentos sugerem é criar uma instância NAT e, em seguida, rotear o tráfego de saída através disso. Alguns problemas com essa abordagem:

  1. Eu tenho que configurar e manter uma caixa exclusivamente para fins de NAT
  2. Não é HA; se essa instância ou zona de disponibilidade morrer, minhas outras instâncias não poderão rotear tráfego externamente
  3. Não parece muito repetitivo se eu tiver que recriar a configuração no futuro

Especificamente, estou usando o GKE / Kubernetes para este projeto. Existe uma prática recomendada para realizar esse caso de uso HA, baixa manutenção e repetível?

rob-cng
fonte
Acredito que a melhor opção para você é configurar uma VPN, o que também ajudará no uso do GKE. Por exemplo: serverfault.com/questions/750389/gke-pod-connecting-via-vpn , e é econômico.
George
@ George Eu não acho que a VPN funcionaria para isso, porque não controlo o outro lado. Por exemplo, eu não estaria estabelecendo uma VPN com terceiros; Eu preciso rotear o tráfego pela Internet.
rob-CNG
1
Portanto, ter o NAT Gateway deve fazê-lo, mas isso causará um único ponto de falha. Uma coisa também veio à mente: ter IPs estáticos para suas instâncias e fazer com que a outra parte os coloque na lista de permissões. Se você deseja excluir qualquer uma das instâncias, o IP ainda será reservado, que você pode anexar às instâncias criadas recentemente. E enquanto o IP estiver sendo usado (anexado a uma instância), é gratuito.
George
Sim, acho que teremos que seguir essa solução alternativa até que o GCP saia com o NAT como serviço semelhante à AWS. Obrigado
rob-cng
1
Você já conseguiu resolver esse problema? Se assim for, por favor considerar a publicação de uma auto-resposta para que a comunidade pode se beneficiar
Faizan

Respostas:

3

O Google Cloud agora oferece um serviço gerenciado de Gateway NAT - Cloud NAT .

Esse gateway pode ser usado com um cluster GKE, que fornece um IP de saída pública estável a todos os pods dentro dele, o que permite que eles sejam incluídos na lista de permissões por provedores de serviços terceirizados.

A implementação de exemplo para usar o Cloud NAT com GKE é fornecida aqui - https://cloud.google.com/nat/docs/gke-example

Além disso, como este é um NAT gerenciado com base em software, a largura de banda e a disponibilidade não serão afetadas.

No entanto, isso ainda precisa de um host bastião para poder ssh em suas instâncias.

Parag
fonte