K8s: Services e Ingress Controllers 2/3(*)
O que são e qual tipo de problema resolvem?
Dando sequência à série sobre Services e Ingress Controllers, preparei especialmente esse artigo para falar sobre Ingress, componente que pode substituir a necessidade de criar vários Load Balancers para redirecionar o tráfego de aplicações. O primeiro texto da série, que explica sobre o uso do Services, segue aqui para consulta.
Assumindo que você já tenha configurado o acesso às aplicações usando um Load Balancer do seu provedor de Infraestrutura, você deve estar se perguntando se realmente vale a pena usar o Ingress.
Sabendo que, para cada aplicação que precise expor o serviço para usuários externos, se faz necessária a criação de um novo Load Balancer, o custo é uma razão para adotar o Ingress. Levando em conta que há um limite de criação de unidades de Load Balancer, sobretudo na nuvem pública, a questão operacional é outra razão motivadora. Com o Ingress, você precisará apenas de um Load Balancer no provedor de Infraestrutura e poderá criar inúmeras entradas de acesso às aplicações.
Vistas as ponderações, passemos ao meu objetivo, que é te apresentar como tirar o melhor proveito desse componente.
Em termos práticos, o Ingress funciona configurando regras de layer 7, como TLS, VirtualHost, Path, LoadBalancer e outras. Também, vale notar que nesse formato as requisições não chegam diretamente aos services; elas vão primeiro para o endpoint do Ingress e depois para o service de destino.
No exemplo abaixo, o Ingress está com duas regras para redirecionar o tráfego de acordo com o domínio de entrada.
Dá para usar ainda outra feature de regras, o fanout, que pode redirecionar o tráfego usando path, como abaixo:
Você percebe que nada mudou com a requisição? Isso acontece, porque o Ingress tem dois recursos: o Ingress Controller e Ingress Resource.
O Ingress Controller é a parte “concreta” do Ingress, a que existe no mundo real da nuvem. É ela que roda a aplicação de router/filter/balance, criando e atualizando as configurações internas; e direcionando o tráfego interno para os services.
O Ingress Resource é a parte de configuração. É ela que diz ao controller o que fazer com aquele tráfego específico. Normalmente, é com ela que você mais interage, criando e atualizando seus recursos.
Então, com o Ingress, você terá algo parecido com isso:
Termino essa parte por aqui.(*) Na próxima, trarei uma demo com KinD para você ver as coisas acontecendo de verdade.
Para acompanhar as publicações, siga a Getup no Medium e Twitter. Ouça também o #Kubicast, o podcast sobre Kubernetes, em um dos players: Spotify, Overcast, Itunes ou RadioPublic.
Deixe na página comentários, dúvidas e/ou sugestões.
#Kubernetes #DevOps #SRE #docker #Containers #Ingress #Services