olm-book
Operator Lifecycle Book
Introduction
Glossary
Foundational Concepts
What is an Operator?
Why would I use OLM?
What does OLM enable?
Operators on cluster
Under the hood
Operands
Operator bundles
Operator catalogs
Subscriptions
Operator dependencies and requirements
Operator update graphs and channels
Operator versioning and release strategies
Operand support matrices
Operator install modes
Operator scoping
Basic Use Cases
How do I install OLM?
How do I package my Operator for OLM?
How do I validate the package?
How do I make my Operator part of a catalog?
How do I install my Operator with OLM?
How do I list Operators available to install?
How do I uninstall an Operator?
How do I discover the presence/availability of an Operator?
How do I uninstall OLM?
Advanced Use Cases
When do I need to update my Operator?
How do I create an updated version of my Operator?
How do I test an update before shipping?
How do I ship an updated version of my Operator?
How do I approve an update?
How do I scope down an Operator?
How can I install an Operator when I am not cluster admin?
How do I rely on other Operators with my Operator?
How can I configure / customize my Operator deployment?
How can I set / override defaults to amend runtime behavior of my Operator?
What annotations can I use to drive UIs?
How do I change which users are able to use an Operator?
How do I “hide” particular CRDs not intended for consumption by an end-user?
How do I ship webhooks?
When and how should a running Operator express that it is not upgradeable?
When should an Operator upgrade its Operands?
How should an Operator Author create and package an Operator for a singleton operand?
How do I snapshot a Quay Appregistry operator catalog?
How do I ship an operator that supports multiple node architectures?
Troubleshooting
Troubleshoot OLM installation
Troubleshoot operator installation with OLM
OLM on OCP (OpenShift Container Platform)
FAQ
Important changes by OCP release
Operator Marketplace