如何为物联网设备(基于Linux)进行软件部署?

6
我正在为一家客户工作,他们在客户位置拥有一批BeagleBones/Raspberry PI设备。这些设备安装在本地网络和防火墙后面。对于SSH连接,有几种选择,但我们仍在努力解决这些设备上的软件部署问题。目前我们不依赖容器技术,因此Docker Cloud或Resin.io都不是选项,但resin.io看起来非常有前途。我们正在使用AWS IoT进行数据收集。
关于部署的一些要求:
- 服务器推送软件→设备 - 部署分阶段进行,逐步增加设备百分比 - 回滚软件 - 设备建立 - 不使用容器技术
有哪些好的方法可以实现这个需求呢?
2个回答

3

(免责声明:我是resin.io的开发者倡导者)。

好的一点是,不依赖容器的软件仍然可以打包(而反过来则不行)。在resin.io中,容器被用作将软件传递到设备上,并实现有趣、有用和安全的更新策略,否则这些策略将不可能或更难以实现。例如:

  • 您的应用程序代码出现错误(这种情况经常发生!)并崩溃了。这会使整个设备包括网络都崩溃吗?(在resin.io中,容器有助于限制损坏,您的应用程序崩溃了,但设备在线并且可以进行更新)
  • 当您有应用程序更新时,是否必须更新整个机器镜像?(使用此类容器,更新应用程序代码的内容发生变化,大部分时间只有很少的数据流量,并且在需要时非常快速地进行更改)
  • 使用此类容器让您几乎零停机升级(启动新应用程序,旧版本正在运行时将资源移交给新版本)。
这并不是说要说服你使用容器技术,只是强调无论你自己的应用是否被容器化(很可能没有,并且将保持这样!),不要排除使用该技术作为其堆栈的服务。每个服务都会尝试以任何必要的方式提供所需的功能。
至于你关于resin.io的清单:
  • 推送软件服务器 -> 设备:检查,git push resin master,您的代码将被部署
  • 分阶段发布,逐步增加设备的百分比:不是一般功能集的一部分,但可以使用resin supervisor API轻松实现:例如锁定所有设备的更新,然后选择哪些设备将获得解锁和更新。由于所有操作都通过API进行,因此可以根据需要自定义以适应您的首选部署策略。
  • 回滚软件:尚未成为一般功能集的一部分,但使用git可以轻松重新推送以前的版本。在设置中固定库的版本以获得可重复的设置需要一些注意,但在实践中是可行的。
  • 设备配置:可以通过API / SDK / CLI进行自动设备设置或配置
  • 没有容器技术:如上所述,在实践中,您不需要过多关心服务以何种方式提供您的软件,因为它不会影响大多数情况下应用程序的行为。
此外,您提到了AWS IoT,这里有关于将resin.io与AWS集成的一些文档,包括一个示例项目,可以自动为使用resin.io设备的AWS IoT设备进行设备配置(插入设备即可自动获取AWS IoT凭据)。这可能是您感兴趣的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接