From 3d38af7915fa85be8f94c2007a2561a0a3efbfec Mon Sep 17 00:00:00 2001 From: Itamar Syn-Hershko Date: Sun, 7 Sep 2025 06:53:21 +0300 Subject: [PATCH 1/2] feat: make dashboard replicas and version fields optional Make dashboard configuration less verbose by making replicas and version fields optional when dashboards are disabled. Changes: - Add 'omitempty' tag to DashboardsConfig.Replicas and Version fields - Add kubebuilder default=1 annotation for replicas field - Use cluster version unless dashboards version is explicitly declared - Regenerate CRDs to reflect schema changes Before: dashboards: enabled: false replicas: 0 # Required but redundant version: "2.9.0" # Required but redundant After: dashboards: enabled: false # No longer requires replicas and version Signed-off-by: Itamar Syn-Hershko --- opensearch-operator/api/v1/opensearch_types.go | 5 +++-- .../crd/bases/opensearch.opster.io_opensearchclusters.yaml | 4 +--- opensearch-operator/pkg/helpers/reconcile-helpers.go | 7 ++++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/opensearch-operator/api/v1/opensearch_types.go b/opensearch-operator/api/v1/opensearch_types.go index e044660d4..400be1ea5 100644 --- a/opensearch-operator/api/v1/opensearch_types.go +++ b/opensearch-operator/api/v1/opensearch_types.go @@ -189,9 +189,10 @@ type DashboardsConfig struct { *ImageSpec `json:",inline,omitempty"` Enable bool `json:"enable,omitempty"` Resources corev1.ResourceRequirements `json:"resources,omitempty"` - Replicas int32 `json:"replicas"` + //+kubebuilder:default=1 + Replicas int32 `json:"replicas,omitempty"` Tls *DashboardsTlsConfig `json:"tls,omitempty"` - Version string `json:"version"` + Version string `json:"version,omitempty"` // Base Path for Opensearch Clusters running behind a reverse proxy BasePath string `json:"basePath,omitempty"` // Additional properties for opensearch_dashboards.yaml diff --git a/opensearch-operator/config/crd/bases/opensearch.opster.io_opensearchclusters.yaml b/opensearch-operator/config/crd/bases/opensearch.opster.io_opensearchclusters.yaml index 13385cd89..825407893 100644 --- a/opensearch-operator/config/crd/bases/opensearch.opster.io_opensearchclusters.yaml +++ b/opensearch-operator/config/crd/bases/opensearch.opster.io_opensearchclusters.yaml @@ -3039,6 +3039,7 @@ spec: type: object type: object replicas: + default: 1 format: int32 type: integer resources: @@ -3396,9 +3397,6 @@ spec: type: array version: type: string - required: - - replicas - - version type: object general: description: |- diff --git a/opensearch-operator/pkg/helpers/reconcile-helpers.go b/opensearch-operator/pkg/helpers/reconcile-helpers.go index c9a01322c..d72355024 100644 --- a/opensearch-operator/pkg/helpers/reconcile-helpers.go +++ b/opensearch-operator/pkg/helpers/reconcile-helpers.go @@ -78,8 +78,13 @@ func ResolveDashboardsImage(cr *opsterv1.OpenSearchCluster) (result opsterv1.Ima defaultRepo = *cr.Spec.General.DefaultRepo } + version := cr.Spec.Dashboards.Version + if version == "" { + version = cr.Spec.General.Version + } + result.Image = ptr.To(fmt.Sprintf("%s:%s", - path.Join(defaultRepo, defaultImage), cr.Spec.Dashboards.Version)) + path.Join(defaultRepo, defaultImage), version)) return } From e5a789c0e9398be59b7a78f2b0d9d04e27b5a5be Mon Sep 17 00:00:00 2001 From: josedev-union Date: Tue, 7 Oct 2025 08:48:41 +0200 Subject: [PATCH 2/2] fix lint Signed-off-by: josedev-union --- opensearch-operator/api/v1/opensearch_types.go | 6 +++--- opensearch-operator/pkg/helpers/reconcile-helpers.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/opensearch-operator/api/v1/opensearch_types.go b/opensearch-operator/api/v1/opensearch_types.go index 400be1ea5..813dbbd80 100644 --- a/opensearch-operator/api/v1/opensearch_types.go +++ b/opensearch-operator/api/v1/opensearch_types.go @@ -190,9 +190,9 @@ type DashboardsConfig struct { Enable bool `json:"enable,omitempty"` Resources corev1.ResourceRequirements `json:"resources,omitempty"` //+kubebuilder:default=1 - Replicas int32 `json:"replicas,omitempty"` - Tls *DashboardsTlsConfig `json:"tls,omitempty"` - Version string `json:"version,omitempty"` + Replicas int32 `json:"replicas,omitempty"` + Tls *DashboardsTlsConfig `json:"tls,omitempty"` + Version string `json:"version,omitempty"` // Base Path for Opensearch Clusters running behind a reverse proxy BasePath string `json:"basePath,omitempty"` // Additional properties for opensearch_dashboards.yaml diff --git a/opensearch-operator/pkg/helpers/reconcile-helpers.go b/opensearch-operator/pkg/helpers/reconcile-helpers.go index d72355024..75c27180f 100644 --- a/opensearch-operator/pkg/helpers/reconcile-helpers.go +++ b/opensearch-operator/pkg/helpers/reconcile-helpers.go @@ -82,7 +82,7 @@ func ResolveDashboardsImage(cr *opsterv1.OpenSearchCluster) (result opsterv1.Ima if version == "" { version = cr.Spec.General.Version } - + result.Image = ptr.To(fmt.Sprintf("%s:%s", path.Join(defaultRepo, defaultImage), version)) return