Skip to content

Commit f9cfcae

Browse files
committed
update
1 parent 12c56ec commit f9cfcae

40 files changed

+1114
-1727
lines changed

apis/workloads/v1/instance_types.go

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
2020
package v1
2121

2222
import (
23-
kbappsv1 "github.com/apecloud/kubeblocks/apis/apps/v1"
2423
corev1 "k8s.io/api/core/v1"
2524
rbacv1 "k8s.io/api/rbac/v1"
2625
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26+
27+
kbappsv1 "github.com/apecloud/kubeblocks/apis/apps/v1"
2728
)
2829

2930
// +genclient
3031
// +kubebuilder:object:root=true
3132
// +kubebuilder:subresource:status
3233
// +kubebuilder:resource:categories={kubeblocks},shortName=inst
34+
// +kubebuilder:printcolumn:name="UP-TO-DATE",type="string",JSONPath=".status.upToDate",description="update to date."
35+
// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.ready",description="ready."
36+
// +kubebuilder:printcolumn:name="AVAILABLE",type="string",JSONPath=".status.available",description="available."
37+
// +kubebuilder:printcolumn:name="ROLE",type="string",JSONPath=".status.role2",description="with role."
3338
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
3439

3540
// Instance is the Schema for the instances API
@@ -92,6 +97,9 @@ type InstanceSpec struct {
9297
// +optional
9398
PersistentVolumeClaimRetentionPolicy *PersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty"`
9499

100+
// +optional
101+
InstanceSetName string `json:"instanceSetName,omitempty"`
102+
95103
// +optional
96104
InstanceTemplateName string `json:"instanceTemplateName,omitempty"`
97105

@@ -140,6 +148,12 @@ type InstanceStatus2 struct {
140148
// +optional
141149
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
142150

151+
// Represents the latest available observations of an instance's current state.
152+
// Known .status.conditions.type are: "InstanceFailure", "InstanceReady", "InstanceAvailable"
153+
//
154+
// +optional
155+
Conditions []metav1.Condition `json:"conditions,omitempty"`
156+
143157
// currentRevision, if not empty, indicates the version of the Instance used to generate pod.
144158
//
145159
// +optional
@@ -150,22 +164,31 @@ type InstanceStatus2 struct {
150164
// +optional
151165
UpdateRevision string `json:"updateRevision,omitempty"`
152166

167+
// Represents whether the instance is up-to-date.
168+
//
169+
// +optional
170+
UpToDate string `json:"upToDate,omitempty"`
171+
172+
// +optional
173+
Ready string `json:"ready,omitempty"`
174+
175+
// +optional
176+
Available string `json:"available,omitempty"`
177+
153178
// Represents the role of the instance observed.
154179
//
155180
// +optional
156181
Role *string `json:"role,omitempty"`
157182

158-
// Represents the latest available observations of an instance's current state.
159-
// Known .status.conditions.type are: "InstanceFailure", "InstanceReady", "InstanceAvailable"
183+
// Represents the role of the instance observed.
160184
//
161185
// +optional
162-
Conditions []metav1.Condition `json:"conditions,omitempty"`
186+
Role2 string `json:"role2,omitempty"`
163187
}
164188

165189
type InstanceAssistantObject struct {
166190
ConfigMap *corev1.ConfigMap `json:"configMap,omitempty"`
167191
Secret *corev1.Secret `json:"secret,omitempty"`
168-
Service *corev1.Service `json:"service,omitempty"`
169192
ServiceAccount *corev1.ServiceAccount `json:"serviceAccount,omitempty"`
170193
Role *rbacv1.Role `json:"clusterRole,omitempty"`
171194
RoleBinding *rbacv1.RoleBinding `json:"roleBinding,omitempty"`

apis/workloads/v1/zz_generated.deepcopy.go

Lines changed: 5 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/workloads.kubeblocks.io_instances.yaml

Lines changed: 28 additions & 540 deletions
Large diffs are not rendered by default.

config/rbac/role.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,12 @@ rules:
498498
- patch
499499
- update
500500
- watch
501+
- apiGroups:
502+
- ""
503+
resources:
504+
- serviceaccounts/finalizers
505+
verbs:
506+
- update
501507
- apiGroups:
502508
- ""
503509
resources:
@@ -958,6 +964,12 @@ rules:
958964
- patch
959965
- update
960966
- watch
967+
- apiGroups:
968+
- rbac.authorization.k8s.io
969+
resources:
970+
- rolebindings/finalizers
971+
verbs:
972+
- update
961973
- apiGroups:
962974
- rbac.authorization.k8s.io
963975
resources:
@@ -969,9 +981,19 @@ rules:
969981
resources:
970982
- roles
971983
verbs:
984+
- create
985+
- delete
972986
- get
973987
- list
988+
- patch
989+
- update
974990
- watch
991+
- apiGroups:
992+
- rbac.authorization.k8s.io
993+
resources:
994+
- roles/finalizers
995+
verbs:
996+
- update
975997
- apiGroups:
976998
- rbac.authorization.k8s.io
977999
resources:

controllers/apps/component/transformer_component_workload.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,9 @@ func copyAndMergeITS(oldITS, newITS *workloads.InstanceSet) *workloads.InstanceS
362362
itsObjCopy.Spec.Configs = itsProto.Spec.Configs
363363
itsObjCopy.Spec.Selector = itsProto.Spec.Selector
364364
itsObjCopy.Spec.DisableDefaultHeadlessService = itsProto.Spec.DisableDefaultHeadlessService
365+
itsObjCopy.Spec.EnableInstanceAPI = itsProto.Spec.EnableInstanceAPI
366+
itsObjCopy.Spec.AssistantObjects = itsProto.Spec.AssistantObjects
367+
itsObjCopy.Spec.CloneAssistantObjects = itsProto.Spec.CloneAssistantObjects
365368

366369
if itsObjCopy.Spec.InstanceUpdateStrategy != nil && itsObjCopy.Spec.InstanceUpdateStrategy.RollingUpdate != nil {
367370
// use oldITS because itsObjCopy has been overwritten

controllers/k8score/event_controller.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"sigs.k8s.io/controller-runtime/pkg/log"
3434

3535
"github.com/apecloud/kubeblocks/pkg/controller/component"
36+
"github.com/apecloud/kubeblocks/pkg/controller/instance"
3637
"github.com/apecloud/kubeblocks/pkg/controller/instanceset"
3738
"github.com/apecloud/kubeblocks/pkg/controller/multicluster"
3839
intctrlutil "github.com/apecloud/kubeblocks/pkg/controllerutil"
@@ -80,6 +81,7 @@ func (r *EventReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
8081
}
8182

8283
handlers := []eventHandler{
84+
&instance.PodRoleEventHandler{},
8385
&instanceset.PodRoleEventHandler{},
8486
&component.AvailableEventHandler{},
8587
&component.KBAgentTaskEventHandler{},

controllers/workloads/instance_controller.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"context"
2424

2525
corev1 "k8s.io/api/core/v1"
26+
rbacv1 "k8s.io/api/rbac/v1"
2627
"k8s.io/apimachinery/pkg/runtime"
2728
"k8s.io/client-go/tools/record"
2829
ctrl "sigs.k8s.io/controller-runtime"
@@ -57,16 +58,21 @@ type InstanceReconciler struct {
5758
// +kubebuilder:rbac:groups=core,resources=persistentvolumeclaims/status,verbs=get
5859
// +kubebuilder:rbac:groups=core,resources=persistentvolumeclaims/finalizers,verbs=update
5960

60-
// +kubebuilder:rbac:groups=core,resources=services,verbs=get;list;watch;create;update;patch;delete;deletecollection
61-
// +kubebuilder:rbac:groups=core,resources=services/status,verbs=get
62-
// +kubebuilder:rbac:groups=core,resources=services/finalizers,verbs=update
63-
6461
// +kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;patch;delete;deletecollection
6562
// +kubebuilder:rbac:groups=core,resources=configmaps/finalizers,verbs=update
6663

6764
// +kubebuilder:rbac:groups=core,resources=secrets,verbs=get;list;watch;create;update;patch;delete;deletecollection
6865
// +kubebuilder:rbac:groups=core,resources=secrets/finalizers,verbs=update
6966

67+
// +kubebuilder:rbac:groups=core,resources=serviceaccounts,verbs=get;list;watch;create;update;patch;delete
68+
// +kubebuilder:rbac:groups=core,resources=serviceaccounts/finalizers,verbs=update
69+
70+
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=roles,verbs=get;list;watch;create;update;patch;delete
71+
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=roles/finalizers,verbs=update
72+
73+
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=rolebindings,verbs=get;list;watch;create;update;patch;delete
74+
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=rolebindings/finalizers,verbs=update
75+
7076
// Reconcile is part of the main kubernetes reconciliation loop which aims to
7177
// move the current state of the cluster closer to the desired state.
7278
// TODO(user): Modify the Reconcile function to compare the state specified by
@@ -84,6 +90,7 @@ func (r *InstanceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
8490
Do(instance.NewFixMetaReconciler()).
8591
Do(instance.NewDeletionReconciler()).
8692
Do(instance.NewStatusReconciler()).
93+
Do(instance.NewRevisionUpdateReconciler()).
8794
Do(instance.NewAssistantObjectReconciler()).
8895
Do(instance.NewAlignmentReconciler()).
8996
Do(instance.NewUpdateReconciler()).
@@ -99,8 +106,10 @@ func (r *InstanceReconciler) SetupWithManager(mgr ctrl.Manager) error {
99106
}).
100107
Owns(&corev1.Pod{}).
101108
Owns(&corev1.PersistentVolumeClaim{}).
102-
Owns(&corev1.Service{}).
103109
Owns(&corev1.ConfigMap{}).
104110
Owns(&corev1.Secret{}).
111+
Owns(&corev1.ServiceAccount{}).
112+
Owns(&rbacv1.Role{}).
113+
Owns(&rbacv1.RoleBinding{}).
105114
Complete(r)
106115
}

controllers/workloads/instanceset_controller.go

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ package workloads
2222
import (
2323
"context"
2424

25-
batchv1 "k8s.io/api/batch/v1"
2625
corev1 "k8s.io/api/core/v1"
2726
"k8s.io/apimachinery/pkg/runtime"
2827
"k8s.io/client-go/tools/record"
@@ -61,13 +60,13 @@ type InstanceSetReconciler struct {
6160
// +kubebuilder:rbac:groups=core,resources=persistentvolumeclaims/status,verbs=get
6261
// +kubebuilder:rbac:groups=core,resources=persistentvolumeclaims/finalizers,verbs=update
6362

64-
// +kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;patch;delete;deletecollection
65-
// +kubebuilder:rbac:groups=core,resources=configmaps/finalizers,verbs=update
66-
6763
// +kubebuilder:rbac:groups=core,resources=services,verbs=get;list;watch;create;update;patch;delete;deletecollection
6864
// +kubebuilder:rbac:groups=core,resources=services/status,verbs=get
6965
// +kubebuilder:rbac:groups=core,resources=services/finalizers,verbs=update
7066

67+
// +kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;patch;delete;deletecollection
68+
// +kubebuilder:rbac:groups=core,resources=configmaps/finalizers,verbs=update
69+
7170
// Reconcile is part of the main kubernetes reconciliation loop which aims to
7271
// move the current state of the cluster closer to the desired state.
7372
// TODO(user): Modify the Reconcile function to compare the state specified by
@@ -122,27 +121,19 @@ func (r *InstanceSetReconciler) setupWithManager(mgr ctrl.Manager, ctx *handler.
122121
}).
123122
Watches(&corev1.Pod{}, podHandler).
124123
Owns(&corev1.PersistentVolumeClaim{}).
125-
Owns(&batchv1.Job{}).
126124
Owns(&corev1.Service{}).
127125
Owns(&corev1.ConfigMap{}).
128126
Complete(r)
129127
}
130128

131-
func (r *InstanceSetReconciler) setupWithMultiClusterManager(mgr ctrl.Manager,
132-
multiClusterMgr multicluster.Manager, ctx *handler.FinderContext) error {
133-
nameLabels := []string{constant.AppInstanceLabelKey, constant.KBAppComponentLabelKey}
134-
delegatorFinder := handler.NewDelegatorFinder(&workloads.InstanceSet{}, nameLabels)
135-
// TODO: modify handler.getObjectFromKey to support running Job in data clusters
136-
jobHandler := handler.NewBuilder(ctx).AddFinder(delegatorFinder).Build()
137-
129+
func (r *InstanceSetReconciler) setupWithMultiClusterManager(mgr ctrl.Manager, multiClusterMgr multicluster.Manager, ctx *handler.FinderContext) error {
138130
b := intctrlutil.NewControllerManagedBy(mgr).
139131
For(&workloads.InstanceSet{}).
140132
WithOptions(controller.Options{
141133
MaxConcurrentReconciles: viper.GetInt(constant.CfgKBReconcileWorkers),
142134
})
143135

144-
multiClusterMgr.Watch(b, &batchv1.Job{}, jobHandler).
145-
Own(b, &corev1.Pod{}, &workloads.InstanceSet{}).
136+
multiClusterMgr.Own(b, &corev1.Pod{}, &workloads.InstanceSet{}).
146137
Own(b, &corev1.PersistentVolumeClaim{}, &workloads.InstanceSet{})
147138

148139
return b.Complete(r)

controllers/workloads/instanceset_controller2.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ package workloads
2222
import (
2323
"context"
2424

25+
corev1 "k8s.io/api/core/v1"
2526
"k8s.io/apimachinery/pkg/runtime"
2627
"k8s.io/client-go/tools/record"
2728
ctrl "sigs.k8s.io/controller-runtime"
@@ -54,6 +55,7 @@ func (r *InstanceSetReconciler2) Reconcile(ctx context.Context, req ctrl.Request
5455
Do(instanceset2.NewValidationReconciler()).
5556
Do(instanceset2.NewStatusReconciler()).
5657
Do(instanceset2.NewRevisionUpdateReconciler()).
58+
Do(instanceset2.NewAssistantObjectReconciler()).
5759
Do(instanceset2.NewReplicasAlignmentReconciler()).
5860
Do(instanceset2.NewUpdateReconciler()).
5961
Commit()
@@ -75,5 +77,6 @@ func (r *InstanceSetReconciler2) setupWithManager(mgr ctrl.Manager, _ *handler.F
7577
MaxConcurrentReconciles: viper.GetInt(constant.CfgKBReconcileWorkers),
7678
}).
7779
Owns(&workloads.Instance{}).
80+
Owns(&corev1.Service{}).
7881
Complete(r)
7982
}

deploy/helm/config/rbac/role.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,12 @@ rules:
498498
- patch
499499
- update
500500
- watch
501+
- apiGroups:
502+
- ""
503+
resources:
504+
- serviceaccounts/finalizers
505+
verbs:
506+
- update
501507
- apiGroups:
502508
- ""
503509
resources:
@@ -958,6 +964,12 @@ rules:
958964
- patch
959965
- update
960966
- watch
967+
- apiGroups:
968+
- rbac.authorization.k8s.io
969+
resources:
970+
- rolebindings/finalizers
971+
verbs:
972+
- update
961973
- apiGroups:
962974
- rbac.authorization.k8s.io
963975
resources:
@@ -969,9 +981,19 @@ rules:
969981
resources:
970982
- roles
971983
verbs:
984+
- create
985+
- delete
972986
- get
973987
- list
988+
- patch
989+
- update
974990
- watch
991+
- apiGroups:
992+
- rbac.authorization.k8s.io
993+
resources:
994+
- roles/finalizers
995+
verbs:
996+
- update
975997
- apiGroups:
976998
- rbac.authorization.k8s.io
977999
resources:

0 commit comments

Comments
 (0)