diff --git a/docs/contributor/01-architecture.md b/docs/contributor/01-architecture.md index 6f2d5da0dd..2e9b37743e 100644 --- a/docs/contributor/01-architecture.md +++ b/docs/contributor/01-architecture.md @@ -20,9 +20,9 @@ To run, Lifecycle Manager uses the following workflow: 2. A runtime Admin adds and/or removes modules using a Kyma CR. The Kyma CR represents Kyma installation on a cluster. It includes a list of installed modules and their statuses. Lifecycle Manager watches the CR and uses the synchronization mechanism to update it on a cluster. Together with the Kyma CR, Lifecycle Manager reads also the kubeconfig Secret to access the Kyma runtime. -3. To manage a module, Lifecycle Manager requires a ModuleTemplate CR. ModuleTemplate CR contains the module's metadata. It represents a module in a particular version. All ModuleTemplate CRs exist in Kyma Control Plane which is the central cluster with Kyma infrastructure. Lifecycle Manager uses those ModuleTemplate CRs to create a Module Catalog with ModuleTemplate CRs available for a particular Kyma runtime. Lifecycle Manager creates the Module Catalog based on labels, such as `internal`, or `beta`, and uses the synchronization mechanism to update the Module Catalog portfolio. +3. To manage a module, Lifecycle Manager requires its definition and version-related metadata. The ModuleTemplate and ModuleReleaseMeta CRs represent the definition and version-related metadata for a module. The ModuleTemplate CR represents a module in a particular version, while the ModuleReleaseMeta CR describes the mapping between module versions and available channels. All ModuleTemplate CRs, along with their related ModuleReleaseMeta CRs, exist in Kyma Control Plane which is the central cluster with Kyma infrastructure. The set of ModuleTemplate CRs and related ModuleReleaseMeta CRs available for a particular Kyma runtime is called the Module Catalog. Lifecycle Manager creates the Module Catalog based on labels, such as `internal`, or `beta`, and uses the synchronization mechanism to update the Module Catalog portfolio. -4. Lifecycle Manager reads a ModuleTemplate CR and creates a Manifest CR. The Manifest CR represents resources that make up a module and are to be installed on a remote cluster by Lifecycle Manager. +4. Lifecycle Manager uses ModuleReleaseMeta and ModuleTemplate CRs to read a module's definition and create a Manifest CR. The Manifest CR represents resources that make up a module and are to be installed on a remote cluster by Lifecycle Manager. 5. Lifecycle Manager reconciles, namely watches and updates, a set of resources that make up a module. This process lasts until a module is listed in the remote cluster Kyma CR. diff --git a/docs/contributor/assets/kyma-operator-architecture.svg b/docs/contributor/assets/kyma-operator-architecture.svg index a4aec938cd..18ccb1b96c 100644 --- a/docs/contributor/assets/kyma-operator-architecture.svg +++ b/docs/contributor/assets/kyma-operator-architecture.svg @@ -1,4 +1,4 @@ - + -
Kyma Runtime
Kyma Runtime
kyma-system
kyma-system
Kyma Control Plane
Kyma Control Plane
kcp-system
kcp-system
Channel
Channel
ModuleTemplate(s)
Module...
Gateway
Gateway
Kubeconfig Secret
Kubeconfig Secret
Manifest
Manifest
Creates / Updates
Creates / Updates
Lifecycle Manager
Lifecycle Manager
Module Repository
Module Repository
ModuleTemplate(s)
ModuleT...
Reconciles
Reconciles
Add / Remove
Modules
Add / Remove...
Control Plane Administrator
Contr...
Module
Developer
Modul...
OCI Registry
OCI Registry
Image Layers
Layer References
Layer Re...
Module Custom Resource
Module Custom Resour...
Module
Catalog
Module...
Synchronized
Synchronized
Synchronized
Synchronized
Module Operator
Module Oper...
Runtime Events
Runtime Events
Watcher
Watcher
Runtime Administrator
Runti...
Add / Remove
Modules
Add / Remove...
Busola
Busola
Component
Component
Reconcile
Reconcile
GitOps
GitOps
user-namespace
user-namespace
user-namespace
user-namespace
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Reconcile
Reconcile

This could be anything! e.g. an Istio Installation

This could be anythin...
Observe Changes
Observe Changes
Observe Changes
Observe Ch...
Reconcile Module
Reconcile...
Text is not SVG - cannot display
\ No newline at end of file +
Kyma Runtime
Kyma Runtime
kyma-system
kyma-system
Kyma Control Plane
Kyma Control Plane
kcp-system
kcp-system
Channel
Channel
Module Versions(s)
Module...
Gateway
Gateway
Kubeconfig Secret
Kubeconfig Secret
Manifest
Manifest
Creates / Updates
Creates / Updates
Lifecycle Manager
Lifecycle Manager
Module Repository
Module Repository
ModuleTemplate(s)
ModuleT...
Reconciles
Reconciles
Add / Remove
Modules
Add / Remove...
Control Plane Administrator
Cont...
Module
Developer
Modu...
OCI Registry
OCI Registry
Image Layers
Layer References
Layer Re...
Module Custom Resource
Module Custom Resour...
Module
Catalog
Module...
Synchronized
Synchronized
Synchronized
Synchronized
Module Operator
Module Oper...
Runtime Events
Runtime Events
Watcher
Watcher
Runtime Administrator
Runt...
Add / Remove
Modules
Add / Remove...
Busola
Busola
Component
Component
Reconcile
Reconcile
GitOps
GitOps
user-namespace
user-namespace
user-namespace
user-namespace
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Workload
Reconcile
Reconcile

This could be anything! e.g. an Istio Installation

This could be anythin...
Observe Changes
Observe Changes
Observe Changes
Observe Ch...
Reconcile Module
Reconcile...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/contributor/assets/lifecycle-manager-architecture.svg b/docs/contributor/assets/lifecycle-manager-architecture.svg index ae0f89e3d8..782e95730a 100644 --- a/docs/contributor/assets/lifecycle-manager-architecture.svg +++ b/docs/contributor/assets/lifecycle-manager-architecture.svg @@ -1,4 +1,4 @@ -
Kyma Control Plane
Kyma Control Plane
Kyma Runtime
Kyma Runtime
kyma-system
kyma-system
kcp-system
kcp-system
Runtime Admin
Runtime Admin
ModuleTemplate CR(s)
ModuleTemplate CR...
synchronize
synchronize
ModuleTemplate CR(s)
ModuleTemplate CR...
Module Catalog
Module Catalog
Kyma CR(s)
Kyma CR(s)
Kyma CR
Kyma CR
synchronize
synchronize
reconciles
reconciles
reconciles
reconciles
creates / updates
creates / updates
reads
reads
reads
reads
Lifecycle Manager
Lifecycle Manager
Kubeconfig Secret(s)
Kubeconfig Secr...
Manifest CR(s)
Manifest CR(s)
reconciles
reconciles
Module Manager, e.g. Keda Manager
Module Manager,...
Module CR, e.g. Keda CR
Module CR, e.g....
Module, e.g. Keda
Module, e.g. Ke...
adds / deletes modules
a...
1
1
2
2
3
3
2
2
4
4
5
5
Text is not SVG - cannot display
\ No newline at end of file +
Kyma Control Plane
Kyma Control Plane
Kyma Runtime
Kyma Runtime
  kyma-system
  kyma-system
  kcp-system
  kcp-system
Runtime Admin
Runtime Admin
synchronizes
synchronizes
ModuleTemplate CR(s)
ModuleTemplate CR...
Module Catalog
Module Catalog
Kyma CR(s)
Kyma CR(s)
Kyma CR
Kyma CR
synchronize
synchronize
reconciles
reconciles
reconciles
reconciles
creates / updates
creates / updates
reads
reads
reads
reads
Lifecycle Manager
Lifecycle Manager
Kubeconfig Secret(s)
Kubeconfig Secr...
Manifest CR(s)
Manifest CR(s)
reconciles
reconciles
Module Manager, e.g. Keda Manager
Module Manager,...
Module CR, e.g. Keda CR
Module CR, e.g....
Module, e.g. Keda
Module, e.g. Ke...
adds / deletes modules
a...
1
1
2
2
3
3
2
2
4
4
5
5
ModuleReleaseMeta CR(s)
ModuleReleaseMeta CR(s)
ModuleTemplate CR(s)
ModuleTemplate CR...
ModuleReleaseMeta CR(s)
ModuleReleaseMeta CR(s)
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/contributor/resources/01-kyma.md b/docs/contributor/resources/01-kyma.md index 9fb94ffe06..e6f1e80dd0 100644 --- a/docs/contributor/resources/01-kyma.md +++ b/docs/contributor/resources/01-kyma.md @@ -114,7 +114,7 @@ The conditions represent individual elements of the reconciliation that can eith Currently, we maintain conditions for: * Module (Manifest CR) synchronization -* Module Catalog (ModuleTemplate CR) synchronization +* Module Catalog (ModuleTemplate CR and ModuleReleaseMeta CR) synchronization * Watcher Installation Consistency We also calculate the **.status.state** readiness based on all the conditions available. diff --git a/docs/contributor/resources/README.md b/docs/contributor/resources/README.md index badc8ffe90..9222317ee6 100644 --- a/docs/contributor/resources/README.md +++ b/docs/contributor/resources/README.md @@ -10,7 +10,7 @@ The API of Lifecycle Manager is based on Kubernetes Custom Resource Definitions ## Synchronization of Module Catalog with Remote Clusters Lifecycle Manager ensures the Module Catalog is correctly synchronized with users' runtimes. -The Module Catalog consists of all modules, represented by ModuleTemplates CR, that are available for a user. The Module Catalog portfolio may vary for different users. +The Module Catalog consists of all modules, represented by ModuleTemplate CRs and related ModuleReleaseMetas CRs, that are available for a user. The Module Catalog portfolio may vary for different users. The synchronization mechanism described below is essential to allow users to enable modules in their clusters. The mechanism is controlled by the set of labels that are configured on Kyma and ModuleTemplate CRs in the Control Plane. The labels are: `operator.kyma-project.io/sync`, `operator.kyma-project.io/internal`, and `operator.kyma-project.io/beta`. The v1beta2 API introduces three groups of modules: @@ -20,6 +20,7 @@ The v1beta2 API introduces three groups of modules: * Beta modules, synchronized per-cluster only if configured explicitly on the corresponding Kyma CRs. To mark a ModuleTemplate CR as `beta`, use the `operator.kyma-project.io/beta` label and set it to `true`. By default, without any labels configured on Kyma and ModuleTemplate CRs, a ModuleTemplate CR is synchronized with remote clusters. +For every synchronized ModuleTemplate CR, all related ModuleReleaseMetas CRs are synchronized as well. **NOTE:** The ModuleTemplate CRs synchronization is enabled only when Lifecycle Manager runs in the control-plane mode. Lifecycle Manager running in the single-cluster mode, doesn't require any CR synchronization.