Kubernetes Operator

Hi! I would like to develop a Kubernetes Operator for submitting Node-RED flows. I currently run Kubernetes outside of GKE and have an idea for deploying as well as scaling out my Node-RED flows. While researching the proper steps to take I found postings mentioning that it is requested that such ideas are posted here first and out of respect for this great project-- here I am!

My idea is to create a Node that indicates containerized segmentations in the flow that, when exported and submitted to an operator, automatically get turned into TCP nodes. These TCP Nodes then act as a junction between pods in the deployment, with the proper services and pods automatically generated and orchestrated by the operator. I have plenty of additional ideas and details but wanted to stop there and check with the community on the proper way to go about such development or if something already exists for this use case. Many thanks for creating Node-RED!

1 Like

Hi and welcome to the community.

Sounds like an interesting development. Possibly a little specialist and I'm not sure how many people in the community are using Kubernetes for Node-RED management. But certainly an interesting development.

Always a good idea to start here, if only to try and make sure that someone hasn't already done something similar. Also a good idea to search through the flows library, for example:

My knowledge in this area is, I'm afraid, very minimal.

I checked the library and couldn't find anything pertaining directly to a node-red flow operator. I found one helm chart that deploys a single node-red pod but I really want to try to scale out. Node is inherently asynchronous so scaling out may make very efficient pipelines for a scripted language and more importantly get beginner analysts to think in a more efficient asynchronous event driven 'server-like' manner.

I seem to find the same suggestions with scaling, use the excellent docker documentation and throw together a replica set .yaml. I would like to make something that can scale a single flow or parts of a single flow that is completely configured in the Node UI. Going from the elegant UI to writing dockerfiles and drafting .yamls and trying to write small flows joined by http nodes and worrying about state isn't fun and well.. doesn't really flow (for me).

I'd like to call one command with my exported node-red flow and package.json to create my .yaml which targets a k8s operator that handles orchestration including building my docker images and running scripts when all pods are in ready state etc. Pod configuration is done in the aforementioned partitioning nodes which specify pod resource requests and limits.

Thanks for the reply and advice.