# OdooSky v3 instance-template-v3 — default values. # # Per-tenant overlay repos override only the keys that differ from these # defaults. Keep this file as the single source of truth for what an # Odoo instance looks like by default; do not duplicate defaults in the # overlay schema or in Tower-Go. instance: # Short slug used in K8s object names + as the Helm release name. # Must be DNS-safe (lowercase, no underscores, <= 40 chars). code: demo # The full HTTPS hostname this instance answers on. # Tenants live under *.tenants.odoosky.org (covered by wildcard DNS A). domain: demo.tenants.odoosky.org # Named size — looked up against the `sizes` table below to derive # CPU / memory limits + Odoo workers. Per-tenant overlays only need # `instance.size: medium` (etc); they don't have to know the numbers. size: small # The named-size table. Single source of truth for what each instance # tier actually gets. Adjust here, ALL future instances pick up the # new defaults on next reconcile. Existing instances keep their # previously-rendered manifests until ArgoCD re-syncs. # # Anchored loosely on v2's tested defaults: # tiny — dev/preview, 1 user # small — 5–15 users, default # medium — 15–50 users # large — 50–150 users sizes: tiny: odoo: requests: { memory: 256Mi, cpu: 100m } limits: { memory: 1Gi, cpu: "1" } postgres: requests: { memory: 128Mi, cpu: 50m } limits: { memory: 256Mi, cpu: 500m } small: odoo: requests: { memory: 512Mi, cpu: 250m } limits: { memory: 2Gi, cpu: "2" } postgres: requests: { memory: 256Mi, cpu: 100m } limits: { memory: 1Gi, cpu: "1" } medium: odoo: requests: { memory: 1Gi, cpu: 500m } limits: { memory: 4Gi, cpu: "4" } postgres: requests: { memory: 512Mi, cpu: 250m } limits: { memory: 2Gi, cpu: "2" } large: odoo: requests: { memory: 2Gi, cpu: "1" } limits: { memory: 8Gi, cpu: "6" } postgres: requests: { memory: 1Gi, cpu: 500m } limits: { memory: 4Gi, cpu: "3" } odoo: image: odoo tag: "18.0" # Filestore PVC size (Odoo's /var/lib/odoo). filestoreSize: 10Gi postgres: image: postgres tag: "16-alpine" user: odoo database: postgres # If empty, the chart auto-generates on first install and re-reads # the existing Secret on subsequent upgrades (lookup pattern). password: "" storage: 10Gi backups: enabled: true # Cron schedule for the automatic backup job. Default 03:00 UTC # daily — quiet hour for most timezones, non-business in EU/US/AS. schedule: "0 3 * * *" # PVC size for retained dumps. Holds ~7 days of dumps for a small # instance; scale up via overlay if the instance has a large DB. storage: 10Gi # How many dumps to retain. Older ones are pruned by the same Job. retain: 7 ingress: # Traefik entrypoint name (set on the Traefik install in the # `traefik` namespace). entryPoint: websecure # The pre-provisioned wildcard cert for *.tenants.odoosky.org — # one Certificate resource issued ONCE in the chart's release # namespace, then every instance's IngressRoute references the # resulting Secret. Avoids Let's Encrypt's per-week certificate # issuance ceiling (50/week/registered-domain) as we scale to # many tenants. # # See infrastructure/cluster/wildcard-cert.yaml for the # provisioning manifest. tlsSecret: tenants-wildcard-tls