Jump To Close Expand all Collapse all Table of contents Operators 1. Operators overview Expand section "1. Operators overview" Collapse section "1. Operators overview" 1.1. Operators in OpenShift Dedicated Expand section "1.1. Operators in OpenShift Dedicated" Collapse section "1.1. Operators in OpenShift Dedicated" 1.1.1. Cluster Operators 1.1.2. Add-on Operators 1.2. For developers 1.3. For administrators 1.4. Next steps 2. Understanding Operators Expand section "2. Understanding Operators" Collapse section "2. Understanding Operators" 2.1. What are Operators? Expand section "2.1. What are Operators?" Collapse section "2.1. What are Operators?" 2.1.1. Why use Operators? 2.1.2. Operator Framework 2.1.3. Operator maturity model 2.2. Operator Framework packaging format Expand section "2.2. Operator Framework packaging format" Collapse section "2.2. Operator Framework packaging format" 2.2.1. Bundle format Expand section "2.2.1. Bundle format" Collapse section "2.2.1. Bundle format" 2.2.1.1. Manifests 2.2.1.2. Annotations 2.2.1.3. Dependencies 2.2.1.4. About the opm CLI 2.2.2. File-based catalogs Expand section "2.2.2. File-based catalogs" Collapse section "2.2.2. File-based catalogs" 2.2.2.1. Directory structure 2.2.2.2. Schemas Expand section "2.2.2.2. Schemas" Collapse section "2.2.2.2. Schemas" 2.2.2.2.1. olm.package schema 2.2.2.2.2. olm.channel schema 2.2.2.2.3. olm.bundle schema 2.2.2.2.4. olm.deprecations schema 2.2.2.3. Properties Expand section "2.2.2.3. Properties" Collapse section "2.2.2.3. Properties" 2.2.2.3.1. olm.package property 2.2.2.3.2. olm.gvk property 2.2.2.3.3. olm.package.required 2.2.2.3.4. olm.gvk.required 2.2.2.4. Example catalog 2.2.2.5. Guidelines Expand section "2.2.2.5. Guidelines" Collapse section "2.2.2.5. Guidelines" 2.2.2.5.1. Immutable bundles 2.2.2.5.2. Source control 2.2.2.6. CLI usage 2.2.2.7. Automation 2.3. Operator Framework glossary of common terms Expand section "2.3. Operator Framework glossary of common terms" Collapse section "2.3. Operator Framework glossary of common terms" 2.3.1. Common Operator Framework terms Expand section "2.3.1. Common Operator Framework terms" Collapse section "2.3.1. Common Operator Framework terms" 2.3.1.1. Bundle 2.3.1.2. Bundle image 2.3.1.3. Catalog source 2.3.1.4. Channel 2.3.1.5. Channel head 2.3.1.6. Cluster service version 2.3.1.7. Dependency 2.3.1.8. Index image 2.3.1.9. Install plan 2.3.1.10. Multitenancy 2.3.1.11. Operator group 2.3.1.12. Package 2.3.1.13. Registry 2.3.1.14. Subscription 2.3.1.15. Update graph 2.4. Operator Lifecycle Manager (OLM) Expand section "2.4. Operator Lifecycle Manager (OLM)" Collapse section "2.4. Operator Lifecycle Manager (OLM)" 2.4.1. Operator Lifecycle Manager concepts and resources Expand section "2.4.1. Operator Lifecycle Manager concepts and resources" Collapse section "2.4.1. Operator Lifecycle Manager concepts and resources" 2.4.1.1. What is Operator Lifecycle Manager? 2.4.1.2. OLM resources Expand section "2.4.1.2. OLM resources" Collapse section "2.4.1.2. OLM resources" 2.4.1.2.1. Cluster service version 2.4.1.2.2. Catalog source Expand section "2.4.1.2.2. Catalog source" Collapse section "2.4.1.2.2. Catalog source" 2.4.1.2.2.1. Image template for custom catalog sources 2.4.1.2.2.2. Catalog health requirements 2.4.1.2.3. Subscription 2.4.1.2.4. Install plan 2.4.1.2.5. Operator groups 2.4.1.2.6. Operator conditions 2.4.2. Operator Lifecycle Manager architecture Expand section "2.4.2. Operator Lifecycle Manager architecture" Collapse section "2.4.2. Operator Lifecycle Manager architecture" 2.4.2.1. Component responsibilities 2.4.2.2. OLM Operator 2.4.2.3. Catalog Operator 2.4.2.4. Catalog Registry 2.4.3. Operator Lifecycle Manager workflow Expand section "2.4.3. Operator Lifecycle Manager workflow" Collapse section "2.4.3. Operator Lifecycle Manager workflow" 2.4.3.1. Operator installation and upgrade workflow in OLM Expand section "2.4.3.1. Operator installation and upgrade workflow in OLM" Collapse section "2.4.3.1. Operator installation and upgrade workflow in OLM" 2.4.3.1.1. Example upgrade path 2.4.3.1.2. Skipping upgrades 2.4.3.1.3. Replacing multiple Operators 2.4.3.1.4. Z-stream support 2.4.4. Operator Lifecycle Manager dependency resolution Expand section "2.4.4. Operator Lifecycle Manager dependency resolution" Collapse section "2.4.4. Operator Lifecycle Manager dependency resolution" 2.4.4.1. About dependency resolution 2.4.4.2. Operator properties Expand section "2.4.4.2. Operator properties" Collapse section "2.4.4.2. Operator properties" 2.4.4.2.1. Arbitrary properties 2.4.4.3. Operator dependencies 2.4.4.4. Generic constraints Expand section "2.4.4.4. Generic constraints" Collapse section "2.4.4.4. Generic constraints" 2.4.4.4.1. Common Expression Language (CEL) constraints 2.4.4.4.2. Compound constraints (all, any, not) 2.4.4.4.3. Nested compound constraints 2.4.4.5. Dependency preferences Expand section "2.4.4.5. Dependency preferences" Collapse section "2.4.4.5. Dependency preferences" 2.4.4.5.1. Catalog priority 2.4.4.5.2. Channel ordering 2.4.4.5.3. Order within a channel 2.4.4.5.4. Other constraints Expand section "2.4.4.5.4. Other constraints" Collapse section "2.4.4.5.4. Other constraints" 2.4.4.5.4.1. Subscription constraint 2.4.4.5.4.2. Package constraint 2.4.4.5.5. Additional resources 2.4.4.6. CRD upgrades 2.4.4.7. Dependency best practices 2.4.4.8. Dependency caveats 2.4.4.9. Example dependency resolution scenarios 2.4.5. Operator groups Expand section "2.4.5. Operator groups" Collapse section "2.4.5. Operator groups" 2.4.5.1. About Operator groups 2.4.5.2. Operator group membership 2.4.5.3. Target namespace selection 2.4.5.4. Operator group CSV annotations 2.4.5.5. Provided APIs annotation 2.4.5.6. Role-based access control 2.4.5.7. Copied CSVs 2.4.5.8. Static Operator groups 2.4.5.9. Operator group intersection 2.4.5.10. Limitations for multitenant Operator management 2.4.5.11. Troubleshooting Operator groups 2.4.6. Multitenancy and Operator colocation Expand section "2.4.6. Multitenancy and Operator colocation" Collapse section "2.4.6. Multitenancy and Operator colocation" 2.4.6.1. Colocation of Operators in a namespace 2.4.7. Operator conditions Expand section "2.4.7. Operator conditions" Collapse section "2.4.7. Operator conditions" 2.4.7.1. About Operator conditions 2.4.7.2. Supported conditions Expand section "2.4.7.2. Supported conditions" Collapse section "2.4.7.2. Supported conditions" 2.4.7.2.1. Upgradeable condition 2.4.7.3. Additional resources 2.4.8. Operator Lifecycle Manager metrics Expand section "2.4.8. Operator Lifecycle Manager metrics" Collapse section "2.4.8. Operator Lifecycle Manager metrics" 2.4.8.1. Exposed metrics 2.4.9. Webhook management in Operator Lifecycle Manager Expand section "2.4.9. Webhook management in Operator Lifecycle Manager" Collapse section "2.4.9. Webhook management in Operator Lifecycle Manager" 2.4.9.1. Additional resources 2.5. Understanding OperatorHub Expand section "2.5. Understanding OperatorHub" Collapse section "2.5. Understanding OperatorHub" 2.5.1. About OperatorHub 2.5.2. OperatorHub architecture Expand section "2.5.2. OperatorHub architecture" Collapse section "2.5.2. OperatorHub architecture" 2.5.2.1. OperatorHub custom resource 2.5.3. Additional resources 2.6. Red Hat-provided Operator catalogs Expand section "2.6. Red Hat-provided Operator catalogs" Collapse section "2.6. Red Hat-provided Operator catalogs" 2.6.1. About Operator catalogs 2.6.2. About Red Hat-provided Operator catalogs 2.7. Operators in multitenant clusters Expand section "2.7. Operators in multitenant clusters" Collapse section "2.7. Operators in multitenant clusters" 2.7.1. Default Operator install modes and behavior 2.7.2. Recommended solution for multitenant clusters 2.7.3. Operator colocation and Operator groups 2.8. CRDs Expand section "2.8. CRDs" Collapse section "2.8. CRDs" 2.8.1. Managing resources from custom resource definitions Expand section "2.8.1. Managing resources from custom resource definitions" Collapse section "2.8.1. Managing resources from custom resource definitions" 2.8.1.1. Custom resource definitions 2.8.1.2. Creating custom resources from a file 2.8.1.3. Inspecting custom resources 3. User tasks Expand section "3. User tasks" Collapse section "3. User tasks" 3.1. Creating applications from installed Operators Expand section "3.1. Creating applications from installed Operators" Collapse section "3.1. Creating applications from installed Operators" 3.1.1. Creating an etcd cluster using an Operator 4. Administrator tasks Expand section "4. Administrator tasks" Collapse section "4. Administrator tasks" 4.1. Adding Operators to a cluster Expand section "4.1. Adding Operators to a cluster" Collapse section "4.1. Adding Operators to a cluster" 4.1.1. About Operator installation with OperatorHub 4.1.2. Installing from OperatorHub using the web console 4.1.3. Installing from OperatorHub using the CLI 4.1.4. Installing a specific version of an Operator 4.1.5. Installing a specific version of an Operator in the web console 4.1.6. Preparing for multiple instances of an Operator for multitenant clusters 4.1.7. Installing global Operators in custom namespaces 4.1.8. Pod placement of Operator workloads 4.1.9. Controlling where an Operator is installed 4.2. Updating installed Operators Expand section "4.2. Updating installed Operators" Collapse section "4.2. Updating installed Operators" 4.2.1. Preparing for an Operator update 4.2.2. Changing the update channel for an Operator 4.2.3. Manually approving a pending Operator update 4.3. Deleting Operators from a cluster Expand section "4.3. Deleting Operators from a cluster" Collapse section "4.3. Deleting Operators from a cluster" 4.3.1. Deleting Operators from a cluster using the web console 4.3.2. Deleting Operators from a cluster using the CLI 4.3.3. Refreshing failing subscriptions 4.4. Configuring proxy support in Operator Lifecycle Manager Expand section "4.4. Configuring proxy support in Operator Lifecycle Manager" Collapse section "4.4. Configuring proxy support in Operator Lifecycle Manager" 4.4.1. Overriding proxy settings of an Operator 4.4.2. Injecting a custom CA certificate 4.5. Viewing Operator status Expand section "4.5. Viewing Operator status" Collapse section "4.5. Viewing Operator status" 4.5.1. Operator subscription condition types 4.5.2. Viewing Operator subscription status by using the CLI 4.5.3. Viewing Operator catalog source status by using the CLI 4.6. Managing Operator conditions Expand section "4.6. Managing Operator conditions" Collapse section "4.6. Managing Operator conditions" 4.6.1. Overriding Operator conditions 4.6.2. Updating your Operator to use Operator conditions Expand section "4.6.2. Updating your Operator to use Operator conditions" Collapse section "4.6.2. Updating your Operator to use Operator conditions" 4.6.2.1. Setting defaults 4.6.3. Additional resources 4.7. Managing custom catalogs Expand section "4.7. Managing custom catalogs" Collapse section "4.7. Managing custom catalogs" 4.7.1. Prerequisites 4.7.2. File-based catalogs Expand section "4.7.2. File-based catalogs" Collapse section "4.7.2. File-based catalogs" 4.7.2.1. Creating a file-based catalog image 4.7.2.2. Updating or filtering a file-based catalog image 4.7.3. SQLite-based catalogs Expand section "4.7.3. SQLite-based catalogs" Collapse section "4.7.3. SQLite-based catalogs" 4.7.3.1. Creating a SQLite-based index image 4.7.3.2. Updating a SQLite-based index image 4.7.3.3. Filtering a SQLite-based index image 4.7.4. Catalog sources and pod security admission Expand section "4.7.4. Catalog sources and pod security admission" Collapse section "4.7.4. Catalog sources and pod security admission" 4.7.4.1. Migrating SQLite database catalogs to the file-based catalog format 4.7.4.2. Rebuilding SQLite database catalog images 4.7.4.3. Configuring catalogs to run with elevated permissions 4.7.5. Adding a catalog source to a cluster 4.7.6. Removing custom catalogs 4.8. Catalog source pod scheduling Expand section "4.8. Catalog source pod scheduling" Collapse section "4.8. Catalog source pod scheduling" 4.8.1. Disabling default CatalogSource objects at a local level 4.8.2. Overriding the node selector for catalog source pods 4.8.3. Overriding the priority class name for catalog source pods 4.8.4. Overriding tolerations for catalog source pods 4.9. Troubleshooting Operator issues Expand section "4.9. Troubleshooting Operator issues" Collapse section "4.9. Troubleshooting Operator issues" 4.9.1. Operator subscription condition types 4.9.2. Viewing Operator subscription status by using the CLI 4.9.3. Viewing Operator catalog source status by using the CLI 4.9.4. Querying Operator pod status 4.9.5. Gathering Operator logs 5. Developing Operators Expand section "5. Developing Operators" Collapse section "5. Developing Operators" 5.1. About the Operator SDK Expand section "5.1. About the Operator SDK" Collapse section "5.1. About the Operator SDK" 5.1.1. What are Operators? 5.1.2. Development workflow 5.1.3. Additional resources 5.2. Installing the Operator SDK CLI Expand section "5.2. Installing the Operator SDK CLI" Collapse section "5.2. Installing the Operator SDK CLI" 5.2.1. Installing the Operator SDK CLI on Linux 5.2.2. Installing the Operator SDK CLI on macOS 5.3. Go-based Operators Expand section "5.3. Go-based Operators" Collapse section "5.3. Go-based Operators" 5.3.1. Operator SDK tutorial for Go-based Operators Expand section "5.3.1. Operator SDK tutorial for Go-based Operators" Collapse section "5.3.1. Operator SDK tutorial for Go-based Operators" 5.3.1.1. Prerequisites 5.3.1.2. Creating a project Expand section "5.3.1.2. Creating a project" Collapse section "5.3.1.2. Creating a project" 5.3.1.2.1. PROJECT file 5.3.1.2.2. About the Manager 5.3.1.2.3. About multi-group APIs 5.3.1.3. Creating an API and controller Expand section "5.3.1.3. Creating an API and controller" Collapse section "5.3.1.3. Creating an API and controller" 5.3.1.3.1. Defining the API 5.3.1.3.2. Generating CRD manifests Expand section "5.3.1.3.2. Generating CRD manifests" Collapse section "5.3.1.3.2. Generating CRD manifests" 5.3.1.3.2.1. About OpenAPI validation 5.3.1.4. Implementing the controller Expand section "5.3.1.4. Implementing the controller" Collapse section "5.3.1.4. Implementing the controller" 5.3.1.4.1. Resources watched by the controller 5.3.1.4.2. Controller configurations 5.3.1.4.3. Reconcile loop 5.3.1.4.4. Permissions and RBAC manifests 5.3.1.5. Enabling proxy support 5.3.1.6. Running the Operator Expand section "5.3.1.6. Running the Operator" Collapse section "5.3.1.6. Running the Operator" 5.3.1.6.1. Bundling an Operator and deploying with Operator Lifecycle Manager Expand section "5.3.1.6.1. Bundling an Operator and deploying with Operator Lifecycle Manager" Collapse section "5.3.1.6.1. Bundling an Operator and deploying with Operator Lifecycle Manager" 5.3.1.6.1.1. Bundling an Operator 5.3.1.6.1.2. Deploying an Operator with Operator Lifecycle Manager 5.3.1.7. Creating a custom resource 5.3.1.8. Additional resources 5.3.2. Project layout for Go-based Operators Expand section "5.3.2. Project layout for Go-based Operators" Collapse section "5.3.2. Project layout for Go-based Operators" 5.3.2.1. Go-based project layout 5.3.3. Updating Go-based Operator projects for newer Operator SDK versions Expand section "5.3.3. Updating Go-based Operator projects for newer Operator SDK versions" Collapse section "5.3.3. Updating Go-based Operator projects for newer Operator SDK versions" 5.3.3.1. Updating Go-based Operator projects for Operator SDK 1.31.0 5.3.3.2. Additional resources 5.4. Ansible-based Operators Expand section "5.4. Ansible-based Operators" Collapse section "5.4. Ansible-based Operators" 5.4.1. Operator SDK tutorial for Ansible-based Operators Expand section "5.4.1. Operator SDK tutorial for Ansible-based Operators" Collapse section "5.4.1. Operator SDK tutorial for Ansible-based Operators" 5.4.1.1. Prerequisites 5.4.1.2. Creating a project Expand section "5.4.1.2. Creating a project" Collapse section "5.4.1.2. Creating a project" 5.4.1.2.1. PROJECT file 5.4.1.3. Creating an API 5.4.1.4. Modifying the manager 5.4.1.5. Enabling proxy support 5.4.1.6. Running the Operator Expand section "5.4.1.6. Running the Operator" Collapse section "5.4.1.6. Running the Operator" 5.4.1.6.1. Bundling an Operator and deploying with Operator Lifecycle Manager Expand section "5.4.1.6.1. Bundling an Operator and deploying with Operator Lifecycle Manager" Collapse section "5.4.1.6.1. Bundling an Operator and deploying with Operator Lifecycle Manager" 5.4.1.6.1.1. Bundling an Operator 5.4.1.6.1.2. Deploying an Operator with Operator Lifecycle Manager 5.4.1.7. Creating a custom resource 5.4.1.8. Additional resources 5.4.2. Project layout for Ansible-based Operators Expand section "5.4.2. Project layout for Ansible-based Operators" Collapse section "5.4.2. Project layout for Ansible-based Operators" 5.4.2.1. Ansible-based project layout 5.4.3. Updating projects for newer Operator SDK versions Expand section "5.4.3. Updating projects for newer Operator SDK versions" Collapse section "5.4.3. Updating projects for newer Operator SDK versions" 5.4.3.1. Updating Ansible-based Operator projects for Operator SDK 1.31.0 5.4.3.2. Additional resources 5.4.4. Ansible support in Operator SDK Expand section "5.4.4. Ansible support in Operator SDK" Collapse section "5.4.4. Ansible support in Operator SDK" 5.4.4.1. Custom resource files 5.4.4.2. watches.yaml file Expand section "5.4.4.2. watches.yaml file" Collapse section "5.4.4.2. watches.yaml file" 5.4.4.2.1. Advanced options 5.4.4.3. Extra variables sent to Ansible 5.4.4.4. Ansible Runner directory 5.4.5. Kubernetes Collection for Ansible Expand section "5.4.5. Kubernetes Collection for Ansible" Collapse section "5.4.5. Kubernetes Collection for Ansible" 5.4.5.1. Installing the Kubernetes Collection for Ansible 5.4.5.2. Testing the Kubernetes Collection locally 5.4.5.3. Next steps 5.4.6. Using Ansible inside an Operator Expand section "5.4.6. Using Ansible inside an Operator" Collapse section "5.4.6. Using Ansible inside an Operator" 5.4.6.1. Custom resource files 5.4.6.2. Testing an Ansible-based Operator locally 5.4.6.3. Testing an Ansible-based Operator on the cluster 5.4.6.4. Ansible logs Expand section "5.4.6.4. Ansible logs" Collapse section "5.4.6.4. Ansible logs" 5.4.6.4.1. Viewing Ansible logs 5.4.6.4.2. Enabling full Ansible results in logs 5.4.6.4.3. Enabling verbose debugging in logs 5.4.7. Custom resource status management Expand section "5.4.7. Custom resource status management" Collapse section "5.4.7. Custom resource status management" 5.4.7.1. About custom resource status in Ansible-based Operators 5.4.7.2. Tracking custom resource status manually 5.5. Helm-based Operators Expand section "5.5. Helm-based Operators" Collapse section "5.5. Helm-based Operators" 5.5.1. Operator SDK tutorial for Helm-based Operators Expand section "5.5.1. Operator SDK tutorial for Helm-based Operators" Collapse section "5.5.1. Operator SDK tutorial for Helm-based Operators" 5.5.1.1. Prerequisites 5.5.1.2. Creating a project Expand section "5.5.1.2. Creating a project" Collapse section "5.5.1.2. Creating a project" 5.5.1.2.1. Existing Helm charts 5.5.1.2.2. PROJECT file 5.5.1.3. Understanding the Operator logic Expand section "5.5.1.3. Understanding the Operator logic" Collapse section "5.5.1.3. Understanding the Operator logic" 5.5.1.3.1. Sample Helm chart 5.5.1.3.2. Modifying the custom resource spec 5.5.1.4. Enabling proxy support 5.5.1.5. Running the Operator Expand section "5.5.1.5. Running the Operator" Collapse section "5.5.1.5. Running the Operator" 5.5.1.5.1. Bundling an Operator and deploying with Operator Lifecycle Manager Expand section "5.5.1.5.1. Bundling an Operator and deploying with Operator Lifecycle Manager" Collapse section "5.5.1.5.1. Bundling an Operator and deploying with Operator Lifecycle Manager" 5.5.1.5.1.1. Bundling an Operator 5.5.1.5.1.2. Deploying an Operator with Operator Lifecycle Manager 5.5.1.6. Creating a custom resource 5.5.1.7. Additional resources 5.5.2. Project layout for Helm-based Operators Expand section "5.5.2. Project layout for Helm-based Operators" Collapse section "5.5.2. Project layout for Helm-based Operators" 5.5.2.1. Helm-based project layout 5.5.3. Updating Helm-based projects for newer Operator SDK versions Expand section "5.5.3. Updating Helm-based projects for newer Operator SDK versions" Collapse section "5.5.3. Updating Helm-based projects for newer Operator SDK versions" 5.5.3.1. Updating Helm-based Operator projects for Operator SDK 1.31.0 5.5.3.2. Additional resources 5.5.4. Helm support in Operator SDK Expand section "5.5.4. Helm support in Operator SDK" Collapse section "5.5.4. Helm support in Operator SDK" 5.5.4.1. Helm charts 5.6. Defining cluster service versions (CSVs) Expand section "5.6. Defining cluster service versions (CSVs)" Collapse section "5.6. Defining cluster service versions (CSVs)" 5.6.1. How CSV generation works Expand section "5.6.1. How CSV generation works" Collapse section "5.6.1. How CSV generation works" 5.6.1.1. Generated files and resources 5.6.1.2. Version management 5.6.2. Manually-defined CSV fields 5.6.3. Operator metadata annotations Expand section "5.6.3. Operator metadata annotations" Collapse section "5.6.3. Operator metadata annotations" 5.6.3.1. Infrastructure features annotations 5.6.3.2. Deprecated infrastructure feature annotations 5.6.3.3. Other optional annotations 5.6.4. Enabling your Operator for restricted network environments 5.6.5. Enabling your Operator for multiple architectures and operating systems Expand section "5.6.5. Enabling your Operator for multiple architectures and operating systems" Collapse section "5.6.5. Enabling your Operator for multiple architectures and operating systems" 5.6.5.1. Architecture and operating system support for Operators 5.6.6. Setting a suggested namespace 5.6.7. Setting a suggested namespace with default node selector 5.6.8. Enabling Operator conditions 5.6.9. Defining webhooks Expand section "5.6.9. Defining webhooks" Collapse section "5.6.9. Defining webhooks" 5.6.9.1. Webhook considerations for OLM 5.6.10. Understanding your custom resource definitions (CRDs) Expand section "5.6.10. Understanding your custom resource definitions (CRDs)" Collapse section "5.6.10. Understanding your custom resource definitions (CRDs)" 5.6.10.1. Owned CRDs 5.6.10.2. Required CRDs 5.6.10.3. CRD upgrades Expand section "5.6.10.3. CRD upgrades" Collapse section "5.6.10.3. CRD upgrades" 5.6.10.3.1. Adding a new CRD version 5.6.10.3.2. Deprecating or removing a CRD version 5.6.10.4. CRD templates 5.6.10.5. Hiding internal objects 5.6.10.6. Initializing required custom resources 5.6.11. Understanding your API services Expand section "5.6.11. Understanding your API services" Collapse section "5.6.11. Understanding your API services" 5.6.11.1. Owned API services Expand section "5.6.11.1. Owned API services" Collapse section "5.6.11.1. Owned API services" 5.6.11.1.1. API service resource creation 5.6.11.1.2. API service serving certificates 5.6.11.2. Required API services 5.7. Working with bundle images Expand section "5.7. Working with bundle images" Collapse section "5.7. Working with bundle images" 5.7.1. Bundling an Operator 5.7.2. Deploying an Operator with Operator Lifecycle Manager 5.7.3. Publishing a catalog containing a bundled Operator 5.7.4. Testing an Operator upgrade on Operator Lifecycle Manager 5.7.5. Controlling Operator compatibility with OpenShift Dedicated versions 5.7.6. Additional resources 5.8. Complying with pod security admission Expand section "5.8. Complying with pod security admission" Collapse section "5.8. Complying with pod security admission" 5.8.1. About pod security admission Expand section "5.8.1. About pod security admission" Collapse section "5.8.1. About pod security admission" 5.8.1.1. Pod security admission modes 5.8.1.2. Pod security admission profiles 5.8.1.3. Privileged namespaces 5.8.2. About pod security admission synchronization Expand section "5.8.2. About pod security admission synchronization" Collapse section "5.8.2. About pod security admission synchronization" 5.8.2.1. Pod security admission synchronization namespace exclusions 5.8.3. Ensuring Operator workloads run in namespaces set to the restricted pod security level 5.8.4. Managing pod security admission for Operator workloads that require escalated permissions 5.8.5. Additional resources 5.9. Validating Operators using the scorecard tool Expand section "5.9. Validating Operators using the scorecard tool" Collapse section "5.9. Validating Operators using the scorecard tool" 5.9.1. About the scorecard tool 5.9.2. Scorecard configuration 5.9.3. Built-in scorecard tests 5.9.4. Running the scorecard tool 5.9.5. Scorecard output 5.9.6. Selecting tests 5.9.7. Enabling parallel testing 5.9.8. Custom scorecard tests 5.10. Validating Operator bundles Expand section "5.10. Validating Operator bundles" Collapse section "5.10. Validating Operator bundles" 5.10.1. About the bundle validate command 5.10.2. Built-in bundle validate tests 5.10.3. Running the bundle validate command 5.11. High-availability or single-node cluster detection and support Expand section "5.11. High-availability or single-node cluster detection and support" Collapse section "5.11. High-availability or single-node cluster detection and support" 5.11.1. About the cluster high-availability mode API 5.11.2. Example API usage in Operator projects 5.12. Configuring built-in monitoring with Prometheus 5.13. Configuring leader election Expand section "5.13. Configuring leader election" Collapse section "5.13. Configuring leader election" 5.13.1. Operator leader election examples Expand section "5.13.1. Operator leader election examples" Collapse section "5.13.1. Operator leader election examples" 5.13.1.1. Leader-for-life election 5.13.1.2. Leader-with-lease election 5.14. Object pruning utility for Go-based Operators Expand section "5.14. Object pruning utility for Go-based Operators" Collapse section "5.14. Object pruning utility for Go-based Operators" 5.14.1. About the operator-lib pruning utility 5.14.2. Pruning utility configuration 5.15. Migrating package manifest projects to bundle format Expand section "5.15. Migrating package manifest projects to bundle format" Collapse section "5.15. Migrating package manifest projects to bundle format" 5.15.1. About packaging format migration 5.15.2. Migrating a package manifest project to bundle format 5.16. Operator SDK CLI reference Expand section "5.16. Operator SDK CLI reference" Collapse section "5.16. Operator SDK CLI reference" 5.16.1. bundle Expand section "5.16.1. bundle" Collapse section "5.16.1. bundle" 5.16.1.1. validate 5.16.2. cleanup 5.16.3. completion 5.16.4. create Expand section "5.16.4. create" Collapse section "5.16.4. create" 5.16.4.1. api 5.16.5. generate Expand section "5.16.5. generate" Collapse section "5.16.5. generate" 5.16.5.1. bundle 5.16.5.2. kustomize Expand section "5.16.5.2. kustomize" Collapse section "5.16.5.2. kustomize" 5.16.5.2.1. manifests 5.16.6. init 5.16.7. run Expand section "5.16.7. run" Collapse section "5.16.7. run" 5.16.7.1. bundle 5.16.7.2. bundle-upgrade 5.16.8. scorecard 5.17. Migrating to Operator SDK v0.1.0 Expand section "5.17. Migrating to Operator SDK v0.1.0" Collapse section "5.17. Migrating to Operator SDK v0.1.0" 5.17.1. Creating a new Operator SDK v0.1.0 project 5.17.2. Migrating custom types from pkg/apis 5.17.3. Migrating reconcile code Legal Notice Settings Close Language: 日本語 简体中文 한국어 English Language: 日本語 简体中文 한국어 English Format: Multi-page Single-page PDF Format: Multi-page Single-page PDF Language and Page Formatting Options Language: 日本語 简体中文 한국어 English Language: 日本語 简体中文 한국어 English Format: Multi-page Single-page PDF Format: Multi-page Single-page PDF Operators OpenShift Dedicated 4OpenShift Dedicated OperatorsRed Hat OpenShift Documentation TeamLegal NoticeAbstract How Operators help in packaging, deploying, and managing services on the control plane. Next