Using failure reporting
When it comes to failures, there are two things we need to worry about: failures in the Operand, and failures in the Operator itself. Sometimes, these two instances may even be related (for example, the Operand is failing in an unexpected way that the Operator does not know how to resolve). When any errors occur, it's an important job of the Operator to report those errors to the user.
When an error happens during the Operator's reconciliation loop, the Operator must decide what to do next. In implementations with the Operator SDK, the reconcile logic is able to identify when an error has occurred and attempt the loop again. If the error continues to prevent the reconciliation from succeeding, the loop can exponentially back off and wait longer between each attempt in the hope that whichever condition is causing the failure will be resolved. However, when an Operator reaches this state, the error should still be exposed to the user in some way.
...