API Gateway (Ingress)

Introduction

../_images/ingress.jpg

Ingress is the API Gateway to all Jetson Platform Services 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