Skip to content

Commit 814bf63

Browse files
perdasilvaPer Goncalves da Silva
and
Per Goncalves da Silva
authored
📖 Content organization (#1324)
* organize docs Signed-off-by: Per Goncalves da Silva <[email protected]> * First stab at doc hierarchy Signed-off-by: Per Goncalves da Silva <[email protected]> --------- Signed-off-by: Per Goncalves da Silva <[email protected]> Co-authored-by: Per Goncalves da Silva <[email protected]>
1 parent 117bece commit 814bf63

40 files changed

+487
-327
lines changed

Diff for: CONTRIBUTING.md

+7-4
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@ Operator Controller is an Apache 2.0 licensed project and accepts contributions
77
By contributing to this project you agree to the Developer Certificate of
88
Origin (DCO). This document was created by the Linux Kernel community and is a
99
simple statement that you, as a contributor, have the legal right to make the
10-
contribution. See the [DCO](DCO) file for details.
10+
contribution. See the [DCO](https://github.com/operator-framework/operator-controller/blob/main/DCO) file for details.
1111

1212
## Overview
1313

1414
Thank you for your interest in contributing to the Operator-Controller.
1515

16-
As you may or may not know, the Operator-Controller project aims to deliver the user experience described in the [Operator Lifecycle Manager (OLM) V1 Product Requirements Document (PRD)](https://docs.google.com/document/d/1-vsZ2dAODNfoHb7Nf0fbYeKDF7DUqEzS9HqgeMCvbDs/edit). The design requirements captured in the OLM V1 PRD were born from customer and community feedback based on the experience they had with the released version of [OLM V0](github.com/operator-framework/operator-lifecycle-manager).
16+
As you may or may not know, the Operator-Controller project aims to deliver the user experience described in the [Operator Lifecycle Manager (OLM) V1 Product Requirements Document (PRD)](https://docs.google.com/document/d/1-vsZ2dAODNfoHb7Nf0fbYeKDF7DUqEzS9HqgeMCvbDs/edit). The design requirements captured in the OLM V1 PRD were born from customer and community feedback based on the experience they had with the released version of [OLM V0](https://github.com/operator-framework/operator-lifecycle-manager).
1717

1818
The user experience captured in the OLM V1 PRD introduces many requirements that are best satisfied by a microservices architecture. The OLM V1 experience currently relies on two projects:
19+
1920
- [The Operator-Controller project](https://github.com/operator-framework/operator-controller/), which is the top level component allowing users to specify operators they'd like to install.
2021
- [The Catalogd project](https://github.com/operator-framework/catalogd/), which hosts operator content and helps users discover installable content.
2122

@@ -45,14 +46,15 @@ Please keep this workflow in mind as you read through the document.
4546
## How are Milestones Designed?
4647

4748
It's unreasonable to attempt to consider all of the design requirements laid out in the [OLM V1 PRD](https://docs.google.com/document/d/1-vsZ2dAODNfoHb7Nf0fbYeKDF7DUqEzS9HqgeMCvbDs/edit) from the onset of the project. Instead, the community attempts to design Milestones with the following principles:
49+
4850
- Milestones are tightly scoped units of work, ideally lasting one to three weeks.
4951
- Milestones are derived from the OLM V1 PRD.
5052
- Milestones are "demo driven", meaning that a set of acceptance criteria is defined upfront and the milestone is done as soon as some member of the community can run the demo.
5153
- Edge cases found during development are captured in issues and assigned to the GA Milestone, which contains a list of issues that block the release of operator-controller v1.0.0 .
5254

5355
This "demo driven" development model will allow us to collect user experience and regularly course correct based on user feedback. Subsequent milestone may revert features or change the user experience based on community feedback.
5456

55-
The project maintainer will create a [GitHub Discussion](github.com/operator-framework/operator-controller/discussions) for the upcoming milestone once we've finalized the current milestone. Please feel encouraged to contribute suggestions for the milestone in the discussion.
57+
The project maintainer will create a [GitHub Discussion](https://github.com/operator-framework/operator-controller/discussions) for the upcoming milestone once we've finalized the current milestone. Please feel encouraged to contribute suggestions for the milestone in the discussion.
5658

5759
## Where are Operator Controller Milestones?
5860

@@ -67,6 +69,7 @@ As discussed earlier, the operator-controller adheres to a microservice architec
6769
## Submitting Issues
6870

6971
Unsure where to submit an issue?
72+
7073
- [The Operator-Controller project](https://github.com/operator-framework/operator-controller/), which is the top level component allowing users to specify operators they'd like to install.
7174
- [The Catalogd project](https://github.com/operator-framework/catalogd/), which hosts operator content and helps users discover installable content.
7275

@@ -87,7 +90,7 @@ approach of changes.
8790
When contributing changes that require a new dependency, check whether it's feasible to directly vendor that
8891
code [without introducing a new dependency](https://go-proverbs.github.io/).
8992

90-
Currently, PRs require at least one approval from a operator-controller maintainer in order to get merged.
93+
Currently, PRs require at least one approval from an operator-controller maintainer in order to get merged.
9194

9295
### Code style
9396

Diff for: Makefile

+7-6
Original file line numberDiff line numberDiff line change
@@ -312,17 +312,18 @@ quickstart: $(KUSTOMIZE) manifests #EXHELP Generate the installation release man
312312
OPERATOR_CONTROLLER_API_REFERENCE_FILENAME := operator-controller-api-reference.md
313313
CATALOGD_API_REFERENCE_FILENAME := catalogd-api-reference.md
314314
CATALOGD_TMP_DIR := $(ROOT_DIR)/.catalogd-tmp/
315+
API_REFERENCE_DIR := $(ROOT_DIR)/docs/api-reference
315316
crd-ref-docs: $(CRD_REF_DOCS) #EXHELP Generate the API Reference Documents.
316-
rm -f $(ROOT_DIR)/docs/refs/api/$(OPERATOR_CONTROLLER_API_REFERENCE_FILENAME)
317+
rm -f $(API_REFERENCE_DIR)/$(OPERATOR_CONTROLLER_API_REFERENCE_FILENAME)
317318
$(CRD_REF_DOCS) --source-path=$(ROOT_DIR)/api \
318-
--config=$(ROOT_DIR)/docs/refs/api/crd-ref-docs-gen-config.yaml \
319-
--renderer=markdown --output-path=$(ROOT_DIR)/docs/refs/api/$(OPERATOR_CONTROLLER_API_REFERENCE_FILENAME);
319+
--config=$(API_REFERENCE_DIR)/crd-ref-docs-gen-config.yaml \
320+
--renderer=markdown --output-path=$(API_REFERENCE_DIR)/$(OPERATOR_CONTROLLER_API_REFERENCE_FILENAME);
320321
rm -rf $(CATALOGD_TMP_DIR)
321322
git clone --depth 1 --branch $(CATALOGD_VERSION) https://github.com/operator-framework/catalogd $(CATALOGD_TMP_DIR)
322-
rm -f $(ROOT_DIR)/docs/refs/api/$(CATALOGD_API_REFERENCE_FILENAME)
323+
rm -f $(API_REFERENCE_DIR)/$(CATALOGD_API_REFERENCE_FILENAME)
323324
$(CRD_REF_DOCS) --source-path=$(CATALOGD_TMP_DIR)/api \
324-
--config=$(ROOT_DIR)/docs/refs/api/crd-ref-docs-gen-config.yaml \
325-
--renderer=markdown --output-path=$(ROOT_DIR)/docs/refs/api/$(CATALOGD_API_REFERENCE_FILENAME)
325+
--config=$(API_REFERENCE_DIR)/crd-ref-docs-gen-config.yaml \
326+
--renderer=markdown --output-path=$(API_REFERENCE_DIR)/$(CATALOGD_API_REFERENCE_FILENAME)
326327
rm -rf $(CATALOGD_TMP_DIR)/
327328

328329
VENVDIR := $(abspath docs/.venv)

Diff for: README.md

+8-120
Original file line numberDiff line numberDiff line change
@@ -2,137 +2,25 @@
22
The operator-controller is the central component of Operator Lifecycle Manager (OLM) v1.
33
It extends Kubernetes with an API through which users can install extensions.
44

5-
## Mission
5+
## Overview
6+
7+
OLM v1 is the follow-up to [OLM v0](https://github.com/operator-framework/operator-lifecycle-manager). Its purpose is to provide APIs,
8+
controllers, and tooling that support the packaging, distribution, and lifecycling of Kubernetes extensions. It aims to:
69

7-
OLM’s purpose is to provide APIs, controllers, and tooling that support the packaging, distribution, and lifecycling of Kubernetes extensions. It aims to:
810
- align with Kubernetes designs and user assumptions
911
- provide secure, high-quality, and predictable user experiences centered around declarative GitOps concepts
1012
- give cluster admins the minimal necessary controls to build their desired cluster architectures and to have ultimate control
1113

12-
## Overview
13-
14-
OLM v1 is the follow-up to OLM v0, located [here](https://github.com/operator-framework/operator-lifecycle-manager).
15-
1614
OLM v1 consists of two different components:
15+
1716
* operator-controller (this repository)
1817
* [catalogd](https://github.com/operator-framework/catalogd)
1918

20-
For a more complete overview of OLM v1 and how it differs from OLM v0, see our [overview](docs/olmv1_overview.md).
21-
22-
### Installation
23-
24-
The following script will install OLMv1 on a Kubernetes cluster. If you don't have one, you can deploy a Kubernetes cluster with [KIND](https://sigs.k8s.io/kind).
25-
26-
> [!CAUTION]
27-
> Operator-Controller depends on [cert-manager](https://cert-manager.io/). Running the following command
28-
> may affect an existing installation of cert-manager and cause cluster instability.
29-
30-
The latest version of Operator Controller can be installed with the following command:
31-
32-
```bash
33-
curl -L -s https://github.com/operator-framework/operator-controller/releases/latest/download/install.sh | bash -s
34-
```
35-
36-
## Getting Started with OLM v1
37-
38-
This quickstart procedure will guide you through the following processes:
39-
* Deploying a catalog
40-
* Installing, upgrading, or downgrading an extension
41-
* Deleting catalogs and extensions
42-
43-
### Create a Catalog
44-
45-
OLM v1 is designed to source content from an on-cluster catalog in the file-based catalog ([FBC](https://olm.operatorframework.io/docs/reference/file-based-catalogs/#docs)) format.
46-
These catalogs are deployed and configured through the `ClusterCatalog` resource. More information on adding catalogs
47-
can be found [here](./docs/Tasks/adding-a-catalog).
48-
49-
The following example uses the official [OperatorHub](https://operatorhub.io) catalog that contains many different
50-
extensions to choose from. Note that this catalog contains packages designed to work with OLM v0, and that not all packages
51-
will work with OLM v1. More information on catalog exploration and content compatibility can be found [here](./docs/refs/catalog-queries.md).
52-
53-
To create the catalog, run the following command:
54-
55-
```bash
56-
# Create ClusterCatalog
57-
kubectl apply -f - <<EOF
58-
apiVersion: catalogd.operatorframework.io/v1alpha1
59-
kind: ClusterCatalog
60-
metadata:
61-
name: operatorhubio
62-
spec:
63-
source:
64-
type: image
65-
image:
66-
ref: quay.io/operatorhubio/catalog:latest
67-
pollInterval: 10m
68-
EOF
69-
```
70-
71-
Once the catalog is unpacked successfully, its content will be available for installation.
72-
73-
```bash
74-
# Wait for the ClusterCatalog to be unpacked
75-
kubectl wait --for=condition=Unpacked=True clustercatalog/operatorhubio --timeout=60s
76-
```
77-
78-
### Install a Cluster Extension
79-
80-
For simplicity, the following example manifest includes all necessary resources to install the ArgoCD operator.
81-
The manifest includes installation namespace, installer service account and associated minimal set of RBAC permissions
82-
needed for installation, and the ClusterExtension resource, which specifies the name and version of the extension to install.
83-
More information on installing extensions can be found [here](docs/Tasks/installing-an-extension).
84-
85-
```bash
86-
# Apply the sample ClusterExtension. Manifest already includes
87-
# namespace and adequately privileged service account
88-
kubectl apply -f https://raw.githubusercontent.com/operator-framework/operator-controller/main/config/samples/olm_v1alpha1_clusterextension.yaml
89-
```
90-
91-
### Upgrade the Cluster Extension
92-
93-
To upgrade the installed extension, update the version field in the ClusterExtension resource. Note that
94-
there must be CRD compatibility between the versions being upgraded, and the target version must be
95-
compatible with OLM v1. More information on CRD upgrade safety can be found [here](./docs/refs/crd-upgrade-safety.md),
96-
compatible with OLM v1. More information on CRD upgrade safety can be found [here](./docs/refs/crd-upgrade-safety.md),
97-
and on the extension upgrade process [here](./docs/drafts/Tasks/upgrading-an-extension).
98-
99-
```bash
100-
# Update to v0.11.0
101-
kubectl patch clusterextension argocd --type='merge' -p '{"spec": {"source": {"catalog": {"version": "0.11.0"}}}}'
102-
103-
```
104-
105-
For information on the downgrade process, see [here](docs/drafts/downgrading-an-extension.md).
106-
107-
### Uninstall the Cluster Extension
108-
109-
To uninstall an extension, delete the ClusterExtension resource. This will trigger the uninstallation process, which will
110-
remove all resources created by the extension. More information on uninstalling extensions can be found [here](./docs/Tasks/uninstalling-an-extension).
111-
112-
```bash
113-
# Delete cluster extension and residing namespace
114-
kubectl delete clusterextension/argocd
115-
```
116-
117-
#### Cleanup
118-
119-
Extension installation requires the creation of a namespace, an installer service account, and its RBAC. Once the
120-
extension is uninstalled, these resources can be cleaned up.
121-
122-
```bash
123-
# Delete namespace, and by extension, the installer service account, Role, and RoleBinding
124-
kubectl delete namespace argocd
125-
```
19+
For a more complete overview of OLM v1 and how it differs from OLM v0, see our [overview](docs/project/olmv1_design_decisions.md).
12620

127-
```bash
128-
# Delete installer service account cluster roles
129-
kubectl delete clusterrole argocd-installer-clusterrole && kubectl delete clusterrole argocd-rbac-clusterrole
130-
```
21+
## Getting Started
13122

132-
```bash
133-
# Delete installer service account cluster role bindings
134-
kuebctl delete clusterrolebinding argocd-installer-binding && kubectl delete clusterrolebinding argocd-rbac-binding
135-
```
23+
To get started with OLM v1, please see our [Getting Started](docs/getting-started/olmv1_getting_started.md) documentation.
13624

13725
## License
13826

Diff for: docs/assets/logo.svg

+98
Loading

Diff for: docs/drafts/controlling-catalog-selection.md renamed to docs/concepts/controlling-catalog-selection.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ spec:
2727
catalog:
2828
selector:
2929
matchLabels:
30-
olm.operatorframework.io/metadata.name: my-catalog
30+
olm.operatorframework.io/metadata.name: my-content-management
3131
```
3232
3333
In this example, only the catalog named `my-catalog` will be considered when resolving `my-package`.
@@ -93,7 +93,7 @@ spec:
9393
- key: olm.operatorframework.io/metadata.name
9494
operator: NotIn
9595
values:
96-
- unwanted-catalog
96+
- unwanted-content-management
9797
```
9898

9999
This excludes the catalog named `unwanted-catalog` from consideration.
@@ -134,7 +134,7 @@ spec:
134134
source:
135135
type: image
136136
image:
137-
ref: quay.io/example/high-priority-catalog:latest
137+
ref: quay.io/example/high-priority-content-management:latest
138138
```
139139

140140
Catalogs have a default priority of `0`. The priority can be any 32-bit integer. Catalogs with higher priority values are preferred during bundle resolution.
@@ -171,7 +171,7 @@ If the system cannot resolve to a single bundle due to ambiguity, it will genera
171171
source:
172172
type: image
173173
image:
174-
ref: quay.io/example/catalog-a:latest
174+
ref: quay.io/example/content-management-a:latest
175175
```
176176

177177
```yaml
@@ -186,7 +186,7 @@ If the system cannot resolve to a single bundle due to ambiguity, it will genera
186186
source:
187187
type: image
188188
image:
189-
ref: quay.io/example/catalog-b:latest
189+
ref: quay.io/example/content-management-b:latest
190190
```
191191
NB: an `olm.operatorframework.io/metadata.name` label will be added automatically to ClusterCatalogs when applied
192192

@@ -209,8 +209,8 @@ If the system cannot resolve to a single bundle due to ambiguity, it will genera
209209
3. **Apply the Resources**
210210

211211
```shell
212-
kubectl apply -f catalog-a.yaml
213-
kubectl apply -f catalog-b.yaml
212+
kubectl apply -f content-management-a.yaml
213+
kubectl apply -f content-management-b.yaml
214214
kubectl apply -f install-my-operator.yaml
215215
```
216216

File renamed without changes.

0 commit comments

Comments
 (0)