Skip to main content

symfony

Helm chart for Symfony PHP applications.

  • Workload kind: StatefulSet
  • Container port: 80
  • Probes: required, always on (/health startup + liveness, /ready readiness)
  • Init container: runs ./.container-init.sh if present in the image

Dependencies

Defaults worth knowing

replicaCount: 2
terminationGracePeriodSeconds: 30
container:
port: 80
probes:
startup: { path: /health, periodSeconds: 2, failureThreshold: 60 }
readiness: { path: /ready, periodSeconds: 5, failureThreshold: 3 }
liveness: { path: /health, periodSeconds: 10, failureThreshold: 3 }

Probes are not toggleable on this chart — if your image doesn't expose them, use php-generic instead.

Minimum project values

global:
projectSlug: my-project
environmentSlug: staging
image:
repository: registry.gitlab.com/onyourmarks/k8s/my-project/app
tag: abc123-staging

component-traefik-ingress:
enabled: true
hosts:
- host: my-project.staging.k8s.instance.onyourmarks.tech
paths: [{ path: /, pathType: Prefix }]
tls:
- secretName: traefik-ingress-tls
hosts: [my-project.staging.k8s.instance.onyourmarks.tech]

component-database:
enabled: true

Shared volumes (RWX)

Cross-pod shared storage is opt-in via global.sharedVolumes. Each entry creates an nfs-backed ReadWriteMany PVC and mounts one or more paths from it into the app container.

global:
sharedVolumes:
- name: shared
size: 2Gi
mounts:
- path: /var/app/var/cache
subPath: cache
- path: /var/app/public/cache
subPath: public-cache

See component-shared-volume for the full schema and Shared storage for cluster-level context.