-
Notifications
You must be signed in to change notification settings - Fork 67
📖 Adding OLM V1 architecture document #1301
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
Merged
LalatenduMohanty
merged 6 commits into
operator-framework:main
from
LalatenduMohanty:arch-docs
Sep 25, 2024
Merged
Changes from 1 commit
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
8a0beb5
Adding OLM V1 architecture document
LalatenduMohanty 96ebec8
Update docs/drafts/architecture.md
LalatenduMohanty 3333b9d
Update docs/drafts/architecture.md
LalatenduMohanty 1398f92
Update docs/drafts/architecture.md
LalatenduMohanty 26de1af
Update docs/drafts/architecture.md
LalatenduMohanty 3433c16
Addressing the review comments for the arch doc
LalatenduMohanty File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
|
||
## OLM V1 Architecture | ||
|
||
This document talks about the V1 architecture. OLM V1 consists of many components, however majority of the code is divided in to two components | ||
|
||
* [operator-controller](https://github.com/operator-framework/operator-controller) | ||
* [catalogD](https://github.com/operator-framework/catalogd) | ||
|
||
The below diagram and text explains the sub-components within each code repository and how they related to each-other. | ||
LalatenduMohanty marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
||
### Operator-controller: | ||
|
||
operator-controller is the central component of OLM v1, that consumes all of the components below to extend Kubernetes to allows users to install, and manage the lifecycle of other extensions | ||
LalatenduMohanty marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
||
* Operator-controller queries the catalogd (catalogd HTTP Server) to get catalog information. Once received the catalog information is saved to catalog-cache. The cache will be updated automatically if a Catalog is noticed to have a different resolved image reference. | ||
* Resolver in operator-controller helps the extension controller to filter the bundle reference after applying the user restrictions (e.g. name, priority etc) and returns the bundle reference to the extension controller. | ||
* Cluster extension controller reaches out to the registry to download the bundle container images, saves it to the bundle cache, unpacks it and applies the bundle manifests to the cluster. It is also Responsible for figuring out which bundle to upgrade. | ||
* Bundle cache returns the cache for the bundle. If a cache does not already exist, a new one will be created. | ||
LalatenduMohanty marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
||
### Catalogd: | ||
|
||
Catalogd unpacks [file-based catalog (FBC)](https://olm.operatorframework.io/docs/reference/file-based-catalogs/#docs) content that is packaged and shipped in container images, for consumption by clients on-clusters (unpacking from other sources, like git repos, OCI artifacts etc, are in the roadmap for catalogD). As component of the Operator Lifecycle Manager (OLM) v1 microservices architecture, catalogD hosts metadata for Kubernetes extensions packaged by the authors of the extensions, as a result helping customers discover installable content. | ||
LalatenduMohanty marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
LalatenduMohanty marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
||
* Catalogd can be broken down in to three sub-components i.e. ClusterCatalog controller, catalogd http server, catalogd content cache. | ||
* Catalog controller is responsible for pulling FBC based catalog images from registry and unpacking them into the catalog content cache. It is also responsible for reconciling the latest changes in the cluster catalog. | ||
* Catalogd http server is responsible for serving catalog information to clients e.g. cluster extension controller. | ||
* Catalogd content cache is maintained by the catalog controller and used by the catalogd http server to answer queries from clients. | ||
|
||
|
||
|
||
### Diagram | ||
LalatenduMohanty marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
```mermaid | ||
flowchart TB | ||
A(bundle) | ||
B(registry repo) | ||
C(catalog author) | ||
D(bundle author) | ||
E(file based catalog) | ||
F(extension controller) | ||
G(bundle cache) | ||
H(catalog cache) | ||
I(resolver) | ||
J(catalog controller) | ||
K(catalog content cache) | ||
L(catalog http server) | ||
|
||
subgraph Image-registry | ||
B | ||
end | ||
subgraph Cluster | ||
subgraph Operator-controller | ||
F-->G | ||
F-->I | ||
I-->H | ||
end | ||
subgraph Catalogd | ||
J-->K | ||
L<-->K | ||
end | ||
end | ||
|
||
F-->L | ||
D-->B | ||
C-->B | ||
F-->B | ||
J-->B | ||
C -- creates --> E | ||
E -- pushed to --> B | ||
D -- creates --> A | ||
A -- pushed to --> B | ||
``` | ||
|
||
**Note**: The direction of the arrow indicates the active part of communication i.e. if arrow starts from A and points to B that means A consumes the information from B unless specifically mentioned. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.