in iotdb-operator/internal/controller/confignode_controller.go [229:294]
func (r *ConfigNodeReconciler) constructServicesForConfigNode(configNode *iotdbv1.ConfigNode) ([]corev1.Service, error) {
headlessService := &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: ConfigNodeName + "-headless",
Namespace: configNode.Namespace,
Labels: map[string]string{"app": ConfigNodeName},
},
Spec: corev1.ServiceSpec{
ClusterIP: "None",
Ports: []corev1.ServicePort{
{
Name: "cn-internal-port",
Port: 10710,
TargetPort: intstr.FromInt32(10710),
},
{
Name: "cn-consensus-port",
Port: 10720,
TargetPort: intstr.FromInt32(10720),
},
},
Selector: map[string]string{
"app": ConfigNodeName,
},
},
}
err := SetControllerReference(configNode, headlessService, r.Scheme)
if err != nil {
return nil, err
}
services := []corev1.Service{*headlessService}
if configNode.Spec.Service != nil && len(configNode.Spec.Service.Ports) > 0 {
for key, value := range configNode.Spec.Service.Ports {
if key == "cn_metric_prometheus_reporter_port" {
nodePortService := &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: ConfigNodeName,
Namespace: configNode.Namespace,
Labels: map[string]string{"app": ConfigNodeName},
},
Spec: corev1.ServiceSpec{
Type: corev1.ServiceTypeNodePort,
Ports: []corev1.ServicePort{
{
Name: strutil.ToKebabCase(key),
Port: 9091,
NodePort: value,
TargetPort: intstr.FromInt32(9091),
},
},
Selector: map[string]string{
"app": ConfigNodeName,
},
},
}
err := SetControllerReference(configNode, nodePortService, r.Scheme)
if err != nil {
return nil, err
}
services = append(services, *nodePortService)
}
}
}
return services, nil
}