EAI-6866 Prevent small-cluster ArgoCD double-install#257
Open
pre wants to merge 1 commit into
Open
Conversation
For CLUSTER_SIZE=small with CLUSTERFORGE_RELEASE set, two ArgoCD install flows both ran: the legacy small-only tasks (core-install manifests + standalone helm-template apply) and the unified clusterforge_setup bootstrap (argo-helm chart). The second apply failed on immutable spec.selector fields, aborting the deploy. Gate the two legacy small-only tasks on CLUSTERFORGE_RELEASE in ["none", ""] so they only run when the unified bootstrap is not deploying ClusterForge. Small + release now uses a single ArgoCD install via the unified path; small + none still uses the standalone path.
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related
Summary
For
CLUSTER_SIZE=smallwithCLUSTERFORGE_RELEASEset (e.g.main), two ArgoCD install flows both ran:deploy_k8s_apps/main.yaml(Setup ArgoCD Core (Small Clusters)→argocd.yaml, appliesargo-cdcore-install manifests) +deploy_clusterforge/main.yaml(Deploy ClusterForge via ArgoCD (Small Clusters)→argocd_deploy.yaml, helm-templates the cluster-forge apps).deploy_clusterforge/main.yaml(Setup ClusterForge→clusterforge_setup.yaml→bootstrap_argocd.yaml), which installs ArgoCD via theargo-helmchart and already handlessmallin a size-aware way.The core-install manifests create ArgoCD workloads with selector
{app.kubernetes.io/name: X}, then the helm chart re-applies them with selector{app.kubernetes.io/instance: argocd, app.kubernetes.io/name: X}.kubectl apply --server-side --force-conflictscannot change the immutablespec.selectorfield, so the second apply fails:This aborts the deploy (
PLAY RECAP ... failed=1), so a "small" deployment frommainnever completes.Fix
Gate the two legacy small-only tasks on
CLUSTERFORGE_RELEASE in ["none", ""]so they only run when the unified bootstrap is not deploying ClusterForge:small+ release set → only the unified path runs → single ArgoCD install.small+none/""→ only the legacy standalone path runs (unchanged behaviour for the no-ClusterForge case).This is coherent with the existing
Setup ClusterForgegate (CLUSTERFORGE_RELEASE != "none" and != ""), so exactly one ArgoCD install path is active in every case.Test plan
bloomfrom this branch and deploy on a fresh single node withCLUSTER_SIZE: small,CLUSTERFORGE_RELEASE: main— bloom completes without the immutable-selector failure.argocd-redisReplicaSets, allargocd-*pods Ready.CLUSTER_SIZE: small+CLUSTERFORGE_RELEASE: nonestill installs standalone ArgoCD core.