Bug 1847540 - OLM Not Respecting Default Channel in OCP 4.5
Summary: OLM Not Respecting Default Channel in OCP 4.5
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: OpenShift Container Platform
Classification: Red Hat
Component: OLM
Version: 4.4
Hardware: Unspecified
OS: Unspecified
urgent
high
Target Milestone: ---
: 4.6.0
Assignee: Kevin Rizza
QA Contact: Jian Zhang
URL:
Whiteboard:
Depends On:
Blocks: 1848191 1848192 1848769
TreeView+ depends on / blocked
 
Reported: 2020-06-16 15:11 UTC by Zachary Kayyali
Modified: 2020-10-27 16:08 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1848191 1850112 (view as bug list)
Environment:
Last Closed: 2020-10-27 16:07:36 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github open-cluster-management backlog issues 2476 0 None None None 2020-08-10 20:53:44 UTC
Github operator-framework operator-lifecycle-manager pull 1583 0 None closed Bug 1847540: resolve only default channels 2021-01-01 15:56:31 UTC
Red Hat Product Errata RHBA-2020:4196 0 None None None 2020-10-27 16:08:00 UTC

Description Zachary Kayyali 2020-06-16 15:11:57 UTC
Description of problem:
In our CSV, we specify required CRDS - 

```
spec:
  apiservicedefinitions: {}
  customresourcedefinitions:
    owned:
      ...
    required:
    - description: Represent a helm chart repository
      displayName: Channel
      kind: Channel
      name: channels.apps.open-cluster-management.io
      version: v1
    - description: Represents a cluster of etcd nodes.
      displayName: etcd Cluster
      kind: EtcdCluster
      name: etcdclusters.etcd.database.coreos.com
      version: v1beta2
    ...
```

When installing on 4.4 and earlier, ETCD would be able to resolve and would install using its specified default channel (singlenamespace-alpha) - 
https://github.com/operator-framework/community-operators/blob/master/community-operators/etcd/etcd.package.yaml#L6

Although when attempting our installation into the 4.5 Nightly builds, this behavior has changed, and ETCD is installing with channel `clusterwide-alpha`, which unfortunately breaks our install. 

There do not seem to be any meaningful errors in the catalog operator pods.

Are there any workarounds to specify a specific channel?

Also what is the reason for this behavior change, is there a reason the default channel was not selected?

It is understood that the ETCD operator is deprecated, although this doesn't seem to be a bug with ETCD, rather a bug in how the default channel is being selected by OLM.


Version-Release number of selected component (if applicable):
OPENSHIFT_VERSION=4.5.0-0.nightly-2020-06-05-214616

How reproducible:
Install ETCD Operator as a required CRD, specified in the CSV.


Actual results:
ETCD is installing as `clusterwide-alpha`

Expected results:
It is expected that ETCD will install with the channel `singlenamespace-alpha`, the default, which is the channel that OLM had automatically selected in OCP 4.4 and earlier.
https://github.com/operator-framework/community-operators/blob/master/community-operators/etcd/etcd.package.yaml#L6

Comment 2 Michael Elder 2020-06-17 15:59:02 UTC
Note that the core issue here is that ACM 1.0.x (which uses etcd-operator) was broken due to a change in behavior to OLM on OCP 4.5. We would like to get the fix in place so that the ACM 1.0 and 1.0.1 releases will install and run correctly on OCP 4.5.

Comment 3 Michael Elder 2020-06-17 16:00:01 UTC
Note that this is related to #1842660

Comment 6 Zachary Kayyali 2020-06-17 19:45:38 UTC
This has been observed as early as OCP 4.4.8

Comment 13 Jian Zhang 2020-06-23 08:26:17 UTC
Hi Zachary,

Never mind, I find it.

Below are the test steps:

Cluster version is 4.6.0-0.nightly-2020-06-23-002207

mac:~ jianzhang$ oc  -n openshift-operator-lifecycle-manager exec catalog-operator-69c664c778-vpg4b  -- olm --version
OLM version: 0.15.1
git commit: a90b83a4bd74bd6e7a135d66b8e6474788057744

1, Create a new project called "open-cluster-management".
mac:~ jianzhang$ oc new-project open-cluster-management
Now using project "open-cluster-management" on server "https://api.qe-jiazha23.qe.devcluster.openshift.com:6443".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app ruby~https://github.com/sclorg/ruby-ex.git

to build a new example application in Ruby. Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node

2, Subscribe the "Advanced Cluster Management" in it.
mac:~ jianzhang$ oc get sub
NAME                                                                   PACKAGE                       SOURCE                CHANNEL
advanced-cluster-management                                            advanced-cluster-management   redhat-operators      release-1.0
etcd-singlenamespace-alpha-community-operators-openshift-marketplace   etcd                          community-operators   singlenamespace-alpha

mac:~ jianzhang$ oc get csv
NAME                                        DISPLAY                                      VERSION              REPLACES   PHASE
advanced-cluster-management.v1.0.1          Advanced Cluster Management for Kubernetes   1.0.1                           Succeeded
elasticsearch-operator.4.5.0-202006180838   Elasticsearch Operator                       4.5.0-202006180838              Succeeded
etcdoperator.v0.9.4                         etcd                                         0.9.4                           Succeeded

mac:~ jianzhang$ oc get pods
NAME                                                              READY   STATUS    RESTARTS   AGE
etcd-operator-56cf54b95b-xr9db                                    3/3     Running   0          103s
hive-operator-7bd6cf5d98-bqcnm                                    1/1     Running   0          103s
multicluster-operators-application-6d47bc6466-b48ql               4/4     Running   0          102s
multicluster-operators-hub-subscription-76776dfd9f-57sbp          1/1     Running   0          103s
multicluster-operators-standalone-subscription-78c94566c8-rwh9x   1/1     Running   0          103s
multiclusterhub-operator-69bc74f65b-n9gbw                         1/1     Running   0          103s

mac:~ jianzhang$ oc get csv advanced-cluster-management.v1.0.1 -o yaml
...
    required:
    - description: Represents a cluster of etcd nodes.
      displayName: etcd Cluster
      kind: EtcdCluster
      name: etcdclusters.etcd.database.coreos.com
      version: v1beta2
  description: "Advanced Cluster Management for Kubernetes provides the MultiCluster


As we can see, it calls the default channel(singlenamespace-alpha) of the etcd-operator, it works well. LGTM, verify it.

Comment 14 Zachary Kayyali 2020-06-23 17:56:26 UTC
I was able to validate that it works as expected using the latest 4.6 nightly. ETCD subscription is being properly installed w/ the default channel (singlenamespace-alpha).

Thank you all!

Comment 16 errata-xmlrpc 2020-10-27 16:07:36 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (OpenShift Container Platform 4.6 GA Images), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:4196


Note You need to log in before you can comment on or make changes to this bug.