commit before using cursor

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
This commit is contained in:
Mauro Morales
2025-03-26 10:04:10 +01:00
parent bdd7909d05
commit 65e49b898b
7 changed files with 43 additions and 25 deletions

1
.go-version Normal file
View File

@@ -0,0 +1 @@
1.23.6

View File

@@ -49,8 +49,8 @@ func Bootstrap(e *pluggable.Event) pluggable.EventResponse {
tokenNotDefined := (p2pBlockDefined && prvConfig.P2P.NetworkToken == "") || !p2pBlockDefined tokenNotDefined := (p2pBlockDefined && prvConfig.P2P.NetworkToken == "") || !p2pBlockDefined
skipAuto := p2pBlockDefined && !prvConfig.P2P.Auto.IsEnabled() skipAuto := p2pBlockDefined && !prvConfig.P2P.Auto.IsEnabled()
worker, _ := p2p.NewK8sWorker(prvConfig) sd, _ := p2p.NewServiceDefinition(prvConfig)
if prvConfig.P2P == nil && worker == nil { if prvConfig.P2P == nil && sd == nil {
return pluggable.EventResponse{State: fmt.Sprintf("no kubernetes distribution configuration. nothing to do: %s", cfg.Config)} return pluggable.EventResponse{State: fmt.Sprintf("no kubernetes distribution configuration. nothing to do: %s", cfg.Config)}
} }
@@ -68,7 +68,7 @@ func Bootstrap(e *pluggable.Event) pluggable.EventResponse {
// Do onetimebootstrap if a Kubernetes distribution is enabled. // Do onetimebootstrap if a Kubernetes distribution is enabled.
// Those blocks are not required to be enabled in case of a kairos // Those blocks are not required to be enabled in case of a kairos
// full automated setup. Otherwise, they must be explicitly enabled. // full automated setup. Otherwise, they must be explicitly enabled.
if (tokenNotDefined && worker != nil) || skipAuto { if (tokenNotDefined && sd != nil) || skipAuto {
err := oneTimeBootstrap(logger, prvConfig, func() error { err := oneTimeBootstrap(logger, prvConfig, func() error {
return SetupVPN(services.EdgeVPNDefaultInstance, cfg.APIAddress, "/", true, prvConfig) return SetupVPN(services.EdgeVPNDefaultInstance, cfg.APIAddress, "/", true, prvConfig)
}) })
@@ -134,6 +134,18 @@ func Bootstrap(e *pluggable.Event) pluggable.EventResponse {
Role: common.RoleAuto, Role: common.RoleAuto,
RoleHandler: role.Auto(c, prvConfig), RoleHandler: role.Auto(c, prvConfig),
}, },
service.RoleKey{
Role: common.RoleControlPlane,
RoleHandler: p2p.ControlPlane(c, prvConfig, common.RoleControlPlane),
},
service.RoleKey{
Role: common.RoleMasterInit,
RoleHandler: p2p.ControlPlane(c, prvConfig, common.RoleControlPlaneClusterInit),
},
service.RoleKey{
Role: common.RoleMasterHA,
RoleHandler: p2p.ControlPlane(c, prvConfig, common.RoleControlPlaneHA),
},
), ),
} }

View File

@@ -8,10 +8,14 @@ import (
const ( const (
RoleWorker = "worker" RoleWorker = "worker"
RoleControlPlane = "master" RoleControlPlane = "control-plane"
RoleControlPlaneHA = "master/ha" RoleControlPlaneHA = "control-plane/ha"
RoleControlPlaneClusterInit = "master/clusterinit" RoleControlPlaneClusterInit = "control-plane/clusterinit"
RoleAuto = "auto" RoleAuto = "auto"
// these are kept for backwards compatibility with old configs
RoleMaster = "master"
RoleMasterHA = "master/ha"
RoleMasterInit = "master/clusterinit"
) )
type Role func(*service.RoleConfig) error type Role func(*service.RoleConfig) error

View File

@@ -52,6 +52,10 @@ func (k *K0sControlPlane) DeployKubeVIP() error {
func (k *K0sControlPlane) Args() ([]string, error) { func (k *K0sControlPlane) Args() ([]string, error) {
var args []string var args []string
// if k.IsSingleNode() {
// args = append(args, "--single")
// }
// Generate a new k0s config // Generate a new k0s config
_, err := utils.SH("k0s config create > /etc/k0s/k0s.yaml") _, err := utils.SH("k0s config create > /etc/k0s/k0s.yaml")
if err != nil { if err != nil {
@@ -213,6 +217,10 @@ func (k *K0sWorker) RoleConfig() *service.RoleConfig {
return k.roleConfig return k.roleConfig
} }
func (k *K0sControlPlane) IsSingleNode() bool {
return k.role == common.RoleControlPlane
}
func (k *K0sControlPlane) HA() bool { func (k *K0sControlPlane) HA() bool {
return k.role == common.RoleControlPlaneHA return k.role == common.RoleControlPlaneHA
} }
@@ -364,10 +372,6 @@ func (k *K0sControlPlane) GuessInterface() {
// not used in k0s // not used in k0s
} }
func (k *K0sWorker) GuessInterface() {
// not used in k0s
}
func (k *K0sControlPlane) Distro() string { func (k *K0sControlPlane) Distro() string {
return K0sDistroName return K0sDistroName
} }

View File

@@ -357,14 +357,6 @@ func (k *K3sControlPlane) GuessInterface() {
k.ifaceIP = ifaceIP k.ifaceIP = ifaceIP
} }
func (k *K3sWorker) GuessInterface() {
iface := guessInterface(k.ProviderConfig())
ifaceIP := utils.GetInterfaceIP(iface)
k.iface = iface
k.ifaceIP = ifaceIP
}
func (k *K3sControlPlane) Distro() string { func (k *K3sControlPlane) Distro() string {
return K3sDistroName return K3sDistroName
} }

View File

@@ -67,6 +67,11 @@ func NewServiceDefinition(c *providerConfig.Config) (ServiceDefinition, error) {
return &K3sWorker{providerConfig: c}, nil return &K3sWorker{providerConfig: c}, nil
case c.K0sWorker.Enabled: case c.K0sWorker.Enabled:
return &K0sWorker{providerConfig: c}, nil return &K0sWorker{providerConfig: c}, nil
// we don't know if it's a control plane or a worker
case utils.K3sBin() != "":
return &K3sControlPlane{providerConfig: c}, nil
case utils.K0sBin() != "":
return &K0sControlPlane{providerConfig: c}, nil
} }
return nil, errors.New("no k8s distro found") return nil, errors.New("no k8s distro found")
@@ -75,9 +80,9 @@ func NewServiceDefinition(c *providerConfig.Config) (ServiceDefinition, error) {
func NewK8sControlPlane(c *providerConfig.Config) (K8sControlPlane, error) { func NewK8sControlPlane(c *providerConfig.Config) (K8sControlPlane, error) {
switch { switch {
case c.K3s.Enabled: case c.K3s.Enabled:
return &K3sControlPlane{providerConfig: c, role: "control-plane"}, nil return &K3sControlPlane{providerConfig: c}, nil
case c.K0s.Enabled: case c.K0s.Enabled:
return &K0sControlPlane{providerConfig: c, role: "control-plane"}, nil return &K0sControlPlane{providerConfig: c}, nil
case utils.K3sBin() != "": case utils.K3sBin() != "":
return &K3sControlPlane{providerConfig: c}, nil return &K3sControlPlane{providerConfig: c}, nil
case utils.K0sBin() != "": case utils.K0sBin() != "":
@@ -90,9 +95,9 @@ func NewK8sControlPlane(c *providerConfig.Config) (K8sControlPlane, error) {
func NewK8sWorker(c *providerConfig.Config) (K8sWorker, error) { func NewK8sWorker(c *providerConfig.Config) (K8sWorker, error) {
switch { switch {
case c.K3sAgent.Enabled: case c.K3sAgent.Enabled:
return &K3sWorker{providerConfig: c, role: "worker"}, nil return &K3sWorker{providerConfig: c}, nil
case c.K0sWorker.Enabled: case c.K0sWorker.Enabled:
return &K0sWorker{providerConfig: c, role: "worker"}, nil return &K0sWorker{providerConfig: c}, nil
case utils.K3sBin() != "": case utils.K3sBin() != "":
return &K3sWorker{providerConfig: c}, nil return &K3sWorker{providerConfig: c}, nil
case utils.K0sBin() != "": case utils.K0sBin() != "":

View File

@@ -33,10 +33,10 @@ func scheduleRoles(nodes []string, c *service.RoleConfig, cc *config.Config, pco
hasControlPlane := false hasControlPlane := false
controlPlaneRole := "master" controlPlaneRole := RoleControlPlane
if pconfig.P2P.Auto.HA.IsEnabled() { if pconfig.P2P.Auto.HA.IsEnabled() {
controlPlaneRole = "master/clusterinit" controlPlaneRole = RoleControlPlaneClusterInit
} }
controlPlaneCounter := 1 // Start at 1 to account for the init node controlPlaneCounter := 1 // Start at 1 to account for the init node
@@ -79,7 +79,7 @@ func scheduleRoles(nodes []string, c *service.RoleConfig, cc *config.Config, pco
c.Logger.Infof("-> Set %s to %s", controlPlaneRole, selected) c.Logger.Infof("-> Set %s to %s", controlPlaneRole, selected)
currentRoles[selected] = controlPlaneRole currentRoles[selected] = controlPlaneRole
// Return here, so next time we get called // Return here, so next time we get called
// makes sure master is set. // makes sure control-plane is set.
return nil return nil
} }