mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-06 15:46:57 +01:00
45 lines
1.8 KiB
Plaintext
45 lines
1.8 KiB
Plaintext
// Module included in the following assemblies:
|
|
//
|
|
// * operators/understanding/olm-packaging-format.adoc
|
|
|
|
[id="olm-fb-catalogs-example_{context}"]
|
|
= Example catalog
|
|
|
|
With file-based catalogs, catalog maintainers can focus on Operator curation and compatibility. Because Operator authors have already produced Operator-specific catalogs for their Operators, catalog maintainers can build their catalog by rendering each Operator catalog into a subdirectory of the catalog's root directory.
|
|
|
|
There are many possible ways to build a file-based catalog; the following steps outline a simple approach:
|
|
|
|
. Maintain a single configuration file for the catalog, containing image references for each Operator in the catalog:
|
|
+
|
|
.Example catalog configuration file
|
|
[source,yaml]
|
|
----
|
|
name: community-operators
|
|
repo: quay.io/community-operators/catalog
|
|
tag: latest
|
|
references:
|
|
- name: etcd-operator
|
|
image: quay.io/etcd-operator/index@sha256:5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03
|
|
- name: prometheus-operator
|
|
image: quay.io/prometheus-operator/index@sha256:e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317
|
|
----
|
|
|
|
. Run a script that parses the configuration file and creates a new catalog from its references:
|
|
+
|
|
.Example script
|
|
[source,sh]
|
|
----
|
|
name=$(yq eval '.name' catalog.yaml)
|
|
mkdir "$name"
|
|
yq eval '.name + "/" + .references[].name' catalog.yaml | xargs mkdir
|
|
for l in $(yq e '.name as $catalog | .references[] | .image + "|" + $catalog + "/" + .name + "/index.yaml"' catalog.yaml); do
|
|
image=$(echo $l | cut -d'|' -f1)
|
|
file=$(echo $l | cut -d'|' -f2)
|
|
opm render "$image" > "$file"
|
|
done
|
|
opm generate dockerfile "$name"
|
|
indexImage=$(yq eval '.repo + ":" + .tag' catalog.yaml)
|
|
docker build -t "$indexImage" -f "$name.Dockerfile" .
|
|
docker push "$indexImage"
|
|
----
|