site with three children: a Deployment named site, a Service named site, and a ConfigMap named site-config. Each child points back to the parent. What happens if you delete the parent?

controllerutil.SetControllerReference from the controller-runtime project. You pass the parent object (the WebApp), the child object you will create, and the controller Scheme (the registry that maps Go types to Kubernetes API kinds).
Call the helper before creating the child so the owner reference is set at creation time:
controller-runtime will receive events for those children and enqueue the parent WebApp for reconciliation when changes occur.

Set the controller reference for every child the WebApp creates before you call the API to create that child. This avoids orphaned resources and makes ownership visible with
kubectl inspection.Owner references have important constraints: owners and dependents must be in the same namespace unless the owner is cluster-scoped. Also, be cautious when setting ownerReferences for resources created by users outside the operator—you may unintentionally enable deletion of user-managed objects.

- Kubernetes owner/dependent docs: https://kubernetes.io/docs/concepts/overview/working-with-objects/owners-dependents/
- Kubernetes UIDs: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
- Garbage collection in Kubernetes: https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/
- controller-runtime
SetControllerReference: https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/controller/controllerutil#SetControllerReference