This Helm chart deploys the UpdateController for managing TF2 game server updates in a Kubernetes cluster.
- Kubernetes 1.19+
- Helm 3.0+
- A PersistentVolume provisioner (if using persistence)
The chart is published to GitHub Container Registry as an OCI artifact:
helm install update-controller oci://ghcr.io/udl-tf/charts/update-controller --version 0.1.0# From the repository root
helm install update-controller ./helm
# Or from the helm directory
cd helm
helm install update-controller .helm install update-controller ./helm -f custom-values.yamlhelm install update-controller ./helm \
--set image.tag=v1.0.0 \
--set config.checkInterval=15m \
--set persistence.size=100GiThe following table lists the configurable parameters of the UpdateController chart and their default values.
| Parameter | Description | Default |
|---|---|---|
replicaCount |
Number of controller replicas | 1 |
image.repository |
Container image repository | ghcr.io/udl-tf/update-controller |
image.pullPolicy |
Image pull policy | Always |
image.tag |
Image tag (overrides appVersion) | "" |
serviceAccount.create |
Create service account | true |
serviceAccount.name |
Service account name | "" (generated) |
rbac.create |
Create RBAC resources | true |
config.checkInterval |
Interval to check for updates | 30m |
config.steamAppId |
Steam app ID | 232250 |
config.gameMountPath |
Path where game files are mounted | /tf |
config.podSelector |
Label selector for pods to restart | app=tf2-server |
config.maxRetries |
Maximum number of retries | 3 |
config.namespace |
Namespace where game servers run | game-servers |
resources.limits.cpu |
CPU limit | 500m |
resources.limits.memory |
Memory limit | 512Mi |
resources.requests.cpu |
CPU request | 100m |
resources.requests.memory |
Memory request | 128Mi |
persistence.enabled |
Enable persistent storage | true |
persistence.existingClaim |
Use existing PVC | "" |
persistence.size |
PVC size | 50Gi |
persistence.storageClassName |
Storage class name | standard |
namespace.create |
Create namespace | true |
namespace.name |
Namespace name | game-servers |
# custom-values.yaml
persistence:
enabled: true
existingClaim: my-existing-game-files-pvchelm install update-controller ./helm -f custom-values.yaml# custom-values.yaml
namespace:
create: false
name: my-custom-namespace# custom-values.yaml
config:
checkInterval: '15m'
maxRetries: '5'
retryDelay: '10m'helm install update-controller ./helm --set image.tag=v1.0.0helm upgrade update-controller oci://ghcr.io/udl-tf/charts/update-controller --version 0.1.0helm upgrade update-controller ./helmWith custom values:
helm upgrade update-controller ./helm -f custom-values.yamlhelm uninstall update-controllerNote: This will not delete the PVC by default. To delete it:
kubectl delete pvc -n game-servers update-controller-game-fileskubectl get pods -n game-servers -l app.kubernetes.io/name=update-controllerkubectl logs -n game-servers -l app.kubernetes.io/name=update-controller -fkubectl describe clusterrole update-controller
kubectl describe clusterrolebinding update-controllerkubectl get configmap -n game-servers update-controller-config -o yamlMIT