Replies: 5 comments
-
This follows the same pattern as was defined for CSV-based bundles, as is defined here: https://olm.operatorframework.io/docs/tasks/creating-operator-bundle/ Specifically, the CSV-based bundle has the following annotation/image label: annotations:
operators.operatorframework.io.bundle.mediatype.v1: "registry+v1" However, there was very little discussion around the choice of following the pattern and using Some very rough thoughts here: #172 |
Beta Was this translation helpful? Give feedback.
-
Right, it seems reasonable to do things in this order:
I looked at the links you shared but did not see much content that would go into metadata. Here is what I can imagine on top of my head:
Is this issue the right place for starting this discussion or would you prefer a different media? |
Beta Was this translation helpful? Give feedback.
-
Let's start an actual GitHub discussion, maybe? I'll convert this issue to a discussion. |
Beta Was this translation helpful? Give feedback.
-
I have so many thoughts here: ImmutabilityI think the bundle itself should contain only immutable metadata that is inherent to the bundle itself. If some one wants to delete or change something about a bundle's metadata, they need to build and release a new bundle. Making retroactive assertions about existing bundles (e.g. "this bundle is deprecated") should be handled via some other means external to the bundle itself. VersioningPartially motivated by the immutability topic (and partially by the need to rebuild bundles to fix CVEs in base images), I think it is important that we draw a distinction between:
This is essentially saying that we should have something very similar to RPM's Required vs. OptionalShould bundle metadata be required? IMO, no. At least not in the context of a RukPak provisioner. We clearly have an example already of a plain provisioner and bundle format that require no metadata. We need to consider the consumer(s) of the bundle and be careful to avoid placing overly burdensome requirements in places where they aren't actually necessary. If I'm someone who doesn't care about resolution, upgrades, or building catalogs, why should I be forced to think about metadata related to those things? Another example: Rukpak currently has an alpha-level helm chart provisioner. Today, we can take Helm charts right off the shelf and install them. If we add a requirement that charts include extra metadata that isn't already present in the chart metadata, users can't use any of the existing helm charts out there. |
Beta Was this translation helpful? Give feedback.
-
I do think that there is value in defining the purpose of the metadata before discussing how it should get handled. Should I assume that you agree with what I mentioned and that you don't see other purpose? I am getting really confused with how you qualify a Immutability I agree that immutability is very important, not only for metadata but for the resource manifests as well. Container images are by nature immutable, a git commit is too. This is however not the case of a git branch and although a git tag is theoretically immutable its identity is not protected so that it is possible to delete and recreate the tag pointing to a different commit. ConfigMaps can be made immutable but first they only exist on a cluster, secondly their identity is not protected either (delete/recreate). In my mind it means that only OCI Images and git commits are suitable for production or shipping to third parties. Other mechanisms may be "convenient" for development. If we agree on that this should be clearly documented, also at the bundle resource API level.
This could be captured at the catalog level. Versioning
This is missing my point. By versioning I really meant Regarding your two points I am fine with them. The generation of the release number should however be automated in 99% of the cases. Required vs. Optional
We should use sane defaults every time we can (conventions over configuration). It would be good to make them clear. |
Beta Was this translation helpful? Give feedback.
-
From the documentation
I would be interested in the rational for the naming. It does not seem to be a mime type, although the use of '+' is one of its specificity. More importantly v0 does not convey much information in terms of the stability of the format, besides it is experimental. It is also not clear how the version number may evolve. Is v1 the only possible next version? Don't you see any benefits in differentiating between minor and major changes?
I think that there would be value in following Kubernetes API versioning scheme. API evolution commitments have already been defined and are known by the Kubernetes community. Alternatively a similar document would need to be created or referenced.
Beta Was this translation helpful? Give feedback.
All reactions