Checks
Controller Version
0.13.1
Deployment Method
ArgoCD
Checks
To Reproduce
1. Install `gha-runner-scale-set` with `containerMode.type=kubernetes-novolume`
2. `kubectl get sa -n <ns>` — observe both `*-gha-rs-kube-mode` and `*-gha-rs-no-permission`
3. `helm uninstall <release>` or delete the Argo CD application, see that the teardown hangs on the orphan SA
4. Use workaround: `kubectl patch sa <release>-gha-rs-no-permission -n <ns> --type=json -p='[{"op":"remove","path":"/metadata/finalizers"}]'`.
Describe the bug
In containerMode.type=kubernetes-novolume, the gha-runner-scale-set chart renders a <release>-gha-rs-no-permission ServiceAccount with a actions.github.com/cleanup-protection finalizer. The runner pod does not use this SA (it uses the kube-mode SA instead), and the AutoscalingRunnerSet is not annotated with actions.github.com/cleanup-no-permission-service-account-name, so autoscalingRunnerSetFinalizerDependencyCleaner.removeNoPermissionServiceAccountFinalizer skips cleanup. The orphan SA then blocks helm uninstall / ArgoCD teardown until the finalizer is manually stripped
Describe the expected behavior
The no-permission SA should only be rendered when the runner pod actually uses it (i.e., containerMode.type is neither kubernetes nor kubernetes-novolume), matching the condition already used for the serviceAccountName assignment and the cleanup annotation in autoscalingrunnerset.yaml
Additional Context
This is a Helm chart templating bug, not a runtime controller bug.
Controller Logs
Runner Pod Logs
Checks
Controller Version
0.13.1
Deployment Method
ArgoCD
Checks
To Reproduce
Describe the bug
In
containerMode.type=kubernetes-novolume, thegha-runner-scale-setchart renders a<release>-gha-rs-no-permissionServiceAccount with aactions.github.com/cleanup-protectionfinalizer. The runner pod does not use this SA (it uses the kube-mode SA instead), and the AutoscalingRunnerSet is not annotated withactions.github.com/cleanup-no-permission-service-account-name, soautoscalingRunnerSetFinalizerDependencyCleaner.removeNoPermissionServiceAccountFinalizerskips cleanup. The orphan SA then blockshelm uninstall/ ArgoCD teardown until the finalizer is manually strippedDescribe the expected behavior
The
no-permissionSA should only be rendered when the runner pod actually uses it (i.e.,containerMode.typeis neitherkubernetesnorkubernetes-novolume), matching the condition already used for theserviceAccountNameassignment and the cleanup annotation inautoscalingrunnerset.yamlAdditional Context
This is a Helm chart templating bug, not a runtime controller bug.Controller Logs
Runner Pod Logs