Bug 1847540

Summary: OLM Not Respecting Default Channel in OCP 4.5
Product: OpenShift Container Platform Reporter: Zachary Kayyali <zkayyali>
Component: OLMAssignee: Kevin Rizza <krizza>
OLM sub component: OLM QA Contact: Jian Zhang <jiazha>
Status: CLOSED ERRATA Docs Contact:
Severity: high    
Priority: urgent CC: krizza, mdelder, scuppett, vdinh
Version: 4.4Keywords: Regression
Target Milestone: ---   
Target Release: 4.6.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1848191 1850112 (view as bug list) Environment:
Last Closed: 2020-10-27 16:07:36 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1848191, 1848192, 1848769    

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