Files
php-apache/helm/php-homepage

PHP homepage chart

This chart runs the unified php-apache image with a web root mounted at /srv/http. It is intended for sites whose source and mutable application data live on CephFS so the same files are available to the runtime pod and the browser-based development container.

Published chart packages set appVersion to the unique php-apache image tag created in the same CI run. image.tag is empty by default and therefore uses that appVersion. Keep site-specific values free of image overrides so a chart upgrade also upgrades the runtime image.

Add and refresh the Gitea chart repository with:

helm repo add brunner https://code.brunner.ninja/api/packages/feedc0de/helm
helm repo update brunner

Existing sites

Set the existing RWX claim in the site's values file:

fullnameOverride: example-site

persistence:
  existingClaim: example-site

When existingClaim is set, the chart emits no PersistentVolumeClaim. Helm therefore neither owns nor deletes the claim. Deleting the release removes the workload but leaves all website files intact.

The first installation can adopt a Deployment, Service, and Ingress previously created by kubectl apply:

helm upgrade --install example-site brunner/php-homepage \
  --namespace default \
  --values /path/to/example-site/values.yaml \
  --take-ownership \
  --wait

Review helm template or a server-side dry-run before adoption. The release name and fullnameOverride must match the existing resource names. The chart's selector remains the legacy app: <resource-name> selector so Kubernetes does not reject the Deployment because its selector is immutable.

New sites

With persistence.existingClaim empty, the chart creates an RWX PVC using rook-cephfs. The PVC has helm.sh/resource-policy: keep by default, so an uninstall does not discard site content. Set persistence.retain: false only when deleting the release should also delete its dynamically created claim.

Ingress, TLS, probes, scheduling, storage size, and the image tag are all configurable through values.yaml. TCP probes are used by default because individual websites may redirect /, require authentication, or select their own HTTP status behavior.