Skip to content

Commit

Permalink
feat: support dual-stack (#3509)
Browse files Browse the repository at this point in the history
  • Loading branch information
ghostloda committed Jul 16, 2023
1 parent e41feef commit d3e3456
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 12 deletions.
26 changes: 17 additions & 9 deletions pkg/cert/kube_certs.go
Expand Up @@ -21,6 +21,9 @@ import (
"net"
"os"
"path"
"strings"

utilnet "k8s.io/utils/net"

"github.com/labring/sealos/pkg/utils/logger"
)
Expand Down Expand Up @@ -186,13 +189,18 @@ func NewSealosCertMetaData(certPATH, certEtcdPATH string, apiServerIPAndDomains
data.DNSDomain = DNSDomain
data.APIServer.IPs = make(map[string]net.IP)
data.APIServer.DNSNames = make(map[string]string)
_, svcNet, err := net.ParseCIDR(SvcCIDR)
if err != nil {
return nil, err

for _, svcCidr := range strings.Split(SvcCIDR, ",") {
_, svcNet, err := net.ParseCIDR(svcCidr)
if err != nil {
return nil, err
}
svcFirstIP, err := utilnet.GetIndexedIP(svcNet, 1)
if err != nil {
return nil, err
}
data.APIServer.IPs[svcFirstIP.String()] = svcFirstIP
}
svcFirstIP := svcNet.IP
svcFirstIP[len(svcFirstIP)-1]++ //取svc第一个ip
data.APIServer.IPs[svcFirstIP.String()] = svcFirstIP

for _, altName := range apiServerIPAndDomains {
ip := net.ParseIP(altName)
Expand Down Expand Up @@ -233,9 +241,9 @@ func (meta *SealosCertMetaData) etcdAltAndCommonName(certList *[]Config) {
meta.NodeName: meta.NodeName,
},
IPs: map[string]net.IP{
net.IPv4(127, 0, 0, 1).String(): net.IPv4(127, 0, 0, 1),
net.ParseIP(meta.NodeIP).To4().String(): net.ParseIP(meta.NodeIP).To4(),
net.IPv6loopback.String(): net.IPv6loopback,
net.IPv4(127, 0, 0, 1).String(): net.IPv4(127, 0, 0, 1),
net.ParseIP(meta.NodeIP).String(): net.ParseIP(meta.NodeIP),
net.IPv6loopback.String(): net.IPv6loopback,
},
}
(*certList)[EtcdServerCert].CommonName = meta.NodeName
Expand Down
15 changes: 12 additions & 3 deletions pkg/utils/iputils/iputils_v2.go
Expand Up @@ -22,6 +22,7 @@ import (
"strings"

"k8s.io/apimachinery/pkg/util/sets"
netutils "k8s.io/utils/net"

"github.com/labring/sealos/pkg/utils/logger"
)
Expand Down Expand Up @@ -243,14 +244,22 @@ func NextIP(ip string) net.IP {
return i.Add(i, big.NewInt(1)).Bytes()
}

func Contains(sub, s string) (bool, error) {
_, ipNet, err := net.ParseCIDR(sub)
func Contains(subnetStr, s string) (bool, error) {
subnets, err := netutils.ParseCIDRs(strings.Split(subnetStr, ","))
if err != nil {
return false, err
}

ip := net.ParseIP(s)
if ip == nil {
return false, fmt.Errorf("%s is not a valid IP address", s)
}
return ipNet.Contains(ip), nil

for _, subnet := range subnets {
if subnet.Contains(ip) {
return true, nil
}
}

return false, err
}

0 comments on commit d3e3456

Please sign in to comment.