Upgrading BadgerOrchestrator
This guide covers how to upgrade the BadgerOrchestrator running in your Kubernetes cluster. Orchestrator upgrades are typically required after updating the panel to maintain protocol compatibility.
Before You Begin
Check Current Version
# Check the running orchestrator version
kubectl -n badgerpanel-system logs deployment/badgerpanel-orchestrator | head -5Or check in the panel admin area under Admin > Clusters -- each cluster shows its running orchestrator version.
Review Release Notes
Before upgrading, check if the new version requires:
- Updated RBAC permissions (new Kubernetes API access)
- Configuration changes (new or renamed fields)
- A minimum Kubernetes version
Upgrade Process
Option A: Image Tag Update (Recommended)
If the orchestrator is deployed using a container image:
# Update the deployment to use the latest image
kubectl -n badgerpanel-system set image deployment/badgerpanel-orchestrator \
orchestrator=badgerpanel/orchestrator:latest
# Or pin to a specific version
kubectl -n badgerpanel-system set image deployment/badgerpanel-orchestrator \
orchestrator=badgerpanel/orchestrator:1.1.0Kubernetes will perform a rolling update, starting a new pod with the updated image before terminating the old one.
Option B: Re-apply the Manifest
If you used the panel-generated manifest during installation:
- Go to Admin > Clusters in the panel
- Click on the cluster
- Go to the Installation tab
- Download the latest manifest (it will reference the latest orchestrator version)
- Apply it:
kubectl apply -f orchestrator-manifest.yamlOption C: Manual Binary Update
If you built a custom image with the orchestrator binary:
- Download the latest binary from your panel:
# Determine architecture
# amd64 for most servers, arm64 for ARM-based clusters
curl -o orchestrator \
"https://panel.your-domain.com/api/v1/orchestrator/download?arch=amd64"- Build a new container image with the updated binary
- Push the image to your registry
- Update the deployment:
kubectl -n badgerpanel-system set image deployment/badgerpanel-orchestrator \
orchestrator=your-registry.com/badgerpanel-orchestrator:new-versionMonitoring the Upgrade
Watch the Rolling Update
kubectl -n badgerpanel-system rollout status deployment/badgerpanel-orchestratorVerify the New Pod
# Check pod status
kubectl -n badgerpanel-system get pods -l app.kubernetes.io/component=orchestrator
# Check logs for successful startup
kubectl -n badgerpanel-system logs deployment/badgerpanel-orchestrator --tail 30Verify in the Panel
After the upgrade:
- Navigate to Admin > Clusters
- Confirm the cluster shows as online
- Verify the orchestrator version is updated
- Check that cluster node and pod information is reporting correctly
- Test creating or managing a server on the cluster
Updating RBAC Permissions
Some orchestrator upgrades may require additional Kubernetes API permissions. If the upgrade includes RBAC changes:
# Re-apply the RBAC manifests
kubectl apply -f rbac.yaml
# Or re-apply the full manifest from the panel
kubectl apply -f orchestrator-manifest.yamlSigns that RBAC needs updating:
- Orchestrator logs show "forbidden" errors after the upgrade
- Certain operations (e.g., pod exec, node management) stop working
- The release notes mention new RBAC requirements
Rolling Back
If the upgrade causes issues, Kubernetes makes rollbacks straightforward:
# Roll back to the previous version
kubectl -n badgerpanel-system rollout undo deployment/badgerpanel-orchestrator
# Verify the rollback
kubectl -n badgerpanel-system rollout status deployment/badgerpanel-orchestrator
kubectl -n badgerpanel-system get podsRollback History
Kubernetes keeps a history of deployments by default. You can roll back to any previous revision:
# View revision history
kubectl -n badgerpanel-system rollout history deployment/badgerpanel-orchestrator
# Roll back to a specific revision
kubectl -n badgerpanel-system rollout undo deployment/badgerpanel-orchestrator --to-revision=2Upgrading Multiple Clusters
If you manage multiple Kubernetes clusters with BadgerOrchestrator:
- Upgrade one cluster first as a canary
- Verify the upgrade works correctly
- Upgrade remaining clusters sequentially or in parallel
# Iterate through kubeconfig contexts
for ctx in cluster-1 cluster-2 cluster-3; do
echo "Upgrading $ctx..."
kubectl --context $ctx -n badgerpanel-system set image \
deployment/badgerpanel-orchestrator \
orchestrator=badgerpanel/orchestrator:latest
doneImpact on Running Servers
During the orchestrator upgrade:
- Running game server pods are not affected -- they continue running independently
- Console streaming is briefly interrupted (reconnects automatically)
- Management operations (start, stop, restart) are unavailable during the ~10-30 second rollover
- No data loss occurs -- PersistentVolumeClaims are not affected
Zero-Downtime
Because Kubernetes performs a rolling update by default (starting the new pod before terminating the old one), the downtime window for management operations is minimal.
Next Steps
- Orchestrator Configuration -- Review configuration options
- Troubleshooting -- Common issues and solutions