Search code examples
dockerubuntuenvoyproxy

Unable to access Envoy Admin server through server IP


I am currently running Envoy in a Docker container, however I am unable to get access the Envoy admin server when deploying to my server, which is running Ubuntu 20.10.

When I ran the container locally on my personal machine running Windows 11, I was able to access it without issue.

Here is my Envoy config:

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 9901

My Dockerfile:

FROM envoyproxy/envoy:v1.20-latest
COPY ./envoy.yaml /etc/envoy/envoy.yaml
CMD /usr/local/bin/envoy -c /etc/envoy/envoy.yaml -l debug

And how I'm running the Docker container:

sudo docker build -t envoy .
sudo docker run -d -p 9000:9000 -p 9901:9901 envoy

After running the container, I was able to verify that Docker was able to bind to the port, as shown in the image below.

I am trying to access the admin portal through my browser by trying to access 123.123.123.123:9901 (where 123.123.123.123 is an example public IP). I have something being served on port 80 which I can access using the server's public IP, so it looks like the issue is with my Envoy/Docker configuration. What am I doing wrong?

Relevant running ports


Solution

  • Turns out it was an oversight on my end. I'm using Google Compute Engine as my server VM, and when I had initially looked over the firewall settings, I saw a range of ports that were enabled, though did not realize that they were only enabled and accessible by the vm itself through localhost. I thought the port was exposed publicly, but I was mistaken. I realized this was the case because I was able to curl the admin url via curl localhost:9901, but was unable to access server-ip:9901. After exposing port 9901 to public on GCP's firewall settings for my VM, it worked, so it wasn't a server config issue, it was a firewall config issue.