Commit 82432a2d authored by Brad Davidson's avatar Brad Davidson Committed by Brad Davidson

Fix issue with etcd node name missing hostname

* Set ServerNodeName in snapshot CLI setup * Raise errer if ServerNodeName ends up empty some other way * Fix status controller to use etcd node name annotation instead of prefix checking Signed-off-by: 's avatarBrad Davidson <brad.davidson@rancher.com>
parent 513c3416
...@@ -80,10 +80,11 @@ func commandSetup(app *cli.Context, cfg *cmds.Server, config *server.Config) (*e ...@@ -80,10 +80,11 @@ func commandSetup(app *cli.Context, cfg *cmds.Server, config *server.Config) (*e
// command uses the same endpoint selection logic as it does when starting up the full server. Specifically, // command uses the same endpoint selection logic as it does when starting up the full server. Specifically,
// we need to set an IPv6 service CIDR on IPv6-only or IPv6-first nodes, as the etcd default endpoints check // we need to set an IPv6 service CIDR on IPv6-only or IPv6-first nodes, as the etcd default endpoints check
// the service CIDR primary addresss family to determine what loopback address to use. // the service CIDR primary addresss family to determine what loopback address to use.
_, nodeIPs, err := util.GetHostnameAndIPs(cmds.AgentConfig.NodeName, cmds.AgentConfig.NodeIP) nodeName, nodeIPs, err := util.GetHostnameAndIPs(cmds.AgentConfig.NodeName, cmds.AgentConfig.NodeIP)
if err != nil { if err != nil {
return nil, err return nil, err
} }
config.ControlConfig.ServerNodeName = nodeName
// configure ClusterIPRanges. Use default 10.42.0.0/16 or fd00:42::/56 if user did not set it // configure ClusterIPRanges. Use default 10.42.0.0/16 or fd00:42::/56 if user did not set it
_, defaultClusterCIDR, defaultServiceCIDR, _ := util.GetDefaultAddresses(nodeIPs[0]) _, defaultClusterCIDR, defaultServiceCIDR, _ := util.GetDefaultAddresses(nodeIPs[0])
......
...@@ -623,6 +623,9 @@ func (e *ETCD) setName(force bool) error { ...@@ -623,6 +623,9 @@ func (e *ETCD) setName(force bool) error {
fileName := nameFile(e.config) fileName := nameFile(e.config)
data, err := os.ReadFile(fileName) data, err := os.ReadFile(fileName)
if os.IsNotExist(err) || force { if os.IsNotExist(err) || force {
if e.config.ServerNodeName == "" {
return errors.New("server node name not set")
}
e.name = e.config.ServerNodeName + "-" + uuid.New().String()[:8] e.name = e.config.ServerNodeName + "-" + uuid.New().String()[:8]
if err := os.MkdirAll(filepath.Dir(fileName), 0700); err != nil { if err := os.MkdirAll(filepath.Dir(fileName), 0700); err != nil {
return err return err
...@@ -1106,7 +1109,7 @@ func (e *ETCD) manageLearners(ctx context.Context) { ...@@ -1106,7 +1109,7 @@ func (e *ETCD) manageLearners(ctx context.Context) {
var node *v1.Node var node *v1.Node
for _, n := range nodes { for _, n := range nodes {
if strings.HasPrefix(member.Name, n.Name+"-") { if member.Name == n.Annotations[NodeNameAnnotation] {
node = n node = n
nodeIsMember[n.Name] = true nodeIsMember[n.Name] = true
break break
......
...@@ -27,6 +27,7 @@ func mustGetAddress() string { ...@@ -27,6 +27,7 @@ func mustGetAddress() string {
} }
func generateTestConfig() *config.Control { func generateTestConfig() *config.Control {
hostname, _ := os.Hostname()
containerRuntimeReady := make(chan struct{}) containerRuntimeReady := make(chan struct{})
close(containerRuntimeReady) close(containerRuntimeReady)
criticalControlArgs := config.CriticalControlArgs{ criticalControlArgs := config.CriticalControlArgs{
...@@ -37,6 +38,7 @@ func generateTestConfig() *config.Control { ...@@ -37,6 +38,7 @@ func generateTestConfig() *config.Control {
ServiceIPRange: testutil.ServiceIPNet(), ServiceIPRange: testutil.ServiceIPNet(),
} }
return &config.Control{ return &config.Control{
ServerNodeName: hostname,
Runtime: config.NewRuntime(containerRuntimeReady), Runtime: config.NewRuntime(containerRuntimeReady),
HTTPSPort: 6443, HTTPSPort: 6443,
SupervisorPort: 6443, SupervisorPort: 6443,
......
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