We've been iterating on the CRDs created in #1 in various spikes over the past few weeks. This story provides a chance to reflect back on what we've learned and to think deeper about what is good about the CRDs we have and what could be improved.
Some things worth thinking about:
Naming. Both of the CRs themselves and their fields
Relationships between resources. We are currently using a mix of labels, dedicated "resourceRef" fields, and label selectors. There are pros and cons to all of these, but we should try and be consistent when we can.
Spec vs Status placement of fields. Is a particular field in the appropriate part?
Are any fields unused or redundant?
Who is the intended user of this CR? Is it something we expect people will want to kubectl apply directly or is it more of an internal resource. Think Services vs EndpointSlices in K8s as an example of a user interface vs something used internally/by power users.
Will changing something make the CR more difficult to use by the CF API shim?
This about the Conditions we're using in the Status. Do the Condition types/reasons/etc. make sense? Are we missing anything?
This list isn't comprehensive. 🤔 💭
Acceptance Criteria
A PR with updated CRs that will be shared with the community (via cf-dev and the CF on K8s sig) for further discussion.
Consider using a Google doc for initial collaboration and feedback gathering. For the final form of them we should have a markdown doc that is checked in with this repo. Additional community discussion could take place on the PR that introduces that.
If there is a CRD the pair isn't familiar with / neither of you worked on a related spike, don't hesitate to have adhoc sync ups with the folks who did!
Description
We've been iterating on the CRDs created in #1 in various spikes over the past few weeks. This story provides a chance to reflect back on what we've learned and to think deeper about what is good about the CRDs we have and what could be improved.
Some things worth thinking about:
Spec
vsStatus
placement of fields. Is a particular field in the appropriate part?kubectl apply
directly or is it more of an internal resource. ThinkServices
vsEndpointSlices
in K8s as an example of a user interface vs something used internally/by power users.Conditions
we're using in theStatus
. Do the Condition types/reasons/etc. make sense? Are we missing anything?Acceptance Criteria
cf-dev
and the CF on K8s sig) for further discussion.Related Issues
Dev Notes
If there is a CRD the pair isn't familiar with / neither of you worked on a related spike, don't hesitate to have adhoc sync ups with the folks who did!