in pkg/webhook/pod_readiness_gate_injector.go [150:173]
func (m *PodReadinessGateInjector) isPodUsedByRoute(route core.Route, svcMap map[string]*corev1.Service) *corev1.Service {
for _, rule := range route.Spec().Rules() {
for _, backendRef := range rule.BackendRefs() {
// from spec: "When [Group] unspecified or empty string, core API group is inferred."
isGroupEqual := backendRef.Group() == nil || string(*backendRef.Group()) == corev1.GroupName
isKindEqual := backendRef.Kind() != nil && string(*backendRef.Kind()) == "Service"
svc, isNameEqual := svcMap[string(backendRef.Name())]
namespace := route.Namespace()
if backendRef.Namespace() != nil {
namespace = string(*backendRef.Namespace())
}
isNamespaceEqual := svc != nil && namespace == svc.GetNamespace()
if isGroupEqual && isKindEqual && isNameEqual && isNamespaceEqual {
m.log.Debugf(context.TODO(), "Found route %s/%s that matches service %s/%s",
route.Namespace(), route.Name(), svc.Namespace, svc.Name)
return svc
}
}
}
return nil
}