Tengo problemas con la solicitud de mi aplicación NodeJS que se ejecuta en mi clúster de kubernetes en el océano digital. Cada solicitud devuelve un 502 Bad Gateway Error . No estoy seguro de lo que me estoy perdiendo.
Así es como se ve la configuración del servicio
apiVersion: v1 kind: Service metadata: name: service-api namespace: default labels: app: service-api spec: type: ClusterIP ports: - name: http protocol: TCP port: 80 targetPort: 3000 selector: app: service-apiEl Ingress.yml se ve así
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: service-api-ingress annotations: kubernetes.io/ingress.class: nginx cert-manager.io/cluster-issuer: letsencrypt-prod nginx.ingress.kubernetes.io/limit-connections: '2' nginx.ingress.kubernetes.io/limit-rpm: '60' service.beta.kubernetes.io/do-loadbalancer-protocol: "http" service.beta.kubernetes.io/do-loadbalancer-algorithm: "round_robin" service.beta.kubernetes.io/do-loadbalancer-http2-ports: "443,80" service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443" service.beta.kubernetes.io/do-loadbalancer-tls-passthrough: "true" spec: tls: - hosts: - dev-api.service.com secretName: service-api-tls rules: - host: "dev-api.service.com" http: paths: - pathType: Prefix path: "/" backend: service: name: service-api port: number: 80Cada vez que visito la URL del host, aparece un error 502.
Esto es lo que aparece en el registro de ingreso de nginx
2021/01/13 08:41:34 [error] 319#319: *31338 connect() failed (111: Connection refused) while connecting to upstream, client: IP, server: dev-api.service.com, request: "GET /favicon.ico HTTP/2.0", upstream: "http://10.244.0.112:3000/favicon.ico", host: "dev-api.service.com", referrer: "https://dev-api.service.com/status"¿Podría ser la anotación que configura SSL passthru?
Si se configuró SSL passthru en su controlador de ingreso, entonces su servicio necesita exponer el puerto 443 además del puerto 80. Básicamente, está diciendo que el pod está terminando la conexión segura, no nginx.
Si este es el problema, explicaría el error 50X que indica un problema con el backend
Como hemos discutido (con @Emmanuel Amodu) en un comentario:
El error fue conectarse a la aplicación usando el puerto incorrecto, puerto 4000 en lugar de 3000 como se define en service-api .
Para la comunidad que tendrá un problema similar, por favor, los pasos más importantes para la depuración:
$ kubectl exec -it -n <namespace-of-ingress-controller> <nginx-ingress-controller-pod> -- cat /etc/nginx/nginx.conf$ kubectl describe svc service-apiNo se necesita una configuración especial, lo más probable es que 404 provenga de su backend real.