
Due to currently-unknown fault, my Vault storage got full up (I _suspect_ it's due to not setting a default TTL on Tokens, and so they all hung around. Surprised they were created at such a rate, but w/e). I wasn't able to directly expand the volume - and, anyway, it's on Longhorn which is a Storage Provisioner that I'm moving away from - so the solution was to: * Create a temporary PV (on FreeNas, though that doesn't actually matter) and copy data onto it (by mounting both it and the existing Volume onto a debug pod, using a variant of [this script](https://blog.scubbo.org/posts/pvc-debug-pod/)) * Delete the existing PVC and PV * Make this update, and sync * A new _empty_ PV will be created (and probably populated with some stuff) * Scale-down the StatefulSet, do the double-mount-to-debug-pod trick again, and copy data from the temporary PV onto this one * Delete Debug Pod, re-scale-up StatefulSet...and hope that there's nothing stateful in the data which means that copying it from one volume to another makes it invalid (e.g. if encrypted with an encryption key which would change on a new spin-up of the pod - which _seems_ unlikely, but 🤷)
Collection of Helm charts, primarily for use in my own homelab (though, if you want to use them, you're welcome to!)
Usage
Package and upload
# Package a chart ready to be uploaded
$ helm package charts/<path>
# Do the upload
$ curl --user <username>:<password> -X POST --upload-file ./<package>.tgz https://hostname.of.gitea/api/packages/<user>/helm/api/charts
# Don't forget to delete the `.tgz`!
Installation
Bootstrap with kubectl apply -f main-manifest.yaml
TODO: App-of-apps to manage whole-cluster configuration in a more programmatic way.
Initial bootstrap
Note that you need to have manually connected the source Repository in ArgoCD before installing the App-of-apps.
TODO - when we have a better secrets management system, export Gitea user password so that it can be used by ArgoCD to initialize that repository directly (https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#repositories)
Jsonnet
As of 2024, I started using Jsonnet to define apps in a less repetitious way.
To check the output before submitting, use jsonnet -J app-of-apps app-of-apps/<filename>.jsonnet
Other links
- General documentation on repositories
- Gitea's own documentation
- Helm charts via Argo, broader application syntax
- Don't be caught out by Argo's behaviour of only accepting Applications in its own namespace!
- See here for examples of how to call the Argo UI