3dmedium / nmos_crosspoint

NMOS Tool for finding and Connecting Devices
MIT License
6 stars 0 forks source link

Deploy in Kubernetes #5

Open Bond246 opened 3 weeks ago

Bond246 commented 3 weeks ago

Hello,

i'm trying to deploy that one in a kubernetes cluster while also our registry is installed there. In general it seems that the container is working.

But there are some read/write issues i think. I get several erros like:

Error reading from file: ./state/mediadev_matroxcip/matroxcipstate.json
Error reading from file: ./state/mediadev_matroxcip/matroxcipstateauth.json
...
error Crosspoint Settings  -  Error while reading file: ./config/crosspoint.json
error Crosspoint Settings  -  Error while reading file: ./config/alias.json
error Crosspoint Settings  -  Error while reading file: ./config/hidden.json

I have a volume for /config and /state but it seems that crosspoint is not able to write in it to create the non-existent files. So which user/group is running the server and whats to access this files and which uid/gid should i use for my volume?

And 2nd question: in settings.json the registry is defined as follows:

"staticNmosRegistries":[
   {"ip":"10.1.0.211","port":80,"priority":10, "domain":""}

can i use either "ip" or "domain" or is ip mandatory? Because in k8s it is more usefull to use the k8s-service-name of the registry instead of its ip.

Thanks!

3dmedium commented 3 weeks ago

Hi @Bond246 , The NMOS Crosspoint has created files under state, other you would see more warnings. When you have some Matrox devices you can just create the subfolder (Bug, subfolders and state folder are not created by the tool itself)

The Config files are also created as soon as there are changes.

You can try to enter the Registry dns instead of ip under "ip": it should just work. The domain field is something nmos specific (unused for now)

Just let me know if this fixes your problems.

Bond246 commented 1 week ago

Hello,

using the internal k8s-dns is working fine. Thanks for that. Creating the files doesn't seem to work but i've fixed that by touching them in a init-container so no problem with that. But there are still errors like:

Error reading from file: ./state/mediadev_matroxcip/matroxcipstate.json
Error reading from file: ./state/mediadev_matroxcip/matroxcipstateauth.json
error Crosspoint Settings  -  Error while reading file: ./config/alias.json

I think if that files are empty i get this error... don't know. It seems that the tool is working with that.

I have problems with staying connected to the registry:

node:events:497
      throw er; // Unhandled 'error' event
      ^
Error: connect ECONNREFUSED 10.211.86.96:8011
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)
Emitted 'error' event on WebSocket instance at:
    at emitErrorAndClose (/nmos-crosspoint/server/node_modules/ws/lib/websocket.js:1041:13)
    at ClientRequest.<anonymous> (/nmos-crosspoint/server/node_modules/ws/lib/websocket.js:881:5)
    at ClientRequest.emit (node:events:519:28)
    at emitErrorEvent (node:_http_client:101:11)
    at Socket.socketErrorListener (node:_http_client:504:5)
    at Socket.emit (node:events:519:28)
    at emitErrorNT (node:internal/streams/destroy:169:8)
    at emitErrorCloseNT (node:internal/streams/destroy:128:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '10.211.86.96',
  port: 8011
}
Node.js v20.18.0

But maybe i open a new issue for that.

3dmedium commented 1 week ago

Hi @Bond246 , The error messages you are seeing are created when the files are not readable OR lead to parse errors. They will be overwritten as soon as they are used. I think you can just ignore this for now. I will work on these error messages in the future and handling of all these state and config files. I do see some problems here on other installations.

For your reconnect issue, can you open a new issue and tell me if the nmos_crosspoint crashes in this moment. Maybe there are some lines just before this console output with some more trace info, what happened just before.