带有自定义 settings.js 和其他文件的 Kubernetes 中的节点红色实例

Node red instance in Kubernetes with custom settings.js and other files

我正在构建一个在 Kubernetes 上创建按需节点红色实例的服务。此服务需要自定义身份验证,以及 JSON 文件中的一些其他服务特定数据。

red 节点的每个实例都会有一个与之关联的持久卷,因此我的一种方法是将 PVC 附加到 pod 并将文件复制到 PV 中,然后启动 node red 部署在修改后的 PVC 上。

我使用以下脚本来完成这个

def paste_file_into_pod(self, src_path, dest_path):
      dir_name= path.dirname(src_path)
      bname = path.basename(src_path)

      exec_command = ['/bin/sh', '-c', 'cd {src}; tar cf - {base}'.format(src=dir_name, base=bname)]

      with tempfile.TemporaryFile() as tar_buffer:
           resp = stream(self.k8_client.connect_get_namespaced_pod_exec, self.kube_methods.component_name, self.kube_methods.namespace,
                  command=exec_command,
                  stderr=True, stdin=True,
                  stdout=True, tty=False,
                  _preload_content=False)

           print(resp)


           while resp.is_open():
                resp.update(timeout=1)
                if resp.peek_stdout():
                     out = resp.read_stdout()
                     tar_buffer.write(out.encode('utf-8'))

                if resp.peek_stderr():
                     print('STDERR: {0}'.format(resp.read_stderr()))

           resp.close()

           tar_buffer.flush()
           tar_buffer.seek(0)

           with tarfile.open(fileobj=tar_buffer, mode='r:') as tar:
                subdir_and_files = [tarinfo for tarinfo in tar.getmembers()]
                tar.extractall(path=dest_path, members=subdir_and_files)

这似乎是一种非常混乱的方法。有人可以建议一种快速简便的方法来使用自定义 settings.js 和一些额外的配置文件在 Kubernetes 中启动节点红色吗?

更好的方法是不使用PV来存储流量,而是使用Storage Plugin将流量保存在中央数据库中。已经有几个使用 MongoDB

等数据库的数据库

您可以扩展现有的 Node-RED 容器以在 /data 中包含修改后的 settings.js,其中包括存储和身份验证插件的详细信息,并使用环境变量在启动时设置特定实例向上。

此处示例:https://www.hardill.me.uk/wordpress/tag/multi-tenant/