Skip to content

Commit c1f91a8

Browse files
committed
fix: refresh architecture and philosophy
1 parent f8506a6 commit c1f91a8

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

doc/design/architecture.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
OLM is composed of two Operators: the OLM Operator and the Catalog Operator.
44

5-
Each of these Operators are responsible for managing the CRDs that are the basis for the OLM framework:
5+
Each of these Operators is responsible for managing the CRDs that are the basis for the OLM framework:
66

77
| Resource | Short Name | Owner | Description |
88
|--------------------------|------------|---------|--------------------------------------------------------------------------------------------|
@@ -44,7 +44,7 @@ ClusterServiceVersion:
4444

4545
## OLM Operator
4646

47-
The OLM Operator is responsible for deploying applications defined by ClusterServiceVersion resources once the required resources specified in the ClusterServiceVersion are present in the cluster.
47+
The OLM Operator is responsible for installing applications defined by ClusterServiceVersion resources once the required resources specified in the ClusterServiceVersion are present in the cluster.
4848
The OLM Operator is not concerned with the creation of the required resources; users can choose to manually create these resources using `kubectl` or users can choose to create these resources using the Catalog Operator.
4949
This separation of concern enables users incremental buy-in in terms of how much of the OLM framework they choose to leverage for their application.
5050

@@ -74,15 +74,15 @@ Replacing --> Deleting
7474
| Pending | requirements in the CSV are not met, once they are this phase transitions to `Installing` |
7575
| InstallReady | all requirements in the CSV are present, the Operator will begin executing the install strategy |
7676
| Installing | the install strategy is being executed and resources are being created, but not all components are reporting as ready |
77-
| Succeeded | the execution of the Install Strategy was successful; if requirements disappear, or an APIService cert needs to be rotated this may transition back to `Pending`; if an installed component dissapears this may transition to `Failed`|
78-
| Failed | upon failed execution of the Install Strategy, or an installed component dissapears the CSV transitions to this phase; if the component can be recreated by OLM, this may transition to `Pending` |
77+
| Succeeded | the execution of the Install Strategy was successful; if requirements disappear, or an APIService cert needs to be rotated this may transition back to `Pending`; if an installed component disappears this may transition to `Failed`|
78+
| Failed | upon failed execution of the Install Strategy, or an installed component disappears the CSV transitions to this phase; if the component can be recreated by OLM, this may transition to `Pending` |
7979
| Replacing | a newer CSV that replaces this one has been discovered in the cluster. This status means the CSV is marked for GC |
8080
| Deleting | the GC loop has determined this CSV is safe to delete from the cluster. It will disappear soon. |
8181
> Note: In order to transition, a CSV must first be an active member of an OperatorGroup
8282
8383
## Catalog Operator
8484

85-
The Catalog Operator is responsible for resolving and installing ClusterServiceVersions and the required resources they specify. It is also responsible for watching catalog sources for updates to packages in channels, and upgrading them (optionally automatically) to the latest available versions.
85+
The Catalog Operator is responsible for resolving ClusterServiceVersions and the required resources they specify. It is also responsible for watching catalog sources for updates to packages in channels, and upgrading them (optionally automatically) to the latest available versions.
8686
A user that wishes to track a package in a channel creates a Subscription resource configuring the desired package, channel, and the catalog source from which to pull updates. When updates are found, an appropriate InstallPlan is written into the namespace on behalf of the user.
8787
Users can also create an InstallPlan resource directly, containing the names of the desired ClusterServiceVersions and an approval strategy and the Catalog Operator will create an execution plan for the creation of all of the required resources.
8888
Once approved, the Catalog Operator will create all of the resources in an InstallPlan; this should then independently satisfy the OLM Operator, which will proceed to install the ClusterServiceVersions.

doc/design/philosophy.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ The goal of the Operator Lifecycle Manager and Cloud Service Catalog is to manag
1616

1717
**Interaction**
1818

19-
* By standardizing the other three, provide a standard way to interact with cloud services and user-defined open cloud services via both the CLI and the Tectonic Console
19+
* By standardizing the other three, provide a standard way to interact with cloud services and user-defined open cloud services via both the CLI and the OpenShift web console.
2020

2121
# Design
2222

@@ -82,25 +82,27 @@ OLM defines packaging formats for operators. These are:
8282

8383
* Has metadata about the package (maintainers, icon, etc)
8484

85-
* Declares managed CRDs
85+
* Declares owned CRDs
8686

87-
* These are the CRDs directly managed by the Operator. `EtcdCluster` is managed by the Etcd `ClusterServiceVersion` but not the Vault `ClusterServiceVersion`
87+
* These are the CRDs directly owned by the Operator. `EtcdCluster` is owned by the Etcd `ClusterServiceVersion` but not the Vault `ClusterServiceVersion`
8888

8989
* Declares required CRDs
9090

9191
* These are CRDs required by the Operator but not directly managed by it. `EtcdCluster` is required by the Vault `ClusterServiceVersion` but not managed by it.
9292

9393
* Declares cluster requirements
9494

95-
* An operator may require a pull secret, a config map, the availability of a cluster feature.
95+
* An operator may require a pull secret, a config map, or the availability of a cluster feature.
9696

9797
* Provides an Install Strategy
9898

9999
* The install strategy tells OLM how to actually create resources in the cluster.
100100

101-
* Currently the only strategy is "deployment", but planned are: image, helm, and <whatever upstream solutions are created>
101+
* Currently the only strategy is `deployment`, which specifies a Kubernetes Deployment
102+
103+
* Future install strategies include `image`, `helm`, and upstream community strategies
102104

103-
* Roughly equivalent to dpkg - you can install a dpkg manually, but if you do, dependency resolution is up to you.
105+
* Roughly equivalent to dpkg - you can install a dpkg manually, but if you do, dependency resolution is up to you.
104106

105107
## InstallPlan
106108

@@ -136,7 +138,7 @@ We have two major components that handle the resources described above
136138

137139
**OLM Operator**
138140

139-
* Watches for ClusterServiceVersions in a namespace and checks that requirements are met. If so, runs the service install strategy for the ClusterServiceVersion (e.g: installs deployment)
141+
* Watches for ClusterServiceVersions in a namespace and checks that requirements are met. If so, runs the service install strategy for the ClusterServiceVersion and installs the resource into the cluster. For example for a `deployment` strategy installation is achieved by creating a Kubernetes Deployment, which gets resolved by the Deployment controller.
140142

141143
**Service Catalog Operator**
142144

@@ -162,7 +164,7 @@ We have two major components that handle the resources described above
162164

163165
If you don't want to write an operator, the thing you want to package probably fits one of the standard shapes of software that can be deployed on a cluster. You can take advantage of OLM by writing a package that binds your application to one of our standard operators, like [helm-app-operator-kit](https://github.com/coreos/helm-app-operator-kit).
164166

165-
If your use-case doesn't fit one of our standard operators, that means you have domain-specific operational knowledge you need to encode into an operator, and you can take advantage of our Operator SDK for common operator tasks.
167+
If your use-case doesn't fit one of our standard operators, that means you have domain-specific operational knowledge you need to encode into an operator, and you can take advantage of our [Operator SDK](https://github.com/operator-framework/operator-sdk) for common operator tasks.
166168

167169
**Why are dependencies between operators expressed as a dependency on a CRD?**
168170

0 commit comments

Comments
 (0)