Skip to content
16 changes: 15 additions & 1 deletion api/v1/runtimecomponent_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -765,6 +765,20 @@ func (cr *RuntimeComponent) GetManageTLS() *bool {
return cr.Spec.ManageTLS
}

func (cr *RuntimeComponent) GetManagedPort() int {
if cr.GetService() != nil && cr.GetService().GetPort() != 0 {
return int(cr.GetService().GetPort())
}
return 8080
}

func (cr *RuntimeComponent) GetManagedScheme() corev1.URIScheme {
if cr.GetManageTLS() == nil || *cr.GetManageTLS() {
return corev1.URISchemeHTTPS
}
return corev1.URISchemeHTTP
}

// GetDeployment returns deployment settings
func (cr *RuntimeComponent) GetDeployment() common.BaseComponentDeployment {
if cr.Spec.Deployment == nil {
Expand Down Expand Up @@ -1107,7 +1121,7 @@ func (cr *RuntimeComponent) Initialize() {
}

if cr.Spec.Service.Port == 0 {
cr.Spec.Service.Port = 8080
cr.Spec.Service.Port = int32(cr.GetManagedPort())
}

// If TargetPorts on Serviceports are not set, default them to the Port value in the CR
Expand Down
62 changes: 56 additions & 6 deletions common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ func GetDefaultMicroProfileStartupProbe(ba BaseComponent) *corev1.Probe {
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: "/health/started",
Port: intstr.FromInt(int(ba.GetService().GetPort())),
Scheme: "HTTPS",
Port: intstr.FromInt(ba.GetManagedPort()),
Scheme: ba.GetManagedScheme(),
},
},
PeriodSeconds: 10,
Expand All @@ -27,8 +27,8 @@ func GetDefaultMicroProfileReadinessProbe(ba BaseComponent) *corev1.Probe {
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: "/health/ready",
Port: intstr.FromInt(int(ba.GetService().GetPort())),
Scheme: "HTTPS",
Port: intstr.FromInt(ba.GetManagedPort()),
Scheme: ba.GetManagedScheme(),
},
},
InitialDelaySeconds: 10,
Expand All @@ -44,8 +44,8 @@ func GetDefaultMicroProfileLivenessProbe(ba BaseComponent) *corev1.Probe {
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: "/health/live",
Port: intstr.FromInt(int(ba.GetService().GetPort())),
Scheme: "HTTPS",
Port: intstr.FromInt(ba.GetManagedPort()),
Scheme: ba.GetManagedScheme(),
},
},
InitialDelaySeconds: 60,
Expand All @@ -59,3 +59,53 @@ func GetDefaultMicroProfileLivenessProbe(ba BaseComponent) *corev1.Probe {
func GetComponentNameLabel(ba BaseComponent) string {
return ba.GetGroupName() + "/name"
}

func CustomizeProbeDefaults(config *corev1.Probe, defaultProbe *corev1.Probe) *corev1.Probe {
probe := defaultProbe
if config.ProbeHandler.Exec != nil {
probe.ProbeHandler.Exec = config.ProbeHandler.Exec
}
if config.ProbeHandler.GRPC != nil {
probe.ProbeHandler.GRPC = config.ProbeHandler.GRPC
}
if config.ProbeHandler.HTTPGet != nil {
if probe.ProbeHandler.HTTPGet == nil {
probe.ProbeHandler.HTTPGet = &corev1.HTTPGetAction{}
}
probe.ProbeHandler.HTTPGet.Port = config.ProbeHandler.HTTPGet.Port
if config.ProbeHandler.HTTPGet.Host != "" {
probe.ProbeHandler.HTTPGet.Host = config.ProbeHandler.HTTPGet.Host
}
if config.ProbeHandler.HTTPGet.Path != "" {
probe.ProbeHandler.HTTPGet.Path = config.ProbeHandler.HTTPGet.Path
}
if config.ProbeHandler.HTTPGet.Scheme != "" {
probe.ProbeHandler.HTTPGet.Scheme = config.ProbeHandler.HTTPGet.Scheme
}
if len(config.ProbeHandler.HTTPGet.HTTPHeaders) > 0 {
probe.ProbeHandler.HTTPGet.HTTPHeaders = config.ProbeHandler.HTTPGet.HTTPHeaders
}
}
if config.ProbeHandler.TCPSocket != nil {
probe.ProbeHandler.TCPSocket = config.ProbeHandler.TCPSocket
}
if config.InitialDelaySeconds != 0 {
probe.InitialDelaySeconds = config.InitialDelaySeconds
}
if config.TimeoutSeconds != 0 {
probe.TimeoutSeconds = config.TimeoutSeconds
}
if config.PeriodSeconds != 0 {
probe.PeriodSeconds = config.PeriodSeconds
}
if config.SuccessThreshold != 0 {
probe.SuccessThreshold = config.SuccessThreshold
}
if config.FailureThreshold != 0 {
probe.FailureThreshold = config.FailureThreshold
}
if config.TerminationGracePeriodSeconds != nil {
probe.TerminationGracePeriodSeconds = config.TerminationGracePeriodSeconds
}
return probe
}
2 changes: 2 additions & 0 deletions common/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,8 @@ type BaseComponent interface {
GetTopologySpreadConstraints() BaseComponentTopologySpreadConstraints
GetSecurityContext() *corev1.SecurityContext
GetManageTLS() *bool
GetManagedPort() int
GetManagedScheme() corev1.URIScheme
GetDisableServiceLinks() *bool
GetTolerations() []corev1.Toleration
GetDNS() BaseComponentDNS
Expand Down
28 changes: 1 addition & 27 deletions utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,34 +310,8 @@ func customizeProbe(config *corev1.Probe, defaultProbeCallback func(ba common.Ba
return nil
}

// Probe handler is defined in config so use probe as is
if config.ProbeHandler != (corev1.ProbeHandler{}) {
return config
}

// Probe handler is not defined so use default values for the probe if values not set in probe config
return CustomizeProbeDefaults(config, defaultProbeCallback(ba))
}

func CustomizeProbeDefaults(config *corev1.Probe, defaultProbe *corev1.Probe) *corev1.Probe {
probe := defaultProbe
if config.InitialDelaySeconds != 0 {
probe.InitialDelaySeconds = config.InitialDelaySeconds
}
if config.TimeoutSeconds != 0 {
probe.TimeoutSeconds = config.TimeoutSeconds
}
if config.PeriodSeconds != 0 {
probe.PeriodSeconds = config.PeriodSeconds
}
if config.SuccessThreshold != 0 {
probe.SuccessThreshold = config.SuccessThreshold
}
if config.FailureThreshold != 0 {
probe.FailureThreshold = config.FailureThreshold
}

return probe
return common.CustomizeProbeDefaults(config, defaultProbeCallback(ba))
}

// CustomizeNetworkPolicy configures the network policy.
Expand Down
4 changes: 2 additions & 2 deletions utils/utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ func TestCustomizeService(t *testing.T) {
CustomizeService(svc, runtime)
testCS := []Test{
{"Service number of exposed ports", 1, len(svc.Spec.Ports)},
{"Sercice first exposed port", runtime.Spec.Service.Port, svc.Spec.Ports[0].Port},
{"Service first exposed port", runtime.Spec.Service.Port, svc.Spec.Ports[0].Port},
{"Service first exposed target port", intstr.FromInt(int(runtime.Spec.Service.Port)), svc.Spec.Ports[0].TargetPort},
{"Service type", *runtime.Spec.Service.Type, svc.Spec.Type},
{"Service selector", name, svc.Spec.Selector["app.kubernetes.io/instance"]},
Expand Down Expand Up @@ -195,7 +195,7 @@ func optionalNodePortFunctionalityTests() []Test {
CustomizeService(svc, runtime)
testCS := []Test{
{"Service number of exposed ports", 1, len(svc.Spec.Ports)},
{"Sercice first exposed port", runtime.Spec.Service.Port, svc.Spec.Ports[0].Port},
{"Service first exposed port", runtime.Spec.Service.Port, svc.Spec.Ports[0].Port},
{"Service first exposed target port", intstr.FromInt(int(runtime.Spec.Service.Port)), svc.Spec.Ports[0].TargetPort},
{"Service type", *runtime.Spec.Service.Type, svc.Spec.Type},
{"Service selector", name, svc.Spec.Selector["app.kubernetes.io/instance"]},
Expand Down