Skip to content

Commit

Permalink
docs: Add documentation under draft with the personas and responsabil…
Browse files Browse the repository at this point in the history
…ities

mapped accordingly
  • Loading branch information
camilamacedo86 committed Feb 24, 2025
1 parent 9b888eb commit 0846d05
Showing 1 changed file with 236 additions and 0 deletions.
236 changes: 236 additions & 0 deletions docs/draft/concepts/personas.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
## Personas and Roles in OLM

To map the **personas** and **roles** interacting with **OLM**, the following diagrams were created. These personas represent different users who interact with OLM, either by consuming or producing content.

The personas are grouped into:
- **Consumers** – Users who consume or interact with the content managed by OLM.
- **Producers** – Users who produce content for OLM, including cluster extensions or catalogs.

## Overview of Personas:

### **Consumers:**
- **Cluster Admin** – Responsible for cluster-wide administration. May also act as:
- **Cluster Monitor** – Focuses on platform monitoring and validation of extensions.
- **Cluster Catalog Admin** – Manages and maintains catalogs within the cluster.
- **Cluster Extension Consumer** – Primarily interacts with and consumes content from catalogs.

### **Producers:**
- **Catalog Admin** – Oversees catalog management. May also act as:
- **Contributor Curator** – Manages content contributions and validation.
- **Catalog Curator** – Ensures compliance, formatting, and aggregation of contributions.
- **Catalog Manipulator** – Handles catalog modifications, including filtering and disconnected access.
- **Extension Author** – Develops, validates, and releases cluster extensions.

The following sections provide a more detailed breakdown of each persona, including their roles and responsibilities.

## **Detailed breakdown of each Producer persona**

### Consumers

1. **Cluster Admin**
- May serve as:
- Cluster Monitor
- Cluster Catalog Admin
- Responsibilities:
- Scale cluster
- Upgrade cluster
- Miscellaneous cluster administration
- Apply taints
- Multi-arch tagging
- Add/remove workers
- Housekeeping CRDs

2. **Cluster Monitor** (Sub-role of Cluster Admin)
- Responsibilities:
- Platform monitoring
- Extension monitoring
- Notification of administrative needs

3. **Cluster Catalog Admin** (Sub-role of Cluster Admin)
- Responsibilities:
- Add, remove, and update catalogs
- Manipulate pull secrets for catalog registries

4. **Extension Consumer**
- Responsibilities:
- Create service accounts and support infrastructure for extension lifecycle
- Install extensions
- Upgrade extensions
- Remove extensions
- View available extensions in catalog
- Browse catalog
- Derive minimum privilege for installation
- Filter visibility on installable extensions
- Observe the health of installed extensions

```mermaid
graph LR;
%% Consumers Section
subgraph Consumers ["Consumers"]
CA["Cluster Admin"]
EC["Extension Consumer"]
end
%% Cluster Admin Subgraph
subgraph ClusterAdmin ["Cluster Admin"]
CA -->|May act as| CM["Cluster Monitor"]
CA -->|May act as| CCA["Cluster Catalog Admin"]
CA --> CA1["Scale cluster"]
CA --> CA2["Upgrade cluster"]
CA --> CA3["Misc cluster administration"]
CA --> CA4["Taint"]
CA --> CA5["Multi-arch tagging"]
CA --> CA6["Worker add/remove"]
CA --> CA7["Housekeeping CRDs"]
end
%% Cluster Monitor Subgraph
subgraph ClusterMonitor ["Cluster Monitor"]
CM --> CM1["Platform monitoring"]
CM --> CM2["Review & validate extensions"]
CM --> CM3["Notification of administrative needs"]
end
%% Cluster Catalog Admin Subgraph
subgraph ClusterCatalogAdmin ["Cluster Catalog Admin"]
CCA --> CCA1["Adds/removes/updates catalogs"]
CCA --> CCA2["Manipulate pull secrets to catalog registries"]
end
%% Styling
classDef section fill:#EAEAEA,stroke:#000,stroke-width:1px;
classDef graybox fill:#D3D3D3,stroke:#000,stroke-width:1px;
classDef darkblue fill:#003366,color:#FFFFFF,stroke:#000,stroke-width:1px;
classDef lightblue fill:#99CCFF,color:#000000,stroke:#000,stroke-width:1px;
%% Applying Styles
class Consumers section;
class ClusterAdmin,ClusterMonitor,ClusterCatalogAdmin,ExtensionAdmin graybox;
class CA,EA darkblue;
class CM,CCA lightblue;
```

---

### Producers

1. **Catalog Admin**
- May serve as:
- Contributor Curator
- Catalog Curator
- Catalog Manipulator

2. **Contributor Curator** (Sub-role of Catalog Admin)
- Responsibilities:
- Validate contribution schema
- Publish content to the registry

3. **Catalog Curator** (Sub-role of Catalog Admin)
- Responsibilities:
- Aggregate contributions
- Set minimum requirements
- Provide feedback to authors
- Validate aggregate catalog
- Ensure proper formatting
- Enforce policies
- Publish aggregate catalog

4. **Catalog Manipulator** (Sub-role of Catalog Admin)
- Responsibilities:
- Enable disconnected access
- Filter catalog content

5. **Extension Author**
- Responsibilities:
- Create scaffold API
- Create scaffold controller
- Create webhook
- Create RBAC (Role-Based Access Control)
- Create CRDs (Custom Resource Definitions)
- Create upgrade graph strategy
- Build and release extensions (registry v1 example)
- Develop app bundle
- Develop API bundle
- Develop operator
- Validate extension scope
- Validate extension upgrade graph
- Ensure installability in test catalog
- Adjust graph
- Manage FBC (File-Based Catalog)
- Apply templates
- Publish images

```mermaid
graph LR;
%% Producers Section
subgraph Producers ["Producers"]
EAU["Extension Author"]
CA["Catalog Admin"]
end
%% Catalog Admin Subgraph
subgraph CatalogAdmin ["Catalog Admin"]
CA -->|May act as| CC["Contributor Curator"]
CA -->|May act as| CCur["Catalog Curator"]
CA -->|May act as| CMan["Catalog Manipulator"]
end
%% Extension Author Subgraph
subgraph ExtensionAuthor ["Extension Author"]
EAU --> EAU1["Create scaffold API"]
EAU --> EAU2["Create scaffold controller"]
EAU --> EAU3["Create webhook"]
EAU --> EAU4["Create RBAC"]
EAU --> EAU5["Create CRDs"]
EAU --> EAU6["Create upgrade graph strategy"]
EAU --> EAU7["Builds/releases extension (registryv1 example)"]
EAU --> EAU8["App bundle"]
EAU --> EAU9["API bundle"]
EAU --> EAU10["Operator"]
EAU --> EAU11["Validate extension scope"]
EAU --> EAU12["Validate extension upgrade graph"]
EAU --> EAU13["Ensure installability in test catalog"]
EAU --> EAU14["Adjust graph"]
EAU --> EAU15["Manage FBC (File-Based Catalog)"]
EAU --> EAU16["Apply templates"]
EAU --> EAU17["Publish images"]
end
%% Contributor Curator Subgraph
subgraph ContributorCurator ["Contributor Curator"]
CC --> CC1["Validate contribution schema"]
CC --> CC2["Publish to registry"]
end
%% Catalog Curator Subgraph
subgraph CatalogCurator ["Catalog Curator"]
CCur --> CCur1["Aggregate contributions"]
CCur --> CCur2["Set minimum requirements"]
CCur --> CCur3["Provide author feedback"]
CCur --> CCur4["Validate aggregate catalog"]
CCur --> CCur5["Ensure proper formatting"]
CCur --> CCur6["Enforce policies"]
CCur --> CCur7["Publish aggregate catalog"]
end
%% Catalog Manipulator Subgraph
subgraph CatalogManipulator ["Catalog Manipulator"]
CMan --> CMan1["Enable disconnected access"]
CMan --> CMan2["Filter catalog content"]
end
%% Styling
classDef section fill:#EAEAEA,stroke:#000,stroke-width:1px;
classDef graybox fill:#D3D3D3,stroke:#000,stroke-width:1px;
classDef darkblue fill:#003366,color:#FFFFFF,stroke:#000,stroke-width:1px;
classDef lightblue fill:#99CCFF,color:#000000,stroke:#000,stroke-width:1px;
%% Applying Styles
class Producers section;
class CatalogAdmin,ExtensionAuthor,ContributorCurator,CatalogCurator,CatalogManipulator graybox;
class CA,EAU darkblue;
class CC,CCur,CMan lightblue;
```

0 comments on commit 0846d05

Please sign in to comment.