diff --git a/submariner-operator/issue-81-operator-rework.md b/submariner-operator/issue-81-operator-rework.md new file mode 100644 index 00000000..8e3d8a2e --- /dev/null +++ b/submariner-operator/issue-81-operator-rework.md @@ -0,0 +1,43 @@ +## Epic Description + +The operator was built using an old version of the +[Operator SDK](https://sdk.operatorframework.io/docs/building-operators/golang/quickstart/). +This causes a number of problems: + +* our code (in particular, metrics setup) relies on an old version of the Operator framework, + which is incompatible with current versions of the Kubernetes libraries +* we’re missing out on features supported by newer versions of the SDK (such as healthchecks) + +We need to upgrade our operator to use the current Operator SDK, following +[the migration guide](https://sdk.operatorframework.io/docs/building-operators/golang/migration/). + +This work will be easier once `subctl` is in its own repository; see +[Epic: Move subctl to its own repo](https://github.com/submariner-io/enhancements/issues/89). +Without this work, a non-negligible amount of time would probably go into avoiding `subctl` +breakage while reworking the operator itself. + +## Acceptance Criteria + +All our end-to-end tests pass with the new operator. + +## Definition of Done (Checklist) + + +* [ ] Code complete +* [ ] The acceptance criteria met +* [ ] Unit/e2e test added & pass +* [ ] CI jobs pass +* [ ] Deployed using cloud-prepare+subctl +* [ ] Run subctl verify, diagnose and gather +* [ ] Uninstall +* [ ] Troubleshooting (gather/diagnose) added +* [ ] Documentation added +* [ ] Release notes added + +## Work Items + +* [ ] Create a new operator using the Operator SDK, preserving our existing group and identifiers +* [ ] Integrate the existing controllers into the new framework. +* [ ] Make sure the setup work done in our code is replicated in the new framework: + * [ ] Remove code which takes care of features supported elsewhere (metrics) + * [ ] Determine how to handle unorthodox features in our code (CRD setup; see the addon for inspiration)