mirror of
https://github.com/kairos-io/provider-kairos.git
synced 2025-09-26 07:10:15 +00:00
HA working with k0s too
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
This commit is contained in:
@@ -126,6 +126,13 @@ func ControlPlane(cc *config.Config, pconfig *providerConfig.Config, roleName st
|
||||
c.Logger.Info("Running bootstrap before stage")
|
||||
utils.SH(fmt.Sprintf("kairos-agent run-stage provider-kairos.bootstrap.before.%s", roleName)) //nolint:errcheck
|
||||
|
||||
if controlPlane.HA() {
|
||||
err = controlPlane.SetupHAToken()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
svc, err := controlPlane.Service()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get %s service: %w", controlPlane.Distro(), err)
|
||||
|
@@ -137,8 +137,8 @@ func (k *K0sControlPlane) Args() ([]string, error) {
|
||||
return args, errors.New("ExternalDB is not yet supported with k0s")
|
||||
}
|
||||
|
||||
if k.HA() && !k.ClusterInit() {
|
||||
return args, errors.New("HA is not yet supported with k0s")
|
||||
if k.HA() {
|
||||
args = append(args, "--token-file /etc/k0s/token")
|
||||
}
|
||||
|
||||
// when we start implementing this functionality, remember to use
|
||||
@@ -218,9 +218,7 @@ func (k *K0sControlPlane) HA() bool {
|
||||
}
|
||||
|
||||
func (k *K0sControlPlane) ClusterInit() bool {
|
||||
// k0s does not have a cluster init role like k3s. Instead we should have a way to set in the config
|
||||
// if the user wants a single node cluster, multi-node cluster, or HA cluster
|
||||
return false
|
||||
return k.role == common.RoleControlPlaneClusterInit
|
||||
}
|
||||
|
||||
func (k *K0sControlPlane) IP() string {
|
||||
@@ -287,6 +285,23 @@ func (k *K0sWorker) Args() ([]string, error) {
|
||||
return args, nil
|
||||
}
|
||||
|
||||
func (k *K0sControlPlane) SetupHAToken() error {
|
||||
controlPlaneToken, err := k.Token()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if controlPlaneToken == "" {
|
||||
return errors.New("control plane token is not there")
|
||||
}
|
||||
|
||||
if err := os.WriteFile("/etc/k0s/token", []byte(controlPlaneToken), 0644); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (k *K0sWorker) SetupWorker(_, nodeToken string) error {
|
||||
if err := os.WriteFile("/etc/k0s/token", []byte(nodeToken), 0644); err != nil {
|
||||
return err
|
||||
|
@@ -260,6 +260,11 @@ func (k *K3sWorker) Args() ([]string, error) {
|
||||
return args, nil
|
||||
}
|
||||
|
||||
func (k *K3sControlPlane) SetupHAToken() error {
|
||||
// K3s doesn't need a token for HA, it uses the node-token
|
||||
return nil
|
||||
}
|
||||
|
||||
func (k *K3sWorker) SetupWorker(controlPlaneIP, nodeToken string) error {
|
||||
pconfig := k.ProviderConfig()
|
||||
|
||||
|
@@ -41,6 +41,7 @@ type K8sControlPlane interface {
|
||||
SetIP(ip string)
|
||||
GuessInterface()
|
||||
Distro() string
|
||||
SetupHAToken() error
|
||||
}
|
||||
|
||||
type K8sWorker interface {
|
||||
|
Reference in New Issue
Block a user