From 753d4c4906d386f4a2ab85c4565eaf00101347ed Mon Sep 17 00:00:00 2001 From: Kimmo Lehto Date: Tue, 1 Aug 2023 13:22:24 +0300 Subject: [PATCH] Ignore 64bit ARM when setting ETCD_UNSUPPORTED_ARCH (#519) * Ignore 64bit ARM when setting ETCD_UNSUPPORTED_ARCH Signed-off-by: Kimmo Lehto * Add version switch Signed-off-by: Kimmo Lehto --------- Signed-off-by: Kimmo Lehto --- phase/arm_prepare.go | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/phase/arm_prepare.go b/phase/arm_prepare.go index eb453aea..dbc318ef 100644 --- a/phase/arm_prepare.go +++ b/phase/arm_prepare.go @@ -3,6 +3,7 @@ package phase import ( "strings" + "github.com/k0sproject/version" log "github.com/sirupsen/logrus" "github.com/k0sproject/k0sctl/pkg/apis/k0sctl.k0sproject.io/v1beta1" @@ -26,8 +27,34 @@ func (p *PrepareArm) Prepare(config *v1beta1.Cluster) error { p.Config = config p.hosts = p.Config.Spec.Hosts.Filter(func(h *cluster.Host) bool { + if h.Role == "worker" { + return false + } + arch := h.Metadata.Arch - return h.Role != "worker" && (strings.HasPrefix(arch, "arm") || strings.HasPrefix(arch, "aarch")) + + if !strings.HasPrefix(arch, "arm") && !strings.HasPrefix(arch, "aarch") { + return false + } + + if strings.HasSuffix(arch, "64") { + // 64-bit arm is supported on etcd 3.5.0+ which is included in k0s v1.22.1+k0s.0 and newer + minVer, err := version.NewVersion("v1.22.1+k0s.0") + if err != nil { + log.Warnf("failed to parse constraint k0s version: %v", err) + return false + } + k0sVer, err := version.NewVersion(p.Config.Spec.K0s.Version) + if err != nil { + log.Warnf("failed to parse target k0s version: %v", err) + return false + } + if k0sVer.GreaterThanOrEqual(minVer) { + return false + } + } + + return true }) return nil