Migrate configuration paths to /etc/easyhaproxy and improve health check support in E2E tests
- Refactored HAProxy configuration files, templates, and paths to use `/etc/easyhaproxy` instead of `/etc/haproxy`. - Updated Dockerfile to generate DH params and placeholder certificates in the new configuration directory. - Added health check support with timeout to `DockerComposeFixture` in E2E test utilities. - Adjusted tests, templates, and plugins to use the new `Consts`-based configuration paths. - Introduced pytest fixtures for environment isolation and temporary directory management.
This commit is contained in:
parent
3e963228f3
commit
045dd3817e
73 changed files with 600 additions and 287 deletions
|
|
@ -5,7 +5,7 @@
|
|||
# WHAT THIS TESTS:
|
||||
# - HAProxy routing of /.well-known/acme-challenge/ to certbot backend
|
||||
# - Certbot HTTP-01 challenge completion with Pebble ACME server
|
||||
# - Certificate issuance and storage in /certs/certbot/live/{domain}/
|
||||
# - Certificate issuance and storage in /etc/easyhaproxy/certs/live/{domain}/
|
||||
# - HTTPS serving with issued certificate
|
||||
# - Full end-to-end ACME protocol flow
|
||||
#
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
# docker compose -f docker-compose-acme-e2e.yml logs haproxy
|
||||
#
|
||||
# # Verify certificate was issued
|
||||
# ls -la ../../certs/certbot/live/test.local/
|
||||
# ls -la ../../certs/live/test.local/
|
||||
#
|
||||
# # Test HTTPS (will show certificate warning - expected for test certs)
|
||||
# curl -k https://localhost/ -H "Host: test.local"
|
||||
|
|
@ -104,7 +104,7 @@ services:
|
|||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# Certificate storage (Docker volume for clean test isolation)
|
||||
- certbot-certs:/certs/certbot
|
||||
- certbot-certs:/etc/easyhaproxy/certs
|
||||
# Pebble CA certificate (downloaded during test session)
|
||||
- ./pebble-ca.pem:/etc/ssl/certs/pebble-ca.pem:ro
|
||||
ports:
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
# # - Line 36: easyhaproxy.http.host to your real domain
|
||||
#
|
||||
# # Create certs directory
|
||||
# mkdir -p ./certs/certbot
|
||||
# mkdir -p ./certs
|
||||
# ```
|
||||
#
|
||||
# HOW TO START:
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
# # Expected: Issuer: C = US, O = Let's Encrypt
|
||||
#
|
||||
# # Check certificate files
|
||||
# ls -la ./certs/certbot/
|
||||
# ls -la ./certs/
|
||||
# # Expected: Your domain certificate files
|
||||
# ```
|
||||
#
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
# # Keep certificates:
|
||||
# # docker compose -f docker-compose-acme.yml down
|
||||
# # Remove certificates too:
|
||||
# # docker compose -f docker-compose-acme.yml down && rm -rf ./certs/certbot
|
||||
# # docker compose -f docker-compose-acme.yml down && rm -rf ./certs
|
||||
# ```
|
||||
#
|
||||
# ==============================================================================
|
||||
|
|
@ -64,7 +64,7 @@ services:
|
|||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# Persist the CERTBOT to avoid re-challenge when the server restarts
|
||||
- ./certs/certbot:/certs/certbot
|
||||
- ./certs:/etc/easyhaproxy/certs
|
||||
environment:
|
||||
EASYHAPROXY_DISCOVER: docker
|
||||
HAPROXY_CUSTOMERRORS: "true"
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ services:
|
|||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# Mount Cloudflare IP list
|
||||
- ./cloudflare_ips.lst:/etc/haproxy/cloudflare_ips.lst:ro
|
||||
- ./cloudflare_ips.lst:/etc/easyhaproxy/cloudflare_ips.lst:ro
|
||||
environment:
|
||||
EASYHAPROXY_DISCOVER: docker
|
||||
HAPROXY_CUSTOMERRORS: "true"
|
||||
|
|
@ -77,4 +77,4 @@ services:
|
|||
|
||||
# Use custom IP list (disable built-in IPs)
|
||||
easyhaproxy.http.plugin.cloudflare.use_builtin_ips: false
|
||||
easyhaproxy.http.plugin.cloudflare.ip_list_path: /etc/haproxy/cloudflare_ips.lst
|
||||
easyhaproxy.http.plugin.cloudflare.ip_list_path: /etc/easyhaproxy/cloudflare_ips.lst
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ services:
|
|||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# Mount the public key for JWT verification
|
||||
- ./jwt_pubkey.pem:/etc/haproxy/jwt_keys/api_pubkey.pem:ro
|
||||
- ./jwt_pubkey.pem:/etc/easyhaproxy/jwt_keys/api_pubkey.pem:ro
|
||||
environment:
|
||||
EASYHAPROXY_DISCOVER: docker
|
||||
HAPROXY_CUSTOMERRORS: "true"
|
||||
|
|
@ -85,4 +85,4 @@ services:
|
|||
easyhaproxy.http.plugin.jwt_validator.algorithm: RS256
|
||||
easyhaproxy.http.plugin.jwt_validator.issuer: https://auth.example.com/
|
||||
easyhaproxy.http.plugin.jwt_validator.audience: https://api.example.com
|
||||
easyhaproxy.http.plugin.jwt_validator.pubkey_path: /etc/haproxy/jwt_keys/api_pubkey.pem
|
||||
easyhaproxy.http.plugin.jwt_validator.pubkey_path: /etc/easyhaproxy/jwt_keys/api_pubkey.pem
|
||||
|
|
|
|||
|
|
@ -68,8 +68,8 @@ services:
|
|||
image: byjg/easy-haproxy:local
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./cloudflare_ips.lst:/etc/haproxy/cloudflare_ips.lst:ro
|
||||
- ./jwt_pubkey.pem:/etc/haproxy/jwt_keys/api_pubkey.pem:ro
|
||||
- ./cloudflare_ips.lst:/etc/easyhaproxy/cloudflare_ips.lst:ro
|
||||
- ./jwt_pubkey.pem:/etc/easyhaproxy/jwt_keys/api_pubkey.pem:ro
|
||||
environment:
|
||||
EASYHAPROXY_DISCOVER: docker
|
||||
HAPROXY_CUSTOMERRORS: "true"
|
||||
|
|
@ -114,7 +114,7 @@ services:
|
|||
easyhaproxy.http.plugin.jwt_validator.algorithm: RS256
|
||||
easyhaproxy.http.plugin.jwt_validator.issuer: https://auth.example.com/
|
||||
easyhaproxy.http.plugin.jwt_validator.audience: https://api.example.com
|
||||
easyhaproxy.http.plugin.jwt_validator.pubkey_path: /etc/haproxy/jwt_keys/api_pubkey.pem
|
||||
easyhaproxy.http.plugin.jwt_validator.pubkey_path: /etc/easyhaproxy/jwt_keys/api_pubkey.pem
|
||||
|
||||
# Block internal/debug endpoints
|
||||
easyhaproxy.http.plugin.deny_pages.paths: /internal,/debug,/metrics
|
||||
|
|
|
|||
|
|
@ -62,8 +62,8 @@ services:
|
|||
image: byjg/easy-haproxy:5.0.0
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- certs_certbot:/certs/certbot
|
||||
# - certs_haproxy:/certs/haproxy
|
||||
- certs_certbot:/etc/easyhaproxy/certs/certbot
|
||||
# - certs_haproxy:/etc/easyhaproxy/certs/haproxy
|
||||
|
||||
environment:
|
||||
EASYHAPROXY_DISCOVER: docker
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ services:
|
|||
image: byjg/easy-haproxy:local
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./host2.local.pem:/certs/haproxy/host2.local.pem
|
||||
- ./host2.local.pem:/etc/easyhaproxy/certs/haproxy/host2.local.pem
|
||||
environment:
|
||||
EASYHAPROXY_DISCOVER: docker
|
||||
EASYHAPROXY_SSL_MODE: "loose"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue