IBM / ibm-common-service-operator

Operator to install IBM Common Services
https://www.ibm.com/support/knowledgecenter/SSHKN6/kc_welcome_cs.html
Apache License 2.0
19 stars 68 forks source link

Allow users of ODLM to specify OLM dependencies for the APIs #434

Closed taylormgeorge91 closed 3 years ago

taylormgeorge91 commented 3 years ago

Summary

Today the ibm-common-service-operator bootstraps the operand-lifecycle-operator-manager as well as a supporting namespacescope operator, among other bootstrapping tasks.

It is told that the users of ODLM must include ibm-common-service-operator and must not include ODLM in their definitions.

This request is to allow the users of ODLM to declare their API and package requirements through OLM.

Details

There are at least two other operators who have adopted ODLM for their deployment architecture:

These operators include the ODLM golang library and directly interface with the ODLM APIs in kubernetes. The deployment architecture for the operands of these operators is based on ODLM as a fundamental component. If the ODLM APIs do not exist, or are not within the supported range, the operators will panic.

Further, these operators are not yet offered through a bundle format in OLM. What this means is that they are only specifying required APIs in the CSV and are not utilizing the bundle dependencies.yaml for GVK and package type specifications.

horis233 commented 3 years ago

@taylormgeorge91

Could I get more details about the operator panic? Will the panic appear when the operator bootstrap or try to get/create ODLM resources?

If panic happens when getting/creating resources, could we use a function like https://github.com/IBM/ibm-common-service-operator/blob/master/controllers/bootstrap/init.go#L382 to catch the panic?

I believe we can't use customresourcedefinitions.required to explicitly claim the dependency since OLM will deploy an ODLM in the namespace of the operator, which is not expected.

Do you know if there is any mechanism from OLM to handle the operator in the pending status until the required CRD exists instead of just creating it?

taylormgeorge91 commented 3 years ago

@horis233 That is a good point but not something I think OLM supports

Do you know if there is any mechanism from OLM to handle the operator in the pending status until the required CRD exists instead of just creating it?

I can ask the OLM guild and see if that is of any consideration.

We could create an init container to validate, but we would really like to use the OLM dependency management for required APIs as that is the accepted norm.

I will get a log of the error.

horis233 commented 3 years ago

@taylormgeorge91

Please check if the nativeAPI field in the CSV can fulfill the requirement. https://olm.operatorframework.io/docs/tasks/creating-operator-manifests/#nativeapis-recommended

taylormgeorge91 commented 3 years ago

Thanks @horis233 ! I'll give it a go, looks like what we want.

taylormgeorge91 commented 3 years ago

Works well, thanks again.