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

:_mod-docs-content-type: CONCEPT
[id="olm-rukpak-plain-bundle_{context}"]
= Plain bundle spec

A plain bundle in RukPak is a collection of static, arbitrary, Kubernetes YAML manifests in a given directory.

The currently implemented plain bundle format is the `plain+v0` format. The name of the bundle format, `plain+v0`, combines the type of bundle (`plain`) with the current schema version (`v0`).

[NOTE]
====
The `plain+v0` bundle format is at schema version `v0`, which means it is an experimental format that is subject to change.
====

For example, the following shows the file tree in a `plain+v0` bundle. It must have a `manifests/` directory containing the Kubernetes resources required to deploy an application.

.Example `plain+v0` bundle file tree
[source,terminal]
----
$ tree manifests

manifests
├── namespace.yaml
├── service_account.yaml
├── cluster_role.yaml
├── cluster_role_binding.yaml
└── deployment.yaml
----

The static manifests must be located in the `manifests/` directory with at least one resource in it for the bundle to be a valid `plain+v0` bundle that the provisioner can unpack. The `manifests/` directory must also be flat; all manifests must be at the top-level with no subdirectories.

[IMPORTANT]
====
Do not include any content in the `manifests/` directory of a plain bundle that are not static manifests. Otherwise, a failure will occur when creating content on-cluster from that bundle. Any file that would not successfully apply with the `oc apply` command will result in an error. Multi-object YAML or JSON files are valid, as well.
====
