Replaces single-port service.port shorthand to expose two ports.
metrics.enabled: true
Opt-in to monitoring (defaults are off).
ingress
Routes web.example.com to the Service. Its serviceName is a plain string, so it has to name what the chart renders.
fullnameOverride
Pins the prefix on every resource name to webapp, making the Service webapp-web instead of webapp-universal-helm-chart-web — that is the name the Ingress backend spells out.
hpa
Auto-scales on CPU; replicaCount is omitted from the rendered Deployment because HPA is on (see ADR 007).
integrations.monitoring.defaults.enabled: true
Turns the default scrape on for every workload (per-workload metrics.enabled still acts as opt-out).
An Ingress controller (e.g. nginx, traefik) installed in the cluster. Adjust ingressClassName.
Prometheus Operator CRDs (monitoring.coreos.com) installed if you want the ServiceMonitor to actually be picked up. Without them the chart still renders but the resource has no consumer.
For TLS to work, a Secret named web-example-tls with cert/key, or a cert-manager Certificate issuing into it.