Summary
This chapter followed the design we outlined in Chapter 3, Designing an Operator – CRD, API, and Target Reconciliation, to produce functional code that achieves the minimum requirements for a Level I Operator (Basic Install). With the support of the Operator Lifecycle Manager (which will be demonstrated in later chapters) and good subsequent API design, this Operator will also support upgrades for itself and its Operand, which qualifies it for Level II.
The steps for creating a Go-based Operator, as recommended by the Operator SDK documentation approach, build upon each other to achieve base functionality. In this chapter, that pattern meant first designing the Operator's API types, which are then generated into a CRD using tools such as Kubebuilder. At this time, it is good to begin thinking about other resource manifests, such as the Operand Deployment, and how those will be represented in memory. This guide took the approach of embedding these additional resources...