Browse code

Default NetworkConfig.ServiceNetworkCIDR to KubernetesMasterConfig.ServicesSubnet

Jordan Liggitt authored on 2015/09/24 22:40:29
Showing 2 changed files
... ...
@@ -28,6 +28,17 @@ func init() {
28 28
 			if len(obj.RoutingConfig.Subdomain) == 0 {
29 29
 				obj.RoutingConfig.Subdomain = "router.default.svc.cluster.local"
30 30
 			}
31
+
32
+			// Populate the new NetworkConfig.ServiceNetworkCIDR field from the KubernetesMasterConfig.ServicesSubnet field if needed
33
+			if len(obj.NetworkConfig.ServiceNetworkCIDR) == 0 {
34
+				if obj.KubernetesMasterConfig != nil && len(obj.KubernetesMasterConfig.ServicesSubnet) > 0 {
35
+					// if a subnet is set in the kubernetes master config, use that
36
+					obj.NetworkConfig.ServiceNetworkCIDR = obj.KubernetesMasterConfig.ServicesSubnet
37
+				} else {
38
+					// default ServiceClusterIPRange used by kubernetes if nothing is specified
39
+					obj.NetworkConfig.ServiceNetworkCIDR = "10.0.0.0/24"
40
+				}
41
+			}
31 42
 		},
32 43
 		func(obj *KubernetesMasterConfig) {
33 44
 			if obj.MasterCount == 0 {
... ...
@@ -135,6 +135,14 @@ func ValidateMasterConfig(config *api.MasterConfig) ValidationResults {
135 135
 		validationResults.AddErrors(fielderrors.NewFieldInvalid("kubernetesMasterConfig", config.KubernetesMasterConfig, "kubernetesMasterConfig and masterClients.externalKubernetesKubeConfig are mutually exclusive"))
136 136
 	}
137 137
 
138
+	if len(config.NetworkConfig.ServiceNetworkCIDR) > 0 {
139
+		if _, _, err := net.ParseCIDR(strings.TrimSpace(config.NetworkConfig.ServiceNetworkCIDR)); err != nil {
140
+			validationResults.AddErrors(fielderrors.NewFieldInvalid("networkConfig.serviceNetworkCIDR", config.NetworkConfig.ServiceNetworkCIDR, "must be a valid CIDR notation IP range (e.g. 172.30.0.0/16)"))
141
+		} else if config.KubernetesMasterConfig != nil && len(config.KubernetesMasterConfig.ServicesSubnet) > 0 && config.KubernetesMasterConfig.ServicesSubnet != config.NetworkConfig.ServiceNetworkCIDR {
142
+			validationResults.AddErrors(fielderrors.NewFieldInvalid("networkConfig.serviceNetworkCIDR", config.NetworkConfig.ServiceNetworkCIDR, fmt.Sprintf("must match kubernetesMasterConfig.servicesSubnet value of %q", config.KubernetesMasterConfig.ServicesSubnet)))
143
+		}
144
+	}
145
+
138 146
 	validationResults.AddErrors(ValidateKubeConfig(config.MasterClients.OpenShiftLoopbackKubeConfig, "openShiftLoopbackKubeConfig").Prefix("masterClients")...)
139 147
 
140 148
 	if len(config.MasterClients.ExternalKubernetesKubeConfig) > 0 {