Unverified Commit c4c11e51 authored by Arne Winter's avatar Arne Winter Committed by GitHub

add node-internal-dns/node-external-dns address pass-through support (#10852)

* add --node-internal-dns and --node-external-dns Signed-off-by: 's avatarArne Winter <github@arnewinter.dev> Co-authored-by: 's avatarBrad Davidson <brad@oatmail.org>
parent 216c3671
...@@ -630,6 +630,18 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N ...@@ -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() 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 nodeConfig.NoFlannel = nodeConfig.FlannelBackend == config.FlannelBackendNone
if !nodeConfig.NoFlannel { if !nodeConfig.NoFlannel {
hostLocal, err := exec.LookPath("host-local") hostLocal, err := exec.LookPath("host-local")
......
...@@ -491,6 +491,17 @@ func updateAddressAnnotations(nodeConfig *daemonconfig.Node, nodeAnnotations map ...@@ -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) result = labels.Merge(nodeAnnotations, result)
return result, !equality.Semantic.DeepEqual(nodeAnnotations, result) return result, !equality.Semantic.DeepEqual(nodeAnnotations, result)
} }
......
...@@ -23,6 +23,8 @@ type Agent struct { ...@@ -23,6 +23,8 @@ type Agent struct {
BindAddress string BindAddress string
NodeIP cli.StringSlice NodeIP cli.StringSlice
NodeExternalIP cli.StringSlice NodeExternalIP cli.StringSlice
NodeInternalDNS cli.StringSlice
NodeExternalDNS cli.StringSlice
NodeName string NodeName string
PauseImage string PauseImage string
Snapshotter string Snapshotter string
...@@ -80,6 +82,16 @@ var ( ...@@ -80,6 +82,16 @@ var (
Usage: "(agent/networking) IPv4/IPv6 external IP addresses to advertise for node", Usage: "(agent/networking) IPv4/IPv6 external IP addresses to advertise for node",
Value: &AgentConfig.NodeExternalIP, 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{ NodeNameFlag = &cli.StringFlag{
Name: "node-name", Name: "node-name",
Usage: "(agent/node) Node name", Usage: "(agent/node) Node name",
...@@ -295,6 +307,8 @@ func NewAgentCommand(action func(ctx *cli.Context) error) cli.Command { ...@@ -295,6 +307,8 @@ func NewAgentCommand(action func(ctx *cli.Context) error) cli.Command {
NodeIPFlag, NodeIPFlag,
BindAddressFlag, BindAddressFlag,
NodeExternalIPFlag, NodeExternalIPFlag,
NodeInternalDNSFlag,
NodeExternalDNSFlag,
ResolvConfFlag, ResolvConfFlag,
FlannelIfaceFlag, FlannelIfaceFlag,
FlannelConfFlag, FlannelConfFlag,
......
...@@ -539,6 +539,8 @@ var ServerFlags = []cli.Flag{ ...@@ -539,6 +539,8 @@ var ServerFlags = []cli.Flag{
AirgapExtraRegistryFlag, AirgapExtraRegistryFlag,
NodeIPFlag, NodeIPFlag,
NodeExternalIPFlag, NodeExternalIPFlag,
NodeInternalDNSFlag,
NodeExternalDNSFlag,
ResolvConfFlag, ResolvConfFlag,
FlannelIfaceFlag, FlannelIfaceFlag,
FlannelConfFlag, FlannelConfFlag,
......
...@@ -15,6 +15,8 @@ import ( ...@@ -15,6 +15,8 @@ import (
var ( var (
InternalIPKey = version.Program + ".io/internal-ip" InternalIPKey = version.Program + ".io/internal-ip"
ExternalIPKey = version.Program + ".io/external-ip" ExternalIPKey = version.Program + ".io/external-ip"
InternalDNSKey = version.Program + ".io/internal-dns"
ExternalDNSKey = version.Program + ".io/external-dns"
HostnameKey = version.Program + ".io/hostname" HostnameKey = version.Program + ".io/hostname"
) )
...@@ -79,6 +81,20 @@ func (k *k3s) InstanceMetadata(ctx context.Context, node *corev1.Node) (*cloudpr ...@@ -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}) 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 // check hostname
if address := node.Annotations[HostnameKey]; address != "" { if address := node.Annotations[HostnameKey]; address != "" {
metadata.NodeAddresses = append(metadata.NodeAddresses, corev1.NodeAddress{Type: corev1.NodeHostName, Address: address}) metadata.NodeAddresses = append(metadata.NodeAddresses, corev1.NodeAddress{Type: corev1.NodeHostName, Address: address})
......
...@@ -123,6 +123,8 @@ type Agent struct { ...@@ -123,6 +123,8 @@ type Agent struct {
NodeIPs []net.IP NodeIPs []net.IP
NodeExternalIP string NodeExternalIP string
NodeExternalIPs []net.IP NodeExternalIPs []net.IP
NodeInternalDNSs []string
NodeExternalDNSs []string
RuntimeSocket string RuntimeSocket string
ImageServiceSocket string ImageServiceSocket string
ListenAddress string ListenAddress string
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment