- Added debug mode, structured ConfigMap pattern, and README to all charts - Migrated all flat-structure charts to hierarchical values under chartname key - Fixed templates to use correct hierarchical paths - Renamed helm-rustical key to rustical, added HPA support - Fixed ingress YAML parsing (oxicloud), nested env vars (rustical) - Pushed all normalized charts to OCI registry as 1.0.0+ and updated ArgoCD apps
3.8 KiB
helm-rustical
A Helm chart for Rustical WebDAV server.
TL;DR
helm install helm-rustical oci://git.roboces.dev/catalin/fukuops/helm-rustical --version 1.1.0 -n apps-roboces
Prerequisites
- Kubernetes 1.19+
- Helm 3+
- A NFS storage class (default:
truenas-nfs-csi) - An existing
Secretcontaining:RUSTICAL_PASSWORD- Password for WebDAV access
Configuration
All values are nested under the rustical: key. Example:
rustical:
autoscaling:
enabled: true
minReplicas: 1
maxReplicas: 3
targetCPUUtilizationPercentage: 80
service:
type: LoadBalancer
port: 8001
config:
oidc.name: Authentik
oidc.issuer: https://auth.example.com/application/o/rustical/
persistence:
enabled: true
storageClass: "truenas-nfs-csi"
size: 50Gi
secret:
existingSecretName: rustical
Values Reference
| Key | Type | Default | Description |
|---|---|---|---|
rustical.replicaCount |
int | 1 |
Number of replicas (when autoscaling disabled) |
rustical.image.repository |
string | ghcr.io/lennart-k/rustical |
Image repository |
rustical.image.pullpolicy |
string | Always |
Image pull policy |
rustical.image.tag |
string | .Chart.AppVersion |
Image tag |
rustical.service.type |
string | ClusterIP |
Service type |
rustical.service.port |
int | 4000 |
Service port |
rustical.service.targetPort |
int | 4000 |
Container port |
rustical.ingress.enabled |
bool | false |
Enable ingress |
rustical.autoscaling.enabled |
bool | false |
Enable HPA |
rustical.autoscaling.minReplicas |
int | 1 |
Minimum replicas |
rustical.autoscaling.maxReplicas |
int | 3 |
Maximum replicas |
rustical.autoscaling.targetCPUUtilizationPercentage |
int | 80 |
Target CPU utilization |
rustical.autoscaling.targetMemoryUtilizationPercentage |
int | 80 |
Target memory utilization |
rustical.persistence.enabled |
bool | true |
Enable persistence |
rustical.persistence.storageClass |
string | truenas-nfs-csi |
Storage class |
rustical.persistence.accessMode |
string | ReadWriteMany |
Access mode |
rustical.persistence.size |
string | 50Gi |
PVC size |
rustical.secret.existingSecretName |
string | rustical |
Existing secret name |
rustical.config |
object | {} |
Config key-value pairs mapped to env vars |
rustical.debug.enabled |
bool | false |
Enable debug mode (adds init container for troubleshooting) |
rustical.resources |
object | {} |
Container resources |
rustical.livenessProbe |
object | (see values.yaml) | Liveness probe |
rustical.readinessProbe |
object | (see values.yaml) | Readiness probe |
ConfigMap
The config: section creates a ConfigMap that maps keys to environment variables. Keys are uppercased.
Persistence
The chart creates a PVC named rustical-data. The PVC uses the truenas-nfs-csi storage class by default with ReadWriteMany access mode.
Secret Management
The chart looks for an existing Secret with the name specified in rustical.secret.existingSecretName. Required secret keys:
RUSTICAL_PASSWORD- Password for WebDAV access
Troubleshooting
Debug Mode
Enable debug mode to troubleshoot issues by adding an init container with a shell:
rustical:
debug:
enabled: true
This adds an alpine:3.19 init container with sleep infinity that mounts all volumes and inherits env vars. You can exec into it to inspect the environment:
kubectl exec -it <pod-name> -c debug -- sh
When debug mode is enabled, liveness and readiness probes are disabled to prevent restarts.
Pod not starting
kubectl get pvc -n apps-roboces -l app.kubernetes.io/name=helm-rustical
Check logs
kubectl logs helm-rustical-0 -n apps-roboces