easyhaproxy 6.1.1__tar.gz → 6.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.github/workflows/build.yml +13 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/PKG-INFO +5 -4
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/README.md +3 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/RELEASE.md +3 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/docker-compose.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/kubernetes/easyhaproxy-clusterip.yml +13 -13
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/kubernetes/easyhaproxy-daemonset.yml +11 -11
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/kubernetes/easyhaproxy-nodeport.yml +13 -13
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/getting-started/kubernetes.md +3 -3
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/getting-started/static.md +1 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/getting-started/swarm.md +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/acme.md +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/dashboard.md +4 -3
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/helm.md +22 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/plugins.md +2 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/ssl.md +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/cli.md +5 -3
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/environment-variables.md +8 -5
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/helm.md +23 -4
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/other.md +1 -1
- easyhaproxy-6.3.0/docs/reference/plugins/cloudflare.md +195 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/Chart.yaml +2 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/README.md +12 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/templates/_helpers.tpl +7 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/templates/deployment.yaml +46 -10
- easyhaproxy-6.3.0/helm/easyhaproxy/templates/pvc.yaml +21 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/templates/service.yaml +2 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/values.schema.json +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/values.yaml +15 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/pyproject.toml +7 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/easyhaproxy/main.py +17 -3
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/easymapping/__init__.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/easymapping/config_generator.py +2 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/easymapping/label_handler.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/functions/__init__.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/functions/certbot.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/functions/consts.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/functions/container_env.py +12 -8
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/functions/filter.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/functions/functions.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/functions/haproxy.py +2 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/functions/loggers.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/__init__.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/builtin/cloudflare.py +3 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/builtin/jwt_validator.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/interface.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/manager.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/types.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/processor/__init__.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/processor/docker.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/processor/interface.py +3 -3
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/processor/kubernetes.py +23 -22
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/processor/static.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/processor/swarm.py +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/templates/haproxy.cfg.j2 +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/conftest.py +2 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_certbot.py +7 -9
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_certbot_haproxy_config.py +2 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_containerenv.py +61 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_daemonize.py +1 -2
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_kubernetes_processor.py +114 -49
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_plugins.py +28 -6
- easyhaproxy-6.3.0/tests/test_stats.py +70 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-acme.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-portainer.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/cloudflare.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/ip-whitelist.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/jwt-validator.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/plugins-combined.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/service.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/service_tls.yml +1 -1
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/uv.lock +478 -361
- easyhaproxy-6.1.1/CONTRIBUTING.md +0 -36
- easyhaproxy-6.1.1/docs/reference/plugins/cloudflare.md +0 -120
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.dockerignore +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.github/FUNDING.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.github/dependabot.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.gitignore +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.python-version +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.run/pytest in tests.run.xml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.vscode/launch.json +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/.vscode/settings.json +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/LICENSE +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/Makefile +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/build-multiarch.sh +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/Dockerfile +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/entrypoint.sh +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/conf.d/README.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/400.http +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/403.http +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/408.http +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/500.http +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/502.http +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/503.http +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/504.http +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/docker/assets/etc/easyhaproxy/www/dashboard.html +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/deploy/kubernetes/README.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/concepts/_category_.json +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/concepts/index.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/concepts/limitations.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/dashboard.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/dashboard_login.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/dashboard_thumbnail.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_digitalocean.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_docker.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_dokku.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_helm.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_kubernetes.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_logo.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_microk8s.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_static.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/easyhaproxy_swarm.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/getting-started/_category_.json +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/getting-started/docker.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/getting-started/index.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/getting-started/native.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/_category_.json +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/digitalocean.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/dokku.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/microk8s.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/guides/plugin-development.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/icons.xcf +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/logo.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/logo.xcf +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/_category_.json +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/container-labels.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/plugins/_category_.json +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/plugins/cleanup.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/plugins/deny-pages.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/plugins/fastcgi.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/plugins/ip-whitelist.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/plugins/jwt-validator.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/reference/volumes.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/video-docker-ssl.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/video-docker.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/video-kubernetes-letsencrypt.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/video-kubernetes.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/video-static.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/docs/video-tcp-mysql.png +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/.helmignore +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/LICENSE +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/templates/clusterrole.yaml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/templates/clusterrolebinding.yaml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/templates/ingressclass.yaml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/helm/easyhaproxy/templates/serviceaccount.yaml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/scripts/bump-version.sh +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/easyhaproxy/__init__.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/builtin/__init__.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/builtin/cleanup.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/builtin/deny_pages.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/builtin/fastcgi.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/plugins/builtin/ip_whitelist.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/templates/bind.j2 +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/templates/frontend-mode-http.j2 +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/templates/frontend-mode-tcp.j2 +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/templates/ssl_default.j2 +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/templates/ssl_loose.j2 +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/src/templates/ssl_strict.j2 +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/__init__.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/docker.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/no-services.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/services-fcgi.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/services-letsencrypt.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/services-multi-containers.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/services-multiple-hosts.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/services-redirect-ssl.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/services-tcp.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/services.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/ssl-loose.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/ssl-strict.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/static-cors.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/expected/static.txt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/00_haproxy.cfg +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/10_haproxy.cfg +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/no-services +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/run_bash.sh +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-changed-label +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-clone-to-ssl +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-fcgi +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-letsencrypt +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-multi-containers +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-multiple-hosts +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-redirect-ssl +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-tcp +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-with-cloudflare +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-with-deny-pages +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-with-ip-whitelist +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-with-jwt-validator +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/services-with-multiple-plugins +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/static.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/static_cors.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/fixtures/static_multi_domain.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_docker.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_functions.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_labels.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_parser.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests/test_static.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/conftest.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/AGENTS.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/README.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-acme-e2e.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-changed-label.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-cloudflare.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-ip-whitelist.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-jwt-validator.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-multi-containers.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-php-fpm.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-plugins-combined.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-portainer-app-example.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose-proxy-headers.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/docker-compose.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/pebble-config.json +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/php-app/README.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/php-app/index.php +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/php-app/info.php +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/docker/php-app/test-path-info.php +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/fixtures/header-echo/Dockerfile +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/fixtures/header-echo/README.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/fixtures/header-echo/server.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/generate-keys.sh +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/.gitignore +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/README.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/jwt-validator-secret-example.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/setup-cluster.sh +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/kubernetes/teardown-cluster.sh +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/static/README.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/static/conf/config-basic.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/static/conf/config-certbot.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/static/conf/config-deny-pages.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/static/conf/config-jwt-validator.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/static/docker-compose.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/swarm/README.md +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/swarm/cloudflare.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/swarm/easyhaproxy.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/swarm/ip-whitelist.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/swarm/jwt-validator.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/swarm/plugins-combined.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/swarm/portainer.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/swarm/services.yml +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/test_docker_compose.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/test_kubernetes.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/test_proxy_headers.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/test_static.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/test_swarm.py +0 -0
- {easyhaproxy-6.1.1 → easyhaproxy-6.3.0}/tests_e2e/utils.py +0 -0
|
@@ -31,6 +31,9 @@ jobs:
|
|
|
31
31
|
permissions:
|
|
32
32
|
contents: read
|
|
33
33
|
packages: write
|
|
34
|
+
env:
|
|
35
|
+
# Secrets are empty on pull requests from forks and from Dependabot.
|
|
36
|
+
HAS_REGISTRY_LOGIN: ${{ secrets.DOCKER_REGISTRY_TOKEN != '' }}
|
|
34
37
|
|
|
35
38
|
steps:
|
|
36
39
|
- name: Checkout repository
|
|
@@ -44,6 +47,16 @@ jobs:
|
|
|
44
47
|
export PATH="$HOME/.local/bin:$PATH"
|
|
45
48
|
uv sync --group dev
|
|
46
49
|
|
|
50
|
+
# The tests pull byjg/static-httpserver. An anonymous pull counts against
|
|
51
|
+
# the runner's shared IP address and fails with "toomanyrequests".
|
|
52
|
+
- name: Log into registry
|
|
53
|
+
if: env.HAS_REGISTRY_LOGIN == 'true'
|
|
54
|
+
uses: docker/login-action@v4
|
|
55
|
+
with:
|
|
56
|
+
registry: ${{ secrets.DOCKER_REGISTRY }}
|
|
57
|
+
username: ${{ secrets.DOCKER_REGISTRY_USER }}
|
|
58
|
+
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
|
|
59
|
+
|
|
47
60
|
- name: Run tests
|
|
48
61
|
run: |
|
|
49
62
|
export PATH="$HOME/.local/bin:$PATH"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: easyhaproxy
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.3.0
|
|
4
4
|
Summary: HAProxy label based routing with service discovery for Docker, Swarm, and Kubernetes
|
|
5
5
|
License: MIT License
|
|
6
6
|
|
|
@@ -54,9 +54,10 @@ tags: [docker, devops]
|
|
|
54
54
|
|
|
55
55
|
[](https://github.com/sponsors/byjg)
|
|
56
56
|
[](http://opensource.byjg.com)
|
|
57
|
+
[](https://opensource.byjg.com/docs/ai/mcpserver-byjg-docs/)
|
|
57
58
|
[](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml)
|
|
58
59
|
[](https://github.com/byjg/docker-easy-haproxy/)
|
|
59
|
-
[](https://opensource.byjg.com/
|
|
60
|
+
[](https://opensource.byjg.com/license/)
|
|
60
61
|
[](https://github.com/byjg/docker-easy-haproxy/releases/)
|
|
61
62
|
[](https://opensource.byjg.com/helm)
|
|
62
63
|
[](https://artifacthub.io/packages/search?repo=byjg)
|
|
@@ -112,7 +113,7 @@ EasyHAProxy is part of some projects:
|
|
|
112
113
|
|
|
113
114
|
[](docs/guides/dashboard.md)
|
|
114
115
|
|
|
115
|
-
A real-time dashboard is available at `http://<host>:11936/`
|
|
116
|
+
A real-time dashboard is available at `http://<host>:11936/` (set `HAPROXY_PASSWORD` to require a login) —
|
|
116
117
|
no extra containers, no Prometheus, no Grafana. See the [dashboard guide](docs/guides/dashboard.md).
|
|
117
118
|
|
|
118
119
|
## See EasyHAProxy in action
|
|
@@ -7,9 +7,10 @@ tags: [docker, devops]
|
|
|
7
7
|
|
|
8
8
|
[](https://github.com/sponsors/byjg)
|
|
9
9
|
[](http://opensource.byjg.com)
|
|
10
|
+
[](https://opensource.byjg.com/docs/ai/mcpserver-byjg-docs/)
|
|
10
11
|
[](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml)
|
|
11
12
|
[](https://github.com/byjg/docker-easy-haproxy/)
|
|
12
|
-
[](https://opensource.byjg.com/
|
|
13
|
+
[](https://opensource.byjg.com/license/)
|
|
13
14
|
[](https://github.com/byjg/docker-easy-haproxy/releases/)
|
|
14
15
|
[](https://opensource.byjg.com/helm)
|
|
15
16
|
[](https://artifacthub.io/packages/search?repo=byjg)
|
|
@@ -65,7 +66,7 @@ EasyHAProxy is part of some projects:
|
|
|
65
66
|
|
|
66
67
|
[](docs/guides/dashboard.md)
|
|
67
68
|
|
|
68
|
-
A real-time dashboard is available at `http://<host>:11936/`
|
|
69
|
+
A real-time dashboard is available at `http://<host>:11936/` (set `HAPROXY_PASSWORD` to require a login) —
|
|
69
70
|
no extra containers, no Prometheus, no Grafana. See the [dashboard guide](docs/guides/dashboard.md).
|
|
70
71
|
|
|
71
72
|
## See EasyHAProxy in action
|
|
@@ -54,7 +54,7 @@ EasyHAProxy follows [Semantic Versioning](https://semver.org/):
|
|
|
54
54
|
- **MINOR**: New features, plugin additions, backward-compatible changes
|
|
55
55
|
- **PATCH**: Bug fixes, documentation updates, minor improvements
|
|
56
56
|
|
|
57
|
-
**Current Version:** `6.
|
|
57
|
+
**Current Version:** `6.3.0` (as of Chart.yaml)
|
|
58
58
|
|
|
59
59
|
## Automated Release (Recommended)
|
|
60
60
|
|
|
@@ -329,6 +329,8 @@ helm show chart byjg/easyhaproxy
|
|
|
329
329
|
|
|
330
330
|
| Version | Release Date | Type | Highlights |
|
|
331
331
|
|---------|--------------|-------|---------------------------------------------------------------------------------------------------------------------------------------|
|
|
332
|
+
| 6.3.0 | 2026-10-21 | Minor | HAPROXY_STATS_ENABLE to turn stats/dashboard off, stats without a password documented with a startup warning, HAPROXY_STATS_PORT honored without a password, chart stats.enabled |
|
|
333
|
+
| 6.2.0 | 2026-10-21 | Minor | Ingress status follows a cloud LoadBalancer address, EASYHAPROXY_SERVICE_NAME, Helm chart LoadBalancer Service and certbot persistence |
|
|
332
334
|
| 6.1.1 | 2026-06-25 | Patch | Add pass_headers support to FastCGI plugin, fix flaky ACME e2e test timeout |
|
|
333
335
|
| 6.1.0 | 2026-06-24 | Minor | FastCGI protocol support, certbot sidecar plugin, dependency updates |
|
|
334
336
|
| 6.0.1 | 2026-02-23 | Patch | HAProxy dashboard, real-time monitoring dashboard with live traffic charts, ACME e2e test fixes |
|
|
@@ -6,10 +6,10 @@ metadata:
|
|
|
6
6
|
name: ingress-easyhaproxy
|
|
7
7
|
namespace: easyhaproxy
|
|
8
8
|
labels:
|
|
9
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
9
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
10
10
|
app.kubernetes.io/name: easyhaproxy
|
|
11
11
|
app.kubernetes.io/instance: ingress
|
|
12
|
-
app.kubernetes.io/version: "6.
|
|
12
|
+
app.kubernetes.io/version: "6.3.0"
|
|
13
13
|
app.kubernetes.io/managed-by: Helm
|
|
14
14
|
---
|
|
15
15
|
# Source: easyhaproxy/templates/clusterrole.yaml
|
|
@@ -19,10 +19,10 @@ metadata:
|
|
|
19
19
|
name: ingress-easyhaproxy
|
|
20
20
|
namespace: easyhaproxy
|
|
21
21
|
labels:
|
|
22
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
22
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
23
23
|
app.kubernetes.io/name: easyhaproxy
|
|
24
24
|
app.kubernetes.io/instance: ingress
|
|
25
|
-
app.kubernetes.io/version: "6.
|
|
25
|
+
app.kubernetes.io/version: "6.3.0"
|
|
26
26
|
app.kubernetes.io/managed-by: Helm
|
|
27
27
|
rules:
|
|
28
28
|
- apiGroups:
|
|
@@ -83,10 +83,10 @@ metadata:
|
|
|
83
83
|
name: ingress-easyhaproxy
|
|
84
84
|
namespace: easyhaproxy
|
|
85
85
|
labels:
|
|
86
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
86
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
87
87
|
app.kubernetes.io/name: easyhaproxy
|
|
88
88
|
app.kubernetes.io/instance: ingress
|
|
89
|
-
app.kubernetes.io/version: "6.
|
|
89
|
+
app.kubernetes.io/version: "6.3.0"
|
|
90
90
|
app.kubernetes.io/managed-by: Helm
|
|
91
91
|
roleRef:
|
|
92
92
|
apiGroup: rbac.authorization.k8s.io
|
|
@@ -105,10 +105,10 @@ metadata:
|
|
|
105
105
|
name: ingress-easyhaproxy
|
|
106
106
|
namespace: easyhaproxy
|
|
107
107
|
labels:
|
|
108
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
108
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
109
109
|
app.kubernetes.io/name: easyhaproxy
|
|
110
110
|
app.kubernetes.io/instance: ingress
|
|
111
|
-
app.kubernetes.io/version: "6.
|
|
111
|
+
app.kubernetes.io/version: "6.3.0"
|
|
112
112
|
app.kubernetes.io/managed-by: Helm
|
|
113
113
|
annotations:
|
|
114
114
|
{}
|
|
@@ -140,10 +140,10 @@ metadata:
|
|
|
140
140
|
name: ingress-easyhaproxy
|
|
141
141
|
namespace: easyhaproxy
|
|
142
142
|
labels:
|
|
143
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
143
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
144
144
|
app.kubernetes.io/name: easyhaproxy
|
|
145
145
|
app.kubernetes.io/instance: ingress
|
|
146
|
-
app.kubernetes.io/version: "6.
|
|
146
|
+
app.kubernetes.io/version: "6.3.0"
|
|
147
147
|
app.kubernetes.io/managed-by: Helm
|
|
148
148
|
spec:
|
|
149
149
|
replicas: 1
|
|
@@ -164,7 +164,7 @@ spec:
|
|
|
164
164
|
- name: easyhaproxy
|
|
165
165
|
securityContext:
|
|
166
166
|
{}
|
|
167
|
-
image: "byjg/easy-haproxy:6.
|
|
167
|
+
image: "byjg/easy-haproxy:6.3.0"
|
|
168
168
|
imagePullPolicy: Always
|
|
169
169
|
ports:
|
|
170
170
|
- name: http
|
|
@@ -217,10 +217,10 @@ kind: IngressClass
|
|
|
217
217
|
metadata:
|
|
218
218
|
name: easyhaproxy
|
|
219
219
|
labels:
|
|
220
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
220
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
221
221
|
app.kubernetes.io/name: easyhaproxy
|
|
222
222
|
app.kubernetes.io/instance: ingress
|
|
223
|
-
app.kubernetes.io/version: "6.
|
|
223
|
+
app.kubernetes.io/version: "6.3.0"
|
|
224
224
|
app.kubernetes.io/managed-by: Helm
|
|
225
225
|
spec:
|
|
226
226
|
controller: byjg.com/easyhaproxy
|
|
@@ -6,10 +6,10 @@ metadata:
|
|
|
6
6
|
name: ingress-easyhaproxy
|
|
7
7
|
namespace: easyhaproxy
|
|
8
8
|
labels:
|
|
9
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
9
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
10
10
|
app.kubernetes.io/name: easyhaproxy
|
|
11
11
|
app.kubernetes.io/instance: ingress
|
|
12
|
-
app.kubernetes.io/version: "6.
|
|
12
|
+
app.kubernetes.io/version: "6.3.0"
|
|
13
13
|
app.kubernetes.io/managed-by: Helm
|
|
14
14
|
---
|
|
15
15
|
# Source: easyhaproxy/templates/clusterrole.yaml
|
|
@@ -19,10 +19,10 @@ metadata:
|
|
|
19
19
|
name: ingress-easyhaproxy
|
|
20
20
|
namespace: easyhaproxy
|
|
21
21
|
labels:
|
|
22
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
22
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
23
23
|
app.kubernetes.io/name: easyhaproxy
|
|
24
24
|
app.kubernetes.io/instance: ingress
|
|
25
|
-
app.kubernetes.io/version: "6.
|
|
25
|
+
app.kubernetes.io/version: "6.3.0"
|
|
26
26
|
app.kubernetes.io/managed-by: Helm
|
|
27
27
|
rules:
|
|
28
28
|
- apiGroups:
|
|
@@ -83,10 +83,10 @@ metadata:
|
|
|
83
83
|
name: ingress-easyhaproxy
|
|
84
84
|
namespace: easyhaproxy
|
|
85
85
|
labels:
|
|
86
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
86
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
87
87
|
app.kubernetes.io/name: easyhaproxy
|
|
88
88
|
app.kubernetes.io/instance: ingress
|
|
89
|
-
app.kubernetes.io/version: "6.
|
|
89
|
+
app.kubernetes.io/version: "6.3.0"
|
|
90
90
|
app.kubernetes.io/managed-by: Helm
|
|
91
91
|
roleRef:
|
|
92
92
|
apiGroup: rbac.authorization.k8s.io
|
|
@@ -104,10 +104,10 @@ metadata:
|
|
|
104
104
|
name: ingress-easyhaproxy
|
|
105
105
|
namespace: easyhaproxy
|
|
106
106
|
labels:
|
|
107
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
107
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
108
108
|
app.kubernetes.io/name: easyhaproxy
|
|
109
109
|
app.kubernetes.io/instance: ingress
|
|
110
|
-
app.kubernetes.io/version: "6.
|
|
110
|
+
app.kubernetes.io/version: "6.3.0"
|
|
111
111
|
app.kubernetes.io/managed-by: Helm
|
|
112
112
|
spec:
|
|
113
113
|
selector:
|
|
@@ -136,7 +136,7 @@ spec:
|
|
|
136
136
|
- name: easyhaproxy
|
|
137
137
|
securityContext:
|
|
138
138
|
{}
|
|
139
|
-
image: "byjg/easy-haproxy:6.
|
|
139
|
+
image: "byjg/easy-haproxy:6.3.0"
|
|
140
140
|
imagePullPolicy: Always
|
|
141
141
|
ports:
|
|
142
142
|
- name: http
|
|
@@ -189,10 +189,10 @@ kind: IngressClass
|
|
|
189
189
|
metadata:
|
|
190
190
|
name: easyhaproxy
|
|
191
191
|
labels:
|
|
192
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
192
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
193
193
|
app.kubernetes.io/name: easyhaproxy
|
|
194
194
|
app.kubernetes.io/instance: ingress
|
|
195
|
-
app.kubernetes.io/version: "6.
|
|
195
|
+
app.kubernetes.io/version: "6.3.0"
|
|
196
196
|
app.kubernetes.io/managed-by: Helm
|
|
197
197
|
spec:
|
|
198
198
|
controller: byjg.com/easyhaproxy
|
|
@@ -6,10 +6,10 @@ metadata:
|
|
|
6
6
|
name: ingress-easyhaproxy
|
|
7
7
|
namespace: easyhaproxy
|
|
8
8
|
labels:
|
|
9
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
9
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
10
10
|
app.kubernetes.io/name: easyhaproxy
|
|
11
11
|
app.kubernetes.io/instance: ingress
|
|
12
|
-
app.kubernetes.io/version: "6.
|
|
12
|
+
app.kubernetes.io/version: "6.3.0"
|
|
13
13
|
app.kubernetes.io/managed-by: Helm
|
|
14
14
|
---
|
|
15
15
|
# Source: easyhaproxy/templates/clusterrole.yaml
|
|
@@ -19,10 +19,10 @@ metadata:
|
|
|
19
19
|
name: ingress-easyhaproxy
|
|
20
20
|
namespace: easyhaproxy
|
|
21
21
|
labels:
|
|
22
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
22
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
23
23
|
app.kubernetes.io/name: easyhaproxy
|
|
24
24
|
app.kubernetes.io/instance: ingress
|
|
25
|
-
app.kubernetes.io/version: "6.
|
|
25
|
+
app.kubernetes.io/version: "6.3.0"
|
|
26
26
|
app.kubernetes.io/managed-by: Helm
|
|
27
27
|
rules:
|
|
28
28
|
- apiGroups:
|
|
@@ -83,10 +83,10 @@ metadata:
|
|
|
83
83
|
name: ingress-easyhaproxy
|
|
84
84
|
namespace: easyhaproxy
|
|
85
85
|
labels:
|
|
86
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
86
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
87
87
|
app.kubernetes.io/name: easyhaproxy
|
|
88
88
|
app.kubernetes.io/instance: ingress
|
|
89
|
-
app.kubernetes.io/version: "6.
|
|
89
|
+
app.kubernetes.io/version: "6.3.0"
|
|
90
90
|
app.kubernetes.io/managed-by: Helm
|
|
91
91
|
roleRef:
|
|
92
92
|
apiGroup: rbac.authorization.k8s.io
|
|
@@ -105,10 +105,10 @@ metadata:
|
|
|
105
105
|
name: ingress-easyhaproxy
|
|
106
106
|
namespace: easyhaproxy
|
|
107
107
|
labels:
|
|
108
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
108
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
109
109
|
app.kubernetes.io/name: easyhaproxy
|
|
110
110
|
app.kubernetes.io/instance: ingress
|
|
111
|
-
app.kubernetes.io/version: "6.
|
|
111
|
+
app.kubernetes.io/version: "6.3.0"
|
|
112
112
|
app.kubernetes.io/managed-by: Helm
|
|
113
113
|
annotations:
|
|
114
114
|
{}
|
|
@@ -140,10 +140,10 @@ metadata:
|
|
|
140
140
|
name: ingress-easyhaproxy
|
|
141
141
|
namespace: easyhaproxy
|
|
142
142
|
labels:
|
|
143
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
143
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
144
144
|
app.kubernetes.io/name: easyhaproxy
|
|
145
145
|
app.kubernetes.io/instance: ingress
|
|
146
|
-
app.kubernetes.io/version: "6.
|
|
146
|
+
app.kubernetes.io/version: "6.3.0"
|
|
147
147
|
app.kubernetes.io/managed-by: Helm
|
|
148
148
|
spec:
|
|
149
149
|
replicas: 1
|
|
@@ -164,7 +164,7 @@ spec:
|
|
|
164
164
|
- name: easyhaproxy
|
|
165
165
|
securityContext:
|
|
166
166
|
{}
|
|
167
|
-
image: "byjg/easy-haproxy:6.
|
|
167
|
+
image: "byjg/easy-haproxy:6.3.0"
|
|
168
168
|
imagePullPolicy: Always
|
|
169
169
|
ports:
|
|
170
170
|
- name: http
|
|
@@ -217,10 +217,10 @@ kind: IngressClass
|
|
|
217
217
|
metadata:
|
|
218
218
|
name: easyhaproxy
|
|
219
219
|
labels:
|
|
220
|
-
helm.sh/chart: easyhaproxy-2.0.
|
|
220
|
+
helm.sh/chart: easyhaproxy-2.0.6
|
|
221
221
|
app.kubernetes.io/name: easyhaproxy
|
|
222
222
|
app.kubernetes.io/instance: ingress
|
|
223
|
-
app.kubernetes.io/version: "6.
|
|
223
|
+
app.kubernetes.io/version: "6.3.0"
|
|
224
224
|
app.kubernetes.io/managed-by: Helm
|
|
225
225
|
spec:
|
|
226
226
|
controller: byjg.com/easyhaproxy
|
|
@@ -41,7 +41,7 @@ Exposes HAProxy on NodePort `31080` (HTTP), `31443` (HTTPS), and `31936` (stats)
|
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
kubectl apply -f \
|
|
44
|
-
https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.
|
|
44
|
+
https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.3.0/deploy/kubernetes/easyhaproxy-nodeport.yml
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
### ClusterIP (behind a LoadBalancer)
|
|
@@ -50,7 +50,7 @@ Cluster-internal only. Pair with an external cloud LoadBalancer or `kubectl port
|
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
52
|
kubectl apply -f \
|
|
53
|
-
https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.
|
|
53
|
+
https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.3.0/deploy/kubernetes/easyhaproxy-clusterip.yml
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
### DaemonSet (special cases — requires node label)
|
|
@@ -64,7 +64,7 @@ The node label must be reapplied after any node replacement. Failing to do so wi
|
|
|
64
64
|
kubectl label nodes node-01 "easyhaproxy/node=master"
|
|
65
65
|
|
|
66
66
|
kubectl apply -f \
|
|
67
|
-
https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.
|
|
67
|
+
https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.3.0/deploy/kubernetes/easyhaproxy-daemonset.yml
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
If you need to configure environment variables (log levels, stats password, etc.), see the [environment variable reference](../reference/environment-variables.md).
|
|
@@ -50,6 +50,7 @@ curl http://myapp.example.com
|
|
|
50
50
|
|
|
51
51
|
```yaml
|
|
52
52
|
stats:
|
|
53
|
+
enabled: true # Optional (default true); false turns stats and the dashboard off
|
|
53
54
|
username: admin # Optional (default "admin")
|
|
54
55
|
password: password # If omitted, stats are public with no password
|
|
55
56
|
port: 1936 # Optional (default 1936)
|
|
@@ -157,7 +157,7 @@ Here's a complete `docker-compose.yml` showing proper ACME configuration:
|
|
|
157
157
|
```yaml
|
|
158
158
|
services:
|
|
159
159
|
easyhaproxy:
|
|
160
|
-
image: byjg/easy-haproxy:6.
|
|
160
|
+
image: byjg/easy-haproxy:6.3.0
|
|
161
161
|
volumes:
|
|
162
162
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
163
163
|
# REQUIRED: Persist Certbot certificates (ACME)
|
|
@@ -13,11 +13,11 @@ single page, with no extra software required.
|
|
|
13
13
|
|
|
14
14
|
## Enabling the dashboard
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
The dashboard is on by default (`HAPROXY_STATS_ENABLE=true`). Set these two variables:
|
|
17
17
|
|
|
18
18
|
| Variable | Purpose |
|
|
19
19
|
|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
|
|
20
|
-
| `HAPROXY_PASSWORD` |
|
|
20
|
+
| `HAPROXY_PASSWORD` | Requires a login for the stats endpoint and the dashboard. **Without it, both are served without a login.** |
|
|
21
21
|
| `HAPROXY_STATS_CORS_ORIGIN` | Allows the dashboard page to call the stats API. **Required** — without it the browser blocks the requests and the dashboard shows no data. |
|
|
22
22
|
|
|
23
23
|
The dashboard page is served from port `HAPROXY_STATS_PORT + 10000`, but it fetches data from
|
|
@@ -133,7 +133,8 @@ EasyHAProxy bundles a polished, self-contained dashboard that:
|
|
|
133
133
|
|
|
134
134
|
| Variable | Description | Default |
|
|
135
135
|
|---|---|---|
|
|
136
|
-
| `
|
|
136
|
+
| `HAPROXY_STATS_ENABLE` | Serve stats **and** the dashboard. `false` turns both off. | `true` |
|
|
137
|
+
| `HAPROXY_PASSWORD` | Login password for stats and the dashboard. Without it they are served without a login. | *empty* |
|
|
137
138
|
| `HAPROXY_USERNAME` | Username for the stats endpoint. | `admin` |
|
|
138
139
|
| `HAPROXY_STATS_PORT` | Stats API port. Dashboard is served on this port **+ 10000**. | `1936` |
|
|
139
140
|
| `HAPROXY_STATS_CORS_ORIGIN` | **Required for the dashboard.** Set to the exact origin you use to open the dashboard (e.g. `http://localhost:11936`). Without this the browser blocks stats API calls and the dashboard shows no data. | *empty* |
|
|
@@ -42,6 +42,28 @@ helm upgrade --install ingress byjg/easyhaproxy \
|
|
|
42
42
|
--set service.type=ClusterIP
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
+
```bash title="LoadBalancer (cloud providers)"
|
|
46
|
+
helm upgrade --install ingress byjg/easyhaproxy \
|
|
47
|
+
--namespace easyhaproxy \
|
|
48
|
+
--set service.create=true \
|
|
49
|
+
--set service.type=LoadBalancer
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
On a cloud provider (DigitalOcean, AWS, GCP, Azure…), `LoadBalancer` asks the provider for an external load balancer in front of EasyHAProxy, and its address is written to your Ingress status. Use `service.annotations` for provider-specific load balancer settings.
|
|
53
|
+
|
|
54
|
+
### 3) Persist ACME certificates
|
|
55
|
+
|
|
56
|
+
If you use automatic certificates (`easyhaproxy.certbot` annotation), set the ACME e-mail and keep the issued certificates on a volume:
|
|
57
|
+
|
|
58
|
+
```bash title="ACME with persisted certificates"
|
|
59
|
+
helm upgrade --install ingress byjg/easyhaproxy \
|
|
60
|
+
--namespace easyhaproxy \
|
|
61
|
+
--set service.create=true \
|
|
62
|
+
--set service.type=LoadBalancer \
|
|
63
|
+
--set easyhaproxy.certbot.email=you@example.com \
|
|
64
|
+
--set persistence.certbot.enabled=true
|
|
65
|
+
```
|
|
66
|
+
|
|
45
67
|
See [Deployment Modes](../getting-started/kubernetes.md#deployment-modes) for a comparison of all three modes.
|
|
46
68
|
|
|
47
69
|
For the complete list of configurable values, see the [Helm Values reference](../reference/helm.md).
|
|
@@ -83,7 +83,7 @@ docker cp single.pem easyhaproxy:/etc/easyhaproxy/certs/haproxy/example.com.pem
|
|
|
83
83
|
```yaml
|
|
84
84
|
services:
|
|
85
85
|
easyhaproxy:
|
|
86
|
-
image: byjg/easy-haproxy:6.
|
|
86
|
+
image: byjg/easy-haproxy:6.3.0
|
|
87
87
|
volumes:
|
|
88
88
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
89
89
|
- certs_haproxy:/etc/easyhaproxy/certs/haproxy
|
|
@@ -38,13 +38,14 @@ Valid levels: `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `FATAL`
|
|
|
38
38
|
|
|
39
39
|
| Flag | Environment Variable | Default | Description |
|
|
40
40
|
|--------------------------------------|-----------------------------|--------------|---------------------------------------------|
|
|
41
|
-
| `--haproxy-
|
|
41
|
+
| `--haproxy-stats-enable BOOL` | `HAPROXY_STATS_ENABLE` | `true` | Serve the stats and dashboard |
|
|
42
|
+
| `--haproxy-password PASSWORD` | `HAPROXY_PASSWORD` | *(none)* | Require this password for stats and dashboard |
|
|
42
43
|
| `--haproxy-username USERNAME` | `HAPROXY_USERNAME` | `admin` | Stats dashboard username |
|
|
43
44
|
| `--haproxy-stats-port PORT` | `HAPROXY_STATS_PORT` | `1936` | Stats dashboard port |
|
|
44
45
|
| `--haproxy-stats-cors-origin ORIGIN` | `HAPROXY_STATS_CORS_ORIGIN` | *(none)* | Allowed CORS origin for the stats dashboard |
|
|
45
46
|
|
|
46
47
|
:::tip
|
|
47
|
-
|
|
48
|
+
Stats and the dashboard are on by default. Without `--haproxy-password` (or `HAPROXY_PASSWORD`) they are served without a login; turn them off with `--haproxy-stats-enable false`.
|
|
48
49
|
:::
|
|
49
50
|
|
|
50
51
|
## ACME / Certbot (SSL certificates)
|
|
@@ -76,6 +77,7 @@ See the [plugins guide](../guides/plugins.md) for available plugins.
|
|
|
76
77
|
| Flag | Environment Variable | Default | Description |
|
|
77
78
|
|--------------------------------------------|--------------------------------------|----------|----------------------------------------------|
|
|
78
79
|
| `--update-ingress-status BOOL` | `EASYHAPROXY_UPDATE_INGRESS_STATUS` | `true` | Update Ingress status with load-balancer IP |
|
|
79
|
-
| `--deployment-mode MODE` | `EASYHAPROXY_DEPLOYMENT_MODE` | `auto` | Deployment mode: `auto`, `
|
|
80
|
+
| `--deployment-mode MODE` | `EASYHAPROXY_DEPLOYMENT_MODE` | `auto` | Deployment mode: `auto`, `daemonset`, `nodeport`, `clusterip` |
|
|
80
81
|
| `--external-hostname HOSTNAME` | `EASYHAPROXY_EXTERNAL_HOSTNAME` | *(none)* | External hostname reported in Ingress status |
|
|
82
|
+
| `--service-name NAME` | `EASYHAPROXY_SERVICE_NAME` | *(none)* | Name of the EasyHAProxy Service (set by the Helm chart) |
|
|
81
83
|
| `--ingress-status-update-interval SECONDS` | `EASYHAPROXY_STATUS_UPDATE_INTERVAL` | `30` | Interval to update Ingress status |
|
|
@@ -16,15 +16,17 @@ sidebar_label: "Environment Variables"
|
|
|
16
16
|
| EASYHAPROXY_LOG_LEVEL | (Optional) The log level for EasyHAproxy messages. Available: TRACE,DEBUG,INFO,WARN,ERROR,FATAL | DEBUG |
|
|
17
17
|
| CERTBOT_LOG_LEVEL | (Optional) The log level for Certbot messages. Available: TRACE,DEBUG,INFO,WARN,ERROR,FATAL | DEBUG |
|
|
18
18
|
| HAPROXY_LOG_LEVEL | (Optional) The log level for HAProxy messages. Available: TRACE,DEBUG,INFO,WARN,ERROR,FATAL | INFO |
|
|
19
|
+
| HAPROXY_STATS_ENABLE | (Optional) Serve the statistics endpoint and the monitoring dashboard. Set to `false` to turn them off. | `true` |
|
|
19
20
|
| HAPROXY_USERNAME | (Optional) The HAProxy username for the statistics endpoint (used only when `HAPROXY_PASSWORD` is set). | `admin` |
|
|
20
|
-
| HAPROXY_PASSWORD | (Optional) The
|
|
21
|
-
| HAPROXY_STATS_PORT | (Optional) The HAProxy port to the statistics.
|
|
22
|
-
| HAPROXY_STATS_CORS_ORIGIN | Required for the monitoring dashboard to function. Set to the origin you use to open the dashboard (e.g. `http://localhost:11936`). The dashboard page calls the stats API from a different port, so the browser enforces CORS — without this header the dashboard shows no data.
|
|
21
|
+
| HAPROXY_PASSWORD | (Optional) The password for the statistics endpoint and dashboard. **Without it they are served without a login.** | *empty* |
|
|
22
|
+
| HAPROXY_STATS_PORT | (Optional) The HAProxy port to the statistics. The dashboard uses this port + 10000. `false` also turns statistics off. | `1936` |
|
|
23
|
+
| HAPROXY_STATS_CORS_ORIGIN | Required for the monitoring dashboard to function. Set to the origin you use to open the dashboard (e.g. `http://localhost:11936`). The dashboard page calls the stats API from a different port, so the browser enforces CORS — without this header the dashboard shows no data. | *empty* |
|
|
23
24
|
| HAPROXY_CUSTOMERRORS | (Optional) If HAProxy will use custom HTML errors. true/false. | `false` |
|
|
24
25
|
|
|
25
26
|
:::tip HAProxy Stats & Dashboard
|
|
26
|
-
Statistics
|
|
27
|
-
|
|
27
|
+
Statistics and the monitoring dashboard are on by default. Without `HAPROXY_PASSWORD` they are served
|
|
28
|
+
**without a login**, and EasyHAProxy logs a warning at startup. Set a password, or `HAPROXY_STATS_ENABLE=false`
|
|
29
|
+
when the ports can be reached from outside.
|
|
28
30
|
When enabled, the real-time dashboard is available at `http://<host>:<HAPROXY_STATS_PORT + 10000>/`
|
|
29
31
|
(default `http://<host>:11936/`). See the [Monitoring Dashboard guide](../guides/dashboard.md) for details.
|
|
30
32
|
:::
|
|
@@ -42,6 +44,7 @@ These variables apply only when `EASYHAPROXY_DISCOVER=kubernetes`. They control
|
|
|
42
44
|
| EASYHAPROXY_UPDATE_INGRESS_STATUS | Update Ingress resources with the load-balancer IP. Set to `false` to disable. | `true` |
|
|
43
45
|
| EASYHAPROXY_DEPLOYMENT_MODE | How to detect and report Ingress IPs: `auto`, `daemonset`, `nodeport`, or `clusterip`. `auto` inspects pod owner references and service type automatically. | `auto` |
|
|
44
46
|
| EASYHAPROXY_EXTERNAL_HOSTNAME | Hostname to report in Ingress status when using ClusterIP mode without a cloud LoadBalancer. | *(none)* |
|
|
47
|
+
| EASYHAPROXY_SERVICE_NAME | Name of the EasyHAProxy Service, in the pod's namespace. The Helm chart sets it. When empty, `easyhaproxy` and `ingress-easyhaproxy` are tried. | *(none)* |
|
|
45
48
|
| EASYHAPROXY_STATUS_UPDATE_INTERVAL | Seconds between Ingress status update cycles. | `30` |
|
|
46
49
|
|
|
47
50
|
:::tip Deployment mode auto-detection
|
|
@@ -25,8 +25,8 @@ Controls whether EasyHAProxy runs as a **Deployment** (with a Service) or a **Da
|
|
|
25
25
|
| Value | Description | Default |
|
|
26
26
|
|-----------------------|---------------------------------------------------------------------------------------------|-------------|
|
|
27
27
|
| `replicaCount` | Number of replicas (only used when `service.create: true`) | `1` |
|
|
28
|
-
| `service.create` | `true` → Deployment + Service (NodePort or
|
|
29
|
-
| `service.type` | Service type when `service.create: true`: `NodePort` or `
|
|
28
|
+
| `service.create` | `true` → Deployment + Service (NodePort, ClusterIP or LoadBalancer). `false` → DaemonSet with host ports. | `false` |
|
|
29
|
+
| `service.type` | Service type when `service.create: true`: `NodePort`, `ClusterIP` or `LoadBalancer` | `ClusterIP` |
|
|
30
30
|
| `service.annotations` | Annotations to add to the Service resource | `{}` |
|
|
31
31
|
|
|
32
32
|
:::tip Recommended mode
|
|
@@ -48,7 +48,8 @@ Set `service.create: true` and `service.type: NodePort` for most setups. DaemonS
|
|
|
48
48
|
| Value | Description | Default |
|
|
49
49
|
|------------------------------------|-----------------------------------------------------|------------|
|
|
50
50
|
| `easyhaproxy.stats.username` | HAProxy stats username | `admin` |
|
|
51
|
-
| `easyhaproxy.stats.
|
|
51
|
+
| `easyhaproxy.stats.enabled` | Serve the stats endpoint and dashboard. `false` also removes ports 1936/11936 from the pod and Service. | `true` |
|
|
52
|
+
| `easyhaproxy.stats.password` | Login password for the stats endpoint and dashboard. Empty serves them without a login. | `password` |
|
|
52
53
|
| `easyhaproxy.stats.corsOrigin` | Allowed origin for stats API CORS (e.g. `http://node01:11936`). **Required** for the dashboard to load in a browser. | `""` |
|
|
53
54
|
| `easyhaproxy.refresh` | Seconds between service discovery polls | `"10"` |
|
|
54
55
|
| `easyhaproxy.customErrors` | Enable custom HTML error pages | `"true"` |
|
|
@@ -58,6 +59,24 @@ Set `service.create: true` and `service.type: NodePort` for most setups. DaemonS
|
|
|
58
59
|
| `easyhaproxy.logLevel.haproxy` | Log level for HAProxy | `DEBUG` |
|
|
59
60
|
| `easyhaproxy.certbot.email` | Email address for Let's Encrypt / ACME registration | `""` |
|
|
60
61
|
|
|
62
|
+
## Certificate Persistence
|
|
63
|
+
|
|
64
|
+
Keeps the ACME/Certbot certificates (`/etc/easyhaproxy/certs/certbot`) on a PersistentVolumeClaim, so a pod restart does not request them again and run into the CA rate limits. Recommended whenever `easyhaproxy.certbot.email` is set.
|
|
65
|
+
|
|
66
|
+
| Value | Description | Default |
|
|
67
|
+
|----------------------------------------|------------------------------------------------------|-----------------|
|
|
68
|
+
| `persistence.certbot.enabled` | Mount a PVC at `/etc/easyhaproxy/certs/certbot` | `false` |
|
|
69
|
+
| `persistence.certbot.existingClaim` | Use this existing PVC instead of creating one | `""` |
|
|
70
|
+
| `persistence.certbot.storageClass` | Storage class of the created PVC. Empty = default. | `""` |
|
|
71
|
+
| `persistence.certbot.accessMode` | Access mode of the created PVC | `ReadWriteOnce` |
|
|
72
|
+
| `persistence.certbot.size` | Size of the created PVC | `1Gi` |
|
|
73
|
+
|
|
74
|
+
:::note
|
|
75
|
+
With `service.create: true` and persistence enabled, the Deployment uses the `Recreate` strategy: a `ReadWriteOnce` volume cannot attach to the new pod while the old one still holds it. Expect a short gap during upgrades.
|
|
76
|
+
|
|
77
|
+
The created PVC has `helm.sh/resource-policy: keep`, so `helm uninstall` leaves the certificates in place. Delete the PVC by hand to remove them.
|
|
78
|
+
:::
|
|
79
|
+
|
|
61
80
|
## Ingress Status
|
|
62
81
|
|
|
63
82
|
Controls how EasyHAProxy updates Kubernetes Ingress resources with load-balancer IPs.
|
|
@@ -94,7 +113,7 @@ kubectl label nodes node-01 "easyhaproxy/node=master"
|
|
|
94
113
|
| `resources` | CPU/memory requests and limits for the pod | `{}` |
|
|
95
114
|
| `nodeSelector` | Node selector for pod scheduling | `{}` |
|
|
96
115
|
| `tolerations` | Tolerations for pod scheduling | `[]` |
|
|
97
|
-
| `affinity` | Affinity rules for pod scheduling
|
|
116
|
+
| `affinity` | Affinity rules for pod scheduling. In DaemonSet mode `nodeAffinity` comes from `masterNode`; other keys (e.g. `podAntiAffinity`) are kept. | `{}` |
|
|
98
117
|
| `podSecurityContext` | Pod-level security context | `{}` |
|
|
99
118
|
| `securityContext` | Container-level security context | `{}` |
|
|
100
119
|
|
|
@@ -30,7 +30,7 @@ These headers help backend applications:
|
|
|
30
30
|
Some ports on the EasyHAProxy container and in the firewall are required to be open. However, you don't need to expose the other container ports because EasyHAProxy will handle that.
|
|
31
31
|
|
|
32
32
|
- The ports `80` and `443`.
|
|
33
|
-
- If you enable the HAProxy statistics, you must also expose the port defined in `HAPROXY_STATS_PORT` environment variable (default 1936). Statistics are
|
|
33
|
+
- If you enable the HAProxy statistics, you must also expose the port defined in `HAPROXY_STATS_PORT` environment variable (default 1936). Statistics are on by default (`HAPROXY_STATS_ENABLE=false` turns them off) and need `HAPROXY_PASSWORD` to require a login.
|
|
34
34
|
- Every port defined in `easyhaproxy.[definitions].port` also should be exposed.
|
|
35
35
|
|
|
36
36
|
For example:
|