Guidelines #1

Open
opened 2025-12-11 13:12:23 +07:00 by pakin · 0 comments
Owner

Every service must register itself through grpc 50051

NOTE: registering through gRPC must be sent with REGISTRY_SECRET along with ServiceInfo

API Access Method

  1. X-API-Key with API_KEY
  2. JWT Secret

Service Pseudo Code

main(){
  service_name := ""
  url := "real_exposed_url"

  // grpc 
  response := connect("http://localhost:50051")
  if (client = response.ok) != null {
    register(client, service_name, url)
  }

  // heartbeat loop
  spawn(heartbeat_loop)

 // TODO: router handler, server, etc.
  
}
register(client, name, url){
  // do build grpc service_info request
  req := ServiceInfo(
    name: name,
    url: url,
    healthz: "path_to_healthcheck",
    token: env.get("REGISTRY_TOKEN")
  )
  result := client.register(req)
}
heartbeat_loop(name, url){
  while(true){
    response := connect("http://localhost:50051")
    if (client = response.ok) != null {
      req := ServiceHeartbeat(
        name: name,
        url: url
      )
      result := client.heartbeat(req)
    }

    sleep(10)
  }
}

gRPC proto file

https://gitlab.forthrd.io/Pakin/tbm-proto.git

Build

podman login
podman build -t pakin-inspiron-15-3530.tail110d9.ts.net/pakin/gateway-m2 .
podman push pakin-inspiron-15-3530.tail110d9.ts.net/pakin/gateway-m2

Run

podman run -d --env-file ./.env -p 8080 -p 50051:50051 pakin-inspiron-15-3530.tail110d9.ts.net/pakin/gateway-m2
Every service must register itself through grpc `50051` NOTE: registering through gRPC must be sent with `REGISTRY_SECRET` along with `ServiceInfo` API Access Method 1. `X-API-Key` with `API_KEY` 2. JWT Secret **Service Pseudo Code** ``` main(){ service_name := "" url := "real_exposed_url" // grpc response := connect("http://localhost:50051") if (client = response.ok) != null { register(client, service_name, url) } // heartbeat loop spawn(heartbeat_loop) // TODO: router handler, server, etc. } ``` ``` register(client, name, url){ // do build grpc service_info request req := ServiceInfo( name: name, url: url, healthz: "path_to_healthcheck", token: env.get("REGISTRY_TOKEN") ) result := client.register(req) } ``` ``` heartbeat_loop(name, url){ while(true){ response := connect("http://localhost:50051") if (client = response.ok) != null { req := ServiceHeartbeat( name: name, url: url ) result := client.heartbeat(req) } sleep(10) } } ``` --- **gRPC proto file** ``` https://gitlab.forthrd.io/Pakin/tbm-proto.git ``` **Build** ``` podman login podman build -t pakin-inspiron-15-3530.tail110d9.ts.net/pakin/gateway-m2 . podman push pakin-inspiron-15-3530.tail110d9.ts.net/pakin/gateway-m2 ``` **Run** ``` podman run -d --env-file ./.env -p 8080 -p 50051:50051 pakin-inspiron-15-3530.tail110d9.ts.net/pakin/gateway-m2 ```
pakin added the
enhancement
label 2025-12-11 13:12:23 +07:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: pakin/gateway-m2#1
No description provided.