fukuops/k8s/charts/helm-rustical/README.md
cătălin 1fd2bfef3d
feat(helm): complete chart normalization with ConfigMap, HPA, and OCI migration
- 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
2026-08-14 09:35:19 +02:00

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 Secret containing:
    • 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