向物联网设备提供和部署应用程序

物联网 码头工人 部署
2021-06-05 07:09:07

我有一小群不断增长的 IoT 设备(机上板)。它们都通过以太网连接到服务器。每个设备都运行具有各自配置的相同应用程序集(java、python、nginx、ffmpeg)。这些设备是“生产”设备。

我有一个单一的开发设备,我可以在上面创建新应用程序的原型、更改配置或修改应用程序代码。

物联网设备和服务器都运行 CentOS 8。

推荐的管理队列和将最新代码部署到所有设备的方法,最好使用某种形式的版本控制。我的第一个想法是将所有内容容器化并使用 swarm 或 kubernetes 之类的东西进行编排,但我觉得这太过分了。

4个回答

为什么不建立自己的 RPM 存储库?您只需将新软件包推送到那里,然后定期调用 yum 来更新您的设备。

您缺少的就是所谓的 DevOps。

您需要选择一个 CI/CD 工具,即持续集成和持续部署。

例如,您可以使用 Jenkins 或 Gitlab runner。

在我的项目中,我使用 Gitlab runner,基本上每当我将代码推送到 master 分支时,所有队列都会使用脚本进行更新。

您还可以查看用于管理 Linux 服务器队列的 Ansible 脚本。

如果你走容器路线,你可以将所有管理外包给balena.io,特别是如果设备最终部署在互联网上。

他们支持通过安全的内置 VPN 到他们的云服务来构建和管理部署到设备的版本。这还包括通过他们的 Web 控制台进行远程控制台访问。

构建服务通过充当 git 远程端点来工作,因此您可以在本地开发,然后 git push 到他们的构建服务器来构建容器。

Balena 提供免费账户、付费服务,如果你想自己部署整个东西(可能只用于想要定制的大规模部署),代码都是开源的。

如果这始终只是本地的,那么正如@YCN-所说,本地 GI 管道和一些脚本应该是您所需要的。

你为什么不像 Mycroft AI 那样使用 Github,你可以让你的设备连续或定期寻找 repo 更新,如果有,那么设备会自动执行 git pull 并更新你的软件。Github 是免费的,而且还有一个私人类别,你可以购买一个高级类别以获得更多的安全性和东西。您可以管理您的版本和所有内容。