easyhaproxy 6.1.0__tar.gz → 6.2.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.0 → easyhaproxy-6.2.0}/.github/workflows/build.yml +13 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/PKG-INFO +4 -3
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/README.md +2 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/RELEASE.md +3 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/docker-compose.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/kubernetes/easyhaproxy-clusterip.yml +13 -13
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/kubernetes/easyhaproxy-daemonset.yml +11 -11
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/kubernetes/easyhaproxy-nodeport.yml +13 -13
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/getting-started/kubernetes.md +3 -3
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/getting-started/swarm.md +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/acme.md +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/helm.md +22 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/plugins.md +2 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/ssl.md +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/cli.md +2 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/environment-variables.md +1 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/helm.md +21 -3
- easyhaproxy-6.2.0/docs/reference/plugins/cloudflare.md +195 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/plugins/fastcgi.md +62 -15
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/Chart.yaml +2 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/README.md +11 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/templates/deployment.yaml +44 -9
- easyhaproxy-6.2.0/helm/easyhaproxy/templates/pvc.yaml +21 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/templates/service.yaml +0 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/values.schema.json +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/values.yaml +27 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/pyproject.toml +7 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/easyhaproxy/main.py +5 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/easymapping/__init__.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/easymapping/config_generator.py +2 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/easymapping/label_handler.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/functions/__init__.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/functions/certbot.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/functions/consts.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/functions/container_env.py +2 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/functions/filter.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/functions/functions.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/functions/haproxy.py +2 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/functions/loggers.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/__init__.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/builtin/cloudflare.py +3 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/builtin/fastcgi.py +88 -4
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/builtin/jwt_validator.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/interface.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/manager.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/types.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/processor/__init__.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/processor/docker.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/processor/interface.py +3 -3
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/processor/kubernetes.py +23 -22
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/processor/static.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/processor/swarm.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/conftest.py +2 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_certbot.py +7 -9
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_certbot_haproxy_config.py +2 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_containerenv.py +10 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_daemonize.py +1 -2
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_kubernetes_processor.py +114 -49
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_plugins.py +154 -7
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-acme.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-portainer.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/cloudflare.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/ip-whitelist.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/jwt-validator.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/plugins-combined.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/service.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/service_tls.yml +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/test_docker_compose.py +1 -1
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/uv.lock +478 -361
- easyhaproxy-6.1.0/CONTRIBUTING.md +0 -36
- easyhaproxy-6.1.0/docs/reference/plugins/cloudflare.md +0 -120
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/.dockerignore +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/.github/FUNDING.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/.github/dependabot.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/.gitignore +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/.python-version +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/.run/pytest in tests.run.xml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/.vscode/launch.json +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/.vscode/settings.json +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/LICENSE +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/Makefile +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/build-multiarch.sh +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/Dockerfile +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/entrypoint.sh +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/conf.d/README.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/400.http +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/403.http +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/408.http +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/500.http +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/502.http +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/503.http +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/504.http +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/docker/assets/etc/easyhaproxy/www/dashboard.html +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/deploy/kubernetes/README.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/concepts/_category_.json +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/concepts/index.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/concepts/limitations.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/dashboard.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/dashboard_login.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/dashboard_thumbnail.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_digitalocean.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_docker.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_dokku.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_helm.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_kubernetes.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_logo.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_microk8s.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_static.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/easyhaproxy_swarm.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/getting-started/_category_.json +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/getting-started/docker.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/getting-started/index.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/getting-started/native.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/getting-started/static.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/_category_.json +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/dashboard.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/digitalocean.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/dokku.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/microk8s.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/guides/plugin-development.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/icons.xcf +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/logo.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/logo.xcf +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/_category_.json +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/container-labels.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/other.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/plugins/_category_.json +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/plugins/cleanup.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/plugins/deny-pages.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/plugins/ip-whitelist.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/plugins/jwt-validator.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/reference/volumes.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/video-docker-ssl.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/video-docker.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/video-kubernetes-letsencrypt.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/video-kubernetes.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/video-static.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/docs/video-tcp-mysql.png +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/.helmignore +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/LICENSE +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/templates/_helpers.tpl +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/templates/clusterrole.yaml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/templates/clusterrolebinding.yaml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/templates/ingressclass.yaml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/helm/easyhaproxy/templates/serviceaccount.yaml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/scripts/bump-version.sh +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/easyhaproxy/__init__.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/builtin/__init__.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/builtin/cleanup.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/builtin/deny_pages.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/plugins/builtin/ip_whitelist.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/templates/bind.j2 +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/templates/frontend-mode-http.j2 +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/templates/frontend-mode-tcp.j2 +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/templates/haproxy.cfg.j2 +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/templates/ssl_default.j2 +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/templates/ssl_loose.j2 +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/src/templates/ssl_strict.j2 +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/__init__.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/docker.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/no-services.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/services-fcgi.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/services-letsencrypt.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/services-multi-containers.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/services-multiple-hosts.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/services-redirect-ssl.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/services-tcp.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/services.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/ssl-loose.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/ssl-strict.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/static-cors.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/expected/static.txt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/00_haproxy.cfg +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/10_haproxy.cfg +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/no-services +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/run_bash.sh +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-changed-label +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-clone-to-ssl +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-fcgi +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-letsencrypt +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-multi-containers +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-multiple-hosts +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-redirect-ssl +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-tcp +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-with-cloudflare +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-with-deny-pages +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-with-ip-whitelist +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-with-jwt-validator +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/services-with-multiple-plugins +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/static.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/static_cors.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/fixtures/static_multi_domain.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_docker.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_functions.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_labels.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_parser.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests/test_static.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/conftest.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/AGENTS.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/README.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-acme-e2e.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-changed-label.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-cloudflare.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-ip-whitelist.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-jwt-validator.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-multi-containers.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-php-fpm.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-plugins-combined.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-portainer-app-example.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose-proxy-headers.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/docker-compose.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/pebble-config.json +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/php-app/README.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/php-app/index.php +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/php-app/info.php +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/docker/php-app/test-path-info.php +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/fixtures/header-echo/Dockerfile +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/fixtures/header-echo/README.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/fixtures/header-echo/server.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/generate-keys.sh +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/.gitignore +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/README.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/jwt-validator-secret-example.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/setup-cluster.sh +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/kubernetes/teardown-cluster.sh +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/static/README.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/static/conf/config-basic.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/static/conf/config-certbot.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/static/conf/config-deny-pages.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/static/conf/config-jwt-validator.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/static/docker-compose.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/swarm/README.md +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/swarm/cloudflare.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/swarm/easyhaproxy.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/swarm/ip-whitelist.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/swarm/jwt-validator.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/swarm/plugins-combined.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/swarm/portainer.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/swarm/services.yml +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/test_kubernetes.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/test_proxy_headers.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/test_static.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.0}/tests_e2e/test_swarm.py +0 -0
- {easyhaproxy-6.1.0 → easyhaproxy-6.2.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.2.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)
|
|
@@ -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)
|
|
@@ -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.2.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.2.0 | 2026-10-21 | Minor | Ingress status follows a cloud LoadBalancer address, EASYHAPROXY_SERVICE_NAME, Helm chart LoadBalancer Service and certbot persistence |
|
|
333
|
+
| 6.1.1 | 2026-06-25 | Patch | Add pass_headers support to FastCGI plugin, fix flaky ACME e2e test timeout |
|
|
332
334
|
| 6.1.0 | 2026-06-24 | Minor | FastCGI protocol support, certbot sidecar plugin, dependency updates |
|
|
333
335
|
| 6.0.1 | 2026-02-23 | Patch | HAProxy dashboard, real-time monitoring dashboard with live traffic charts, ACME e2e test fixes |
|
|
334
336
|
| 6.0.0 | 2026-XX-XX | Major | Python module refactoring (one-class-per-file), IngressClassName support (spec.ingressClassName + deprecated annotation fallback), modernized build system (uv/pyproject.toml), improved version management and release tooling, GitHub Actions workflow_dispatch push control |
|
|
@@ -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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.5
|
|
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.2.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.2.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.5
|
|
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.2.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.2.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.2.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.2.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).
|
|
@@ -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.2.0
|
|
161
161
|
volumes:
|
|
162
162
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
163
163
|
# REQUIRED: Persist Certbot certificates (ACME)
|
|
@@ -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.2.0
|
|
87
87
|
volumes:
|
|
88
88
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
89
89
|
- certs_haproxy:/etc/easyhaproxy/certs/haproxy
|
|
@@ -76,6 +76,7 @@ See the [plugins guide](../guides/plugins.md) for available plugins.
|
|
|
76
76
|
| Flag | Environment Variable | Default | Description |
|
|
77
77
|
|--------------------------------------------|--------------------------------------|----------|----------------------------------------------|
|
|
78
78
|
| `--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`, `
|
|
79
|
+
| `--deployment-mode MODE` | `EASYHAPROXY_DEPLOYMENT_MODE` | `auto` | Deployment mode: `auto`, `daemonset`, `nodeport`, `clusterip` |
|
|
80
80
|
| `--external-hostname HOSTNAME` | `EASYHAPROXY_EXTERNAL_HOSTNAME` | *(none)* | External hostname reported in Ingress status |
|
|
81
|
+
| `--service-name NAME` | `EASYHAPROXY_SERVICE_NAME` | *(none)* | Name of the EasyHAProxy Service (set by the Helm chart) |
|
|
81
82
|
| `--ingress-status-update-interval SECONDS` | `EASYHAPROXY_STATUS_UPDATE_INTERVAL` | `30` | Interval to update Ingress status |
|
|
@@ -42,6 +42,7 @@ These variables apply only when `EASYHAPROXY_DISCOVER=kubernetes`. They control
|
|
|
42
42
|
| EASYHAPROXY_UPDATE_INGRESS_STATUS | Update Ingress resources with the load-balancer IP. Set to `false` to disable. | `true` |
|
|
43
43
|
| 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
44
|
| EASYHAPROXY_EXTERNAL_HOSTNAME | Hostname to report in Ingress status when using ClusterIP mode without a cloud LoadBalancer. | *(none)* |
|
|
45
|
+
| 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
46
|
| EASYHAPROXY_STATUS_UPDATE_INTERVAL | Seconds between Ingress status update cycles. | `30` |
|
|
46
47
|
|
|
47
48
|
:::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
|
|
@@ -58,6 +58,24 @@ Set `service.create: true` and `service.type: NodePort` for most setups. DaemonS
|
|
|
58
58
|
| `easyhaproxy.logLevel.haproxy` | Log level for HAProxy | `DEBUG` |
|
|
59
59
|
| `easyhaproxy.certbot.email` | Email address for Let's Encrypt / ACME registration | `""` |
|
|
60
60
|
|
|
61
|
+
## Certificate Persistence
|
|
62
|
+
|
|
63
|
+
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.
|
|
64
|
+
|
|
65
|
+
| Value | Description | Default |
|
|
66
|
+
|----------------------------------------|------------------------------------------------------|-----------------|
|
|
67
|
+
| `persistence.certbot.enabled` | Mount a PVC at `/etc/easyhaproxy/certs/certbot` | `false` |
|
|
68
|
+
| `persistence.certbot.existingClaim` | Use this existing PVC instead of creating one | `""` |
|
|
69
|
+
| `persistence.certbot.storageClass` | Storage class of the created PVC. Empty = default. | `""` |
|
|
70
|
+
| `persistence.certbot.accessMode` | Access mode of the created PVC | `ReadWriteOnce` |
|
|
71
|
+
| `persistence.certbot.size` | Size of the created PVC | `1Gi` |
|
|
72
|
+
|
|
73
|
+
:::note
|
|
74
|
+
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.
|
|
75
|
+
|
|
76
|
+
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.
|
|
77
|
+
:::
|
|
78
|
+
|
|
61
79
|
## Ingress Status
|
|
62
80
|
|
|
63
81
|
Controls how EasyHAProxy updates Kubernetes Ingress resources with load-balancer IPs.
|
|
@@ -94,7 +112,7 @@ kubectl label nodes node-01 "easyhaproxy/node=master"
|
|
|
94
112
|
| `resources` | CPU/memory requests and limits for the pod | `{}` |
|
|
95
113
|
| `nodeSelector` | Node selector for pod scheduling | `{}` |
|
|
96
114
|
| `tolerations` | Tolerations for pod scheduling | `[]` |
|
|
97
|
-
| `affinity` | Affinity rules for pod scheduling
|
|
115
|
+
| `affinity` | Affinity rules for pod scheduling. In DaemonSet mode `nodeAffinity` comes from `masterNode`; other keys (e.g. `podAntiAffinity`) are kept. | `{}` |
|
|
98
116
|
| `podSecurityContext` | Pod-level security context | `{}` |
|
|
99
117
|
| `securityContext` | Container-level security context | `{}` |
|
|
100
118
|
|