SecuAAS Docs

Kubernetes Deployment

SecuFile — Kubernetes Deployment

Kubernetes Deployment

Kubernetes Deployment

Deployment Architecture

SecuFile is deployed on an OVH Managed Kubernetes cluster (k8s-dev and k8s-prod) in the secufile namespace.

Pods in the secufile Namespace

DeploymentImageRole
apisecufile-backendGo API (Gin)
web-backendsecufile-webgui-backendPython backend (FastAPI)
web-frontendsecufile-webgui-frontendReact frontend (nginx)
postgrespostgres:15Database
redisredis:7-alpineCache and rate limiting
clamavclamav/clamavAntivirus (optional)

Deployment via SecuOps

SecuOps is the mandatory CLI tool for all Kubernetes operations.

# Build Docker images
secuops build --app=secufile-backend --env=k8s-dev
secuops build --app=filesecure-webgui --env=k8s-dev

# Deploy
secuops deploy --app=secufile-backend --env=k8s-dev
secuops deploy --app=filesecure-webgui --env=k8s-dev

# Check status
secuops status --app=secufile-backend --env=k8s-dev

# View logs
secuops logs --app=secufile-backend --env=k8s-dev

# Update a deployment image
secuops kubectl --env=k8s-dev -- set image deployment/api api=<image> -n secufile
secuops kubectl --env=k8s-dev -- set image deployment/web-backend web-backend=<image> -n secufile
secuops kubectl --env=k8s-dev -- set image deployment/web-frontend web-frontend=<image> -n secufile

Deployment URLs

DNS Convention

Following the SecuAAS DNS convention:

  • Namespace: secufile
  • Primary URL: secufile.secuaas.dev (dev) / secufile.secuaas.ovh (prod)
  • API: api.secufile.secuaas.dev / api.secufile.secuaas.ovh

Health Checks

The Kubernetes deployment uses the following probes:

livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 30

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10
  • /health: Returns 200 if the process is alive
  • /ready: Returns 200 if PostgreSQL and Redis are reachable, 503 otherwise

Image Registry

Docker images are stored in the OVH Harbor registry:

qq9o8vqe.c1.bhs5.container-registry.ovh.net/secuops/

Tag format: {app}-{component}:main-{HHMMSS} (e.g., secufile-backend-backend:main-012619)

Kubernetes Secrets Management

# List namespace secrets
secuops kubectl --env=k8s-dev -- get secrets -n secufile

# The main secret contains 32+ keys:
# secufile-secrets (JWT, DB, S3, Stripe, Zitadel, OVH, Resend, etc.)

Resource Configuration

Resources are defined in the secuops.yaml configuration file per environment:

EnvironmentComponentCPUMemoryReplicas
devbackend0.5256 MB1
devpostgres0.5256 MB1
devredis0.25128 MB1
stagingbackend0.5512 MB2
prodbackend1.0512 MB3
prodpostgres1.01 GB1
prodredis0.5256 MB1

Deployment Strategy

The deployment uses a rolling update strategy:

  • maxSurge: 1 -- One additional pod during updates
  • maxUnavailable: 0 -- Zero downtime
  • rollbackOnFailure: true -- Automatic rollback on failure

On this page