OpenStack source + images architecture #2673
Replies: 3 comments 2 replies
-
|
I believe we've been implicitly discussing this topic for quite some time—through changes in how we build images and manage patches—just without explicitly framing it as a unified discussion. Over time, we've explored nearly all available approaches to managing patches, packages, and images individually, but we haven’t fully consolidated these processes into a streamlined, end-to-end workflow. So thank you for raising this topic in a structured and high-level context. I'd like to propose another approach—not entirely new, but one that hasn’t been explicitly discussed here yet. Prior to our current workflow, we used to maintain forked versions of source repositories on GitHub to manage downstream patches. However, those forks lacked CI pipelines for patch validation, and we didn’t have our own package build process. Instead, patches were referenced directly during the image build. We didn’t stick with that model for long. At the time, the number of patches was small, and maintaining forks for just a few changes felt more like overhead than value. Without CI to validate those forks, the effort invested in maintaining them didn’t pay off. What I’m proposing now is a middle-ground approach between our current process and a full internal packages strategy:
This gives us the structure and testability benefits of keeping forks and CI, without the added complexity of building and maintaining a separate packaging process. I'm suggesting this mainly to add it to the list of considered approaches in the discussion. I'm not advocating for it at this approach. :) |
Beta Was this translation helpful? Give feedback.
-
|
From my perspective, I vote following two approaches:
Pros
Cons
|
Beta Was this translation helpful? Give feedback.
-
|
I think finally we're ending up at the KISS method: https://github.com/vexxhost/atmosphere/pull/2681/files In this, we have a simple Docker image that takes care of patching files, then passing that context into another image. We should be able to leverage this image in other components so that "prepping" the source code is just an extra target which gets called using the one that builds it. That way, we can reduce the amount of copy-pasta that happens. We can eventually transition the other projects to the same, and maintain all of our patches in the |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
One of the longstanding things that I'm not happy with in Atmosphere where I feel that we can "do better" is the infrastructure around managing sources of the things we ship and how we build images for them, more specifically OpenStack and the components around it.
At the moment, we have an intertwined set of Docker images which are built with Docker Bake (allowing us to reference each other). Those images check out code from OpenDev, apply patches to it (potentially) which have not landed upstream yet, and publish all that into a virtual environment based on Ubuntu. There are several approaches that we can take here if we want to change things (including the current option).
Virtual environment in images
DockerfilePros
Cons
External Packages (either RDO or UCA)
Pros
Cons
Internal packages (RPM or DEB)
Pros
Cons
Hybrid approach (RPM or DEB)
Pros
Cons
Alpine packages using Wolfi
Pros
Cons
Nix packages
Pros
Cons
Personally, I am torn on what we can do here, I do feel like we should split "package build" and "image build" from each other. I am leaning towards the hybrid approach of building images from packages, however, maintaining forks of packages and managing our own patches for them so we have Atmosphere specific builds.
Beta Was this translation helpful? Give feedback.
All reactions