// Module included in the following assemblies:
//
// * operators/understanding/olm-packaging-format.adoc
// * operators/olm_v1/olmv1_rukpak.adoc

:_mod-docs-content-type: CONCEPT
[id="olm-rukpak-provisioner_{context}"]
= About provisioners

RukPak consists of a series of controllers, known as _provisioners_, that install and manage content on a Kubernetes cluster. A provisioner works together with a `BundleDeployment` object to bring content onto the cluster and install it, generating resources within the cluster.

Currently, the _registry provisioner_ is implemented and included with RukPak. A _registry bundle_, or `registry+v1` bundle, contains a set of static Kubernetes YAML manifests organized in the {olmv0-first} bundle format. The registry provisioner sources and unpacks registry bundles.

A provisioner is assigned a unique ID and is responsible for reconciling bundles and `BundleDeployment` objects with a `spec.provisionerClassName` field that matches that particular ID. For example, the registry provisioner is able to unpack a given `registry+v1` bundle onto a cluster and then instantiate it, making the content of the bundle available in the cluster.

A provisioner places a watch on `BundleDeployment` resources that refer to the provisioner explicitly. For a given bundle, the provisioner unpacks the contents of the bundle onto the cluster. Then, given a `BundleDeployment` resource referring to that bundle, the provisioner installs the bundle contents and is responsible for managing the lifecycle of those resources.
