Sobes.tech
Middle

Como aceder ao endereço IP externo do serviço baseado em balanceador de carga (load balancer service) no controlador Ingress?

sobes.tech IA

Resposta da IA

No controlador Ingress, não se acede diretamente ao IP externo de um serviço do tipo LoadBalancer. O controlador Ingress atua como ponto de entrada e encaminha o tráfego para diferentes serviços com base nas regras definidas no recurso Ingress.

Para aceder a um serviço do tipo LoadBalancer através do Ingress, deve-se:

  1. Criar um serviço do tipo LoadBalancer para a sua aplicação. O provedor de Kubernetes na nuvem atribuirá um IP externo a este serviço.

    // service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
  2. Criar um recurso Ingress que encaminhe o tráfego para este serviço.

    // ingress.yaml
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-app-ingress
    spec:
      rules:
      - host: myapp.example.com # Ou outro domínio/caminho onde a aplicação estará acessível
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app-service # Nome do seu serviço LoadBalancer
                port:
                  number: 80 # Porta do serviço para a qual o tráfego será redirecionado
    
  3. Garantir que o controlador Ingress está instalado e a funcionar no cluster. O controlador Ingress (por exemplo, Nginx Ingress Controller, Traefik) ouvirá o IP externo atribuído a ele e redirecionará as solicitações para myapp.example.com para o serviço my-app-service.

Assim, o acesso à aplicação é garantido através do IP externo do controlador Ingress, e não diretamente através do IP externo do serviço do tipo LoadBalancer (embora o Ingress possa usar esse LoadBalancer para aceder aos pods).