@@ -572,47 +572,12 @@ func Complete(s *options.ServerRunOptions) (completedServerRunOptions, error) {
572
572
573
573
// process s.ServiceClusterIPRange from list to Primary and Secondary
574
574
// we process secondary only if provided by user
575
- serviceClusterIPRangeList := []string {}
576
- if s .ServiceClusterIPRanges != "" {
577
- serviceClusterIPRangeList = strings .Split (s .ServiceClusterIPRanges , "," )
578
- }
579
-
580
- var apiServerServiceIP net.IP
581
- var serviceIPRange net.IPNet
582
- var err error
583
- // nothing provided by user, use default range (only applies to the Primary)
584
- if len (serviceClusterIPRangeList ) == 0 {
585
- var primaryServiceClusterCIDR net.IPNet
586
- serviceIPRange , apiServerServiceIP , err = master .ServiceIPRange (primaryServiceClusterCIDR )
587
- if err != nil {
588
- return options , fmt .Errorf ("error determining service IP ranges: %v" , err )
589
- }
590
- s .PrimaryServiceClusterIPRange = serviceIPRange
591
- }
592
-
593
- if len (serviceClusterIPRangeList ) > 0 {
594
- _ , primaryServiceClusterCIDR , err := net .ParseCIDR (serviceClusterIPRangeList [0 ])
595
- if err != nil {
596
- return options , fmt .Errorf ("service-cluster-ip-range[0] is not a valid cidr" )
597
- }
598
-
599
- serviceIPRange , apiServerServiceIP , err = master .ServiceIPRange (* (primaryServiceClusterCIDR ))
600
- if err != nil {
601
- return options , fmt .Errorf ("error determining service IP ranges for primary service cidr: %v" , err )
602
- }
603
- s .PrimaryServiceClusterIPRange = serviceIPRange
604
- }
605
-
606
- // user provided at least two entries
607
- if len (serviceClusterIPRangeList ) > 1 {
608
- _ , secondaryServiceClusterCIDR , err := net .ParseCIDR (serviceClusterIPRangeList [1 ])
609
- if err != nil {
610
- return options , fmt .Errorf ("service-cluster-ip-range[1] is not an ip net" )
611
- }
612
-
613
- s .SecondaryServiceClusterIPRange = * (secondaryServiceClusterCIDR )
575
+ apiServerServiceIP , primaryServiceIPRange , secondaryServiceIPRange , err := getServiceIPAndRanges (s .ServiceClusterIPRanges )
576
+ if err != nil {
577
+ return options , err
614
578
}
615
- //note: validation asserts that the list is max of two dual stack entries
579
+ s .PrimaryServiceClusterIPRange = primaryServiceIPRange
580
+ s .SecondaryServiceClusterIPRange = secondaryServiceIPRange
616
581
617
582
if err := s .SecureServing .MaybeDefaultWithSelfSignedCerts (s .GenericServerRunOptions .AdvertiseAddress .String (), []string {"kubernetes.default.svc" , "kubernetes.default" , "kubernetes" }, []net.IP {apiServerServiceIP }); err != nil {
618
583
return options , fmt .Errorf ("error creating self-signed certificates: %v" , err )
@@ -718,3 +683,47 @@ func buildServiceResolver(enabledAggregatorRouting bool, hostname string, inform
718
683
}
719
684
return serviceResolver
720
685
}
686
+
687
+ func getServiceIPAndRanges (serviceClusterIPRanges string ) (net.IP , net.IPNet , net.IPNet , error ) {
688
+ serviceClusterIPRangeList := []string {}
689
+ if serviceClusterIPRanges != "" {
690
+ serviceClusterIPRangeList = strings .Split (serviceClusterIPRanges , "," )
691
+ }
692
+
693
+ var apiServerServiceIP net.IP
694
+ var primaryServiceIPRange net.IPNet
695
+ var secondaryServiceIPRange net.IPNet
696
+ var err error
697
+ // nothing provided by user, use default range (only applies to the Primary)
698
+ if len (serviceClusterIPRangeList ) == 0 {
699
+ var primaryServiceClusterCIDR net.IPNet
700
+ primaryServiceIPRange , apiServerServiceIP , err = master .ServiceIPRange (primaryServiceClusterCIDR )
701
+ if err != nil {
702
+ return net.IP {}, net.IPNet {}, net.IPNet {}, fmt .Errorf ("error determining service IP ranges: %v" , err )
703
+ }
704
+ return apiServerServiceIP , primaryServiceIPRange , net.IPNet {}, nil
705
+ }
706
+
707
+ if len (serviceClusterIPRangeList ) > 0 {
708
+ _ , primaryServiceClusterCIDR , err := net .ParseCIDR (serviceClusterIPRangeList [0 ])
709
+ if err != nil {
710
+ return net.IP {}, net.IPNet {}, net.IPNet {}, fmt .Errorf ("service-cluster-ip-range[0] is not a valid cidr" )
711
+ }
712
+
713
+ primaryServiceIPRange , apiServerServiceIP , err = master .ServiceIPRange (* (primaryServiceClusterCIDR ))
714
+ if err != nil {
715
+ return net.IP {}, net.IPNet {}, net.IPNet {}, fmt .Errorf ("error determining service IP ranges for primary service cidr: %v" , err )
716
+ }
717
+ }
718
+
719
+ // user provided at least two entries
720
+ // note: validation asserts that the list is max of two dual stack entries
721
+ if len (serviceClusterIPRangeList ) > 1 {
722
+ _ , secondaryServiceClusterCIDR , err := net .ParseCIDR (serviceClusterIPRangeList [1 ])
723
+ if err != nil {
724
+ return net.IP {}, net.IPNet {}, net.IPNet {}, fmt .Errorf ("service-cluster-ip-range[1] is not an ip net" )
725
+ }
726
+ secondaryServiceIPRange = * secondaryServiceClusterCIDR
727
+ }
728
+ return apiServerServiceIP , primaryServiceIPRange , secondaryServiceIPRange , nil
729
+ }
0 commit comments