Recommended way of doing container management

If I start with a Jetpack container and put all my dependencies in there (Deepstream, Pytorch…) whats the recommended way of doing container management? Regular Kubernetes? I would like to easily push out upgrades/updates, for example if I want to upgrade the Jetpack I can make a new container and replace the containers.

@ctuchez1 do you have multiple Jetson devices you are trying to manage remotely? If so, Kubernetes K3S/K8S could work (I haven’t personally used it or had the need to)

Or are you more of referring to the build process of your containers? The recommended way would be to make your own Dockerfile that installs all your packages, dependencies, applications, ect. Then when you need to rebuild your container, it’s automated through the Dockerfile.

Personally I’ve adopted using GitHub workflows and self-hosted runners that automatically trigger Dockerfile rebuilds on git commits to my projects, and find that works well for me. Although if you have a fleet of edge devices you are managing and orchestrating, then perhaps Kubernetes or AWS Greengrass is worth looking into.

Yes I have multiple devices I would like to manage remotely.

I found this link for doing over the air updates:
https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/SD/SoftwarePackagesAndTheUpdateMechanism.html#over-the-air-update

Whats the benefit of doing it that way instead of containerizing the whole application including Jetpack, TensorRT…?

@ctuchez1 that is referring to updating the underlying JetPack-L4T BSP on the device (via apt) without needing to physically re-flash, as opposed to updating containerized applications.