mirror of https://github.com/k3s-io/k3s
add node-internal-dns/node-external-dns address pass-through support (#10852)
* add --node-internal-dns and --node-external-dns Signed-off-by: Arne Winter <github@arnewinter.dev> Co-authored-by: Brad Davidson <brad@oatmail.org>pull/10791/head
parent
216c3671b7
commit
c4c11e51f1
|
@ -630,6 +630,18 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N
|
|||
nodeConfig.AgentConfig.NodeExternalIP = nodeConfig.AgentConfig.NodeExternalIPs[0].String()
|
||||
}
|
||||
|
||||
var nodeExternalDNSs []string
|
||||
for _, dnsString := range envInfo.NodeExternalDNS.Value() {
|
||||
nodeExternalDNSs = append(nodeExternalDNSs, strings.Split(dnsString, ",")...)
|
||||
}
|
||||
nodeConfig.AgentConfig.NodeExternalDNSs = nodeExternalDNSs
|
||||
|
||||
var nodeInternalDNSs []string
|
||||
for _, dnsString := range envInfo.NodeInternalDNS.Value() {
|
||||
nodeInternalDNSs = append(nodeInternalDNSs, strings.Split(dnsString, ",")...)
|
||||
}
|
||||
nodeConfig.AgentConfig.NodeInternalDNSs = nodeInternalDNSs
|
||||
|
||||
nodeConfig.NoFlannel = nodeConfig.FlannelBackend == config.FlannelBackendNone
|
||||
if !nodeConfig.NoFlannel {
|
||||
hostLocal, err := exec.LookPath("host-local")
|
||||
|
|
|
@ -491,6 +491,17 @@ func updateAddressAnnotations(nodeConfig *daemonconfig.Node, nodeAnnotations map
|
|||
}
|
||||
}
|
||||
|
||||
if len(agentConfig.NodeInternalDNSs) > 0 {
|
||||
result[cp.InternalDNSKey] = strings.Join(agentConfig.NodeInternalDNSs, ",")
|
||||
} else {
|
||||
delete(result, cp.InternalDNSKey)
|
||||
}
|
||||
if len(agentConfig.NodeExternalDNSs) > 0 {
|
||||
result[cp.ExternalDNSKey] = strings.Join(agentConfig.NodeExternalDNSs, ",")
|
||||
} else {
|
||||
delete(result, cp.ExternalDNSKey)
|
||||
}
|
||||
|
||||
result = labels.Merge(nodeAnnotations, result)
|
||||
return result, !equality.Semantic.DeepEqual(nodeAnnotations, result)
|
||||
}
|
||||
|
|
|
@ -23,6 +23,8 @@ type Agent struct {
|
|||
BindAddress string
|
||||
NodeIP cli.StringSlice
|
||||
NodeExternalIP cli.StringSlice
|
||||
NodeInternalDNS cli.StringSlice
|
||||
NodeExternalDNS cli.StringSlice
|
||||
NodeName string
|
||||
PauseImage string
|
||||
Snapshotter string
|
||||
|
@ -80,6 +82,16 @@ var (
|
|||
Usage: "(agent/networking) IPv4/IPv6 external IP addresses to advertise for node",
|
||||
Value: &AgentConfig.NodeExternalIP,
|
||||
}
|
||||
NodeInternalDNSFlag = &cli.StringSliceFlag{
|
||||
Name: "node-internal-dns",
|
||||
Usage: "(agent/networking) internal DNS addresses to advertise for node",
|
||||
Value: &AgentConfig.NodeInternalDNS,
|
||||
}
|
||||
NodeExternalDNSFlag = &cli.StringSliceFlag{
|
||||
Name: "node-external-dns",
|
||||
Usage: "(agent/networking) external DNS addresses to advertise for node",
|
||||
Value: &AgentConfig.NodeExternalDNS,
|
||||
}
|
||||
NodeNameFlag = &cli.StringFlag{
|
||||
Name: "node-name",
|
||||
Usage: "(agent/node) Node name",
|
||||
|
@ -295,6 +307,8 @@ func NewAgentCommand(action func(ctx *cli.Context) error) cli.Command {
|
|||
NodeIPFlag,
|
||||
BindAddressFlag,
|
||||
NodeExternalIPFlag,
|
||||
NodeInternalDNSFlag,
|
||||
NodeExternalDNSFlag,
|
||||
ResolvConfFlag,
|
||||
FlannelIfaceFlag,
|
||||
FlannelConfFlag,
|
||||
|
|
|
@ -539,6 +539,8 @@ var ServerFlags = []cli.Flag{
|
|||
AirgapExtraRegistryFlag,
|
||||
NodeIPFlag,
|
||||
NodeExternalIPFlag,
|
||||
NodeInternalDNSFlag,
|
||||
NodeExternalDNSFlag,
|
||||
ResolvConfFlag,
|
||||
FlannelIfaceFlag,
|
||||
FlannelConfFlag,
|
||||
|
|
|
@ -15,6 +15,8 @@ import (
|
|||
var (
|
||||
InternalIPKey = version.Program + ".io/internal-ip"
|
||||
ExternalIPKey = version.Program + ".io/external-ip"
|
||||
InternalDNSKey = version.Program + ".io/internal-dns"
|
||||
ExternalDNSKey = version.Program + ".io/external-dns"
|
||||
HostnameKey = version.Program + ".io/hostname"
|
||||
)
|
||||
|
||||
|
@ -79,6 +81,20 @@ func (k *k3s) InstanceMetadata(ctx context.Context, node *corev1.Node) (*cloudpr
|
|||
metadata.NodeAddresses = append(metadata.NodeAddresses, corev1.NodeAddress{Type: corev1.NodeExternalIP, Address: address})
|
||||
}
|
||||
|
||||
// check internal dns
|
||||
if address := node.Annotations[InternalDNSKey]; address != "" {
|
||||
for _, v := range strings.Split(address, ",") {
|
||||
metadata.NodeAddresses = append(metadata.NodeAddresses, corev1.NodeAddress{Type: corev1.NodeInternalDNS, Address: v})
|
||||
}
|
||||
}
|
||||
|
||||
// check external dns
|
||||
if address := node.Annotations[ExternalDNSKey]; address != "" {
|
||||
for _, v := range strings.Split(address, ",") {
|
||||
metadata.NodeAddresses = append(metadata.NodeAddresses, corev1.NodeAddress{Type: corev1.NodeExternalDNS, Address: v})
|
||||
}
|
||||
}
|
||||
|
||||
// check hostname
|
||||
if address := node.Annotations[HostnameKey]; address != "" {
|
||||
metadata.NodeAddresses = append(metadata.NodeAddresses, corev1.NodeAddress{Type: corev1.NodeHostName, Address: address})
|
||||
|
|
|
@ -123,6 +123,8 @@ type Agent struct {
|
|||
NodeIPs []net.IP
|
||||
NodeExternalIP string
|
||||
NodeExternalIPs []net.IP
|
||||
NodeInternalDNSs []string
|
||||
NodeExternalDNSs []string
|
||||
RuntimeSocket string
|
||||
ImageServiceSocket string
|
||||
ListenAddress string
|
||||
|
|
Loading…
Reference in New Issue