Sobes.tech
Middle

Come accedere all'indirizzo IP esterno del servizio basato sul bilanciatore di carico (load balancer service) nel controller Ingress?

sobes.tech AI

Risposta dell'AI

Nel controller Ingress, non si accede direttamente all'IP esterna di un servizio di tipo LoadBalancer. Il controller Ingress funge da punto di ingresso e instrada il traffico verso diversi servizi in base alle regole definite nella risorsa Ingress.

Per accedere a un servizio di tipo LoadBalancer tramite Ingress, bisogna:

  1. Creare un servizio di tipo LoadBalancer per la tua applicazione. Il provider Kubernetes nel cloud assegnerà a questo servizio un IP esterno.

    // 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. Creare una risorsa Ingress che instradi il traffico verso questo servizio.

    // ingress.yaml
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-app-ingress
    spec:
      rules:
      - host: myapp.example.com # O altro dominio/percorso dove sarà accessibile l'applicazione
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app-service # Nome del servizio LoadBalancer
                port:
                  number: 80 # Porta del servizio a cui verrà indirizzato il traffico
    
  3. Assicurarsi che il controller Ingress sia installato e funzionante nel cluster. Il controller Ingress (ad esempio, Nginx Ingress Controller, Traefik) ascolterà sull'IP esterno assegnato e reindirizzerà le richieste a myapp.example.com al servizio my-app-service.

In questo modo, l'accesso all'applicazione avviene tramite l'IP esterno del controller Ingress, e non direttamente tramite l'IP esterno del servizio di tipo LoadBalancer (anche se Ingress può usare questo LoadBalancer per accedere ai pod).