API Gateway (Ingress)
Introduction

Ingress is the API Gateway to all Metropolis Microservices APIs. It acts as a reverse proxy, where are incoming API requests pass through it, which it then forwards to the appropriate microservice based on path prefix.
The endpoint is unprotected and unencrypted because it is mostly used internally (within the corporate network). Each request to a specific service should be prefix with the service name(/vst/ /emdx/ /grafana/ …). The default port is 30080.
Here is a sample request to VST through Ingress. curl localhost:30080/vst/api/device/list
Configuration
To expose a service to the outside through ingress, create an ingress configuration file as follow.
my-svc-nginx.conf
location /genai/ {
rewrite ^/genai/?(.*)$ /$1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log /var/log/nginx/access.log timed_combined;
proxy_pass http://localhost:5010;
}
In the example file, we expose an app thorugh ingress with genai prefix. our app is running on port 5010 internaly. Make sure no other services is listening on the same port you choose. This config file(my-svc-nginx.conf) should be copied at /opt/nvidia/jetson/services/ingress/config/. The next step is to restart ingress as follow:
sudo systemctl restart jetson-ingress
Start and Stop Service
sudo systemctl start jetson-ingress
sudo systemctl stop jetson-ingress
sudo systemctl restart jetson-ingress