DEV Community

Paulo Alves
Paulo Alves

Posted on

kubernetes ingress-controller '400 Bad request - plain HTTP request sent to HTTPS port'

Resolvi criar um material de consulta rápida e que pudesse compartilhar, sobre um problema que me consumiu uma quantidade de tempo considerável. E como consegui resolver, resolvi compartilhar...😎

Criei um cluster EKS do zero para testar algumas variações com Terraform.

Legal tudo ok, só que estava chamando a aplicação somente via HTTP e estava funcionando. Como teria um api gateway na frente, achei prudente que a chamada fizesse um redirect de HTTP para HTTPS.

Quando fiz este redirect foi onde comecei a receber a seguinte erro:

erro400

O único lugar que havia configurado redirecionamento era no ingress-controller. Decide ir debugando por partes, primeiro validei se a requisição chegava até o POD, isso não ocorria.

Então no service que crie para aplicação, alterei o parâmetro abaixo:
Antes

antes
Depois

depois
Com as alterações de redirects na parte do annotations, as requisições chegavam na aplicação.

Voltei o ambiente como estava antes, e fui pegar os logs do ingress-controller, as requisições chegavam mas dava 400. Com isso resolvi olhar para o service do ingress-controller.

Existe uma parte no service que estava assim:

serviceantes

E ficou assim:

servicedepois

Isso porque no meu caso em específico, o ingress que configurei para aplicação, estava apontando para porta 80.

Espero ter ajudar e até a próxima!!!

E ai vamos se conectar? Entre em contato comigo:
https://www.linkedin.com/in/pcmalves/

Top comments (0)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.