Skip to content

Commit 8185935

Browse files
authored
Merge pull request #365 from andrewsykim/preferred-cidrs
add preferred apiserver CIDRs to network devices
2 parents 6fa09c4 + 86d57d5 commit 8185935

File tree

4 files changed

+36
-1
lines changed

4 files changed

+36
-1
lines changed

config/crds/vsphereproviderconfig_v1alpha1_vspheremachineproviderconfig.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,10 @@ spec:
395395
- networkName
396396
type: object
397397
type: array
398+
preferredAPIServerCidr:
399+
description: PreferredAPIServeCIDR is the preferred CIDR for the
400+
Kubernetes API server endpoint on this machine
401+
type: string
398402
routes:
399403
description: Routes is a list of optional, static routes applied
400404
to the virtual machine.

pkg/apis/vsphereproviderconfig/v1alpha1/vspheremachineproviderconfig_types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ type NetworkSpec struct {
8989
// machine.
9090
// +optional
9191
Routes []NetworkRouteSpec `json:"routes,omitempty"`
92+
93+
// PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API
94+
// server endpoint on this machine
95+
// +optional
96+
PreferredAPIServerCIDR string `json:"preferredAPIServerCidr,omitempty"`
9297
}
9398

9499
// NetworkDeviceSpec defines the network configuration for a virtual machine's

pkg/cloud/vsphere/context/machine_context.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,11 +174,33 @@ func (c *MachineContext) IPAddr() string {
174174
if c.Machine == nil {
175175
return ""
176176
}
177+
178+
var err error
179+
var preferredAPIServerCIDR *net.IPNet
180+
if c.MachineConfig.MachineSpec.Network.PreferredAPIServerCIDR != "" {
181+
_, preferredAPIServerCIDR, err = net.ParseCIDR(c.MachineConfig.MachineSpec.Network.PreferredAPIServerCIDR)
182+
if err != nil {
183+
c.Logger.Error(err, "error parsing preferred apiserver CIDR")
184+
return ""
185+
}
186+
187+
c.Logger.V(4).Info("detected preferred apiserver CIDR", "preferredAPIServerCIDR", preferredAPIServerCIDR)
188+
}
189+
177190
for _, nodeAddr := range c.Machine.Status.Addresses {
178-
if nodeAddr.Type == corev1.NodeInternalIP {
191+
if nodeAddr.Type != corev1.NodeInternalIP {
192+
continue
193+
}
194+
195+
if preferredAPIServerCIDR == nil {
196+
return nodeAddr.Address
197+
}
198+
199+
if preferredAPIServerCIDR.Contains(net.ParseIP(nodeAddr.Address)) {
179200
return nodeAddr.Address
180201
}
181202
}
203+
182204
return ""
183205
}
184206

scripts/e2e/bootstrap_job/spec/provider-components.template

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -845,6 +845,10 @@ spec:
845845
- networkName
846846
type: object
847847
type: array
848+
preferredAPIServerCidr:
849+
description: PreferredAPIServeCIDR is the preferred CIDR for the
850+
Kubernetes API server endpoint on this machine
851+
type: string
848852
routes:
849853
description: Routes is a list of optional, static routes applied
850854
to the virtual machine.

0 commit comments

Comments
 (0)