in shardingsphere-operator/pkg/controllers/compute_node_controller.go [195:228]
func (r *ComputeNodeReconciler) updateService(ctx context.Context, cn *v1alpha1.ComputeNode, s *corev1.Service) error {
pbs := []v1alpha1.PortBinding{}
copy(cn.Spec.PortBindings, pbs)
switch cn.Spec.ServiceType {
case corev1.ServiceTypeClusterIP:
updateServiceClusterIP(cn.Spec.PortBindings)
if !reflect.DeepEqual(cn.Spec.PortBindings, pbs) {
return r.updateComputeNodePortBindings(ctx, cn)
}
case corev1.ServiceTypeExternalName:
fallthrough
case corev1.ServiceTypeLoadBalancer:
fallthrough
case corev1.ServiceTypeNodePort:
updateServiceNodePort(cn.Spec.PortBindings, s.Spec.Ports)
if !reflect.DeepEqual(cn.Spec.PortBindings, pbs) {
return r.updateComputeNodePortBindings(ctx, cn)
}
}
exp := r.Builder.BuildService(ctx, cn)
exp.ObjectMeta = s.ObjectMeta
exp.Spec.ClusterIP = s.Spec.ClusterIP
exp.Spec.ClusterIPs = s.Spec.ClusterIPs
if cn.Spec.ServiceType == corev1.ServiceTypeNodePort {
exp.Spec.Ports = updateNodePorts(cn.Spec.PortBindings, s.Spec.Ports)
}
if !reflect.DeepEqual(exp.Spec, s.Spec) {
return r.Update(ctx, exp)
}
return nil
}