chore: build
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
# 1 seul replica tant que les médias sont sur des volumes ReadWriteOnce
|
||||
# (persistence.* ci-dessous) ; passer à S3 avant d'en mettre plus.
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: vitrine-backend
|
||||
tag: latest
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
# Injecté par qui déploie (voir deploy/chart-gestion/registry-credentials
|
||||
# dans omnex/deploy pour le modèle) si un compte registry authentifié est
|
||||
# configuré — évite le rate-limit de pull anonyme partagé par IP de nœud.
|
||||
# Vide = pull anonyme (défaut).
|
||||
imagePullSecrets: []
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8080
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 256Mi
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 2
|
||||
maxReplicas: 5
|
||||
targetCPUUtilizationPercentage: 70
|
||||
|
||||
# Deux volumes distincts : uploads (médias publics, servis via /uploads) et
|
||||
# verification (pièces d'identité clients, jamais servies publiquement --
|
||||
# voir backend/internal/modules/customerverification). Seulement pertinent
|
||||
# pour media.storageDriver=local ci-dessous ; avec S3 les deux sont désactivables.
|
||||
persistence:
|
||||
uploads:
|
||||
enabled: true
|
||||
size: 5Gi
|
||||
storageClass: "longhorn-replicated"
|
||||
accessMode: ReadWriteOnce
|
||||
verification:
|
||||
enabled: true
|
||||
size: 2Gi
|
||||
storageClass: "longhorn-replicated"
|
||||
accessMode: ReadWriteOnce
|
||||
|
||||
# Postgres/Redis de CE namespace (voir ../postgresql, ../redis) -- host par
|
||||
# défaut = le nom de Service que ces charts produisent avec leur
|
||||
# fullnameOverride par défaut ("postgres"/"redis"). name/user = auth.database /
|
||||
# auth.username par défaut de ../postgresql.
|
||||
# Le mot de passe vit dans secrets.DB_PASSWORD / secrets.REDIS_PASSWORD
|
||||
# ci-dessous (jamais ici), et DATABASE_URL/REDIS_URL sont assemblés par
|
||||
# templates/secret.yaml à partir des deux.
|
||||
database:
|
||||
host: postgres
|
||||
port: 5432
|
||||
name: vitrine_db
|
||||
user: postgres
|
||||
sslmode: disable
|
||||
|
||||
redis:
|
||||
host: redis
|
||||
port: 6379
|
||||
db: 0
|
||||
|
||||
# Variables non sensibles (backend/internal/platform/config). PORT doit
|
||||
# rester égal à service.port ci-dessus / containerPort (templates/deployment.yaml).
|
||||
env:
|
||||
PORT: "8080"
|
||||
GIN_MODE: release
|
||||
# Laisser vide si frontend et backend sont routés sur le même host par
|
||||
# l'IngressRoute partagée (voir ../ingressroute) -- l'origine est alors la
|
||||
# même pour le navigateur et CORS n'entre pas en jeu.
|
||||
CORS_ORIGIN: ""
|
||||
ACCESS_TOKEN_TTL_MINUTES: "15"
|
||||
REFRESH_TOKEN_TTL_HOURS: "168"
|
||||
COOKIE_SECURE: "true"
|
||||
# Nombre maximum de comptes admin : saisi par l'admin au déploiement
|
||||
# (dashboard Omnex), surchargé par le control-plane.
|
||||
ADMIN_NUMBER: "1"
|
||||
SEED_ADMIN_USERNAME: admin
|
||||
MEDIA_STORAGE_DRIVER: local
|
||||
MEDIA_MAX_UPLOAD_MB: "10"
|
||||
MEDIA_LOCAL_DIR: /app/uploads
|
||||
# URL publique sous laquelle /uploads est servi -- à fixer explicitement
|
||||
# une fois le host de l'IngressRoute connu (ex: https://shop.example.com/uploads).
|
||||
MEDIA_LOCAL_BASE_URL: ""
|
||||
VERIFICATION_UPLOAD_DIR: /app/verification-uploads
|
||||
S3_BUCKET: ""
|
||||
S3_REGION: ""
|
||||
S3_ENDPOINT: ""
|
||||
S3_USE_PATH_STYLE: "false"
|
||||
S3_PUBLIC_BASE_URL: ""
|
||||
|
||||
|
||||
# Valeurs sensibles -- à surcharger via --set-string ou un Secret Manager
|
||||
# externe, jamais commitées avec une vraie valeur. DATABASE_URL et REDIS_URL
|
||||
# ne sont PAS ici : templates/secret.yaml les construit à partir de
|
||||
# database.* / redis.* ci-dessus + DB_PASSWORD / REDIS_PASSWORD.
|
||||
secrets:
|
||||
JWT_SECRET: "change-me-to-a-long-random-secret"
|
||||
DB_PASSWORD: ""
|
||||
REDIS_PASSWORD: ""
|
||||
SEED_ADMIN_PASSWORD: ""
|
||||
S3_ACCESS_KEY_ID: ""
|
||||
S3_SECRET_ACCESS_KEY: ""
|
||||
|
||||
# Bootstrap du compte admin initial (cmd/seed). PAS idempotent -- échoue si
|
||||
# SEED_ADMIN_USERNAME existe déjà (voir backend/cmd/seed/main.go), donc ce
|
||||
# Job ne tourne qu'en post-install (jamais post-upgrade). À repasser à false
|
||||
# après la première installation réussie.
|
||||
seedJob:
|
||||
enabled: false
|
||||
backoffLimit: 0
|
||||
|
||||
# Applique backend/migrations (embarquées dans l'image) sur DATABASE_URL en
|
||||
# hook pre-install/pre-upgrade, via l'image officielle golang-migrate.
|
||||
# `migrate up` est idempotent -- rien n'empêche de le laisser actif à chaque
|
||||
# upgrade, contrairement au seed Job ci-dessus.
|
||||
migrationJob:
|
||||
enabled: true
|
||||
backoffLimit: 2
|
||||
image:
|
||||
repository: migrate/migrate
|
||||
tag: v4.18.1
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 20
|
||||
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: http
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
|
||||
podSecurityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 101
|
||||
runAsGroup: 101
|
||||
fsGroup: 101
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
|
||||
podAnnotations: {}
|
||||
Reference in New Issue
Block a user