
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:
v1data: KUBEIP_LABELKEY: "kubeip" KUBEIP_LABELVALUE: "my-gke-cluster-1" KUBEIP_NODEPOOL: "default-pool" kind:
ConfigMapmetadata: labels: app:
kubeipname:
kubeip-confignamespace:
defaultO 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.