Kubernetes - Conexão Externa através de um único IP

3

Eu preciso encontrar uma maneira de ter 1 IP usado por todos os pods toda vez que eles precisarem se conectar ao "mundo exterior".

VERSÃO COMPLETA:

Estou tentando integrar meu aplicativo a um serviço do Gateway de pagamentos. No entanto, esse serviço precisa colocar o IP dos meus servidores na lista de permissões, recusando todas as outras conexões por segurança.

Agora, estou executando um cluster do GKE (3, na verdade) com o Kubernetes 1.5.2. Neste cluster, tenho cerca de 30 pods e preciso de 1 em específico para direcionar o tráfego direcionado pela Internet por meio de um endereço IP estático e predicável.

Neste momento, tenho de fornecer uma lista de IPs externos de instâncias do meu cluster para a lista de permissões, mas isso é um problema.

O cluster está configurado para escalar automaticamente até 5 instâncias e também todas essas instâncias têm um IP efêmero e 1 - eu NÃO quero ser forçado a transformar todos esses em IPs estáticos. 2 - Eu também NÃO quero ser forçado a expor esse pod específico através de um endpoint externo, tornando-o disponível para conexões direcionadas de Internet para cluster.

Existe alguma maneira de dizer / configurar:

- This pod forwards all it's Internet directed connections through X endpoint?
  Obviously, this should be something easy to configure to work with 1 pod
or with all of them I so desired.

Qual é o curso correto de ação aqui? Como posso conseguir isso?

Eu referenciei essa pergunta SO e o Documentos de IP de origem no Kubernetes, bem como estas instruções sobre como configurar um NAT Gateway (que, dada a configuração flexível do cluster, acho que não funcionaria)

    
por Zed_Blade 28.02.2017 / 15:36

2 respostas

2

A única maneira que é factível é um gateway NAT.

Suponho que você esteja usando um tipo de API HTTP (API REST) e que precise de TCP. O TCP precisa terminar um handshake, então você precisa saber qual nó enviou os pacotes para encontrar o caminho de volta. É por isso que o NAT é necessário.

As instruções que você encontrou sobre como configurar um Gatway NAT devem funcionar. Você só precisa dizer aos seus contêineres para usar a instância do NAT como gateway.

    
por 06.03.2017 / 15:17
2

Isso ainda não é possível no GCP. Embora seja um pouco hacky, minha recomendação é configurar um proxy http em uma instância não GKE com um endereço IP estático. Então, quando você usa o gateway de pagamentos, use o proxy HTTP para acessá-lo a partir do endereço IP correto.

Verifique se o endereço IP NÃO é efêmero.

Crie uma imagem da sua VM proxy. Se ele cair, você pode abrir um nó em qualquer zona na mesma região para agir como o proxy. Você também pode mover o endereço IP entre as instâncias, embora isso elimine as conexões atuais, portanto, você deve garantir que seu código tente novamente com falha. Naturalmente, você deve sempre garantir que seu código tente novamente em caso de falha.

    
por 24.04.2017 / 19:10