Skip to content

Commit

Permalink
feat(cluster): support redis-cluster topologySpreadConstraints(# 868) (
Browse files Browse the repository at this point in the history
…#1177)

* feat: v1beta2 redis-cluster support TopologySpreadConstraints

Signed-off-by: xiaozhuang <[email protected]>

* chore: topologySpreadConstraints example

Signed-off-by: xiaozhuang <[email protected]>

* chore: lint

Signed-off-by: xiaozhuang <[email protected]>

* chore: lint

Signed-off-by: xiaozhuang <[email protected]>

---------

Signed-off-by: xiaozhuang <[email protected]>
Co-authored-by: xiaozhuang <[email protected]>
  • Loading branch information
xiaozhuang-a and xiaozhuang authored Dec 21, 2024
1 parent 2c7022a commit ea98aa7
Show file tree
Hide file tree
Showing 8 changed files with 846 additions and 19 deletions.
34 changes: 18 additions & 16 deletions api/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,27 +105,29 @@ type Sidecar struct {
// RedisLeader interface will have the redis leader configuration
// +k8s:deepcopy-gen=true
type RedisLeader struct {
Replicas *int32 `json:"replicas,omitempty"`
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
Affinity *corev1.Affinity `json:"affinity,omitempty"`
PodDisruptionBudget *RedisPodDisruptionBudget `json:"pdb,omitempty"`
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
Replicas *int32 `json:"replicas,omitempty"`
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
Affinity *corev1.Affinity `json:"affinity,omitempty"`
PodDisruptionBudget *RedisPodDisruptionBudget `json:"pdb,omitempty"`
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
TopologySpreadConstraints []corev1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"`
}

// RedisFollower interface will have the redis follower configuration
// +k8s:deepcopy-gen=true
type RedisFollower struct {
Replicas *int32 `json:"replicas,omitempty"`
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
Affinity *corev1.Affinity `json:"affinity,omitempty"`
PodDisruptionBudget *RedisPodDisruptionBudget `json:"pdb,omitempty"`
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
Replicas *int32 `json:"replicas,omitempty"`
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
Affinity *corev1.Affinity `json:"affinity,omitempty"`
PodDisruptionBudget *RedisPodDisruptionBudget `json:"pdb,omitempty"`
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
TopologySpreadConstraints []corev1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"`
}

// RedisPodDisruptionBudget configure a PodDisruptionBudget on the resource (leader/follower)
Expand Down
12 changes: 12 additions & 0 deletions api/v1beta1/rediscluster_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ func (src *RedisCluster) ConvertTo(dstRaw conversion.Hub) error {
if src.Spec.RedisLeader.NodeSelector != nil {
dst.Spec.RedisLeader.NodeSelector = src.Spec.RedisLeader.NodeSelector
}
if src.Spec.RedisLeader.TopologySpreadConstraints != nil {
dst.Spec.RedisLeader.TopologySpreadConstraints = src.Spec.RedisLeader.TopologySpreadConstraints
}

// RedisFollower
dst.Spec.RedisFollower = redisv1beta2.RedisFollower{}
Expand Down Expand Up @@ -75,6 +78,9 @@ func (src *RedisCluster) ConvertTo(dstRaw conversion.Hub) error {
if src.Spec.RedisFollower.NodeSelector != nil {
dst.Spec.RedisFollower.NodeSelector = src.Spec.RedisFollower.NodeSelector
}
if src.Spec.RedisFollower.TopologySpreadConstraints != nil {
dst.Spec.RedisFollower.TopologySpreadConstraints = src.Spec.RedisFollower.TopologySpreadConstraints
}
// RedisExporter
if src.Spec.RedisExporter != nil {
dst.Spec.RedisExporter = &redisv1beta2.RedisExporter{}
Expand Down Expand Up @@ -168,6 +174,9 @@ func (dst *RedisCluster) ConvertFrom(srcRaw conversion.Hub) error {
if src.Spec.RedisLeader.NodeSelector != nil {
dst.Spec.RedisLeader.NodeSelector = src.Spec.RedisLeader.NodeSelector
}
if src.Spec.RedisLeader.TopologySpreadConstraints != nil {
dst.Spec.RedisLeader.TopologySpreadConstraints = src.Spec.RedisLeader.TopologySpreadConstraints
}

// RedisFollower
dst.Spec.RedisFollower = RedisFollower{}
Expand Down Expand Up @@ -195,6 +204,9 @@ func (dst *RedisCluster) ConvertFrom(srcRaw conversion.Hub) error {
if src.Spec.RedisFollower.NodeSelector != nil {
dst.Spec.RedisFollower.NodeSelector = src.Spec.RedisFollower.NodeSelector
}
if src.Spec.RedisFollower.TopologySpreadConstraints != nil {
dst.Spec.RedisFollower.TopologySpreadConstraints = src.Spec.RedisFollower.TopologySpreadConstraints
}
// RedisExporter
if src.Spec.RedisExporter != nil {
dst.Spec.RedisExporter = &RedisExporter{}
Expand Down
14 changes: 14 additions & 0 deletions api/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit ea98aa7

Please sign in to comment.