Commit 45d36a08 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> (cherry picked from commit 82432a2d) Signed-off-by: 's avatarBrad Davidson <brad.davidson@rancher.com>
parent 853473c1
......@@ -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,
// 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.
_, nodeIPs, err := util.GetHostnameAndIPs(cmds.AgentConfig.NodeName, cmds.AgentConfig.NodeIP)
nodeName, nodeIPs, err := util.GetHostnameAndIPs(cmds.AgentConfig.NodeName, cmds.AgentConfig.NodeIP)
if err != nil {
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
_, defaultClusterCIDR, defaultServiceCIDR, _ := util.GetDefaultAddresses(nodeIPs[0])
......
......@@ -623,6 +623,9 @@ func (e *ETCD) setName(force bool) error {
fileName := nameFile(e.config)
data, err := os.ReadFile(fileName)
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]
if err := os.MkdirAll(filepath.Dir(fileName), 0700); err != nil {
return err
......@@ -1106,7 +1109,7 @@ func (e *ETCD) manageLearners(ctx context.Context) {
var node *v1.Node
for _, n := range nodes {
if strings.HasPrefix(member.Name, n.Name+"-") {
if member.Name == n.Annotations[NodeNameAnnotation] {
node = n
nodeIsMember[n.Name] = true
break
......
......@@ -27,6 +27,7 @@ func mustGetAddress() string {
}
func generateTestConfig() *config.Control {
hostname, _ := os.Hostname()
containerRuntimeReady := make(chan struct{})
close(containerRuntimeReady)
criticalControlArgs := config.CriticalControlArgs{
......@@ -37,6 +38,7 @@ func generateTestConfig() *config.Control {
ServiceIPRange: testutil.ServiceIPNet(),
}
return &config.Control{
ServerNodeName: hostname,
Runtime: config.NewRuntime(containerRuntimeReady),
HTTPSPort: 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