-
Epic
-
Resolution: Done
-
Major
-
None
-
None
-
None
-
Dependency Management
-
False
-
None
-
False
-
No
-
To Do
-
33% To Do, 0% In Progress, 67% Done
WHY
integreatly-operator go.mod imports/depends upon a number of different operator repo apis. Due to the fact that the api code is stored with the running operator code this has led to a siutation where dependency management has become a significant challenge, especially when we are attempting to support newer versions of kubernetes.
The value in doing this work is that we will be able to support newer versions of kubenernetes faster reducing the engineering and qe cost.
WHAT
In order to improve this we discussed a few options and decided that having our depenency operators declare a seperate go module with it's own go.mod file in their api directories is the approach we'd like to promote across the operators that integreatly-oeprator depends on.
HOW
As integreatly-operator doesn't own all of the operators it depends on the approach is to investigate each of the sub dependencies to see what operators we can submit prs to or in some cases contact the teams responsible for those operators to see if they open to the option of introducing a separate go module for their apis.
PRIOR ART
Observability Operator - noting that we no longer need to address OO as we will migrate to a different observability stack.
{}> https://github.com/laurafitzgerald/observability-operator/commit/f1e38a9832b4fef98980f06ee2a37f279205d4b6{-}
{}> https://github.com/integr8ly/integreatly-operator/pull/3048{-}
In the case of observability-operator it is in itself an uber operator so there might be some other dependencies we could look to implement/suggest as well
Prometheus Operators
-> https://github.com/prometheus-operator/prometheus-operator/tree/main/pkg/apis/monitoring
DONE
All imports of operator apis into integreatly-operator only include api code modules and not the root operator code module
CANDIDATE IMPORTS
https://github.com/3scale-ops/marin3r
https://github.com/3scale/3scale-operator
https://github.com/3scale/apicast-operator/tree/master/apis/apps
https://github.com/grafana-operator/grafana-operator
https://github.com/integr8ly/cloud-resource-operator
https://github.com/integr8ly/keycloak-client
https://github.com/operator-framework/operator-lifecycle-manager -> could be covered by https://github.com/operator-framework/api
https://github.com/operator-framework/operator-registry -> could be covered by https://github.com/operator-framework/api
https://github.com/redhat-developer/observability-operator
https://github.com/openshift/custom-domains-operator -> could be covered by https://github.com/openshift/api