Skip to content

Commit e673c1d

Browse files
authored
Merge pull request #735 from application-stacks/cfg-probes
Set probes port and scheme based on .spec.manageTLS
2 parents 5379b64 + dde3d2b commit e673c1d

5 files changed

Lines changed: 76 additions & 36 deletions

File tree

api/v1/runtimecomponent_types.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,20 @@ func (cr *RuntimeComponent) GetManageTLS() *bool {
765765
return cr.Spec.ManageTLS
766766
}
767767

768+
func (cr *RuntimeComponent) GetManagedPort() int {
769+
if cr.GetService() != nil && cr.GetService().GetPort() != 0 {
770+
return int(cr.GetService().GetPort())
771+
}
772+
return 8080
773+
}
774+
775+
func (cr *RuntimeComponent) GetManagedScheme() corev1.URIScheme {
776+
if cr.GetManageTLS() == nil || *cr.GetManageTLS() {
777+
return corev1.URISchemeHTTPS
778+
}
779+
return corev1.URISchemeHTTP
780+
}
781+
768782
// GetDeployment returns deployment settings
769783
func (cr *RuntimeComponent) GetDeployment() common.BaseComponentDeployment {
770784
if cr.Spec.Deployment == nil {
@@ -1107,7 +1121,7 @@ func (cr *RuntimeComponent) Initialize() {
11071121
}
11081122

11091123
if cr.Spec.Service.Port == 0 {
1110-
cr.Spec.Service.Port = 8080
1124+
cr.Spec.Service.Port = int32(cr.GetManagedPort())
11111125
}
11121126

11131127
// If TargetPorts on Serviceports are not set, default them to the Port value in the CR

common/common.go

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ func GetDefaultMicroProfileStartupProbe(ba BaseComponent) *corev1.Probe {
1111
ProbeHandler: corev1.ProbeHandler{
1212
HTTPGet: &corev1.HTTPGetAction{
1313
Path: "/health/started",
14-
Port: intstr.FromInt(int(ba.GetService().GetPort())),
15-
Scheme: "HTTPS",
14+
Port: intstr.FromInt(ba.GetManagedPort()),
15+
Scheme: ba.GetManagedScheme(),
1616
},
1717
},
1818
PeriodSeconds: 10,
@@ -27,8 +27,8 @@ func GetDefaultMicroProfileReadinessProbe(ba BaseComponent) *corev1.Probe {
2727
ProbeHandler: corev1.ProbeHandler{
2828
HTTPGet: &corev1.HTTPGetAction{
2929
Path: "/health/ready",
30-
Port: intstr.FromInt(int(ba.GetService().GetPort())),
31-
Scheme: "HTTPS",
30+
Port: intstr.FromInt(ba.GetManagedPort()),
31+
Scheme: ba.GetManagedScheme(),
3232
},
3333
},
3434
InitialDelaySeconds: 10,
@@ -44,8 +44,8 @@ func GetDefaultMicroProfileLivenessProbe(ba BaseComponent) *corev1.Probe {
4444
ProbeHandler: corev1.ProbeHandler{
4545
HTTPGet: &corev1.HTTPGetAction{
4646
Path: "/health/live",
47-
Port: intstr.FromInt(int(ba.GetService().GetPort())),
48-
Scheme: "HTTPS",
47+
Port: intstr.FromInt(ba.GetManagedPort()),
48+
Scheme: ba.GetManagedScheme(),
4949
},
5050
},
5151
InitialDelaySeconds: 60,
@@ -59,3 +59,53 @@ func GetDefaultMicroProfileLivenessProbe(ba BaseComponent) *corev1.Probe {
5959
func GetComponentNameLabel(ba BaseComponent) string {
6060
return ba.GetGroupName() + "/name"
6161
}
62+
63+
func CustomizeProbeDefaults(config *corev1.Probe, defaultProbe *corev1.Probe) *corev1.Probe {
64+
probe := defaultProbe
65+
if config.ProbeHandler.Exec != nil {
66+
probe.ProbeHandler.Exec = config.ProbeHandler.Exec
67+
}
68+
if config.ProbeHandler.GRPC != nil {
69+
probe.ProbeHandler.GRPC = config.ProbeHandler.GRPC
70+
}
71+
if config.ProbeHandler.HTTPGet != nil {
72+
if probe.ProbeHandler.HTTPGet == nil {
73+
probe.ProbeHandler.HTTPGet = &corev1.HTTPGetAction{}
74+
}
75+
probe.ProbeHandler.HTTPGet.Port = config.ProbeHandler.HTTPGet.Port
76+
if config.ProbeHandler.HTTPGet.Host != "" {
77+
probe.ProbeHandler.HTTPGet.Host = config.ProbeHandler.HTTPGet.Host
78+
}
79+
if config.ProbeHandler.HTTPGet.Path != "" {
80+
probe.ProbeHandler.HTTPGet.Path = config.ProbeHandler.HTTPGet.Path
81+
}
82+
if config.ProbeHandler.HTTPGet.Scheme != "" {
83+
probe.ProbeHandler.HTTPGet.Scheme = config.ProbeHandler.HTTPGet.Scheme
84+
}
85+
if len(config.ProbeHandler.HTTPGet.HTTPHeaders) > 0 {
86+
probe.ProbeHandler.HTTPGet.HTTPHeaders = config.ProbeHandler.HTTPGet.HTTPHeaders
87+
}
88+
}
89+
if config.ProbeHandler.TCPSocket != nil {
90+
probe.ProbeHandler.TCPSocket = config.ProbeHandler.TCPSocket
91+
}
92+
if config.InitialDelaySeconds != 0 {
93+
probe.InitialDelaySeconds = config.InitialDelaySeconds
94+
}
95+
if config.TimeoutSeconds != 0 {
96+
probe.TimeoutSeconds = config.TimeoutSeconds
97+
}
98+
if config.PeriodSeconds != 0 {
99+
probe.PeriodSeconds = config.PeriodSeconds
100+
}
101+
if config.SuccessThreshold != 0 {
102+
probe.SuccessThreshold = config.SuccessThreshold
103+
}
104+
if config.FailureThreshold != 0 {
105+
probe.FailureThreshold = config.FailureThreshold
106+
}
107+
if config.TerminationGracePeriodSeconds != nil {
108+
probe.TerminationGracePeriodSeconds = config.TerminationGracePeriodSeconds
109+
}
110+
return probe
111+
}

common/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@ type BaseComponent interface {
257257
GetTopologySpreadConstraints() BaseComponentTopologySpreadConstraints
258258
GetSecurityContext() *corev1.SecurityContext
259259
GetManageTLS() *bool
260+
GetManagedPort() int
261+
GetManagedScheme() corev1.URIScheme
260262
GetDisableServiceLinks() *bool
261263
GetTolerations() []corev1.Toleration
262264
GetDNS() BaseComponentDNS

utils/utils.go

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -310,34 +310,8 @@ func customizeProbe(config *corev1.Probe, defaultProbeCallback func(ba common.Ba
310310
return nil
311311
}
312312

313-
// Probe handler is defined in config so use probe as is
314-
if config.ProbeHandler != (corev1.ProbeHandler{}) {
315-
return config
316-
}
317-
318313
// Probe handler is not defined so use default values for the probe if values not set in probe config
319-
return CustomizeProbeDefaults(config, defaultProbeCallback(ba))
320-
}
321-
322-
func CustomizeProbeDefaults(config *corev1.Probe, defaultProbe *corev1.Probe) *corev1.Probe {
323-
probe := defaultProbe
324-
if config.InitialDelaySeconds != 0 {
325-
probe.InitialDelaySeconds = config.InitialDelaySeconds
326-
}
327-
if config.TimeoutSeconds != 0 {
328-
probe.TimeoutSeconds = config.TimeoutSeconds
329-
}
330-
if config.PeriodSeconds != 0 {
331-
probe.PeriodSeconds = config.PeriodSeconds
332-
}
333-
if config.SuccessThreshold != 0 {
334-
probe.SuccessThreshold = config.SuccessThreshold
335-
}
336-
if config.FailureThreshold != 0 {
337-
probe.FailureThreshold = config.FailureThreshold
338-
}
339-
340-
return probe
314+
return common.CustomizeProbeDefaults(config, defaultProbeCallback(ba))
341315
}
342316

343317
// CustomizeNetworkPolicy configures the network policy.

utils/utils_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func TestCustomizeService(t *testing.T) {
156156
CustomizeService(svc, runtime)
157157
testCS := []Test{
158158
{"Service number of exposed ports", 1, len(svc.Spec.Ports)},
159-
{"Sercice first exposed port", runtime.Spec.Service.Port, svc.Spec.Ports[0].Port},
159+
{"Service first exposed port", runtime.Spec.Service.Port, svc.Spec.Ports[0].Port},
160160
{"Service first exposed target port", intstr.FromInt(int(runtime.Spec.Service.Port)), svc.Spec.Ports[0].TargetPort},
161161
{"Service type", *runtime.Spec.Service.Type, svc.Spec.Type},
162162
{"Service selector", name, svc.Spec.Selector["app.kubernetes.io/instance"]},
@@ -195,7 +195,7 @@ func optionalNodePortFunctionalityTests() []Test {
195195
CustomizeService(svc, runtime)
196196
testCS := []Test{
197197
{"Service number of exposed ports", 1, len(svc.Spec.Ports)},
198-
{"Sercice first exposed port", runtime.Spec.Service.Port, svc.Spec.Ports[0].Port},
198+
{"Service first exposed port", runtime.Spec.Service.Port, svc.Spec.Ports[0].Port},
199199
{"Service first exposed target port", intstr.FromInt(int(runtime.Spec.Service.Port)), svc.Spec.Ports[0].TargetPort},
200200
{"Service type", *runtime.Spec.Service.Type, svc.Spec.Type},
201201
{"Service selector", name, svc.Spec.Selector["app.kubernetes.io/instance"]},

0 commit comments

Comments
 (0)