-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FCOS config versioning #89
Comments
Do we want FCOSCs to also support RHEL (or multiple RHCOS branches)? If so, we'll need to be able to support older Ignition spec versions for a long time. In that case, I'm thinking the right approach is to 1) translate the FCOSC to the latest version, and then 2) render it down to an appropriate Ignition config version. That approach maximizes implementation pain, though. |
Now that dust has settled a bit, I think we do no have to support RHCOS, since they are both on a different Ignition spec version and have their own format (Machine Configs). For RHEL I think we should only target them if they're running Ignition 2.0.0+ with spec 3.0.0+. I can't see justifying the development effort to support both wildly different specs. From the proposal here we can start with supporting "ignition as yaml with inlined files" (aka just the distro agnostic bits) and add sugar as we see fit. Dealing with targeting multiple 3.0.0 specs is still up in the air. It would bring more implementation pain but it would be nice to be able to say "generate a 3.0.0 config please". As for versioning the FCOS spec that's also another can of worms. If we support multiple distros with multiple sets of sugar I almost think the distro-agnostic bit and distro specific bit should be seperate. Like: ct:
version: 1.0.0
distroVersion: 1.2.0
storage:
<stuff in ct base spec 1.0.0>
systemd:
<stuff in ct base spec 1.0.0>
distro_sugar1:
<stuff in that distro's spec 1.2.0>
distro_sugar2:
<stuff in that distro's spec 1.2.0> then run with |
Proposal (thanks @lucab): Have CT the binary versioned independent of the spec. Each CT release will accept the current spec and all older specs. Each spec will target only one ignition spec. This means:
Example: ct WRT versioning distro and core bits separately, I'm leaning towards no, and just making it easy to consume the core bits as a library for CTs for other distros. |
Closed via #175 |
Background
CL has the Container Linux Config Transpiler or ct for short. Since users should not be writing Ignition configs by hand, they write Container Linux Configs (CLCs) which ct then renders into an Ignition config. This scheme has a few advantages:
CLCs are currently unversioned. This is a problem since users don't know what the backwards compatibility promises are for their configs. So far we haven't needed to break compatibility and with CL's EOL in ~1 year we don't plan to need to. FCOS however should get this right from the start.
Cost of supporting multiple versions
Supporting more than one ct config version at a time is not free. There are a couple approaches:
Targeting Ignition versions
Another question is what version of the Ignition spec to target. CLCT currently targets whatever is the most recent version supported by CL's stable channel. This is also not ideal since new versions in alpha don't gain support until the update propagates to stable. Ideally we would support targeting any version (and error out if the config requires a newer version) but it's unclear if that is worth the effort or not.
A few proposals:
The text was updated successfully, but these errors were encountered: