[codex] add split persistence chart support#9
Draft
seslly wants to merge 3 commits into
Draft
Conversation
71b1120 to
6e0589c
Compare
6e0589c to
9d79493
Compare
9d79493 to
b3f0e26
Compare
832ce93 to
40353c9
Compare
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.
Summary
Adds generic Helm persistence support for split storage while preserving the current default single-PVC install path.
persistence.*values withpersistence.claims[]andpersistence.mounts[]blocks.dataPVC mounted at/home/steam.existingClaimper claim and arbitrary directvolumeMountsin both the game and UI containers.env[]wiring for game/UI containers as additive env only; duplicate names and chart-managed env collisions now fail template rendering.WindowsServer/R5, runtime mounts provide the large Steam-managed R5 directories, mod payload dirs are nested back onto state, and backups mount separately.~modsdirectory roots while still clearing/replacing their contents.This version intentionally does not add a runtime state sync loop or shadow-copy state directory. Split persistence is expressed through Kubernetes mountpoints. It also intentionally does not bump chart or image versions; release numbering can be handled by the release commit.
Dotfile/state handling
The current admin/runtime metadata files stay where they already are. In the split layout,
WindowsServer/R5is the state mount, so R5-root files such as.backup-config.json,.idle-patch-override,.maintenance-mode,.mods.json,.mods.staged.json, and.mods-staging/live directly on the state PVC. Backup markers such as.autoand.mods-includedlive under the backup root. Runtime-only artifacts under SteamCMD/Proton and patched binaries stay on runtime storage.Upgrade behavior
helm upgrade --reuse-valuesfrom the released0.2.1chart works for the old default scalar values and preserves the single-PVC layout. Customized old scalar values fail at render time with a generated migration snippet for the newclaims[]/mounts[]shape.Validation
helm lint ./helm/windrosehelm template windrose ./helm/windrose >/dev/nullhelm template windrose ./helm/windrose -f /tmp/windrose-split-direct-values.yaml >/tmp/windrose-split-direct-render.yamlhelm template windrose ./helm/windrose --set persistence.size=20Gi >/dev/nullhelm template windrose ./helm/windrose --set persistence.size=21Gifails with the expected migration snippet.helm template windrose ./helm/windrose --set 'env[0].name=SERVER_NAME' --set 'env[0].value=bad'fails becauseSERVER_NAMEis chart-managed.helm template windrose ./helm/windrose --set 'env[0].name=EXTRA_ONE' --set 'env[0].value=a' --set 'env[1].name=EXTRA_ONE' --set 'env[1].value=b'fails becauseenv[]duplicates itself.helm template windrose ./helm/windrose --set 'env[0].name=WINDROSE_BACKUP_ROOT' --set 'env[0].value=/home/steam/backups' >/dev/nullpython3 tests/test_restore.pypython3 -m py_compile server.py tests/test_restore.pybash -n scripts/entrypoint.shdocker compose config --quietgit diff --check/home/steam.WindowsServer/R5plus~mods/~mods.disabled, and local-path backingBinaries,Config,Content,Plugins, and/home/steam/backups.~modsroots are preserved while contents are cleared.0.2.1to the local chart in this PR with--reuse-values: rollout completed and stayed on the single default PVC.0.2.1with customizedpersistence.size: 21Gi: upgrade failed before mutation with the migration snippet and left the release atwindrose-0.2.1revision 1.Note: local
shellcheckis not installed in this environment, so shellcheck is left to CI.