grafana-operator
grafana-operator copied to clipboard
Annotate CRD structs with categories
Background
Kubernetes CRD definitions support a nifty categories
field which is a list of strings that can be used for grouping CRs together under umbrella terms.
An example of this is Istio resources all having the category istio-io
Reason
Making use of categories allows for a pleasant way of listing all resources in a given scope.
And it is currently necessary to write pretty long commands to get an overview of all Grafana-Operator
CRs in a cluster:
# Examples
kubectl get grafanas,grafanadashboards -A
# Or when using completions
kubectl get grafanas.grafana.integreatly.org,grafanadashboards.grafana.integreatly.org -A
> NAMESPACE NAME VERSION STAGE STAGE STATUS AGE
> monitoring grafana.grafana.integreatly.org/kind-grafana 11.1.3 complete success 5d
> NAMESPACE NAME NO MATCHING INSTANCES LAST RESYNC AGE
> default grafanadashboard.grafana.integreatly.org/dash 38s 38s
Solution
Annotating CRD structs to generate with categories: grafanacrs
and grafana-operator
// GrafanaSpec defines the desired state of Grafana
+ // +kubebuilder:resource:categories={grafanacrs,grafana-operator}
type GrafanaSpec struct {
# Alternative command which finds everything
> kubectl get grafana-operator -A
NAMESPACE NAME NO MATCHING INSTANCES LAST RESYNC AGE
default grafanadashboard.grafana.integreatly.org/dash 57s 57s
NAMESPACE NAME NO MATCHING INSTANCES AGE
default grafanafolder.grafana.integreatly.org/test-folder2 9m13s
monitoring grafanafolder.grafana.integreatly.org/test-folder 9m13s
NAMESPACE NAME VERSION STAGE STAGE STATUS AGE
monitoring grafana.grafana.integreatly.org/kind-grafana 11.1.3 complete success 5d
Primary questions
- Is this wanted?
- Names of the categories?
- One category or multiple?
- What documentation would make sense to write on this?