Two tasks in one:
Task 1: Fix kubectl not found in argocd-register.yml
Bug: The `argocd-register` workflow uses `runs-on: ubuntu-latest` (GitHub-hosted) but calls `kubectl apply` without ever installing kubectl. The "Configure kubectl" step only writes the kubeconfig; it does not install the binary. Result: exit code 127 on all GitHub-hosted runs.
Evidence: Run 29002999912 (MendysRobotics, 2026-07-09): step "Register Argo Applications" fails with `/bin/bash: line 11: kubectl: command not found`.
Fix: Add a kubectl install step BEFORE "Configure kubectl" in `.github/workflows/argocd-register.yml`:
```yaml
Place it between "Extract inline argocd bundle" and "Configure kubectl". No other changes needed.
Task 2: Install ARC self-hosted runner on Contabo k3s
The ARC runner is fully documented in `runners/` (README + `arc/install.sh` + Helm values). The runner registers at org level (`izzywdev`) in runner group `staging-runners`.
Prerequisites to check before installing:
- The runner group `staging-runners` exists in GitHub org settings — if not, note it (can't create via CLI, needs UI, but document the block)
- A GitHub App or PAT secret exists for runner registration — check if `runners/arc/github-secret.yaml` template needs a real value in cluster secrets
Install steps (using the cluster kubeconfig the runner already has):
- `kubectl apply -f runners/arc/github-secret.yaml` (after filling in the token)
- Run `runners/arc/install.sh` (installs ARC controller + staging scale set)
- Apply `runners/rbac/deployer-role.yaml` and `runners/rbac/deployer-rolebinding.yaml`
- Optionally apply `argocd/applications/arc-runners.yaml` for GitOps management
After install: add `izzywdev/FuzeKeys` to the `staging-runners` runner group allowlist in GitHub UI (or note this as a manual step).
Acceptance:
- `argocd-register.yml` has the kubectl install step; a test run succeeds
- ARC controller running in `arc-systems` ns on Contabo k3s
- Staging runner scale set running in `arc-runners` ns
- At least one runner pod visible when a job is queued
- RBAC applied
State
Originator: izzywdev/FuzeKeys, context: FuzeKeys MFE deployment pipeline. The self-hosted runner is needed so FuzeKeys CI jobs (`gate-*`, `build-and-push`) can run with cluster access without needing a kubeconfig in GH secrets.
BLOCKED items (needs human): creating the GitHub runner group in UI, and providing the GitHub App credential for ARC registration.
Two tasks in one:
Task 1: Fix kubectl not found in argocd-register.yml
Bug: The `argocd-register` workflow uses `runs-on: ubuntu-latest` (GitHub-hosted) but calls `kubectl apply` without ever installing kubectl. The "Configure kubectl" step only writes the kubeconfig; it does not install the binary. Result: exit code 127 on all GitHub-hosted runs.
Evidence: Run 29002999912 (MendysRobotics, 2026-07-09): step "Register Argo Applications" fails with `/bin/bash: line 11: kubectl: command not found`.
Fix: Add a kubectl install step BEFORE "Configure kubectl" in `.github/workflows/argocd-register.yml`:
```yaml
run: |
VERSION=v1.29.0
curl -fsSL -o kubectl "https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl"
sudo install -m 755 kubectl /usr/local/bin/kubectl
rm kubectl
kubectl version --client
```
Place it between "Extract inline argocd bundle" and "Configure kubectl". No other changes needed.
Task 2: Install ARC self-hosted runner on Contabo k3s
The ARC runner is fully documented in `runners/` (README + `arc/install.sh` + Helm values). The runner registers at org level (`izzywdev`) in runner group `staging-runners`.
Prerequisites to check before installing:
Install steps (using the cluster kubeconfig the runner already has):
After install: add `izzywdev/FuzeKeys` to the `staging-runners` runner group allowlist in GitHub UI (or note this as a manual step).
Acceptance:
State
Originator: izzywdev/FuzeKeys, context: FuzeKeys MFE deployment pipeline. The self-hosted runner is needed so FuzeKeys CI jobs (`gate-*`, `build-and-push`) can run with cluster access without needing a kubeconfig in GH secrets.
BLOCKED items (needs human): creating the GitHub runner group in UI, and providing the GitHub App credential for ARC registration.