Skip to content

Commit 63061fb

Browse files
committed
add support for configurable probe handlers [Signed-off-by: Jordan Rodgers <com6056@gmail.com>]
1 parent fae7db7 commit 63061fb

27 files changed

+2808
-750
lines changed

api/common_types.go

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -76,26 +76,6 @@ type TLSConfig struct {
7676
Secret corev1.SecretVolumeSource `json:"secret"`
7777
}
7878

79-
// Probe is a interface for ReadinessProbe and LivenessProbe
80-
// +k8s:deepcopy-gen=true
81-
type Probe struct {
82-
// +kubebuilder:validation:Minimum=1
83-
// +kubebuilder:default=1
84-
InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty" protobuf:"varint,2,opt,name=initialDelaySeconds"`
85-
// +kubebuilder:validation:Minimum=1
86-
// +kubebuilder:default=1
87-
TimeoutSeconds int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,3,opt,name=timeoutSeconds"`
88-
// +kubebuilder:validation:Minimum=1
89-
// +kubebuilder:default=10
90-
PeriodSeconds int32 `json:"periodSeconds,omitempty" protobuf:"varint,4,opt,name=periodSeconds"`
91-
// +kubebuilder:validation:Minimum=1
92-
// +kubebuilder:default=1
93-
SuccessThreshold int32 `json:"successThreshold,omitempty" protobuf:"varint,5,opt,name=successThreshold"`
94-
// +kubebuilder:validation:Minimum=1
95-
// +kubebuilder:default=3
96-
FailureThreshold int32 `json:"failureThreshold,omitempty" protobuf:"varint,6,opt,name=failureThreshold"`
97-
}
98-
9979
// Sidecar for each Redis pods
10080
// +k8s:deepcopy-gen=true
10181
type Sidecar struct {
@@ -113,12 +93,10 @@ type RedisLeader struct {
11393
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
11494
Affinity *corev1.Affinity `json:"affinity,omitempty"`
11595
PodDisruptionBudget *RedisPodDisruptionBudget `json:"pdb,omitempty"`
116-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
117-
ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
118-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
119-
LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
120-
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
121-
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
96+
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
97+
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
98+
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
99+
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
122100
}
123101

124102
// RedisFollower interface will have the redis follower configuration
@@ -128,12 +106,10 @@ type RedisFollower struct {
128106
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
129107
Affinity *corev1.Affinity `json:"affinity,omitempty"`
130108
PodDisruptionBudget *RedisPodDisruptionBudget `json:"pdb,omitempty"`
131-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
132-
ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
133-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
134-
LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
135-
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
136-
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
109+
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
110+
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
111+
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
112+
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
137113
}
138114

139115
// RedisPodDisruptionBudget configure a PodDisruptionBudget on the resource (leader/follower)

api/v1beta1/common_types.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,6 @@ type TLSConfig struct {
5858
common.TLSConfig `json:",inline"`
5959
}
6060

61-
// Probe is a interface for ReadinessProbe and LivenessProbe
62-
type Probe struct {
63-
common.Probe `json:",inline"`
64-
}
65-
6661
// Sidecar for each Redis pods
6762
type Sidecar struct {
6863
common.Sidecar `json:",inline"`

api/v1beta1/redis_conversion.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package v1beta1
22

33
import (
44
redisv1beta2 "github.com/OT-CONTAINER-KIT/redis-operator/api/v1beta2"
5+
corev1 "k8s.io/api/core/v1"
56
"sigs.k8s.io/controller-runtime/pkg/conversion"
67
)
78

@@ -60,13 +61,13 @@ func (src *Redis) ConvertTo(dstRaw conversion.Hub) error {
6061
}
6162
// ReadinessProbe
6263
if src.Spec.ReadinessProbe != nil {
63-
dst.Spec.ReadinessProbe = &redisv1beta2.Probe{}
64-
dst.Spec.ReadinessProbe.Probe = src.Spec.ReadinessProbe.Probe
64+
dst.Spec.ReadinessProbe = &corev1.Probe{}
65+
dst.Spec.ReadinessProbe = src.Spec.ReadinessProbe
6566
}
6667
// LivenessProbe
6768
if src.Spec.LivenessProbe != nil {
68-
dst.Spec.LivenessProbe = &redisv1beta2.Probe{}
69-
dst.Spec.LivenessProbe.Probe = src.Spec.LivenessProbe.Probe
69+
dst.Spec.LivenessProbe = &corev1.Probe{}
70+
dst.Spec.LivenessProbe = src.Spec.LivenessProbe
7071
}
7172
// Sidecars
7273
if src.Spec.Sidecars != nil {
@@ -141,13 +142,13 @@ func (dst *Redis) ConvertFrom(srcRaw conversion.Hub) error {
141142
}
142143
// ReadinessProbe
143144
if src.Spec.ReadinessProbe != nil {
144-
dst.Spec.ReadinessProbe = &Probe{}
145-
dst.Spec.ReadinessProbe.Probe = src.Spec.ReadinessProbe.Probe
145+
dst.Spec.ReadinessProbe = &corev1.Probe{}
146+
dst.Spec.ReadinessProbe = src.Spec.ReadinessProbe
146147
}
147148
// LivenessProbe
148149
if src.Spec.LivenessProbe != nil {
149-
dst.Spec.LivenessProbe = &Probe{}
150-
dst.Spec.LivenessProbe.Probe = src.Spec.LivenessProbe.Probe
150+
dst.Spec.LivenessProbe = &corev1.Probe{}
151+
dst.Spec.LivenessProbe = src.Spec.LivenessProbe
151152
}
152153
// Sidecars
153154
if src.Spec.Sidecars != nil {

api/v1beta1/redis_types.go

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,20 @@ import (
2626

2727
// RedisSpec defines the desired state of Redis
2828
type RedisSpec struct {
29-
KubernetesConfig KubernetesConfig `json:"kubernetesConfig"`
30-
RedisExporter *RedisExporter `json:"redisExporter,omitempty"`
31-
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
32-
Storage *Storage `json:"storage,omitempty"`
33-
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
34-
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
35-
PriorityClassName string `json:"priorityClassName,omitempty"`
36-
Affinity *corev1.Affinity `json:"affinity,omitempty"`
37-
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
38-
TLS *TLSConfig `json:"TLS,omitempty"`
39-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
40-
ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
41-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
42-
LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
43-
Sidecars *[]Sidecar `json:"sidecars,omitempty"`
44-
ServiceAccountName *string `json:"serviceAccountName,omitempty"`
29+
KubernetesConfig KubernetesConfig `json:"kubernetesConfig"`
30+
RedisExporter *RedisExporter `json:"redisExporter,omitempty"`
31+
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
32+
Storage *Storage `json:"storage,omitempty"`
33+
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
34+
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
35+
PriorityClassName string `json:"priorityClassName,omitempty"`
36+
Affinity *corev1.Affinity `json:"affinity,omitempty"`
37+
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
38+
TLS *TLSConfig `json:"TLS,omitempty"`
39+
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
40+
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
41+
Sidecars *[]Sidecar `json:"sidecars,omitempty"`
42+
ServiceAccountName *string `json:"serviceAccountName,omitempty"`
4543
}
4644

4745
// RedisStatus defines the observed state of Redis

api/v1beta1/rediscluster_types.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,8 @@ type RedisClusterSpec struct {
2727
Size *int32 `json:"clusterSize"`
2828
KubernetesConfig KubernetesConfig `json:"kubernetesConfig"`
2929
// +kubebuilder:default:=v7
30-
ClusterVersion *string `json:"clusterVersion,omitempty"`
31-
// +kubebuilder:default:={livenessProbe:{initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}, readinessProbe:{initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}}
32-
RedisLeader RedisLeader `json:"redisLeader,omitempty"`
33-
// +kubebuilder:default:={livenessProbe:{initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}, readinessProbe:{initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}}
30+
ClusterVersion *string `json:"clusterVersion,omitempty"`
31+
RedisLeader RedisLeader `json:"redisLeader,omitempty"`
3432
RedisFollower RedisFollower `json:"redisFollower,omitempty"`
3533
RedisExporter *RedisExporter `json:"redisExporter,omitempty"`
3634
Storage *Storage `json:"storage,omitempty"`

api/v1beta1/redisreplication_conversion.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package v1beta1
22

33
import (
44
redisv1beta2 "github.com/OT-CONTAINER-KIT/redis-operator/api/v1beta2"
5+
corev1 "k8s.io/api/core/v1"
56
"sigs.k8s.io/controller-runtime/pkg/conversion"
67
)
78

@@ -59,13 +60,13 @@ func (src *RedisReplication) ConvertTo(dstRaw conversion.Hub) error {
5960
}
6061
// ReadinessProbe
6162
if src.Spec.ReadinessProbe != nil {
62-
dst.Spec.ReadinessProbe = &redisv1beta2.Probe{}
63-
dst.Spec.ReadinessProbe.Probe = src.Spec.ReadinessProbe.Probe
63+
dst.Spec.ReadinessProbe = &corev1.Probe{}
64+
dst.Spec.ReadinessProbe = src.Spec.ReadinessProbe
6465
}
6566
// LivenessProbe
6667
if src.Spec.LivenessProbe != nil {
67-
dst.Spec.LivenessProbe = &redisv1beta2.Probe{}
68-
dst.Spec.LivenessProbe.Probe = src.Spec.LivenessProbe.Probe
68+
dst.Spec.LivenessProbe = &corev1.Probe{}
69+
dst.Spec.LivenessProbe = src.Spec.LivenessProbe
6970
}
7071
// Sidecars
7172
if src.Spec.Sidecars != nil {
@@ -138,13 +139,13 @@ func (dst *RedisReplication) ConvertFrom(srcRaw conversion.Hub) error {
138139
}
139140
// ReadinessProbe
140141
if src.Spec.ReadinessProbe != nil {
141-
dst.Spec.ReadinessProbe = &Probe{}
142-
dst.Spec.ReadinessProbe.Probe = src.Spec.ReadinessProbe.Probe
142+
dst.Spec.ReadinessProbe = &corev1.Probe{}
143+
dst.Spec.ReadinessProbe = src.Spec.ReadinessProbe
143144
}
144145
// LivenessProbe
145146
if src.Spec.LivenessProbe != nil {
146-
dst.Spec.ReadinessProbe = &Probe{}
147-
dst.Spec.LivenessProbe.Probe = src.Spec.LivenessProbe.Probe
147+
dst.Spec.ReadinessProbe = &corev1.Probe{}
148+
dst.Spec.LivenessProbe = src.Spec.LivenessProbe
148149
}
149150
// Sidecars
150151
if src.Spec.Sidecars != nil {

api/v1beta1/redisreplication_types.go

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,21 @@ import (
66
)
77

88
type RedisReplicationSpec struct {
9-
Size *int32 `json:"clusterSize"`
10-
KubernetesConfig KubernetesConfig `json:"kubernetesConfig"`
11-
RedisExporter *RedisExporter `json:"redisExporter,omitempty"`
12-
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
13-
Storage *Storage `json:"storage,omitempty"`
14-
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
15-
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
16-
PriorityClassName string `json:"priorityClassName,omitempty"`
17-
Affinity *corev1.Affinity `json:"affinity,omitempty"`
18-
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
19-
TLS *TLSConfig `json:"TLS,omitempty"`
20-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
21-
ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
22-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
23-
LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
24-
Sidecars *[]Sidecar `json:"sidecars,omitempty"`
25-
ServiceAccountName *string `json:"serviceAccountName,omitempty"`
9+
Size *int32 `json:"clusterSize"`
10+
KubernetesConfig KubernetesConfig `json:"kubernetesConfig"`
11+
RedisExporter *RedisExporter `json:"redisExporter,omitempty"`
12+
RedisConfig *RedisConfig `json:"redisConfig,omitempty"`
13+
Storage *Storage `json:"storage,omitempty"`
14+
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
15+
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
16+
PriorityClassName string `json:"priorityClassName,omitempty"`
17+
Affinity *corev1.Affinity `json:"affinity,omitempty"`
18+
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
19+
TLS *TLSConfig `json:"TLS,omitempty"`
20+
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
21+
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
22+
Sidecars *[]Sidecar `json:"sidecars,omitempty"`
23+
ServiceAccountName *string `json:"serviceAccountName,omitempty"`
2624
}
2725

2826
func (cr *RedisReplicationSpec) GetReplicationCounts(t string) int32 {

api/v1beta1/redissentinel_conversion.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package v1beta1
22

33
import (
44
redisv1beta2 "github.com/OT-CONTAINER-KIT/redis-operator/api/v1beta2"
5+
corev1 "k8s.io/api/core/v1"
56
"sigs.k8s.io/controller-runtime/pkg/conversion"
67
)
78

@@ -48,13 +49,13 @@ func (src *RedisSentinel) ConvertTo(dstRaw conversion.Hub) error {
4849
}
4950
// ReadinessProbe
5051
if src.Spec.ReadinessProbe != nil {
51-
dst.Spec.ReadinessProbe = &redisv1beta2.Probe{}
52-
dst.Spec.ReadinessProbe.Probe = src.Spec.ReadinessProbe.Probe
52+
dst.Spec.ReadinessProbe = &corev1.Probe{}
53+
dst.Spec.ReadinessProbe = src.Spec.ReadinessProbe
5354
}
5455
// LivenessProbe
5556
if src.Spec.LivenessProbe != nil {
56-
dst.Spec.ReadinessProbe = &redisv1beta2.Probe{}
57-
dst.Spec.LivenessProbe.Probe = src.Spec.LivenessProbe.Probe
57+
dst.Spec.LivenessProbe = &corev1.Probe{}
58+
dst.Spec.LivenessProbe = src.Spec.LivenessProbe
5859
}
5960
// Sidecars
6061
if src.Spec.Sidecars != nil {
@@ -116,13 +117,13 @@ func (dst *RedisSentinel) ConvertFrom(srcRaw conversion.Hub) error {
116117
}
117118
// ReadinessProbe
118119
if src.Spec.ReadinessProbe != nil {
119-
dst.Spec.ReadinessProbe = &Probe{}
120-
dst.Spec.ReadinessProbe.Probe = src.Spec.ReadinessProbe.Probe
120+
dst.Spec.ReadinessProbe = &corev1.Probe{}
121+
dst.Spec.ReadinessProbe = src.Spec.ReadinessProbe
121122
}
122123
// LivenessProbe
123124
if src.Spec.LivenessProbe != nil {
124-
dst.Spec.LivenessProbe = &Probe{}
125-
dst.Spec.LivenessProbe.Probe = src.Spec.LivenessProbe.Probe
125+
dst.Spec.LivenessProbe = &corev1.Probe{}
126+
dst.Spec.LivenessProbe = src.Spec.LivenessProbe
126127
}
127128
// Sidecars
128129
if src.Spec.Sidecars != nil {

api/v1beta1/redissentinel_types.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@ type RedisSentinelSpec struct {
2020
Tolerations *[]corev1.Toleration `json:"tolerations,omitempty"`
2121
TLS *TLSConfig `json:"TLS,omitempty"`
2222
PodDisruptionBudget *common.RedisPodDisruptionBudget `json:"pdb,omitempty"`
23-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
24-
ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
25-
// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
26-
LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
27-
Sidecars *[]Sidecar `json:"sidecars,omitempty"`
28-
ServiceAccountName *string `json:"serviceAccountName,omitempty"`
23+
ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
24+
LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty" protobuf:"bytes,12,opt,name=livenessProbe"`
25+
Sidecars *[]Sidecar `json:"sidecars,omitempty"`
26+
ServiceAccountName *string `json:"serviceAccountName,omitempty"`
2927
}
3028

3129
func (cr *RedisSentinelSpec) GetSentinelCounts(t string) int32 {

api/v1beta1/zz_generated.deepcopy.go

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

0 commit comments

Comments
 (0)