You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Operator Registry runs in a Kubernetes or OpenShift cluster to provide operator catalog data to [Operator Lifecycle Manager](https://github.com/operator-framework/operator-lifecycle-manager).
5
+
Operator Registry runs in a Kubernetes or OpenShift cluster to provide operator catalog data to [Operator Lifecycle Manager](https://github.com/operator-framework/operator-lifecycle-manager).
5
6
6
7
# Overview
7
8
@@ -13,23 +14,23 @@ This project provides the following binaries:
13
14
*`registry-server`, which takes a sqlite database loaded with manifests, and exposes a gRPC interface to it.
14
15
* Deprecated - use `opm registry serve` instead
15
16
*`configmap-server`, which takes a kubeconfig and a configmap reference, and parses the configmap into the sqlite database before exposing it via the same interface as `registry-server`.
16
-
17
+
17
18
And libraries:
18
-
19
-
*`pkg/client` - providing a high-level client interface for the gRPC api.
20
-
*`pkg/api` - providing low-level client libraries for the gRPC interface exposed by `registry-server`.
21
-
*`pkg/registry` - providing basic registry types like Packages, Channels, and Bundles.
22
-
*`pkg/sqlite` - providing interfaces for building sqlite manifest databases from `ConfigMap`s or directories, and for querying an existing sqlite database.
23
-
*`pkg/lib` - providing external interfaces for interacting with this project as an api that defines a set of standards for operator bundles and indexes.
24
-
*`pkg/containertools` - providing an interface to interact with and shell out to common container tooling binaries (if installed on the environment)
19
+
20
+
*`pkg/client` - providing a high-level client interface for the gRPC api.
21
+
*`pkg/api` - providing low-level client libraries for the gRPC interface exposed by `registry-server`.
22
+
*`pkg/registry` - providing basic registry types like Packages, Channels, and Bundles.
23
+
*`pkg/sqlite` - providing interfaces for building sqlite manifest databases from `ConfigMap`s or directories, and for querying an existing sqlite database.
24
+
*`pkg/lib` - providing external interfaces for interacting with this project as an api that defines a set of standards for operator bundles and indexes.
25
+
*`pkg/containertools` - providing an interface to interact with and shell out to common container tooling binaries (if installed on the environment)
25
26
26
27
**NOTE:** The purpose of `opm` tool is to help who needs to manage index catalogues for OLM instances. However, if you are looking for a tool to help you to integrate your operator project with OLM then you should use [Operator-SDK](https://github.com/operator-framework/operator-sdk).
27
28
28
29
# Manifest format
29
30
30
31
We refer to a directory of files with one ClusterServiceVersion as a "bundle". A bundle typically includes a ClusterServiceVersion and the CRDs that define the owned APIs of the CSV in its manifest directory, though additional objects may be included. It also includes an annotations file in its metadata folder which defines some higher level aggregate data that helps to describe the format and package information about how the bundle should be added into an index of bundles.
31
32
32
-
```
33
+
```bash
33
34
# example bundle
34
35
etcd
35
36
├── manifests
@@ -41,19 +42,18 @@ We refer to a directory of files with one ClusterServiceVersion as a "bundle". A
41
42
42
43
When loading manifests into the database, the following invariants are validated:
43
44
44
-
* The bundle must have at least one channel defined in the annotations.
45
-
* Every bundle has exactly one ClusterServiceVersion.
46
-
* If a ClusterServiceVersion `owns` a CRD, that CRD must exist in the bundle.
45
+
* The bundle must have at least one channel defined in the annotations.
46
+
* Every bundle has exactly one ClusterServiceVersion.
47
+
* If a ClusterServiceVersion `owns` a CRD, that CRD must exist in the bundle.
47
48
48
49
Bundle directories are identified solely by the fact that they contain a ClusterServiceVersion, which provides an amount of freedom for layout of manifests.
49
50
50
-
Check out the [operator bundle design](docs/design/operator-bundle.md) for more detail on the bundle format.
51
+
Check out the [operator bundle design](docs/design/operator-bundle.md) for more detail on the bundle format.
51
52
52
53
# Bundle images
53
54
54
55
Using [OCI spec](https://github.com/opencontainers/image-spec/blob/master/spec.md) container images as a method of storing the manifest and metadata contents of individual bundles, `opm` interacts directly with these images to generate and incrementally update the database. Once you have your [manifests defined](https://operator-framework.github.io/olm-book/docs/packaging-an-operator.html#writing-your-operator-manifests) and have created a directory in the format defined above, building the image is as simple as defining a [Dockerfile](docs/design/operator-bundle.md#Bundle-Dockerfile) and building that image:
0 commit comments