From bfb97fc62d1ba21c01c886ee6a97f1b6f4f14268 Mon Sep 17 00:00:00 2001 From: Leon Date: Fri, 20 Jun 2025 10:11:52 +0800 Subject: [PATCH] chore: fix the bug of dynamically setting the flat instance ordinal --- apis/apps/v1/types.go | 2 ++ apis/operations/v1alpha1/opsrequest_validation.go | 2 +- apis/workloads/v1/instanceset_types.go | 7 +++++-- .../crd/bases/workloads.kubeblocks.io_instancesets.yaml | 8 ++++---- controllers/apps/cluster/transformer_cluster_component.go | 1 + .../apps/component/transformer_component_workload.go | 1 + controllers/apps/shardingdefinition_controller.go | 1 - .../helm/crds/workloads.kubeblocks.io_instancesets.yaml | 8 ++++---- docs/developer_docs/api-reference/cluster.md | 2 ++ pkg/constant/labels.go | 8 ++++---- pkg/controller/factory/builder.go | 2 +- pkg/controller/instanceset/instance_util.go | 2 +- 12 files changed, 26 insertions(+), 18 deletions(-) diff --git a/apis/apps/v1/types.go b/apis/apps/v1/types.go index 8bf470af44e..a997da70367 100644 --- a/apis/apps/v1/types.go +++ b/apis/apps/v1/types.go @@ -778,6 +778,8 @@ type InstanceTemplate struct { // then the instance names generated under this InstanceTemplate would be // $(cluster.name)-$(component.name)-$(template.name)-0、$(cluster.name)-$(component.name)-$(template.name)-1 and // $(cluster.name)-$(component.name)-$(template.name)-7 + // + // +optional Ordinals Ordinals `json:"ordinals,omitempty"` // Specifies a map of key-value pairs to be merged into the Pod's existing annotations. diff --git a/apis/operations/v1alpha1/opsrequest_validation.go b/apis/operations/v1alpha1/opsrequest_validation.go index 2a48b0a302c..ce051bebea5 100644 --- a/apis/operations/v1alpha1/opsrequest_validation.go +++ b/apis/operations/v1alpha1/opsrequest_validation.go @@ -747,7 +747,7 @@ func (r *OpsRequest) getSCNameByPvcAndCheckStorageSize(ctx context.Context, } var pvc *corev1.PersistentVolumeClaim for _, pvcItem := range pvcList.Items { - if targetInsTPLName == pvcItem.Labels[constant.KBAppComponentInstanceTemplateLabelKey] { + if targetInsTPLName == pvcItem.Labels[constant.KBAppInstanceTemplateLabelKey] { pvc = &pvcItem break } diff --git a/apis/workloads/v1/instanceset_types.go b/apis/workloads/v1/instanceset_types.go index a34ea6bf916..86c3db769ad 100644 --- a/apis/workloads/v1/instanceset_types.go +++ b/apis/workloads/v1/instanceset_types.go @@ -38,9 +38,9 @@ const ( // +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas // +kubebuilder:storageversion // +kubebuilder:resource:categories={kubeblocks},shortName=its -// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.readyReplicas",description="ready replicas." // +kubebuilder:printcolumn:name="DESIRED",type="string",JSONPath=".spec.replicas",description="desired replicas." // +kubebuilder:printcolumn:name="UP-TO-DATE",type="string",JSONPath=".status.updatedReplicas",description="updated replicas." +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.readyReplicas",description="ready replicas." // +kubebuilder:printcolumn:name="AVAILABLE",type="string",JSONPath=".status.availableReplicas",description="available replicas, which are ready for at least minReadySeconds." // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" @@ -266,11 +266,14 @@ type InstanceSetStatus struct { Replicas int32 `json:"replicas"` // Ordinals is the ordinals used by the instances of the InstanceSet except the template instances. + // // +optional Ordinals []int32 `json:"ordinals,omitempty"` // readyReplicas is the number of instances created for this InstanceSet with a Ready Condition. - ReadyReplicas int32 `json:"readyReplicas,omitempty"` + // + // +optional + ReadyReplicas int32 `json:"readyReplicas"` // currentReplicas is the number of instances created by the InstanceSet controller from the InstanceSet version // indicated by CurrentRevisions. diff --git a/config/crd/bases/workloads.kubeblocks.io_instancesets.yaml b/config/crd/bases/workloads.kubeblocks.io_instancesets.yaml index fc216e70927..6a8c4e51335 100644 --- a/config/crd/bases/workloads.kubeblocks.io_instancesets.yaml +++ b/config/crd/bases/workloads.kubeblocks.io_instancesets.yaml @@ -20,10 +20,6 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: ready replicas. - jsonPath: .status.readyReplicas - name: READY - type: string - description: desired replicas. jsonPath: .spec.replicas name: DESIRED @@ -32,6 +28,10 @@ spec: jsonPath: .status.updatedReplicas name: UP-TO-DATE type: string + - description: ready replicas. + jsonPath: .status.readyReplicas + name: READY + type: string - description: available replicas, which are ready for at least minReadySeconds. jsonPath: .status.availableReplicas name: AVAILABLE diff --git a/controllers/apps/cluster/transformer_cluster_component.go b/controllers/apps/cluster/transformer_cluster_component.go index a40cffc7d1b..16f1855f87d 100644 --- a/controllers/apps/cluster/transformer_cluster_component.go +++ b/controllers/apps/cluster/transformer_cluster_component.go @@ -277,6 +277,7 @@ func copyAndMergeComponent(oldCompObj, newCompObj *appsv1.Component) *appsv1.Com compObjCopy.Spec.SchedulingPolicy = compProto.Spec.SchedulingPolicy compObjCopy.Spec.TLSConfig = compProto.Spec.TLSConfig compObjCopy.Spec.Instances = compProto.Spec.Instances + compObjCopy.Spec.FlatInstanceOrdinal = compProto.Spec.FlatInstanceOrdinal compObjCopy.Spec.OfflineInstances = compProto.Spec.OfflineInstances compObjCopy.Spec.RuntimeClassName = compProto.Spec.RuntimeClassName compObjCopy.Spec.DisableExporter = compProto.Spec.DisableExporter diff --git a/controllers/apps/component/transformer_component_workload.go b/controllers/apps/component/transformer_component_workload.go index 3b0185ae2ad..54232a98286 100644 --- a/controllers/apps/component/transformer_component_workload.go +++ b/controllers/apps/component/transformer_component_workload.go @@ -349,6 +349,7 @@ func copyAndMergeITS(oldITS, newITS *workloads.InstanceSet) *workloads.InstanceS itsObjCopy.Spec.MembershipReconfiguration = itsProto.Spec.MembershipReconfiguration itsObjCopy.Spec.TemplateVars = itsProto.Spec.TemplateVars itsObjCopy.Spec.Instances = itsProto.Spec.Instances + itsObjCopy.Spec.FlatInstanceOrdinal = itsProto.Spec.FlatInstanceOrdinal itsObjCopy.Spec.OfflineInstances = itsProto.Spec.OfflineInstances itsObjCopy.Spec.MinReadySeconds = itsProto.Spec.MinReadySeconds itsObjCopy.Spec.VolumeClaimTemplates = itsProto.Spec.VolumeClaimTemplates diff --git a/controllers/apps/shardingdefinition_controller.go b/controllers/apps/shardingdefinition_controller.go index 440efffdc3d..35c710dc6f9 100644 --- a/controllers/apps/shardingdefinition_controller.go +++ b/controllers/apps/shardingdefinition_controller.go @@ -85,7 +85,6 @@ func (r *ShardingDefinitionReconciler) Reconcile(ctx context.Context, req ctrl.R } if err := r.validate(r.Client, reqCtx, shardingDef); err != nil { - fmt.Printf("error: %v\n", err) if err1 := r.unavailable(reqCtx, shardingDef, err); err1 != nil { return intctrlutil.CheckedRequeueWithError(err1, reqCtx.Log, "") } diff --git a/deploy/helm/crds/workloads.kubeblocks.io_instancesets.yaml b/deploy/helm/crds/workloads.kubeblocks.io_instancesets.yaml index fc216e70927..6a8c4e51335 100644 --- a/deploy/helm/crds/workloads.kubeblocks.io_instancesets.yaml +++ b/deploy/helm/crds/workloads.kubeblocks.io_instancesets.yaml @@ -20,10 +20,6 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: ready replicas. - jsonPath: .status.readyReplicas - name: READY - type: string - description: desired replicas. jsonPath: .spec.replicas name: DESIRED @@ -32,6 +28,10 @@ spec: jsonPath: .status.updatedReplicas name: UP-TO-DATE type: string + - description: ready replicas. + jsonPath: .status.readyReplicas + name: READY + type: string - description: available replicas, which are ready for at least minReadySeconds. jsonPath: .status.availableReplicas name: AVAILABLE diff --git a/docs/developer_docs/api-reference/cluster.md b/docs/developer_docs/api-reference/cluster.md index c544192ec2e..590eb92af4b 100644 --- a/docs/developer_docs/api-reference/cluster.md +++ b/docs/developer_docs/api-reference/cluster.md @@ -7964,6 +7964,7 @@ Ordinals +(Optional)

Specifies the desired Ordinals of this InstanceTemplate. The Ordinals used to specify the ordinal of the instance (pod) names to be generated under this InstanceTemplate. If Ordinals are defined, their number must be equal to or more than the corresponding replicas.

@@ -30538,6 +30539,7 @@ int32 +(Optional)

readyReplicas is the number of instances created for this InstanceSet with a Ready Condition.

diff --git a/pkg/constant/labels.go b/pkg/constant/labels.go index 9b604796299..afeb6be84f1 100644 --- a/pkg/constant/labels.go +++ b/pkg/constant/labels.go @@ -44,10 +44,10 @@ const ( KBAppComponentLabelKey = "apps.kubeblocks.io/component-name" KBAppShardingNameLabelKey = "apps.kubeblocks.io/sharding-name" - KBAppComponentInstanceTemplateLabelKey = "apps.kubeblocks.io/instance-template" - PVCNameLabelKey = "apps.kubeblocks.io/pvc-name" - VolumeClaimTemplateNameLabelKey = "apps.kubeblocks.io/vct-name" - KBAppPodNameLabelKey = "apps.kubeblocks.io/pod-name" + KBAppInstanceTemplateLabelKey = "apps.kubeblocks.io/instance-template" + PVCNameLabelKey = "apps.kubeblocks.io/pvc-name" + VolumeClaimTemplateNameLabelKey = "apps.kubeblocks.io/vct-name" + KBAppPodNameLabelKey = "apps.kubeblocks.io/pod-name" RoleLabelKey = "kubeblocks.io/role" // RoleLabelKey consensusSet and replicationSet role label key KBAppServiceVersionKey = "apps.kubeblocks.io/service-version" diff --git a/pkg/controller/factory/builder.go b/pkg/controller/factory/builder.go index 6f8fd544012..c3a2651e5d8 100644 --- a/pkg/controller/factory/builder.go +++ b/pkg/controller/factory/builder.go @@ -250,7 +250,7 @@ func BuildPersistentVolumeClaimLabels(component *component.SynthesizedComponent, } pvc.Labels[constant.VolumeClaimTemplateNameLabelKey] = pvcTplName if templateName != "" { - pvc.Labels[constant.KBAppComponentInstanceTemplateLabelKey] = templateName + pvc.Labels[constant.KBAppInstanceTemplateLabelKey] = templateName } } diff --git a/pkg/controller/instanceset/instance_util.go b/pkg/controller/instanceset/instance_util.go index 490a032fbb9..b1ede7985a1 100644 --- a/pkg/controller/instanceset/instance_util.go +++ b/pkg/controller/instanceset/instance_util.go @@ -502,7 +502,7 @@ func buildInstancePVCByTemplate(name string, template *instancetemplate.Instance SetSpec(*claimTemplate.Spec.DeepCopy()). GetObject() if template.Name != "" { - pvc.Labels[constant.KBAppComponentInstanceTemplateLabelKey] = template.Name + pvc.Labels[constant.KBAppInstanceTemplateLabelKey] = template.Name } pvcs = append(pvcs, pvc) }