Como definir o Ingress no GKE, com contêineres Spring Cloud Netflix

Aug 16 2020

Eu tenho uma arquitetura de microsserviço, baseada no Spring Cloud Netflix:

  • business-owner-service aponta para um aplicativo Spring Boot que é executado na porta 8763. O encaminhamento de porta é feito, business-owner-service: 80 redireciona para a porta 8763.
  • atendimento ao cliente aponta para um aplicativo Spring Boot que é executado na porta 8766. atendimento ao cliente: 80 -> 8766

A arquitetura é executada corretamente se eu a invocar por meio do gateway Spring Cloud Zuul, mas desejo configurar um Ingress.

Minha configuração exata é a seguinte:

  • entrada

  • configuração do caminho de entrada

O problema é que o ingresso está com todos os serviços de back-end em não íntegros e não sei o que estou fazendo de errado. O que devo fazer para ter um Ingress funcionando?

Edit: Por comentários, tentei definir readinessProbe, para pod de atendimento ao cliente, da seguinte maneira:

Isso não funciona e, quando tento verificar a configuração atualizada, readinessProbe não está visível. Acho que é um bug, mas não tenho certeza de como verificar se o probe está atualizado ou não.

Além disso, o GET do atuador / saúde está sendo executado através do gateway Zuul:

Respostas

1 TudorGrigoriu Aug 19 2020 at 17:49

O que acabou sendo a solução no meu caso foi a configuração da verificação de integridade, não o readinessProbe. Atualizei a verificação de integridade que foi criada automaticamente para os serviços de back-end de ingresso para apontar para / atuator / health. Isso funcionou

ArghyaSadhu Aug 16 2020 at 00:24

O controlador de entrada do GKE realiza uma verificação de integridade com a sondagem de prontidão definida na implantação do pod. Adicione uma sonda de prontidão conforme abaixo usando o atuador de inicialização

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