|
3 | 3 | - toc
|
4 | 4 | ---
|
5 | 5 |
|
6 |
| -# Overview |
| 6 | +# Operator Lifecycle Manager |
7 | 7 |
|
8 |
| -Operator Lifecycle Manager (OLM) is an open-source [CNCF](https://www.cncf.io/) project with the mission to manage the |
9 |
| -lifecycle of cluster extensions centrally and declaratively on Kubernetes clusters. Its purpose is to make installing, |
10 |
| -running, and updating functional extensions to the cluster easy, safe, and reproducible for cluster administrators and PaaS administrators. |
| 8 | +The Operator Lifecycle Manager (OLM) is an open-source project under the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/), designed to simplify and centralize the management of Kubernetes cluster extensions. OLM streamlines the process of installing, running, and updating these extensions, making it easier, safer, and more reproducible for cluster and platform administrators alike. |
11 | 9 |
|
12 |
| -Previously, OLM was focused on a particular type of cluster extension: [Operators](https://operatorhub.io/what-is-an-operator#:~:text=is%20an%20Operator-,What%20is%20an%20Operator%20after%20all%3F,or%20automation%20software%20like%20Ansible.). |
13 |
| -Operators are a method of packaging, deploying, and managing a Kubernetes application. An Operator is composed of one or more controllers paired with one or both of the following objects: |
| 10 | +Originally, OLM was focused on managing a specific type of extension known as [Operators](https://operatorhub.io/what-is-an-operator#:~:text=is%20an%20Operator-,What%20is%20an%20Operator%20after%20all%3F,or%20automation%20software%20like%20Ansible.), which are powerful tools that automate the management of complex Kubernetes applications. At its core, an Operator is made up of controllers that automate the lifecycle of applications, paired with: |
14 | 11 |
|
15 |
| -* One or more API extensions |
16 |
| -* One or more [CustomResourceDefinitions](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) (CRDs). |
| 12 | +- One or more Kubernetes API extensions. |
| 13 | +- One or more [CustomResourceDefinitions (CRDs)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/), allowing administrators to define custom resources. |
17 | 14 |
|
18 |
| -OLM helped define lifecycles for these extensions: from packaging and distribution to installation, configuration, upgrade, and removal. |
| 15 | +The purpose of OLM is to manage the lifecycle of these extensions—from their packaging and distribution to installation, updates, and eventual removal—helping administrators ensure stability and security across their clusters. |
19 | 16 |
|
20 |
| -The first iteration of OLM, termed OLM v0, included several concepts and features targeting the stability, security, and supportability of the life-cycled applications, for instance: |
| 17 | +In its first release (OLM v0), the project introduced several important concepts and features aimed at improving the lifecycle management of Kubernetes applications: |
21 | 18 |
|
22 |
| -* A dependency model that enabled cluster extensions to focus on their primary purpose by delegating out of scope behavior to dependencies |
23 |
| -* A constraint model that allowed cluster extension developers to define support limitations such as conflicting extensions, and minimum kubernetes versions |
24 |
| -* A namespace-based multi-tenancy model in lieu of namespace-scoped CRDs |
25 |
| -* A packaging model in which catalogs of extensions, usually containing the entire version history of each extension, are made available to clusters for cluster users to browse and select from |
| 19 | +- **Dependency Model**: Enables extensions to focus on their primary function by delegating non-essential tasks to other dependencies. |
| 20 | +- **Constraint Model**: Allows developers to define compatibility constraints such as conflicting extensions or minimum required Kubernetes versions. |
| 21 | +- **Namespace-Based Multi-Tenancy**: Provides a multi-tenancy model to manage multiple extensions without the need for namespace-scoped CRDs. |
| 22 | +- **Packaging Model**: Distributes extensions through catalogs, allowing users to browse and install extensions, often with access to the full version history. |
26 | 23 |
|
27 |
| -Since its initial release, OLM has helped catalyse the growth of Operators throughout the Kubernetes ecosystem. [OperatorHub.io](https://operatorhub.io/) |
28 |
| -is a popular destination for discovering Operators, and boasts over 300 packages from many different vendors. |
| 24 | +Thanks to these innovations, OLM has played a significant role in popularizing Operators throughout the Kubernetes ecosystem. A prime example of its impact is [OperatorHub.io](https://operatorhub.io/), a widely-used platform with over 300 Operators from various vendors, providing users with a central location to discover and install Operators. |
29 | 25 |
|
30 |
| -## Why are we building OLM v1? |
| 26 | +## Why Build OLM v1? |
31 | 27 |
|
32 |
| -The Operator Lifecycle Manager (OLM) has been in production for over five years, serving as a critical component in managing Kubernetes Operators. |
33 |
| -Over this time, the community has gathered valuable insights from real-world usage, identifying both the strengths and limitations of the initial design, |
34 |
| -and validating the design's initial assumptions. This process led to a complete redesign and rewrite of OLM that, compared to its predecessor, aims to |
35 |
| -provide: |
| 28 | +After five years of real-world use, OLM has become an essential part of managing Kubernetes Operators. However, over time, the community has gathered valuable insights, uncovering both the strengths and limitations of OLM v0. These findings have led to a comprehensive redesign and the creation of OLM v1, with several key improvements over the initial version: |
36 | 29 |
|
37 |
| -* A simpler API surface and mental model |
38 |
| -* Less opinionated automation and greater flexibility |
39 |
| -* Support for Kubernetes applications beyond only Operators |
40 |
| -* Security by default |
41 |
| -* Helm Chart support |
42 |
| -* GitOps support |
| 30 | +- **Simpler API and Mental Model**: Streamlined APIs and a more intuitive design, making it easier to understand and work with. |
| 31 | +- **Greater Flexibility**: Less rigid automation, allowing for more customization and broader use cases. |
| 32 | +- **Beyond Operators**: Support for a wider range of Kubernetes applications, not limited to Operators. |
| 33 | +- **Security by Default**: Enhanced security features out-of-the-box, reducing vulnerabilities. |
| 34 | +- **Helm Chart and GitOps Support**: Expanded support for popular Kubernetes tools like Helm and GitOps, broadening the range of integration options. |
43 | 35 |
|
44 |
| -To learn more about where v1 one came from, and where it's going, please see [Multi-Tenancy Challenges, Lessons Learned, and Design Shifts](project/olmv1_design_decisions.md) |
45 |
| -and our feature [Roadmap](project/olmv1_roadmap.md). |
| 36 | +For more details on the evolution of OLM and the roadmap for v1, explore the following resources: |
| 37 | + |
| 38 | +- [Multi-Tenancy Challenges, Lessons Learned, and Design Shifts](project/olmv1_design_decisions.md) |
| 39 | +- [OLM v1 Roadmap](project/olmv1_roadmap.md) |
0 commit comments