Partilhar via


Implantar um controlador de entrada

Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server

Um controlador de entrada é um recurso do Kubernetes que permite acesso externo a serviços dentro do cluster Kubernetes. Ingress permite que um operador exponha um serviço a solicitações de rede externas, geralmente HTTP ou HTTPS. Você configura o acesso criando um conjunto de regras que definem as conexões de entrada que alcançam serviços específicos.

Um controlador de entrada é um software que fornece roteamento de tráfego configurável para serviços Kubernetes. Os recursos de entrada do Kubernetes são utilizados para configurar regras e rotas de entrada para serviços individuais do Kubernetes. Usando um controlador de entrada e regras de entrada, você pode usar um único endereço IP para rotear o tráfego para vários serviços em um cluster Kubernetes.

Depois de implantar o controlador em seu ambiente, você pode criar e implantar o manifesto de entrada. Atualmente, você usa ingress no AKS Arc usando o controlador de ingresso NGINX. Para obter informações sobre como instalar, configurar e usar o controlador de entrada NGINX, consulte Instalação com manifestos.

O Ingress difere do NodePort e do LoadBalancer de uma maneira exclusiva e melhora o roteamento de tráfego para seu cluster de forma menos dispendiosa. A definição de serviços NodePort cria várias portas aleatórias e a definição de serviços LoadBalancer aumenta o custo dos recursos de nuvem mais do que você deseja. Ao definir um controlador de entrada, você consolida as regras de roteamento de tráfego em um único recurso que é executado como parte do cluster. O NodePort e o LoadBalancer permitem expor um serviço especificando esse valor no tipo do serviço, enquanto a entrada é um recurso independente para o serviço. A entrada é definida, criada e destruída separadamente do serviço.

Você pode implantar a entrada de várias maneiras, dependendo do caso de uso. Os recursos de entrada são usados para atualizar a configuração dentro do controlador de entrada para determinar como ele funciona.

Usar a entrada para expor serviços por meio de URLs acessíveis externamente

Um exemplo de uso de ingress é mostrado no seguinte manifesto YAML. O ingress.class aparece dentro dos metadados (neste exemplo, ingress-nginx), e essa configuração permite que o controlador de entrada NGINX saiba o que precisa monitorar e atualizar:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
        kubernetes.io/ingress.class: "nginx"
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080

A spec seção fornece informações sobre o que está configurado. Neste exemplo, uma regra (ou conjunto de regras) é definida e inclui os seguintes itens:

  • O host ao qual as regras são aplicadas.
  • Se o tráfego é HTTP ou HTTPS.
  • O caminho monitorado.
  • O serviço interno e a porta para onde o tráfego é enviado.

Usar a entrada para balancear a carga do tráfego

No exemplo a seguir, outro caminho é adicionado ao manifesto que permite o balanceamento de carga entre diferentes back-ends de um aplicativo. Neste exemplo, o operador pode dividir o tráfego e enviá-lo para diferentes pontos de extremidade de serviço e implantações com base no caminho descrito. Por trás de cada caminho há uma implantação e um serviço, que são úteis para pontos de extremidade que recebem mais tráfego:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-and-earth
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080
               - path: /hello-earth
pathType: Prefix
backend:
    service: 
         name: hello-earth 
                    port:  
                     number: 8080

Use a entrada para rotear o tráfego HTTP para vários nomes de host no mesmo endereço IP

Você pode usar um recurso de entrada diferente para cada host, que permite controlar o tráfego com vários nomes de host. Para usar um recurso de entrada diferente, aponte vários nomes de host para o mesmo endereço IP público usado para o serviço LoadBalancer. No seguinte arquivo de manifesto, uma versão de produção do foi adicionada hello-world . O nome prod.example.com do host é usado e o tráfego é apontado para o novo serviço hello-world-prod. O tráfego entra através do endereço IP do balanceador de carga e é roteado com base no nome do host e no caminho fornecido:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-prod
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-test 
                    port:  
                     number: 8080
       - host: prod.example.com
          http:
              paths:
               - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-prod 
                    port:  
                     number: 8080

Próximos passos

Para obter mais informações, veja as seguintes ligações: