| ... | ... |
@@ -416,6 +416,18 @@ func (args MasterArgs) GetServerCertHostnames() (util.StringSet, error) {
|
| 416 | 416 |
} |
| 417 | 417 |
|
| 418 | 418 |
allHostnames := util.NewStringSet("localhost", "127.0.0.1", "openshift.default.local", "kubernetes.default.local", "kubernetes-ro.default.local", masterAddr.Host, masterPublicAddr.Host, assetPublicAddr.Host)
|
| 419 |
+ |
|
| 420 |
+ listenIP := net.ParseIP(args.ListenArg.ListenAddr.Host) |
|
| 421 |
+ // add the IPs that might be used based on the ListenAddr. |
|
| 422 |
+ if listenIP != nil && listenIP.IsUnspecified() {
|
|
| 423 |
+ allAddresses, _ := cmdutil.AllLocalIP4() |
|
| 424 |
+ for _, ip := range allAddresses {
|
|
| 425 |
+ allHostnames.Insert(ip.String()) |
|
| 426 |
+ } |
|
| 427 |
+ } else {
|
|
| 428 |
+ allHostnames.Insert(args.ListenArg.ListenAddr.Host) |
|
| 429 |
+ } |
|
| 430 |
+ |
|
| 419 | 431 |
certHostnames := util.StringSet{}
|
| 420 | 432 |
for hostname := range allHostnames {
|
| 421 | 433 |
if host, _, err := net.SplitHostPort(hostname); err == nil {
|
| ... | ... |
@@ -32,3 +32,30 @@ func DefaultLocalIP4() (net.IP, error) {
|
| 32 | 32 |
} |
| 33 | 33 |
return nil, ErrorNoDefaultIP |
| 34 | 34 |
} |
| 35 |
+ |
|
| 36 |
+// AllLocalIP4 returns all the IPv4 addresses that this host can be reached |
|
| 37 |
+// on. |
|
| 38 |
+func AllLocalIP4() ([]net.IP, error) {
|
|
| 39 |
+ devices, err := net.Interfaces() |
|
| 40 |
+ if err != nil {
|
|
| 41 |
+ return nil, err |
|
| 42 |
+ } |
|
| 43 |
+ |
|
| 44 |
+ ret := []net.IP{}
|
|
| 45 |
+ for _, dev := range devices {
|
|
| 46 |
+ if dev.Flags&net.FlagUp != 0 {
|
|
| 47 |
+ addrs, err := dev.Addrs() |
|
| 48 |
+ if err != nil {
|
|
| 49 |
+ continue |
|
| 50 |
+ } |
|
| 51 |
+ for i := range addrs {
|
|
| 52 |
+ if ip, ok := addrs[i].(*net.IPNet); ok {
|
|
| 53 |
+ if ip.IP.To4() != nil {
|
|
| 54 |
+ ret = append(ret, ip.IP) |
|
| 55 |
+ } |
|
| 56 |
+ } |
|
| 57 |
+ } |
|
| 58 |
+ } |
|
| 59 |
+ } |
|
| 60 |
+ return ret, nil |
|
| 61 |
+} |