Come definire Ingress in GKE, con i contenitori Netflix Spring Cloud

Aug 16 2020

Ho un'architettura di microservizi, basata su Spring Cloud Netflix:

  • business-owner-service punta a un'app Spring Boot che viene eseguita sulla porta 8763. Il port forwarding viene eseguito, business-owner-service: 80 reindirizza alla porta 8763.
  • il servizio clienti punta a un'app Spring Boot che gira sulla porta 8766. servizio clienti: 80 -> 8766

L'architettura funziona correttamente se la richiamo tramite il gateway Spring Cloud Zuul ma desidero configurare un Ingress.

La mia configurazione esatta è la seguente:

  • ingresso

  • configurazione del percorso di ingresso

Il problema è che l'ingresso ha tutti i servizi di backend su malsano e non so cosa sto facendo di sbagliato. Cosa devo fare per avere un Ingress funzionante?

Modifica: per commenti, ho provato a definire readinessProbe, per il pod del servizio clienti, come segue:

Questo non funziona e quando provo a ricontrollare la configurazione aggiornata, readinessProbe non è visibile. Penso che questo sia un bug, ma non sono sicuro di come verificare che la sonda sia aggiornata o meno.

Inoltre, l'attuatore / salute GET sta funzionando attraverso il gateway Zuul:

Risposte

1 TudorGrigoriu Aug 19 2020 at 17:49

Ciò che è finito per essere la soluzione nel mio caso è stata la configurazione del controllo dello stato, non readinessProbe. Ho aggiornato il controllo di integrità che è stato creato automaticamente per i servizi di backend in ingresso in modo che puntino a / Actuator / Health. Questo ha funzionato

ArghyaSadhu Aug 16 2020 at 00:24

Il controller di ingresso GKE esegue il controllo dell'integrità con il probe di disponibilità definito nella distribuzione del pod. Aggiungere una sonda di prontezza come di seguito utilizzando l'attuatore con avvio a molla

spec:
  containers:
    - name: name
      readinessProbe:
        httpGet:
          port: 8080
          path: /actuator/health
        initialDelaySeconds: 10