feat: Added support for enabling metrics in Feast Operator (#5317) (#… · feast-dev/feast@a8498c2

@@ -470,6 +470,13 @@ func (feast *FeastServices) setContainer(containers *[]corev1.Container, feastTy

470470

ContainerPort: getTargetPort(feastType, tls),

471471

Protocol: corev1.ProtocolTCP,

472472

})

473+

if feastType == OnlineFeastType && feast.isMetricsEnabled(feastType) {

474+

container.Ports = append(container.Ports, corev1.ContainerPort{

475+

Name: "metrics",

476+

ContainerPort: MetricsPort,

477+

Protocol: corev1.ProtocolTCP,

478+

})

479+

}

473480

}

474481475482

container.StartupProbe = &corev1.Probe{

@@ -565,6 +572,10 @@ func (feast *FeastServices) getContainerCommand(feastType FeastServiceType) []st

565572

}

566573567574

deploySettings := FeastServiceConstants[feastType]

575+

deploySettings.Args = append([]string{}, deploySettings.Args...)

576+

if feastType == OnlineFeastType && feast.isMetricsEnabled(feastType) {

577+

deploySettings.Args = append([]string{deploySettings.Args[0], "--metrics"}, deploySettings.Args[1:]...)

578+

}

568579

targetPort := deploySettings.TargetHttpPort

569580

tls := feast.getTlsConfigs(feastType)

570581

@@ -732,6 +743,15 @@ func (feast *FeastServices) setService(svc *corev1.Service, feastType FeastServi

732743

},

733744

}

734745746+

if feastType == OnlineFeastType && feast.isMetricsEnabled(feastType) {

747+

svc.Spec.Ports = append(svc.Spec.Ports, corev1.ServicePort{

748+

Name: "metrics",

749+

Port: MetricsPort,

750+

Protocol: corev1.ProtocolTCP,

751+

TargetPort: intstr.FromInt(int(MetricsPort)),

752+

})

753+

}

754+735755

return controllerutil.SetControllerReference(feast.Handler.FeatureStore, svc, feast.Handler.Scheme)

736756

}

737757

@@ -800,6 +820,18 @@ func (feast *FeastServices) getLogLevelForType(feastType FeastServiceType) *stri

800820

return nil

801821

}

802822823+

func (feast *FeastServices) isMetricsEnabled(feastType FeastServiceType) bool {

824+

if feastType != OnlineFeastType {

825+

return false

826+

}

827+828+

if serviceConfigs := feast.getServerConfigs(feastType); serviceConfigs != nil && serviceConfigs.Metrics != nil {

829+

return *serviceConfigs.Metrics

830+

}

831+832+

return false

833+

}

834+803835

func (feast *FeastServices) getNodeSelectorForType(feastType FeastServiceType) *map[string]string {

804836

if serviceConfigs := feast.getServerConfigs(feastType); serviceConfigs != nil {

805837

return serviceConfigs.ContainerConfigs.OptionalCtrConfigs.NodeSelector

@@ -1100,7 +1132,9 @@ func (feast *FeastServices) initRoute(feastType FeastServiceType) *routev1.Route

11001132

}

1101113311021134

func applyCtrConfigs(container *corev1.Container, containerConfigs feastdevv1alpha1.ContainerConfigs) {

1103-

container.Image = *containerConfigs.DefaultCtrConfigs.Image

1135+

if containerConfigs.DefaultCtrConfigs.Image != nil {

1136+

container.Image = *containerConfigs.DefaultCtrConfigs.Image

1137+

}

11041138

// apply optional container configs

11051139

if containerConfigs.OptionalCtrConfigs.Env != nil {

11061140

container.Env = envOverride(container.Env, *containerConfigs.OptionalCtrConfigs.Env)