Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Google Kubernetes Engine sem NAT com o kubeIP!

By Aviv LauferJun 21, 20182 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

1 owrbjei zwuebf8vv4ww9g

Muitas aplicações precisam ser autorizadas pelos consumidores com base no IP de origem, geralmente por questões de segurança. Hoje, o Google Kubernetes Engine não permite atribuir um pool estático de endereços a um cluster GKE e exige a implantação de uma solução complexa baseada em NAT, que é cara, difícil de manter e depende de um conjunto complexo de regras para balanceamento de carga e redundância.

O kubeIP é uma tentativa de resolver esse problema: ele atribui endereços IP externos estáticos, vindos de um pool reservado, aos nós do GKE e monitora continuamente a API do Kubernetes em busca de novos nós, aplicando as alterações conforme necessário.

O kubeIP é escrito em Go e roda como um pod dentro do seu cluster GKE, sem precisar de qualquer alteração no cluster. A configuração é feita por variáveis de ambiente expostas em um ConfigMap do próprio kubeIP.

apiVersion:

v1

data: KUBEIP_LABELKEY: "kubeip" KUBEIP_LABELVALUE: "my-gke-cluster-1" KUBEIP_NODEPOOL: "default-pool" kind:

ConfigMap

metadata: labels: app:

kubeip

name:

kubeip-config

namespace:

default

O kubeIP se registra como listener dos eventos do cluster Kubernetes. Sempre que um novo nó é criado, o kubeIP verifica no pool reservado se há algum IP estático livre (marcado com o nome do seu cluster GKE) e o atribui ao novo nó. Se não houver endereços disponíveis, nada é feito.

Para facilitar a implantação, disponibilizamos uma imagem docker do kubeIP no docker hub (docker pull doitintl/kubeip) — ou, se preferir, você pode compilar a sua a partir do código-fonte clonando o repositório do kubeIP no GitHub.

Quer mais conteúdos como esse? Confira nosso blog ou siga o Aviv no Twitter.