grafana-operator icon indicating copy to clipboard operation
grafana-operator copied to clipboard

Annotate CRD structs with categories

Open Baarsgaard opened this issue 6 months ago • 0 comments

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?

Baarsgaard avatar Aug 26 '24 19:08 Baarsgaard