On OpenShift clusters, the marketplace-operator makes off-cluster Quay Appregistry type catalogs available to OLM. It is installed by default with OpenShift.
The marketplace-operator can be told to pull a catalog from Appregistry by creating an OperatorSource
:
apiVersion: operators.coreos.com/v1
kind: OperatorSource
metadata:
name: my-operators
namespace: openshift-marketplace
spec:
type: appregistry
endpoint: https://quay.io/cnr
registryNamespace: my-operators
displayName: "My Operators"
publisher: "Me, Myself, and I"
type
is the registry type (appregistry
being the only supported type)endpoint
is the Appregistry endpointregistryNamespace
is the name of your Appregistry namespacedisplayName
and publisher
are optional and only needed for UI purposesThe creation of an OperatorSource
results in the creation of an OLM CatalogSource
in the same namespace the marketplace-operator is running in. This CatalogSource
will be populated with operators from the OperatorSource
ready to be managed by OLM.
In versions of OpenShift > 4.2, all CatalogSources
generated by the marketplace-operator in the openshift-marketplace
namespace are available for use in all namespaces.
The marketplace-operator is installed by default into the openshift-marketplace
namespace along with three Red Hat provided OperatorSources
; redhat-operators
, certified-operators
, and community-operators
, which represent operators published by redhat, ISVs (Independent Software Vendors), and upstream community members respectively.
In versions of OpenShift > 4.2, The default behavior of the marketplace-operator ensures these OperatorSources
always exist on a cluster, even if they are manually deleted.
You can manually configure which OperatorSources
the marketplace-operator
recreates by creating an OperatorHub
resource:
apiVersion: config.openshift.io/v1
kind: OperatorHub
metadata:
name: cluster
spec:
sources:
- name: "community-operators"
disabled: true
Alternatively, to disable all default OperatorSources
, you can use the disableAllDefaultSources
attribute:
apiVersion: config.openshift.io/v1
kind: OperatorHub
metadata:
name: cluster
spec:
disableAllDefaultSources: true
Note: sources
takes precedent over disableAllDefaultSources
if it has entries defined.
Once an OperatorSource
is disabled, the marketplace-operator
will automatically delete it if present.
In OpenShift 4.1, recreation of the default OperatorSources
is controlled by CVO (cluster-version-operator) and can be disabled by setting them as unmanaged resources:
$ cat <<EOF >version-patch.yaml
- op: add
path: /spec/overrides/-
value:
kind: OperatorSource
name: community-operators
namespace: openshift-marketplace
unmanaged: true
EOF
$ kubectl patch clusterversion version --type json -p "$(cat version-patch.yaml)"
...
_Note: In OpenShift 4.1, default OperatorSources
won’t be deleted automatically when disabled.