Hello, I’m curious if uCore is a suitable base for IaC in a homelab for something like a container host. I know I can bake my own images and deploy them with Ignition config. But how about changing the running setup to add or a remove a container using some sort of a git workflow?
So far how I understand it:
Ignition is run only on first boot so ading/removing containers would mean a full redeploy.
I can produce a new base image and rebase a deployed machine to it, but that’s more a system update level thing, adding new packages etc.
I can then modify running configuration directly on the host, but that wouldn’t be reproducible unless I use Ansible or something similar.
In the wild so far I’ve only seen this project that apparently follows the full redeploy path. Personally I’m more inclined to include most of the configuration, including containerfiles, in my custom OCI image and only leave user setup in Ignition (because it’s a pain to bake into the base image).
Are there any other options or did I misunderstood something?
The base image should not contain configuration/containerfiles. Only the software. Configuration (containerfiles) should be viewed as data and managed separately.
I want to do something similar, but I’m going to make my own image of uCore and install k3s, a really small Kubernetes distribution (I want to replace my current Ubuntu server). I saw blog articles about it.
Of course, Kubernetes may be something of an overkill for your needs. As I work daily with Kubernetes, it’s was the obvious decision for me. A typical git-based deployment workflow uses GitOps principles with Kubernetes and a GitOps tool like Argo CD or Flux. Argo CD seems to be the most popular one.
The idea is to manage the deployments in git. When you change the containerfiles in git, the running containers in uCore are updated. That means you need a GitOps tool to check the git repo regularly and synchronize the server with the git source. You manually configure the GitOps tool once, and then it’s all automated with git.
The fetchit project seems alive and well. It is most probably a lot simpler than the whole complex Kubernetes+GitOps ecosystem. I’m almost tempted but I like doing things the hard way.
Thank you, this is a very helpful answer. I will check out FetchIt, it seems like what I need.
I do in fact think of eventually reaching Kubernetes and GitOps as my runtime, but this will take a while with my limited tinkering time. So I’m just attacking one problem at a time.
I ran k3s on a Raspberry Pi 4B+ cluster (3 nodes) for a few years while I was learning k8s. I was able to use helm to install OpenFaaS. I ported a couple of my apps at the time to use it.
I found them at cncf.io. There are enough projects there for a lifetime of exploration. Although OpenFaaS does not seem to be on th dashboard any longer, I used to (before I retired) rely on that org to learn what is hot or up-and-coming.