1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00

OSDOCS#12811: [OLMv1] Replace port-forwarding cmd w/ opm render

This commit is contained in:
Michael Ryan Peter
2024-12-02 12:33:02 -05:00
committed by openshift-cherrypick-robot
parent 4be4282630
commit fc83a2dedb
4 changed files with 142 additions and 165 deletions

View File

@@ -7,7 +7,33 @@
[id="olmv1-catalog-queries_{context}"]
= Common catalog queries
You can query catalogs by using the `jq` CLI tool.
You can query catalogs by using the `opm` and `jq` CLI tools. The following tables show common catalog queries that you can use when installing, updating, and managing the lifecycle of extensions.
.Command syntax
[source,terminal]
----
$ opm render <catalog_registry_url>:<tag> | <jq_request>
----
where:
`catalog_registry_url`:: Specifies the URL of the catalog registry, such as `registry.redhat.io/redhat/redhat-operator-index`.
`tag`:: Specifies the tag or version of the catalog, such as `v{product-version}` or `latest`.
`jq_request`:: Specifies the query you want to run on the catalog.
.Example command
[%collapsible]
====
[source,terminal,subs=attributes+]
----
$ opm render \
registry.redhat.io/redhat/redhat-operator-index:v{product-version} \
| jq -cs '[.[] | select(.schema == "olm.bundle" and (.properties[] \
| select(.type == "olm.csv.metadata").value.installModes[] \
| select(.type == "AllNamespaces" and .supported == true)) \
and .spec.webhookdefinitions == null) \
| .package] | unique[]'
----
====
// https://docs.asciidoctor.org/asciidoc/latest/tables/format-cell-content/#a-operator
// https://docs.asciidoctor.org/asciidoc/latest/tables/data-format/#escape-the-cell-separator
@@ -20,38 +46,37 @@ You can query catalogs by using the `jq` CLI tool.
a|
[source,terminal]
----
$ jq -s '.[] \| select( .schema == "olm.package") \| \
.name' <catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -s '.[] \| select( .schema == "olm.package")
----
|Packages that support `AllNamespaces` install mode and do not use webhooks
a|
[source,terminal]
----
$ jq -c 'select(.schema == "olm.bundle") \| \
{"package":.package, "version":.properties[] \| \
select(.type == "olm.bundle.object").value.data \| \
@base64d \| fromjson \| \
select(.kind == "ClusterServiceVersion" and (.spec.installModes[] \| \
select(.type == "AllNamespaces" and .supported == true) != null) \
and .spec.webhookdefinitions == null).spec.version}' \
<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -cs '[.[] \| select(.schema == "olm.bundle" and (.properties[] \
\| select(.type == "olm.csv.metadata").value.installModes[] \
\| select(.type == "AllNamespaces" and .supported == true)) \
and .spec.webhookdefinitions == null) \
\| .package] \| unique[]'
----
|Package metadata
a|
[source,terminal]
----
$ jq -s '.[] \| select( .schema == "olm.package") \| \
select( .name == "<package_name>")' <catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -s '.[] \| select( .schema == "olm.package") \
\| select( .name == "<package_name>")'
----
|Catalog blobs in a package
a|
[source,terminal]
----
$ jq -s '.[] \| select( .package == "<package_name>")' \
<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -s '.[] \| select( .package == "<package_name>")'
----
|===
@@ -65,19 +90,20 @@ $ jq -s '.[] \| select( .package == "<package_name>")' \
a|
[source,terminal]
----
$ jq -s '.[] \| select( .schema == "olm.channel" ) \| \
select( .package == "<package_name>") \| .name' \
<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -s '.[] \| select( .schema == "olm.channel" ) \
\| select( .package == "<package_name>") \| .name'
----
|Versions in a channel
a|
[source,terminal]
----
$ jq -s '.[] \| select( .package == "<package_name>" ) \| \
select( .schema == "olm.channel" ) \| \
select( .name == "<channel_name>" ) \| \
.entries \| .[] \| .name' <catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -s '.[] \| select( .package == "<package_name>" ) \
\| select( .schema == "olm.channel" ) \
\| select( .name == "<channel_name>" ) .entries \
\| .[] \| .name'
----
a|
@@ -86,10 +112,10 @@ a|
a|
[source,terminal]
----
$ jq -s '.[] \| select( .schema == "olm.channel" ) \| \
select ( .name == "<channel>") \| \
select( .package == "<package_name>")' \
<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -s '.[] \| select( .schema == "olm.channel" ) \
\| select ( .name == "<channel_name>") \
\| select( .package == "<package_name>")'
----
|===
@@ -103,9 +129,9 @@ $ jq -s '.[] \| select( .schema == "olm.channel" ) \| \
a|
[source,terminal]
----
$ jq -s '.[] \| select( .schema == "olm.bundle" ) \| \
select( .package == "<package_name>") \| .name' \
<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -s '.[] \| select( .schema == "olm.bundle" ) \
\| select( .package == "<package_name>") \| .name'
----
a|
@@ -114,10 +140,10 @@ a|
a|
[source,terminal]
----
$ jq -s '.[] \| select( .schema == "olm.bundle" ) \| \
select ( .name == "<bundle_name>") \| \
select( .package == "<package_name>")' \
<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
\| jq -s '.[] \| select( .schema == "olm.bundle" ) \
\| select ( .name == "<bundle_name>") \
\| select( .package == "<package_name>")'
----
|===

View File

@@ -7,62 +7,44 @@
[id="olmv1-finding-operators-to-install_{context}"]
= Finding Operators to install from a catalog
After you add a catalog to your cluster, you can query the catalog to find Operators and extensions to install. Before you can query catalogs, you must port forward the catalog server service.
After you add a catalog to your cluster, you can query the catalog to find Operators and extensions to install.
include::snippets/olmv1-on-cluster-catalog-queries.adoc[]
.Prerequisites
* You have added a catalog to your cluster.
* You have installed the `jq` CLI tool.
* You have installed the `opm` CLI tool.
.Procedure
. Port forward the catalog server service in the `openshift-catalogd` namespace by running the following command:
. To return a list of extensions that support the `AllNamespaces` install mode and do not use webhooks, enter the following command:
+
[source,terminal]
----
$ oc -n openshift-catalogd port-forward svc/catalogd-catalogserver 8080:443
$ opm render <catalog_registry_url>:<tag> \
| jq -cs '[.[] | select(.schema == "olm.bundle" \
and (.properties[] | select(.type == "olm.csv.metadata").value.installModes[] \
| select(.type == "AllNamespaces" and .supported == true)) \
and .spec.webhookdefinitions == null) | .package] | unique[]'
----
where:
. In a new terminal window or tab, download the catalog's JSON file locally by running the following command:
+
[source,terminal]
----
$ curl -L -k https://localhost:8080/catalogs/<catalog_name>/all.json \
-C - -o /<path>/<catalog_name>.json
----
`catalog_registry_url`:: Specifies the URL of the catalog registry, such as `registry.redhat.io/redhat/redhat-operator-index`.
`tag`:: Specifies the tag or version of the catalog, such as `v{product-version}` or `latest`.
+
.Example command
[%collapsible]
====
[source,terminal]
[source,terminal,subs=attributes+]
----
$ curl -L -k https://localhost:8080/catalogs/redhat-operators/all.json \
-C - -o /home/username/catalogs/rhoc.json
----
====
. Run one of the following commands to return a list of Operators and extensions in a catalog.
+
[IMPORTANT]
====
include::snippets/olmv1-tp-extension-support.adoc[]
====
+
* Get a list of all the Operators and extensions from the local catalog file by running the following command:
+
[source,terminal]
----
$ jq -s '.[] | select(.schema == "olm.package") | .name' \
/<path>/<filename>.json
----
+
.Example command
[%collapsible]
====
[source,terminal]
----
$ jq -s '.[] | select(.schema == "olm.package") | .name' \
/home/username/catalogs/rhoc.json
$ opm render \
registry.redhat.io/redhat/redhat-operator-index:v{product-version} \
| jq -cs '[.[] | select(.schema == "olm.bundle" \
and (.properties[] | select(.type == "olm.csv.metadata").value.installModes[] \
| select(.type == "AllNamespaces" and .supported == true)) \
and .spec.webhookdefinitions == null) | .package] | unique[]'
----
====
+
@@ -71,82 +53,48 @@ $ jq -s '.[] | select(.schema == "olm.package") | .name' \
====
[source,text]
----
NAME AGE
"3scale-operator"
"advanced-cluster-management"
"amq-broker-rhel8"
"amq-online"
"amq-streams"
"amq7-interconnect-operator"
"amq-streams-console"
"ansible-automation-platform-operator"
"ansible-cloud-addons-operator"
"apicast-operator"
"aws-efs-csi-driver-operator"
"authorino-operator"
"aws-load-balancer-operator"
"bamoe-businessautomation-operator"
"bamoe-kogito-operator"
"bare-metal-event-relay"
"businessautomation-operator"
...
----
====
+
* Get list of packages that support `AllNamespaces` install mode and do not use webhooks from the local catalog file by running the following command:
+
[source,terminal]
----
$ jq -c 'select(.schema == "olm.bundle") | \
{"package":.package, "version":.properties[] | \
select(.type == "olm.bundle.object").value.data | @base64d | fromjson | \
select(.kind == "ClusterServiceVersion" and (.spec.installModes[] | \
select(.type == "AllNamespaces" and .supported == true) != null) \
and .spec.webhookdefinitions == null).spec.version}' \
/<path>/<catalog_name>.json
----
+
.Example output
[%collapsible]
====
[source,text]
----
{"package":"3scale-operator","version":"0.10.0-mas"}
{"package":"3scale-operator","version":"0.10.5"}
{"package":"3scale-operator","version":"0.11.0-mas"}
{"package":"3scale-operator","version":"0.11.1-mas"}
{"package":"3scale-operator","version":"0.11.2-mas"}
{"package":"3scale-operator","version":"0.11.3-mas"}
{"package":"3scale-operator","version":"0.11.5-mas"}
{"package":"3scale-operator","version":"0.11.6-mas"}
{"package":"3scale-operator","version":"0.11.7-mas"}
{"package":"3scale-operator","version":"0.11.8-mas"}
{"package":"amq-broker-rhel8","version":"7.10.0-opr-1"}
{"package":"amq-broker-rhel8","version":"7.10.0-opr-2"}
{"package":"amq-broker-rhel8","version":"7.10.0-opr-3"}
{"package":"amq-broker-rhel8","version":"7.10.0-opr-4"}
{"package":"amq-broker-rhel8","version":"7.10.1-opr-1"}
{"package":"amq-broker-rhel8","version":"7.10.1-opr-2"}
{"package":"amq-broker-rhel8","version":"7.10.2-opr-1"}
{"package":"amq-broker-rhel8","version":"7.10.2-opr-2"}
"cephcsi-operator"
"cincinnati-operator"
"cluster-logging"
"cluster-observability-operator"
"compliance-operator"
"container-security-operator"
"cryostat-operator"
"datagrid"
"devspaces"
...
----
====
. Inspect the contents of an Operator or extension's metadata by running the following command:
. Inspect the contents of an extension's metadata by running the following command:
+
[source,terminal]
----
$ jq -s '.[] | select( .schema == "olm.package") | \
select( .name == "<package_name>")' /<path>/<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
| jq -s '.[] | select( .schema == "olm.package") \
| select( .name == "<package_name>")'
----
+
.Example command
[%collapsible]
====
[source,terminal]
[source,terminal,subs=attributes+]
----
$ jq -s '.[] | select( .schema == "olm.package") | \
select( .name == "openshift-pipelines-operator-rh")' \
/home/username/rhoc.json
$ opm render \
registry.redhat.io/redhat/redhat-operator-index:v{product-version} \
| jq -s '.[] | select( .schema == "olm.package") \
| select( .name == "openshift-pipelines-operator-rh")'
----
====
+
@@ -156,13 +104,13 @@ $ jq -s '.[] | select( .schema == "olm.package") | \
[source,text]
----
{
"defaultChannel": "stable",
"icon": {
"base64data": "PHN2ZyB4bWxu..."
"mediatype": "image/png"
},
"schema": "olm.package",
"name": "openshift-pipelines-operator-rh",
"schema": "olm.package"
"defaultChannel": "latest",
"icon": {
"base64data": "iVBORw0KGgoAAAANSUhE...",
"mediatype": "image/png"
}
}
----
====

View File

@@ -11,10 +11,9 @@ You can install an extension from a catalog by creating a custom resource (CR) a
.Prerequisites
* You have added a catalog to your cluster.
* You have downloaded a local copy of the catalog file.
* You have installed the `jq` CLI tool.
* You have created a service account and assigned enough role-based access controls (RBAC) to install, update, and manage the extension you want to install. For more information, see _Creating a service account_.
* You have installed the `opm` CLI tool.
* You have created a service account and assigned enough role-based access controls (RBAC) to install, update, and manage the extension you want to install. For more information, see "Creating a service account to manage cluster extensions".
.Procedure
@@ -24,19 +23,21 @@ You can install an extension from a catalog by creating a custom resource (CR) a
+
[source,terminal]
----
$ jq -s '.[] | select( .schema == "olm.channel" ) | \
select( .package == "<package_name>") | \
.name' /<path>/<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
| jq -s '.[] | select( .schema == "olm.channel" ) \
| select( .package == "<package_name>") \
| .name'
----
+
.Example command
[%collapsible]
====
[source,terminal]
[source,terminal,subs=attributes+]
----
$ jq -s '.[] | select( .schema == "olm.channel" ) | \
select( .package == "openshift-pipelines-operator-rh") | \
.name' /home/username/rhoc.json
$ opm render registry.redhat.io/redhat/redhat-operator-index:v{product-version} \
| jq -s '.[] | select( .schema == "olm.channel" ) \
| select( .package == "openshift-pipelines-operator-rh") \
| .name'
----
====
+
@@ -46,10 +47,9 @@ $ jq -s '.[] | select( .schema == "olm.channel" ) | \
[source,text]
----
"latest"
"pipelines-1.11"
"pipelines-1.12"
"pipelines-1.13"
"pipelines-1.14"
"pipelines-1.15"
"pipelines-1.16"
----
====
@@ -57,20 +57,22 @@ $ jq -s '.[] | select( .schema == "olm.channel" ) | \
+
[source,terminal]
----
$ jq -s '.[] | select( .package == "<package_name>" ) | \
select( .schema == "olm.channel" ) | \
select( .name == "<channel_name>" ) | .entries | \
.[] | .name' /<path>/<catalog_name>.json
$ opm render <catalog_registry_url>:<tag> \
| jq -s '.[] | select( .package == "<package_name>" ) \
| select( .schema == "olm.channel" ) \
| select( .name == "<channel_name>" ) | .entries \
| .[] | .name'
----
+
.Example command
[%collapsible]
====
[source,terminal]
[source,terminal,subs=attributes+]
----
$ jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \
select( .schema == "olm.channel" ) | select( .name == "latest" ) | \
.entries | .[] | .name' /home/username/rhoc.json
$ opm render registry.redhat.io/redhat/redhat-operator-index:v{product-version} \
| jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) \
| select( .schema == "olm.channel" ) | select( .name == "latest" ) \
| .entries | .[] | .name'
----
====
+
@@ -79,23 +81,17 @@ select( .schema == "olm.channel" ) | select( .name == "latest" ) | \
====
[source,text]
----
"openshift-pipelines-operator-rh.v1.12.0"
"openshift-pipelines-operator-rh.v1.12.1"
"openshift-pipelines-operator-rh.v1.12.2"
"openshift-pipelines-operator-rh.v1.13.0"
"openshift-pipelines-operator-rh.v1.13.1"
"openshift-pipelines-operator-rh.v1.11.1"
"openshift-pipelines-operator-rh.v1.12.0"
"openshift-pipelines-operator-rh.v1.12.1"
"openshift-pipelines-operator-rh.v1.12.2"
"openshift-pipelines-operator-rh.v1.13.0"
"openshift-pipelines-operator-rh.v1.14.1"
"openshift-pipelines-operator-rh.v1.14.2"
"openshift-pipelines-operator-rh.v1.14.3"
"openshift-pipelines-operator-rh.v1.14.4"
"openshift-pipelines-operator-rh.v1.14.5"
"openshift-pipelines-operator-rh.v1.15.0"
"openshift-pipelines-operator-rh.v1.15.1"
"openshift-pipelines-operator-rh.v1.15.2"
"openshift-pipelines-operator-rh.v1.16.0"
"openshift-pipelines-operator-rh.v1.16.1"
----
====
. If you want to install your extension into a new namespace, run the following command:
+
[source,terminal]

View File

@@ -0,0 +1,7 @@
// Text snippet included in the following modules:
//
// * olmv1-finding-operators-to-install.adoc
:_mod-docs-content-type: SNIPPET
Currently in {olmv1-first}, you cannot query on-cluster catalogs managed by catalogd. In OLM v1, you must use the `opm` and `jq` CLI tools to query the catalog registry.