-
Notifications
You must be signed in to change notification settings - Fork 30
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
Iteratively moving forward with module requirements and aligning responsibilities #1681
Comments
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Just tiny thing: can we get read of long module names? I mean use api-gateway instead of kyma-project.io/module/api-gateway |
Hi @pbochynski , this long name is for OCM, we need to provide a name which fit for it's naming pattern ( |
Ok I got it. OCM can use long name. But we should not use long names outside of OCM. Can we treat |
Great POC :) I love the final shape and the idea of ModuleTemplates as an origin inside the cluster for all modules! I can imagine two new features for the cli:
|
@pPrecel idea is that module teams have to publish the ModuleTemplate as part of the module. See [Module Teams] part of the Consequences section. Now thinking about it, it may also be a duty of Neighbors who build the stuff currently, and we can think about whether we also want to aggregate those at a central repo (like in the community one) or if we can add it to the release artifacts of the module. |
Created on 2024-07-12 by Christoph Schwägerl (@c-pius), Xin Ruan (@ruanxin)
Contents
/kyma/module-manifests
(PROPOSAL ONLY)/kyma/kyma-modules
(PROPOSAL ONLY)Change log
v0.0.1
Initial Proposal (2024-07-24)v0.0.2
Updated Proposal (2024-07-31)v0.0.3
Updated Proposal (2024-08-07)v0.0.4
Updated Proposal (2024-08-21)kubectl applying
manifests/defaultCR, Kyma dashboard / CLI will not identify them as modules in the clusterv0.0.5
Updated Proposal (2024-08-27)v.0.0.4
v.0.0.6
Updated Proposal (2024-09-18)Decision log
Re-Proposed on 2024-09-25
(v0.0.6)Context
There are various requirements for modules in Kyma that need to be implemented, i.e.:
This decision record aims at aligning a common understanding of a joint way forward supporting these requirements including claryfing some related details.
Key Assumptions and Boundary Conditions
Decision
The decision is to implement support for the requirements listed in Context as proposed below in Proposed way forward.
Consequences
manager
and checking entries in the KymaCRmodulectl
to consider the new fields on creationmanager
and checking entries in the KymaCRProposed way forward
Status Quo
Short recap of the status quo.
/kyma/module-manifests
repo contains the up to date module manifests for each channel/kyma/kyma-modules
Iteration 1 - Specific Module Versions and Community Modules
Iteration 1 is focusing on enabling support for specifc module versions, community modules and manual installation of modules. The overall process remains close to the status quo. Key changes are:
ModuleReleaseMeta
To support community modules, the following is introduced:
github.com/kyma-project/community
acts as the source for registering community modulesThese changes are depicted in the block diagram below.
Key considerations for choosing this approach are:
Requirements for ModuleTemplates
ModuleTemplates are deployed into the KCP cluster and KLM syncs them to the SKR. ModuleTemplates may either refer to a fixed module version, or to a channel of a module. Their metadata is changed as follows:
.metadata.name
MUST follow<.spec.moduleName>-<.spec.version>
.spec.moduleName
(new attribute, REQUIRED) MUST define the name of the module.spec.version
(new attribute, REQUIRED) MUST define the version of the moduleoperator.kyma-project.io/module-version
.spec.data
MUST contain the default CR of the module.spec.descriptor
MUST contain the OCM descriptor for the version specified in.spec.version
.spec.mandatory
(OPTIONAL) defines whether the module is mandatory. Default is false.spec.manager
(new attribute REQUIRED) MUST define the info needed to check if the manager is present (used by Kyma dashboard / CLI to check if the module is installed).group
the API group of the manager.version
the API version of the manager.kind
the kind of the manager.namespace
the namespace the manager is deployed in.name
the name of the manager.spec.info
(new attribute REQUIRED).repository
: (REQUIRED) the link to the repository of the module.documentation
: (REQUIRED) the link to the module documentation.icons[]
: (REQUIRED) list holding links to module icons.name
: (REQUIERD): MUST be set to the name of the icon.link
: (REQUIRED): MUST be a link to an icon of the module of type SVG.spec.resources[]
: (new attribute REQUIRED): list containing the the resourecs of the module. Resources MUST be specific to the.spec.version
.name
: (REQUIRED): MUST be set to the name of the resource.link
: (REQUIRED): MUST be the link to the resources.spec.associatedResources
: (new attribute REQUIRED): list containing the GVK of the CRDs related to the module (will be displayed to the user)group
: (REQUIRED)version
: (REQUIRED)kind
: (REQUIRED)Changed/Deprecated fields:
.spec.channel
is deprecated"operator.kyma-project.io/module-version": "2.3.1"
is deprecated.spec.descriptor
may become optional in the future once the first community modules arriveBelow is an example of a Kyma module.
Requirements for Module Release Metadata
ModuleReleaseMeta
is a new CR that defines the channels a module is available in. In the future, it may be extended with additional information, e.g., an explicit list of installable versions or deprecation info of a module version. The metadata consists of the following:.metadata.name
(REQUIRED): MUST use the name of the module.spec.moduleName
(REQUIRED): MUST use the name of the module.spec.channels
(REQUIRED): MUST list all channels of the modulechannel
(REQUIRED): MUST be the name of the channelversion
(REQUIRED): MUST be the version that is currently assigned to the channel. There MUST be a ModuleTemplate for the given version.Below is an example of module release meta.
Requirements for Community Modules
Community modules are collected at
github.com/kyma-project/community
. Community modules MUST provide a ModuleTemplate for each released version at/modules/<community module name>/<community module version>
. New community modules or versions are registered via Pull Request. As of now, it is assumed that community modules use the same ModuleTemplate as Kyma or sap-3rd-party modules. Once the first community module arrives, this may be revisted depending on the info that is required for the community module.As of now, the following differences exist when using a ModuleTemplate for a community module:
"operator.kyma-project.io/community-module": "true"
MUST be set.spec.descriptor
MUST NOT be used.spec.mandatory
MUST NOT be usedFor community modules there is NO ModuleReleaseMeta.
Below is an example of a community module.
Iteration 2 - Multiple KCPs - Outlook only
Iteration 2 is focusing on enabling support for multiple KCPs and publishing/consuming modules from different OCI registries.
/kyma/module-manifests
remains as the originmodulectl
must be updated to support this. Alternative: it may also be achievable by using the OCM CLI.Appendix
Discovering modules installed in the cluster
Kyma CLI and dashboard need to identify modules that are installed in the cluster. This includes all kinds of modules (kyma, sap-3rd-party, community) and types of installation (KLM-managed or manual). To achieve this, the
manager
metadata from the ModuleTemplate is used.Kyma CLI and dashboard may check if a module manager is present in the cluster and if so, assume that the module is installed. To further disntiguish between KLM-managed and manually installed modules, it can be checked whether the module is included in the KymaCR. If so, it is a KLM-managed installation. If not, or if
managed
flag is set tofalse
, it is a manual installation.In order for this to work in unmanaged clusters, the customer must have applied the ModuleTemplate for kyma modules, see Key assumption A3.
Proposal for the module publishing pipeline
/kyma/module-manifests
(PROPOSAL ONLY)version
centric (channels will be assigned later to built versions)versions
manifest
,defaultCR
,associatedResources
,manager
)associatedResources
is a list ofgroup, version, kind
/kyma/kyma-modules
(PROPOSAL ONLY)/kyma/module-manifests
channels
The text was updated successfully, but these errors were encountered: