Editor – Este post faz parte de uma série de 10 partes:
Você também pode baixar o conjunto completo de blogs como um e-book gratuito – Levando o Kubernetes do teste à produção .
Quando as organizações começam a experimentar o Kubernetes, elas geralmente não pensam muito na escolha do controlador Ingress . Eles podem pensar que todos os controladores do Ingress são iguais e, para começar a funcionar rapidamente, é mais fácil manter o controlador padrão do Ingress para a estrutura do Kubernetes que eles escolheram. E é verdade que praticamente qualquer controlador Ingress é adequado para testes ou ambientes de produção de baixo volume. Mas à medida que você escala, sua escolha do controlador Ingress se torna mais importante. Isso ocorre porque os controladores do Ingress podem fornecer muito mais do que a funcionalidade básica de mover seu tráfego do ponto A para o ponto B.
Do gerenciamento avançado de tráfego à visibilidade e segurança integrada, um controlador Ingress pode ser uma das ferramentas mais poderosas em sua pilha do Kubernetes. Na verdade, na F5 NGINX consideramos que ele é a base de qualquer implantação do Kubernetes de nível de produção . Mas muitos desenvolvedores e equipes de operações de plataforma não percebem todo o poder de um controlador Ingress — ou as consequências de escolher um que não pode ser dimensionado. Escolher um controlador Ingress que não seja bem dimensionado ou que não proteja ambientes complexos pode impedir que você tire o Kubernetes dos testes e coloque-o em produção. Nesta série de blogs, pretendemos ensinar a você os conceitos básicos dos controladores Ingress e como fazer uma escolha inteligente que ofereça a funcionalidade e a segurança de que você precisa, hoje e amanhã.
Um controlador Ingress é um balanceador de carga especializado que gerencia o tráfego das camadas 4 e 7 que entra nos clusters do Kubernetes e, potencialmente, o tráfego que sai deles. Para que todos estejamos na mesma página, aqui estão os termos que usamos na NGINX (e eles são basicamente os mesmos em todo o setor):
Por padrão, os aplicativos executados em pods (contêineres) do Kubernetes não são acessíveis pela rede externa, mas apenas por outros pods dentro do cluster do Kubernetes. O Kubernetes tem um objeto de configuração integrado para balanceamento de carga HTTP, chamado Ingress , que define como entidades fora de um cluster Kubernetes podem se conectar aos pods representados por um ou mais serviços do Kubernetes.
Quando você precisa fornecer acesso externo aos seus serviços do Kubernetes, crie um recurso Ingress para definir as regras de conectividade, incluindo o caminho do URI, o nome do serviço de suporte e outras informações. No entanto, por si só, o recurso Ingress não faz nada. Você deve implantar e configurar um aplicativo controlador do Ingress (usando a API do Kubernetes) para implementar as regras definidas nos recursos do Ingress.
kube-proxy
, fornecendo controles adicionais como aqueles que os controladores de entrega de aplicativos (ADCs) e proxies reversos fornecem em ambientes não Kubernetes.Quando chega a hora de selecionar um controlador Ingress, pode ser tentador começar com uma lista de recursos, mas você pode acabar com um controlador Ingress que tem recursos fantásticos, mas não satisfaz as necessidades do seu negócio. Em vez disso, certifique-se de explorar dois elementos que impactam o quão bem o controlador Ingress funcionará para sua equipe e seus aplicativos: casos de uso (quais problemas ele resolverá) e recursos (como você vai "pagar" por isso). Abordaremos esses dois tópicos no restante deste blog.
O principal caso de uso de um controlador Ingress é o gerenciamento de tráfego, então você provavelmente deseja que o controlador Ingress lide com um ou mais destes casos de uso comuns:
Mas não há razão para se contentar com um “pônei de um truque só” – a maioria dos controladores Ingress pode fazer mais do que gerenciar o tráfego. Ao usar o controlador Ingress para resolver vários problemas, você não apenas reduz o tamanho e a complexidade da sua pilha, mas também pode descarregar requisitos não funcionais dos aplicativos para o controlador Ingress. Vamos analisar quatro casos de uso não tradicionais do controlador Ingress que podem ajudar a tornar suas implantações do Kubernetes mais seguras, ágeis e escaláveis, ao mesmo tempo em que fazem uso mais eficiente de seus recursos.
A falta de visibilidade no cluster do Kubernetes é um dos maiores desafios em ambientes de produção, contribuindo para dificuldades na solução de problemas e resiliência. Como os controladores Ingress operam na borda dos seus clusters Kubernetes e tocam em cada bit de tráfego, eles estão bem posicionados para fornecer dados que podem ajudar você a solucionar (e até mesmo evitar) dois problemas comuns: aplicativos lentos e exaustão de recursos no cluster ou plataforma Kubernetes. Para que o controlador Ingress melhore a visibilidade, ele precisa:
A menos que você esteja procurando executar manipulação de solicitação-resposta no Kubernetes, é muito provável que o controlador Ingress possa funcionar também como seu gateway de API. Dependendo do seu conjunto de recursos, um controlador Ingress pode fornecer funções básicas de gateway de API, incluindo terminação TLS, autenticação de cliente, limitação de taxa, controle de acesso detalhado e roteamento de solicitações nas camadas 4 a 7.
Descarregar a autenticação de credenciais de login dos seus serviços do Kubernetes para o seu controlador do Ingress pode resolver dois problemas.
Não é que um controlador Ingress possa servir como um firewall de aplicativo da web (WAF), mas sim que o WAF pode ser consolidado com o controlador Ingress. Embora um WAF possa ser implantado em muitos lugares fora e dentro do Kubernetes, para a maioria das organizações o local mais eficiente e eficaz é no mesmo pod que o controlador Ingress. Este caso de uso é perfeito quando as políticas de segurança estão sob a direção do SecOps ou DevSecOps e quando é necessária uma abordagem detalhada, por serviço ou por URI. Isso significa que você pode usar a API do Kubernetes para definir políticas e associá-las aos serviços. Além disso, a funcionalidade de controle de acesso baseado em função (RBAC) do controlador Ingress pode permitir que o SecOps aplique políticas por ouvinte, enquanto os usuários DevOps definem políticas por recurso Ingress.
Cada controlador Ingress tem um custo... mesmo aqueles que são gratuitos e de código aberto (talvez você já tenha ouvido a frase "grátis como um cachorrinho"). Alguns custos podem ter valores previsíveis atribuídos como itens de linha no seu orçamento, enquanto outros dependem de quanto tempo sua equipe tem para lidar com as consequências do controlador Ingress escolhido (maior complexidade, falta de portabilidade e assim por diante). Vamos analisar os custos – em termos de tempo e dinheiro – a serem considerados ao fazer o orçamento para um controlador Ingress: tempo e dinheiro.
O orçamento para contagem de funcionários pode ser muito mais desafiador do que para itens de linha de custo fixo, especialmente quando você está tentando obter recursos para um projeto em um espaço desconhecido. Você precisa fazer perguntas como:
Observamos uma tendência no setor de consolidar ferramentas e propriedade sob o domínio das equipes de NetOps. Embora isso possa ajudar muito a simplificar sua pilha e melhorar a segurança, defendemos a duplicação cuidadosa de ferramentas com base nas metas da equipe . Faz sentido que a equipe NetOps gerencie ferramentas de perímetro (como balanceadores de carga externos) porque elas se concentram na plataforma mais ampla, mas as equipes de DevOps se preocupam mais com os serviços implantados perto do código do aplicativo e precisam de mais agilidade e controle mais refinado do que obtêm com as ferramentas NetOps. As ferramentas do Kubernetes, incluindo o controlador Ingress, têm mais chances de sucesso quando são selecionadas pelo DevOps. Isso não quer dizer que você deve conceder aos desenvolvedores total liberdade de escolha de ferramentas! Alguma padronização brutal de ferramentas dentro do Kubernetes ainda é uma prática recomendada.
Quando as organizações experimentam o Kubernetes pela primeira vez, geralmente não reservam muito para ferramentas ou suporte. Se você tem recursos humanos para realmente dar suporte a um controlador Ingress que precisa de mais "acompanhamento", então nenhum orçamento monetário é aceitável... a princípio. Mas, à medida que seu investimento no Kubernetes aumenta, você pode se ver limitado pelos recursos da ferramenta ou querer dedicar sua equipe a outras prioridades. É aí que a balança pende para o pagamento de uma ferramenta mais fácil de usar e estável, com recursos e suporte corporativos.
Quando estiver pronto para pagar por um controlador Ingress, esteja ciente de que o modelo de licenciamento é importante. Com base em modelos de preços tradicionais fora do Kubernetes, o preço dos controladores Ingress geralmente é “por instância” ou “por proxy Ingress”. Embora existam casos de uso em que isso ainda faz sentido no Kubernetes, licenciar um controlador Ingress em uma base “por cluster” significa que você paga com base na locação do aplicativo em vez do “número de proxies”.
Aqui estão nossas recomendações para diferentes cenários:
Agora que você entendeu seus requisitos, o próximo passo é decidir em equipe qual é sua tolerância aos riscos que um controlador Ingress pode apresentar e descobrir como você precisará que o controlador Ingress seja dimensionado à medida que sua implantação do Kubernetes cresce. Abordaremos esses tópicos na Parte 2 .
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."