HAProxy Frontends and Backends

Pattern-level inventory of the lab HAProxy frontends, SNI matches, and backends — public IPs and host addresses redacted.

The lab runs a single HAProxy edge VM (Ubuntu 24.04, HAProxy 2.8.16) with roughly 40 frontend / backend / listen blocks in /etc/haproxy/haproxy.cfg. The model is three-tier: a public Internet edge, a private lab-network edge (same hostnames), and a loopback SNI-passthrough plane that re-decrypts TLS with the *.apps.sub.comptech-lab.com wildcard cert before reaching VM backends. This table is the pattern-level surface — exact bind IPs and backend addresses are redacted; full custody lives in opp-full-plat/connection-details/.

HAProxy is platform-VM-only. OpenShift cluster APIs and *.apps.<cluster>.* routes do not transit this HAProxy — they bind to dedicated public IPs.

Frontends (binds)

Frontend (port)SNI matchBackendNotes
public-apps-http (:80)host header match on *.apps.sub.comptech-lab.comredirect HTTPS or public-apps-http-bePrimary public HTTP edge; ACME challenges and HTTPS redirect.
public-apps-https (:443)SNI on *.apps.sub.comptech-lab.combranches to vm-tls-be, wso2-*-vm-be, gitlab-vm-be, etc.Primary public HTTPS edge.
public-apps-dr-http (:80)host header match (DR public IP)same backends, DR variantSecondary public edge for failover.
public-apps-dr-https (:443)SNI on *.apps.sub.comptech-lab.com (DR)same VM backendsSecondary public HTTPS edge.
public-apps-https (lab :443)same SNI rulessame VM backendsPrivate/lab-network edge — same hostnames resolve internally too.
vm-tls (loopback :8443)SNI passthrough decrypted with wildcard certhost-header re-route to vm-tls-beLoopback PROXY-protocol re-decrypt plane.
rke2-api (lab :6443)RKE2 cluster API (legacy)Legacy RKE2 cluster control plane.
rke2-supervisor (lab :9345)RKE2 supervisor port (legacy)Legacy RKE2 supervisor.

Backends (by category)

VM-side TLS passthrough (SNI on :443, host-header on loopback)

SNI hostname (pattern)Backend (logical)Notes
gitlab.apps.sub.comptech-lab.comgitlab-vm-beGitLab CE 18.11.1.
minio.apps.sub.comptech-lab.comminio-api-vm-beMinIO S3 API.
minio-console.apps.sub.comptech-lab.comminio-console-vm-beMinIO web console.
nexus-mirror.apps.sub.comptech-lab.comvm-tls-be -> Nexus VMNexus UI/API.
mirror-registry.apps.sub.comptech-lab.comvm-tls-be -> Nexus :5000OpenShift install mirror.
docker-group.apps.sub.comptech-lab.comvm-tls-be -> Nexus :5001Developer base-image pulls.
app-registry.apps.sub.comptech-lab.comvm-tls-be -> Nexus :5002App image pushes.
nexus.apps.sub.comptech-lab.comvm-tls-be -> Nexus VMLegacy alias for Nexus UI.
nexus-docker.apps.sub.comptech-lab.comnexus-docker-rke2-beLegacy RKE2-era Docker connector (may be decommissioned).
defectdojo.apps.sub.comptech-lab.comdefectdojo-vm-beDefectDojo SecOps UI.
jenkins.apps.sub.comptech-lab.comvm-tls-be -> Jenkins VMJenkins controller.
signoz.apps.sub.comptech-lab.comvm-tls-be -> SigNoz VMSigNoz EE observability.
trivy.apps.sub.comptech-lab.comvm-tls-be -> Trivy VMTrivy server.
monitoring.apps.sub.comptech-lab.comvm-tls-be -> monitoring-0Sandbox LGTM stack.
grafana.apps.sub.comptech-lab.comvm-tls-be -> monitoring-0Grafana UI on monitoring sandbox.
grafana.mon.sub.comptech-lab.comvm-tls-be with wildcard-mon.pem*.mon.* exposure pattern.
haproxy.apps.sub.comptech-lab.comhaproxy-self-beHAProxy stats / self-management.

WSO2 hostnames (separate ACL group)

SNI hostnameBackend (logical)Notes
is.apps.sub.comptech-lab.comwso2-is-vm-beWSO2 Identity Server.
auth.apps.sub.comptech-lab.comwso2-is-vm-beWSO2 IS alias used for OIDC.
apim.apps.sub.comptech-lab.comwso2-apim-mgmt-vm-beWSO2 APIM management plane.
publisher.apps.sub.comptech-lab.comwso2-apim-mgmt-vm-beAPIM publisher.
devportal.apps.sub.comptech-lab.comwso2-apim-mgmt-vm-beAPIM developer portal.
admin.apps.sub.comptech-lab.comwso2-apim-mgmt-vm-beAPIM admin.
gateway.apps.sub.comptech-lab.comwso2-apim-gateway-vm-beAPIM gateway data plane.

Legacy RKE2-hosted services (may be partially decommissioned)

SNI hostnameBackend (logical)Notes
vault-rke2.apps.sub.comptech-lab.comvault-rke2-beLegacy in-cluster Vault path (Vault VM is current authoritative).
auth-legacy.apps.sub.comptech-lab.comkeycloak-rke2-beLegacy Keycloak.
terrakube-ui.apps.sub.comptech-lab.comterrakube-ui-rke2-beTerrakube UI.
terrakube-api.apps.sub.comptech-lab.comterrakube-api-rke2-beTerrakube API.
terrakube-reg.apps.sub.comptech-lab.comterrakube-reg-rke2-beTerrakube registry.
awx.apps.sub.comptech-lab.comawx-rke2-beAWX.
redisinsight-dr.apps.sub.comptech-lab.comredisinsight-dr-rke2-beRedisInsight (DR variant).
bootstrap.kafka.apps.sub.comptech-lab.comkafka-rke2-beKafka bootstrap (SNI passthrough).
broker-0.kafka.apps.sub.comptech-lab.comkafka-rke2-beKafka broker 0.
broker-1.kafka.apps.sub.comptech-lab.comkafka-rke2-beKafka broker 1.
broker-2.kafka.apps.sub.comptech-lab.comkafka-rke2-beKafka broker 2.

Self / utility / fallback

Frontend / backendPurpose
haproxy-self-beHAProxy stats served back to its own host.
public-apps-http-be, public-apps-https-beDefault fallback path (in-cluster routes).
errors/ directoryCustom HTTP error pages.
certs/wildcard-apps.pemLE wildcard for *.apps.sub.comptech-lab.com.
certs/wildcard-mon.pemLE wildcard for *.mon.sub.comptech-lab.com.

Add-a-new-host pattern (five spots)

When adding a <svc>.apps.sub.comptech-lab.com host, mirror the existing entries in these five places:

  1. SNI ACL in public-apps-https (and DR variant).
  2. use_backend rule keyed on the SNI ACL.
  3. Public-apps-http redirect ACL (so HTTP -> HTTPS works).
  4. vm-tls deny-unless ACL (so the loopback re-decrypt only accepts known hosts).
  5. New backend block targeting the VM IP and port.

For *.mon.* hosts the cert pair on 127.0.0.1:8443 selects the right wildcard by SNI; the cert side is one-and-done after wildcard-mon.pem was first issued.

Internal only

Specific public IPs (primary + DR), bind addresses, backend IPs, and the dated haproxy.cfg.bak.* change ledger are kept in opp-full-plat/connection-details/ and on the haproxy VM.

Last regenerated from reference_haproxy_vm.md, reference_lab_infrastructure.md (*.mon.* pattern), connection-details/nexus.md (registry split).

Last reviewed: 2026-05-11