O que é o Kubernetes Ingress?

Autora

Ravi Saraswathi

IBM Chief Architect

IBM Blog

Definição do Kubernetes Ingress

O Kubernetes Ingress é um objeto de API que fornece regras de roteamento para gerenciar o acesso de usuários externos aos serviços em um cluster do Kubernetes.

Neste artigo, veremos como e por que você pode precisar expor uma aplicação ao exterior de seu cluster do Kubernetes, as diferentes opções disponíveis e as situações em que o Kubernetes Ingress é mais útil. Este blog pressupõe que você tenha conhecimentos básicos do Kubernetes, mas se precisar de mais informações básicas, confira os seguintes recursos:

Opções para expor aplicações implementadas no Kubernetes

Há várias maneiras de expor sua aplicação ao exterior do cluster do Kubernetes, e você vai querer selecionar a apropriada com base em seu caso de uso específico. 

As quatro opções principais que compararemos neste post são: ClusterIP, NodePort, LoadBalancer e Ingress. Cada uma delas proporciona uma forma de expor serviços e é útil em diferentes situações. Um serviço é essencialmente um front-end para a sua aplicação que redireciona automaticamente o tráfego para pods disponíveis de maneira uniformemente distribuída. Os serviços são uma maneira abstrata de expor uma aplicação em execução em um conjunto de pods como um serviço de rede. Os pods são imutáveis, o que significa que, quando morrem, não são ressuscitados. O cluster do Kubernetes cria novos pods no mesmo nó ou em um novo nó quando um pod é desativado. 

Semelhante a pods e implementações, os serviços são recursos no Kubernetes. Um serviço fornece um único ponto de acesso de fora do cluster do Kubernetes e permite que você acesse dinamicamente um grupo de pods de réplica. 

Para acesso a aplicações internas em um cluster do Kubernetes, o ClusterIP é o método preferencial. É uma configuração padrão no Kubernetes e usa um endereço IP interno para acessar o serviço.

Para expor um serviço a solicitações de rede externa, NodePort, LoadBalancer e Ingress são opções possíveis. Vamos analisar o Ingress primeiro e comparar os serviços mais adiante no artigo.

As mais recentes notícias de tecnologia, corroboradas por insights de especialistas.

Mantenha-se atualizado sobre as tendências mais importantes e fascinantes do setor em IA, automação, dados e muito mais com o boletim informativo da Think. Consulte a declaração de privacidade da IBM.

Agradecemos a você! Você se inscreveu.

Sua inscrição será entregue em inglês. Você pode encontrar um link para cancelar a inscrição em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa declaração de privacidade da IBM para obter mais informações.

O que é o Kubernetes Ingress e por que ele é útil?

O Kubernetes Ingress é um objeto de API que fornece regras de roteamento para gerenciar o acesso de usuários externos aos serviços em um cluster do Kubernetes, geralmente via HTTPS/HTTP. Com o Ingress, você pode configurar facilmente regras para rotear tráfego sem criar vários LoadBalancers ou expor cada serviço no nó. Isso o torna a melhor opção para uso em ambientes de produção. 

Em ambientes de produção, você normalmente precisa de roteamento baseado em conteúdo, compatibilidade com vários protocolos e autenticação. O Ingress permite configurar e gerenciar esses recursos dentro do cluster.

O Ingress é composto por um objeto de API do Ingress e o Ingress Controller. Como discutimos, o Kubernetes Ingress é um objeto de API que descreve o estado desejado para expor serviços para o exterior do cluster do Kubernetes. Um Controlador do Ingress é essencial porque é a implementação real da API do Ingress. Um Ingress Controller lê e processa as informações do Ingress Resource e geralmente é executado como pods dentro do cluster do Kubernetes.

Um Ingress fornece o seguinte:

  • URLs alcançáveis externamente para aplicações implementadas em clusters do Kubernetes
  • Compatibilidade com host virtual baseado em nome e roteamento baseado em URI
  • Regras de balanceamento de carga e tráfego, bem como terminação de SSL

Para uma visão geral visual rápida do Kubernetes Ingress, confira o vídeo a seguir:

O que é o Ingress Controller?

Se o Kubernetes Ingress é o objeto de API que fornece regras de roteamento para gerenciar o acesso externo a serviços, o Controlador do Ingress é a implementação real da API do Ingress. O Controlador do Ingress geralmente é um LoadBalancer para rotear tráfego externo para seu cluster do Kubernetes e é responsável pelos serviços de rede L4-L7. 

A camada 4 (L4) refere-se ao nível de conexão da stack de OSI — conexões externas com balanceamento de carga de maneira round-robin entre pods. A camada 7 (L7) refere-se ao nível de aplicação da stack de OSI—conexões externas com balanceamento de carga entre pods, com base nas solicitações. A camada 7 é frequentemente preferida, mas você deve selecionar um Controlador do Ingress que atenda a seus requisitos de balanceamento de carga e roteamento.

O Controlador do Ingress é responsável por ler as informações do Ingress Resource e processar esses dados adequadamente. Veja a seguir um exemplo de Ingress Resource:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress 
spec:
  backend:
    serviceName:ServiceName
    servicePort:<Port Number>

Como analogia, se o Kubernetes Ingress é um computador, então o Controlador do Ingress é um programador usando o computador e agindo. Além disso, os Ingress Rules atuam como o gerente que orienta o programador a fazer o trabalho usando o computador. Os Ingress Rules são um conjunto de regras para processar o tráfego HTTP de entrada. Um Ingress sem regras envia todo o tráfego para um único serviço de back-end padrão. 

Olhando mais a fundo, o Controlador do Ingress é uma aplicação que é executada em um cluster do Kubernetes e configura um LoadBalancer HTTP de acordo com os Ingress Resources. O LoadBalancer pode ser um LoadBalancer de software executado no cluster ou um LoadBalancer de hardware ou nuvem executado externamente. Diferentes LoadBalancers exigem diferentes implementações do Ingress Controller.

Vários Controlador do Ingresss estão disponíveis no mercado, e é importante escolher o certo para gerenciar o tráfego e a carga que chegam ao seu cluster do Kubernetes.

IBM Cloud

Red Hat OpenShift AI on IBM Cloud: implemente cargas de trabalho de IA

Utilize recursos de IA com o Red Hat OpenShift on IBM Cloud. Este vídeo explora como criar, implementar e gerenciar cargas de trabalho de IA com eficiência com uma plataforma de operações escalável de aprendizado de máquina.

Ingress versus ClusterIP versus NodePort versus LoadBalancer

Ingress, ClusterIP, NodePort e LoadBalancer são formas de levar tráfego externo para o cluster, e cada um faz isso de maneira diferente. Vamos dar uma olhada em como cada um funciona e onde você os usaria.

ClusterIP

O ClusterIP é a opção preferencial para acesso ao serviço interno e usa um endereço IP interno para acessar o serviço. Alguns exemplos de onde o ClusterIP pode ser a melhor opção são a depuração de serviços durante o desenvolvimento e os testes, tráfego interno e dashboards.

NodePort

Um NodePort é uma máquina virtual (VM) usada para expor um serviço em um número de porta estática. É usado principalmente para expor serviços em um ambiente que não seja de produção (na verdade, o uso em produção não é recomendado). Por exemplo, um NodePort seria usado para expor um único serviço (sem requisitos de balanceamento de carga para vários serviços).

Balanceador de carga

Esse método usa um LoadBalancer externo para expor serviços à internet. Você pode usar o LoadBalancer em um ambiente de produção, mas o Ingress é geralmente preferido.

Ingress

O Ingress permite consolidar as regras de roteamento de tráfego em um único recurso e é executado como parte de um cluster do Kubernetes. Algumas razões pelas quais o Kubernetes Ingress é a opção preferencial para expor um serviço em um ambiente de produção incluem o seguinte:

  • O roteamento de tráfego é controlado por regras definidas no Ingress Resource.
  • O Ingress faz parte do cluster do Kubernetes e é executado como pods.
  • Um LoadBalancer externo é caro, e você precisa gerenciá-lo fora do cluster do Kubernetes. O Kubernetes Ingress é gerenciado de dentro do cluster.

Em ambientes de produção, você normalmente usa o Ingress para expor aplicações à internet. Uma aplicação é acessada pela internet via porta 80 (HTTP) ou porta 443 (HTTPS), e o Ingress é um objeto que permite o acesso a seus Kubernetes Services de fora do cluster do Kubernetes. 

Resumo

A API do Kubernetes Ingress permite expor suas aplicações implementadas em um cluster do Kubernetes à internet com regras de roteamento em uma única fonte. Para implementar o Ingress, você precisa configurar um Ingress Controller em seu cluster — ele é responsável por processar informações do Ingress Resource e permitir o tráfego com base no Ingress Rules. É importante escolher o serviço certo com a configuração apropriada, para expor sua aplicação à internet com base nas diretrizes listadas acima. 

Soluções relacionadas
IBM Red Hat OpenShift

O Red Hat OpenShift on IBM Cloud é uma plataforma de contêineres OpenShift (OCP) totalmente gerenciada.

Explore o Red Hat OpenShift
Soluções de contêiner

As soluções de contêiner executam e expandem cargas de trabalho conteinerizadas com segurança, inovação em código aberto e implementação ágil.

Explore contêineres
Serviços de consultoria em nuvem 

Libere novos recursos e aumente a agilidade dos negócios com os serviços de consultoria em nuvem da IBM. Descubra como cocriar soluções, acelerar a transformação digital e otimizar o desempenho por meio de estratégias de nuvem híbrida e parcerias especializadas.

Serviço de nuvem
Dê o próximo passo

O IBM® Instana Observability oferece observabilidade automatizada de Kubernetes e recursos de APM projetados para monitorar todo o seu stack a de aplicações em Kubernetes — desde nós e pods até contêineres e aplicações — para todas as distribuições de Kubernetes.

Conheça o IBM Instana Observability Descubra o Instana