in pkg/resources/statefulset/service.go [17:68]
func newService(ndb *v1.NdbCluster, ports []int32, nodeType string, headLess, loadBalancer bool) *corev1.Service {
// Default Service Type is ClusterIP
var clusterIP string
serviceType := corev1.ServiceTypeClusterIP
if loadBalancer {
// create a LoadBalancer
serviceType = corev1.ServiceTypeLoadBalancer
} else if headLess {
// create a headless service
clusterIP = corev1.ClusterIPNone
}
serviceResourceLabel := nodeType + "-service"
// Label for the Service Resource
serviceLabel := ndb.GetCompleteLabels(map[string]string{
constants.ClusterResourceTypeLabel: serviceResourceLabel,
})
// Label Selector for the pods
selectorLabel := ndb.GetCompleteLabels(map[string]string{
constants.ClusterNodeTypeLabel: nodeType,
})
var servicePorts []corev1.ServicePort
for i, port := range ports {
servicePorts = append(servicePorts, corev1.ServicePort{
Name: fmt.Sprintf("%s-port-%d", serviceResourceLabel, i),
Port: port,
})
}
// build a Service
svc := &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Labels: serviceLabel,
Name: ndb.GetServiceName(nodeType),
Namespace: ndb.GetNamespace(),
OwnerReferences: ndb.GetOwnerReferences(),
},
Spec: corev1.ServiceSpec{
PublishNotReadyAddresses: true,
Ports: servicePorts,
Selector: selectorLabel,
ClusterIP: clusterIP,
Type: serviceType,
},
}
return svc
}