From 395441a4fd0d0a72846ef2feb2e3127067d5493b Mon Sep 17 00:00:00 2001 From: esierra-stratio <102975650+esierra-stratio@users.noreply.github.com> Date: Mon, 13 Nov 2023 17:43:04 +0100 Subject: [PATCH] chore: increase replicas to 2 for capi controller manager services (#362) * chore: increase replicas to 2 for capi controller manager services * refactor * review CHANGELOG * refactor --------- Co-authored-by: stg <65890694+stg-0@users.noreply.github.com> --- CHANGELOG.md | 4 +++ .../actions/createworker/createworker.go | 6 ++-- .../create/actions/createworker/provider.go | 36 +++++++++++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16e224f5d7..3088f299ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.17.0-0.3.4 (upcoming) + +* [Core] Conditionally increase replicas for capi controller manager services + ## 0.17.0-0.3.3 (2023-10-11) * Add remote command execution retries diff --git a/pkg/cluster/internal/create/actions/createworker/createworker.go b/pkg/cluster/internal/create/actions/createworker/createworker.go index 82fa46098f..0ec7ea329b 100644 --- a/pkg/cluster/internal/create/actions/createworker/createworker.go +++ b/pkg/cluster/internal/create/actions/createworker/createworker.go @@ -451,11 +451,9 @@ func (a *action) Execute(ctx *actions.ActionContext) error { return err } - // Scale CAPI to 2 replicas - c = "kubectl --kubeconfig " + kubeconfigPath + " -n capi-system scale --replicas 2 deploy capi-controller-manager" - _, err = commons.ExecuteCommand(n, c) + err = provider.configHACAPI(n, kubeconfigPath) if err != nil { - return errors.Wrap(err, "failed to scale the CAPI Deployment") + return err } // Allow egress in CAPI's Namespaces diff --git a/pkg/cluster/internal/create/actions/createworker/provider.go b/pkg/cluster/internal/create/actions/createworker/provider.go index f3d8863a3c..52bf51fca3 100644 --- a/pkg/cluster/internal/create/actions/createworker/provider.go +++ b/pkg/cluster/internal/create/actions/createworker/provider.go @@ -21,6 +21,7 @@ import ( "embed" "encoding/base64" "encoding/json" + "fmt" "io/ioutil" "path/filepath" "time" @@ -504,6 +505,41 @@ func (p *Provider) installCAPXWorker(n nodes.Node, kubeconfigPath string, allowA return nil } +func (p *Provider) configHACAPI(n nodes.Node, kubeconfigPath string) error { + var c string + var err error + var capiKubeadmReplicas int + + // Determine the number of replicas for capi-kubeadm deployments + if p.capxManaged { + capiKubeadmReplicas = 0 + } else { + capiKubeadmReplicas = 2 + } + + // Scale capi-controller-manager to 2 replicas + c = fmt.Sprintf("kubectl --kubeconfig %s -n capi-system scale --replicas 2 deploy capi-controller-manager", kubeconfigPath) + _, err = commons.ExecuteCommand(n, c) + if err != nil { + return errors.Wrap(err, "failed to scale the CAPI Deployment") + } + + // Scale capi-kubeadm-control-plane to 2 replicas + c = fmt.Sprintf("kubectl --kubeconfig %s -n capi-kubeadm-control-plane-system scale --replicas %d deploy capi-kubeadm-control-plane-controller-manager", kubeconfigPath, capiKubeadmReplicas) + _, err = commons.ExecuteCommand(n, c) + if err != nil { + return errors.Wrap(err, "failed to scale the capi-kubeadm-control-plane Deployment") + } + + // Scale capi-kubeadm-bootstrap to 2 replicas + c = fmt.Sprintf("kubectl --kubeconfig %s -n capi-kubeadm-bootstrap-system scale --replicas %d deploy capi-kubeadm-bootstrap-controller-manager", kubeconfigPath, capiKubeadmReplicas) + _, err = commons.ExecuteCommand(n, c) + if err != nil { + return errors.Wrap(err, "failed to scale the capi-kubeadm-bootstrap Deployment") + } + return nil +} + // installCAPXLocal installs CAPX in the local cluster func (p *Provider) installCAPXLocal(n nodes.Node) error { var c string