1
votes

I'm running a node JS app on Google Cloud Services using the cloud shell. I've deployed using gcloud app deploy, everything reports as a success. If I use gcloud app logs tail -s default I can see the logs, it says my app is listening on port 3000, that's the first debug message I see from my app.

When I invoke the endpoint without the port on the end, i.e.

https://myapp.appspot.com/myendpoint

I get an error,

"GET /myendpoint" 502

If I try with port 3000, i.e.

https://myapp.appspot.com:3000/myendpoint

The request just times out and I get no log messages from the shell.

I have port 3000 opened on the firewall, and my app.yaml is,

runtime: nodejs
env: flex
service: default

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

Update 1:

I've also tried adding a forwarding port to my app.yaml,

network:
  forwarded_ports:
    - 3000/tcp  

And allowed port 3000 in the VPC Firewall, but this seems to make no difference.

Update 2:

I can SSH into the instance and access the endpoint using a wget http://127.0.0.1:3000/myendpoint command but still no external access.

Update 3:

I've also tried port 443 too, listening on IP 0.0.0.0. But it seems to bind to IPV6 ip address 0 and changes the port to 8443 (somehow). This is just insane...

1

1 Answers

3
votes

I resolved the issue by binding my service to port 8080, and removing the "service" field from my app.yaml. the external calls are all routed to port 8080 by default.

External calls have no port specified.