symfony
Helm chart for Symfony PHP applications.
- Workload kind:
StatefulSet - Container port: 80
- Probes: required, always on (
/healthstartup + liveness,/readyreadiness) - Init container: runs
./.container-init.shif present in the image
Dependencies
component-traefik-ingresscomponent-pdbcomponent-external-secretcomponent-rediscomponent-databasecomponent-tasks
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.