easyhaproxy 6.0.1__tar.gz → 6.1.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.
Files changed (244) hide show
  1. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.github/workflows/build.yml +16 -16
  2. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/PKG-INFO +6 -1
  3. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/README.md +5 -0
  4. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/RELEASE.md +2 -1
  5. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/docker-compose.yml +1 -1
  6. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/kubernetes/easyhaproxy-clusterip.yml +19 -13
  7. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/kubernetes/easyhaproxy-daemonset.yml +14 -11
  8. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/kubernetes/easyhaproxy-nodeport.yml +19 -13
  9. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/getting-started/kubernetes.md +3 -3
  10. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/getting-started/swarm.md +1 -1
  11. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/acme.md +1 -1
  12. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/ssl.md +1 -1
  13. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/container-labels.md +11 -10
  14. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/helm.md +10 -8
  15. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/plugins/fastcgi.md +5 -0
  16. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/Chart.yaml +2 -2
  17. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/templates/deployment.yaml +7 -0
  18. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/templates/service.yaml +3 -0
  19. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/values.yaml +2 -0
  20. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/pyproject.toml +1 -1
  21. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/easymapping/config_generator.py +5 -0
  22. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/functions/haproxy.py +2 -2
  23. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/builtin/fastcgi.py +1 -1
  24. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/processor/kubernetes.py +3 -0
  25. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-acme.yml +1 -1
  26. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-php-fpm.yml +1 -1
  27. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-portainer.yml +1 -1
  28. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/cloudflare.yml +1 -1
  29. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/ip-whitelist.yml +1 -1
  30. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/jwt-validator.yml +1 -1
  31. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/plugins-combined.yml +1 -1
  32. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/service.yml +1 -1
  33. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/service_tls.yml +1 -1
  34. easyhaproxy-6.1.0/uv.lock +1583 -0
  35. easyhaproxy-6.0.1/uv.lock +0 -882
  36. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.dockerignore +0 -0
  37. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.github/FUNDING.yml +0 -0
  38. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.github/dependabot.yml +0 -0
  39. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.gitignore +0 -0
  40. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.python-version +0 -0
  41. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.run/pytest in tests.run.xml +0 -0
  42. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.vscode/launch.json +0 -0
  43. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/.vscode/settings.json +0 -0
  44. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/CONTRIBUTING.md +0 -0
  45. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/LICENSE +0 -0
  46. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/Makefile +0 -0
  47. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/build-multiarch.sh +0 -0
  48. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/Dockerfile +0 -0
  49. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/entrypoint.sh +0 -0
  50. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/conf.d/README.md +0 -0
  51. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/400.http +0 -0
  52. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/403.http +0 -0
  53. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/408.http +0 -0
  54. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/500.http +0 -0
  55. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/502.http +0 -0
  56. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/503.http +0 -0
  57. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/504.http +0 -0
  58. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/docker/assets/etc/easyhaproxy/www/dashboard.html +0 -0
  59. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/deploy/kubernetes/README.md +0 -0
  60. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/concepts/_category_.json +0 -0
  61. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/concepts/index.md +0 -0
  62. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/concepts/limitations.md +0 -0
  63. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/dashboard.png +0 -0
  64. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/dashboard_login.png +0 -0
  65. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/dashboard_thumbnail.png +0 -0
  66. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_digitalocean.png +0 -0
  67. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_docker.png +0 -0
  68. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_dokku.png +0 -0
  69. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_helm.png +0 -0
  70. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_kubernetes.png +0 -0
  71. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_logo.png +0 -0
  72. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_microk8s.png +0 -0
  73. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_static.png +0 -0
  74. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/easyhaproxy_swarm.png +0 -0
  75. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/getting-started/_category_.json +0 -0
  76. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/getting-started/docker.md +0 -0
  77. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/getting-started/index.md +0 -0
  78. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/getting-started/native.md +0 -0
  79. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/getting-started/static.md +0 -0
  80. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/_category_.json +0 -0
  81. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/dashboard.md +0 -0
  82. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/digitalocean.md +0 -0
  83. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/dokku.md +0 -0
  84. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/helm.md +0 -0
  85. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/microk8s.md +0 -0
  86. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/plugin-development.md +0 -0
  87. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/guides/plugins.md +0 -0
  88. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/icons.xcf +0 -0
  89. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/logo.png +0 -0
  90. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/logo.xcf +0 -0
  91. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/_category_.json +0 -0
  92. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/cli.md +0 -0
  93. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/environment-variables.md +0 -0
  94. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/other.md +0 -0
  95. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/plugins/_category_.json +0 -0
  96. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/plugins/cleanup.md +0 -0
  97. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/plugins/cloudflare.md +0 -0
  98. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/plugins/deny-pages.md +0 -0
  99. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/plugins/ip-whitelist.md +0 -0
  100. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/plugins/jwt-validator.md +0 -0
  101. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/reference/volumes.md +0 -0
  102. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/video-docker-ssl.png +0 -0
  103. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/video-docker.png +0 -0
  104. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/video-kubernetes-letsencrypt.png +0 -0
  105. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/video-kubernetes.png +0 -0
  106. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/video-static.png +0 -0
  107. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/docs/video-tcp-mysql.png +0 -0
  108. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/.helmignore +0 -0
  109. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/LICENSE +0 -0
  110. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/README.md +0 -0
  111. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/templates/_helpers.tpl +0 -0
  112. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/templates/clusterrole.yaml +0 -0
  113. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/templates/clusterrolebinding.yaml +0 -0
  114. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/templates/ingressclass.yaml +0 -0
  115. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/templates/serviceaccount.yaml +0 -0
  116. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/helm/easyhaproxy/values.schema.json +0 -0
  117. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/scripts/bump-version.sh +0 -0
  118. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/easyhaproxy/__init__.py +0 -0
  119. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/easyhaproxy/main.py +0 -0
  120. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/easymapping/__init__.py +0 -0
  121. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/easymapping/label_handler.py +0 -0
  122. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/functions/__init__.py +0 -0
  123. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/functions/certbot.py +0 -0
  124. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/functions/consts.py +0 -0
  125. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/functions/container_env.py +0 -0
  126. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/functions/filter.py +0 -0
  127. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/functions/functions.py +0 -0
  128. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/functions/loggers.py +0 -0
  129. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/__init__.py +0 -0
  130. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/builtin/__init__.py +0 -0
  131. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/builtin/cleanup.py +0 -0
  132. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/builtin/cloudflare.py +0 -0
  133. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/builtin/deny_pages.py +0 -0
  134. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/builtin/ip_whitelist.py +0 -0
  135. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/builtin/jwt_validator.py +0 -0
  136. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/interface.py +0 -0
  137. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/manager.py +0 -0
  138. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/plugins/types.py +0 -0
  139. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/processor/__init__.py +0 -0
  140. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/processor/docker.py +0 -0
  141. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/processor/interface.py +0 -0
  142. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/processor/static.py +0 -0
  143. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/processor/swarm.py +0 -0
  144. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/templates/bind.j2 +0 -0
  145. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/templates/frontend-mode-http.j2 +0 -0
  146. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/templates/frontend-mode-tcp.j2 +0 -0
  147. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/templates/haproxy.cfg.j2 +0 -0
  148. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/templates/ssl_default.j2 +0 -0
  149. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/templates/ssl_loose.j2 +0 -0
  150. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/src/templates/ssl_strict.j2 +0 -0
  151. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/__init__.py +0 -0
  152. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/conftest.py +0 -0
  153. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/docker.txt +0 -0
  154. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/no-services.txt +0 -0
  155. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/services-fcgi.txt +0 -0
  156. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/services-letsencrypt.txt +0 -0
  157. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/services-multi-containers.txt +0 -0
  158. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/services-multiple-hosts.txt +0 -0
  159. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/services-redirect-ssl.txt +0 -0
  160. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/services-tcp.txt +0 -0
  161. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/services.txt +0 -0
  162. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/ssl-loose.txt +0 -0
  163. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/ssl-strict.txt +0 -0
  164. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/static-cors.txt +0 -0
  165. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/expected/static.txt +0 -0
  166. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/00_haproxy.cfg +0 -0
  167. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/10_haproxy.cfg +0 -0
  168. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/no-services +0 -0
  169. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/run_bash.sh +0 -0
  170. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services +0 -0
  171. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-changed-label +0 -0
  172. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-clone-to-ssl +0 -0
  173. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-fcgi +0 -0
  174. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-letsencrypt +0 -0
  175. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-multi-containers +0 -0
  176. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-multiple-hosts +0 -0
  177. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-redirect-ssl +0 -0
  178. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-tcp +0 -0
  179. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-with-cloudflare +0 -0
  180. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-with-deny-pages +0 -0
  181. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-with-ip-whitelist +0 -0
  182. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-with-jwt-validator +0 -0
  183. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/services-with-multiple-plugins +0 -0
  184. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/static.yml +0 -0
  185. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/static_cors.yml +0 -0
  186. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/fixtures/static_multi_domain.yml +0 -0
  187. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_certbot.py +0 -0
  188. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_certbot_haproxy_config.py +0 -0
  189. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_containerenv.py +0 -0
  190. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_daemonize.py +0 -0
  191. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_docker.py +0 -0
  192. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_functions.py +0 -0
  193. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_kubernetes_processor.py +0 -0
  194. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_labels.py +0 -0
  195. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_parser.py +0 -0
  196. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_plugins.py +0 -0
  197. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests/test_static.py +0 -0
  198. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/conftest.py +0 -0
  199. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/AGENTS.md +0 -0
  200. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/README.md +0 -0
  201. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-acme-e2e.yml +0 -0
  202. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-changed-label.yml +0 -0
  203. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-cloudflare.yml +0 -0
  204. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-ip-whitelist.yml +0 -0
  205. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-jwt-validator.yml +0 -0
  206. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-multi-containers.yml +0 -0
  207. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-plugins-combined.yml +0 -0
  208. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-portainer-app-example.yml +0 -0
  209. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose-proxy-headers.yml +0 -0
  210. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/docker-compose.yml +0 -0
  211. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/pebble-config.json +0 -0
  212. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/php-app/README.md +0 -0
  213. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/php-app/index.php +0 -0
  214. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/php-app/info.php +0 -0
  215. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/docker/php-app/test-path-info.php +0 -0
  216. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/fixtures/header-echo/Dockerfile +0 -0
  217. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/fixtures/header-echo/README.md +0 -0
  218. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/fixtures/header-echo/server.py +0 -0
  219. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/generate-keys.sh +0 -0
  220. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/.gitignore +0 -0
  221. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/README.md +0 -0
  222. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/jwt-validator-secret-example.yml +0 -0
  223. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/setup-cluster.sh +0 -0
  224. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/kubernetes/teardown-cluster.sh +0 -0
  225. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/static/README.md +0 -0
  226. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/static/conf/config-basic.yml +0 -0
  227. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/static/conf/config-certbot.yml +0 -0
  228. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/static/conf/config-deny-pages.yml +0 -0
  229. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/static/conf/config-jwt-validator.yml +0 -0
  230. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/static/docker-compose.yml +0 -0
  231. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/swarm/README.md +0 -0
  232. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/swarm/cloudflare.yml +0 -0
  233. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/swarm/easyhaproxy.yml +0 -0
  234. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/swarm/ip-whitelist.yml +0 -0
  235. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/swarm/jwt-validator.yml +0 -0
  236. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/swarm/plugins-combined.yml +0 -0
  237. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/swarm/portainer.yml +0 -0
  238. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/swarm/services.yml +0 -0
  239. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/test_docker_compose.py +0 -0
  240. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/test_kubernetes.py +0 -0
  241. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/test_proxy_headers.py +0 -0
  242. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/test_static.py +0 -0
  243. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/test_swarm.py +0 -0
  244. {easyhaproxy-6.0.1 → easyhaproxy-6.1.0}/tests_e2e/utils.py +0 -0
@@ -34,7 +34,7 @@ jobs:
34
34
 
35
35
  steps:
36
36
  - name: Checkout repository
37
- uses: actions/checkout@v4
37
+ uses: actions/checkout@v7
38
38
 
39
39
  - name: Install uv
40
40
  run: curl -LsSf https://astral.sh/uv/install.sh | sh
@@ -58,7 +58,7 @@ jobs:
58
58
 
59
59
  steps:
60
60
  - name: Checkout repository
61
- uses: actions/checkout@v4
61
+ uses: actions/checkout@v7
62
62
 
63
63
  - name: Install uv
64
64
  run: curl -LsSf https://astral.sh/uv/install.sh | sh
@@ -82,7 +82,7 @@ jobs:
82
82
 
83
83
  steps:
84
84
  - name: Checkout repository
85
- uses: actions/checkout@v4
85
+ uses: actions/checkout@v7
86
86
 
87
87
  - name: Install uv
88
88
  run: curl -LsSf https://astral.sh/uv/install.sh | sh
@@ -106,7 +106,7 @@ jobs:
106
106
 
107
107
  steps:
108
108
  - name: Checkout repository
109
- uses: actions/checkout@v4
109
+ uses: actions/checkout@v7
110
110
 
111
111
  - name: Install uv
112
112
  run: curl -LsSf https://astral.sh/uv/install.sh | sh
@@ -138,7 +138,7 @@ jobs:
138
138
 
139
139
  steps:
140
140
  - name: Checkout repository
141
- uses: actions/checkout@v4
141
+ uses: actions/checkout@v7
142
142
 
143
143
  - name: Install uv
144
144
  run: curl -LsSf https://astral.sh/uv/install.sh | sh
@@ -170,17 +170,17 @@ jobs:
170
170
 
171
171
  steps:
172
172
  - name: Checkout repository
173
- uses: actions/checkout@v4
173
+ uses: actions/checkout@v7
174
174
 
175
175
  - name: Set up QEMU
176
- uses: docker/setup-qemu-action@v3
176
+ uses: docker/setup-qemu-action@v4
177
177
 
178
178
  - name: Set up Docker Buildx
179
- uses: docker/setup-buildx-action@v3
179
+ uses: docker/setup-buildx-action@v4
180
180
 
181
181
  - name: Log into registry
182
182
  if: github.event_name == 'push' || github.event.inputs.push == 'true'
183
- uses: docker/login-action@v3
183
+ uses: docker/login-action@v4
184
184
  with:
185
185
  registry: ${{ secrets.DOCKER_REGISTRY }}
186
186
  username: ${{ secrets.DOCKER_REGISTRY_USER }}
@@ -190,11 +190,11 @@ jobs:
190
190
  # https://github.com/docker/metadata-action
191
191
  - name: Extract Docker metadata
192
192
  id: meta
193
- uses: docker/metadata-action@v5
193
+ uses: docker/metadata-action@v6
194
194
  with:
195
195
  images: ${{ secrets.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}
196
196
 
197
- - uses: actions/github-script@v6
197
+ - uses: actions/github-script@v9
198
198
  id: tags
199
199
  with:
200
200
  script: |
@@ -215,7 +215,7 @@ jobs:
215
215
  run: |
216
216
  echo "${{ steps.tags.outputs.result }}"
217
217
 
218
- - uses: actions/github-script@v6
218
+ - uses: actions/github-script@v9
219
219
  id: normalized
220
220
  with:
221
221
  script: |
@@ -239,7 +239,7 @@ jobs:
239
239
  # Build and push Docker image with Buildx (don't push on PR)
240
240
  # https://github.com/docker/build-push-action
241
241
  - name: Build and push Docker image
242
- uses: docker/build-push-action@v5
242
+ uses: docker/build-push-action@v7
243
243
  with:
244
244
  context: .
245
245
  file: deploy/docker/Dockerfile
@@ -271,7 +271,7 @@ jobs:
271
271
 
272
272
  steps:
273
273
  - name: Checkout repository
274
- uses: actions/checkout@v4
274
+ uses: actions/checkout@v7
275
275
 
276
276
  - name: Install uv
277
277
  run: curl -LsSf https://astral.sh/uv/install.sh | sh
@@ -291,12 +291,12 @@ jobs:
291
291
  env:
292
292
  DOC_GITHUB_TOKEN: '${{ secrets.DOC_TOKEN }}'
293
293
  steps:
294
- - uses: actions/checkout@v4
294
+ - uses: actions/checkout@v7
295
295
  if: startsWith(github.ref, 'refs/tags/')
296
296
  with:
297
297
  ref: master
298
298
 
299
- - uses: actions/checkout@v4
299
+ - uses: actions/checkout@v7
300
300
  if: github.ref == 'refs/heads/master'
301
301
 
302
302
  - name: Get result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easyhaproxy
3
- Version: 6.0.1
3
+ Version: 6.1.0
4
4
  Summary: HAProxy label based routing with service discovery for Docker, Swarm, and Kubernetes
5
5
  License: MIT License
6
6
 
@@ -45,6 +45,11 @@ Requires-Dist: pyyaml>=6.0
45
45
  Requires-Dist: requests>=2.31.0
46
46
  Description-Content-Type: text/markdown
47
47
 
48
+ ---
49
+ sidebar_key: docker-easy-haproxy
50
+ tags: [docker, devops]
51
+ ---
52
+
48
53
  # EasyHAProxy
49
54
 
50
55
  [![Sponsor](https://img.shields.io/badge/Sponsor-%23ea4aaa?logo=githubsponsors&logoColor=white&labelColor=0d1117)](https://github.com/sponsors/byjg)
@@ -1,3 +1,8 @@
1
+ ---
2
+ sidebar_key: docker-easy-haproxy
3
+ tags: [docker, devops]
4
+ ---
5
+
1
6
  # EasyHAProxy
2
7
 
3
8
  [![Sponsor](https://img.shields.io/badge/Sponsor-%23ea4aaa?logo=githubsponsors&logoColor=white&labelColor=0d1117)](https://github.com/sponsors/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.0.1` (as of Chart.yaml)
57
+ **Current Version:** `6.1.0` (as of Chart.yaml)
58
58
 
59
59
  ## Automated Release (Recommended)
60
60
 
@@ -329,6 +329,7 @@ helm show chart byjg/easyhaproxy
329
329
 
330
330
  | Version | Release Date | Type | Highlights |
331
331
  |---------|--------------|-------|---------------------------------------------------------------------------------------------------------------------------------------|
332
+ | 6.1.0 | 2026-06-24 | Minor | FastCGI protocol support, certbot sidecar plugin, dependency updates |
332
333
  | 6.0.1 | 2026-02-23 | Patch | HAProxy dashboard, real-time monitoring dashboard with live traffic charts, ACME e2e test fixes |
333
334
  | 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 |
334
335
  | 5.0.0 | 2025-12-04 | Major | Plugin framework (builtin plugins: JWT, FastCGI, Cloudflare, IP whitelist, deny pages, cleanup), docs restructure, examples refreshed |
@@ -1,6 +1,6 @@
1
1
  services:
2
2
  easyhaproxy:
3
- image: byjg/easy-haproxy:6.0.1
3
+ image: byjg/easy-haproxy:6.1.0
4
4
  volumes:
5
5
  - /var/run/docker.sock:/var/run/docker.sock
6
6
  - certs_certbot:/etc/easyhaproxy/certs/certbot
@@ -6,10 +6,10 @@ metadata:
6
6
  name: ingress-easyhaproxy
7
7
  namespace: easyhaproxy
8
8
  labels:
9
- helm.sh/chart: easyhaproxy-2.0.1
9
+ helm.sh/chart: easyhaproxy-2.0.3
10
10
  app.kubernetes.io/name: easyhaproxy
11
11
  app.kubernetes.io/instance: ingress
12
- app.kubernetes.io/version: "6.0.1"
12
+ app.kubernetes.io/version: "6.1.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.1
22
+ helm.sh/chart: easyhaproxy-2.0.3
23
23
  app.kubernetes.io/name: easyhaproxy
24
24
  app.kubernetes.io/instance: ingress
25
- app.kubernetes.io/version: "6.0.1"
25
+ app.kubernetes.io/version: "6.1.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.1
86
+ helm.sh/chart: easyhaproxy-2.0.3
87
87
  app.kubernetes.io/name: easyhaproxy
88
88
  app.kubernetes.io/instance: ingress
89
- app.kubernetes.io/version: "6.0.1"
89
+ app.kubernetes.io/version: "6.1.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.1
108
+ helm.sh/chart: easyhaproxy-2.0.3
109
109
  app.kubernetes.io/name: easyhaproxy
110
110
  app.kubernetes.io/instance: ingress
111
- app.kubernetes.io/version: "6.0.1"
111
+ app.kubernetes.io/version: "6.1.0"
112
112
  app.kubernetes.io/managed-by: Helm
113
113
  annotations:
114
114
  {}
@@ -124,6 +124,9 @@ spec:
124
124
  - name: stats
125
125
  port: 1936
126
126
 
127
+ - name: dashboard
128
+ port: 11936
129
+
127
130
 
128
131
 
129
132
  selector:
@@ -137,10 +140,10 @@ metadata:
137
140
  name: ingress-easyhaproxy
138
141
  namespace: easyhaproxy
139
142
  labels:
140
- helm.sh/chart: easyhaproxy-2.0.1
143
+ helm.sh/chart: easyhaproxy-2.0.3
141
144
  app.kubernetes.io/name: easyhaproxy
142
145
  app.kubernetes.io/instance: ingress
143
- app.kubernetes.io/version: "6.0.1"
146
+ app.kubernetes.io/version: "6.1.0"
144
147
  app.kubernetes.io/managed-by: Helm
145
148
  spec:
146
149
  replicas: 1
@@ -161,7 +164,7 @@ spec:
161
164
  - name: easyhaproxy
162
165
  securityContext:
163
166
  {}
164
- image: "byjg/easy-haproxy:6.0.1"
167
+ image: "byjg/easy-haproxy:6.1.0"
165
168
  imagePullPolicy: Always
166
169
  ports:
167
170
  - name: http
@@ -173,6 +176,9 @@ spec:
173
176
  - name: stats
174
177
  containerPort: 1936
175
178
 
179
+ - name: dashboard
180
+ containerPort: 11936
181
+
176
182
  resources:
177
183
  {}
178
184
  env:
@@ -211,10 +217,10 @@ kind: IngressClass
211
217
  metadata:
212
218
  name: easyhaproxy
213
219
  labels:
214
- helm.sh/chart: easyhaproxy-2.0.1
220
+ helm.sh/chart: easyhaproxy-2.0.3
215
221
  app.kubernetes.io/name: easyhaproxy
216
222
  app.kubernetes.io/instance: ingress
217
- app.kubernetes.io/version: "6.0.1"
223
+ app.kubernetes.io/version: "6.1.0"
218
224
  app.kubernetes.io/managed-by: Helm
219
225
  spec:
220
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.1
9
+ helm.sh/chart: easyhaproxy-2.0.3
10
10
  app.kubernetes.io/name: easyhaproxy
11
11
  app.kubernetes.io/instance: ingress
12
- app.kubernetes.io/version: "6.0.1"
12
+ app.kubernetes.io/version: "6.1.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.1
22
+ helm.sh/chart: easyhaproxy-2.0.3
23
23
  app.kubernetes.io/name: easyhaproxy
24
24
  app.kubernetes.io/instance: ingress
25
- app.kubernetes.io/version: "6.0.1"
25
+ app.kubernetes.io/version: "6.1.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.1
86
+ helm.sh/chart: easyhaproxy-2.0.3
87
87
  app.kubernetes.io/name: easyhaproxy
88
88
  app.kubernetes.io/instance: ingress
89
- app.kubernetes.io/version: "6.0.1"
89
+ app.kubernetes.io/version: "6.1.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.1
107
+ helm.sh/chart: easyhaproxy-2.0.3
108
108
  app.kubernetes.io/name: easyhaproxy
109
109
  app.kubernetes.io/instance: ingress
110
- app.kubernetes.io/version: "6.0.1"
110
+ app.kubernetes.io/version: "6.1.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.0.1"
139
+ image: "byjg/easy-haproxy:6.1.0"
140
140
  imagePullPolicy: Always
141
141
  ports:
142
142
  - name: http
@@ -148,6 +148,9 @@ spec:
148
148
  - name: stats
149
149
  containerPort: 1936
150
150
  hostPort: 1936
151
+ - name: dashboard
152
+ containerPort: 11936
153
+ hostPort: 11936
151
154
  resources:
152
155
  {}
153
156
  env:
@@ -186,10 +189,10 @@ kind: IngressClass
186
189
  metadata:
187
190
  name: easyhaproxy
188
191
  labels:
189
- helm.sh/chart: easyhaproxy-2.0.1
192
+ helm.sh/chart: easyhaproxy-2.0.3
190
193
  app.kubernetes.io/name: easyhaproxy
191
194
  app.kubernetes.io/instance: ingress
192
- app.kubernetes.io/version: "6.0.1"
195
+ app.kubernetes.io/version: "6.1.0"
193
196
  app.kubernetes.io/managed-by: Helm
194
197
  spec:
195
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.1
9
+ helm.sh/chart: easyhaproxy-2.0.3
10
10
  app.kubernetes.io/name: easyhaproxy
11
11
  app.kubernetes.io/instance: ingress
12
- app.kubernetes.io/version: "6.0.1"
12
+ app.kubernetes.io/version: "6.1.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.1
22
+ helm.sh/chart: easyhaproxy-2.0.3
23
23
  app.kubernetes.io/name: easyhaproxy
24
24
  app.kubernetes.io/instance: ingress
25
- app.kubernetes.io/version: "6.0.1"
25
+ app.kubernetes.io/version: "6.1.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.1
86
+ helm.sh/chart: easyhaproxy-2.0.3
87
87
  app.kubernetes.io/name: easyhaproxy
88
88
  app.kubernetes.io/instance: ingress
89
- app.kubernetes.io/version: "6.0.1"
89
+ app.kubernetes.io/version: "6.1.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.1
108
+ helm.sh/chart: easyhaproxy-2.0.3
109
109
  app.kubernetes.io/name: easyhaproxy
110
110
  app.kubernetes.io/instance: ingress
111
- app.kubernetes.io/version: "6.0.1"
111
+ app.kubernetes.io/version: "6.1.0"
112
112
  app.kubernetes.io/managed-by: Helm
113
113
  annotations:
114
114
  {}
@@ -124,6 +124,9 @@ spec:
124
124
  - name: stats
125
125
  port: 1936
126
126
  nodePort: 1936
127
+ - name: dashboard
128
+ port: 11936
129
+ nodePort: 11936
127
130
 
128
131
 
129
132
  selector:
@@ -137,10 +140,10 @@ metadata:
137
140
  name: ingress-easyhaproxy
138
141
  namespace: easyhaproxy
139
142
  labels:
140
- helm.sh/chart: easyhaproxy-2.0.1
143
+ helm.sh/chart: easyhaproxy-2.0.3
141
144
  app.kubernetes.io/name: easyhaproxy
142
145
  app.kubernetes.io/instance: ingress
143
- app.kubernetes.io/version: "6.0.1"
146
+ app.kubernetes.io/version: "6.1.0"
144
147
  app.kubernetes.io/managed-by: Helm
145
148
  spec:
146
149
  replicas: 1
@@ -161,7 +164,7 @@ spec:
161
164
  - name: easyhaproxy
162
165
  securityContext:
163
166
  {}
164
- image: "byjg/easy-haproxy:6.0.1"
167
+ image: "byjg/easy-haproxy:6.1.0"
165
168
  imagePullPolicy: Always
166
169
  ports:
167
170
  - name: http
@@ -173,6 +176,9 @@ spec:
173
176
  - name: stats
174
177
  containerPort: 1936
175
178
 
179
+ - name: dashboard
180
+ containerPort: 11936
181
+
176
182
  resources:
177
183
  {}
178
184
  env:
@@ -211,10 +217,10 @@ kind: IngressClass
211
217
  metadata:
212
218
  name: easyhaproxy
213
219
  labels:
214
- helm.sh/chart: easyhaproxy-2.0.1
220
+ helm.sh/chart: easyhaproxy-2.0.3
215
221
  app.kubernetes.io/name: easyhaproxy
216
222
  app.kubernetes.io/instance: ingress
217
- app.kubernetes.io/version: "6.0.1"
223
+ app.kubernetes.io/version: "6.1.0"
218
224
  app.kubernetes.io/managed-by: Helm
219
225
  spec:
220
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.0.1/deploy/kubernetes/easyhaproxy-nodeport.yml
44
+ https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.1.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.0.1/deploy/kubernetes/easyhaproxy-clusterip.yml
53
+ https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.1.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.0.1/deploy/kubernetes/easyhaproxy-daemonset.yml
67
+ https://raw.githubusercontent.com/byjg/docker-easy-haproxy/6.1.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).
@@ -28,7 +28,7 @@ docker network create -d overlay --attachable easyhaproxy
28
28
  ```yaml
29
29
  services:
30
30
  haproxy:
31
- image: byjg/easy-haproxy:6.0.1
31
+ image: byjg/easy-haproxy:6.1.0
32
32
  volumes:
33
33
  - /var/run/docker.sock:/var/run/docker.sock
34
34
  deploy:
@@ -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.0.1
160
+ image: byjg/easy-haproxy:6.1.0
161
161
  volumes:
162
162
  - /var/run/docker.sock:/var/run/docker.sock
163
163
  # REQUIRED: Persist Certbot certificates (ACME)
@@ -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.0.1
86
+ image: byjg/easy-haproxy:6.1.0
87
87
  volumes:
88
88
  - /var/run/docker.sock:/var/run/docker.sock
89
89
  - certs_haproxy:/etc/easyhaproxy/certs/haproxy
@@ -153,16 +153,17 @@ docker run \
153
153
 
154
154
  When using Kubernetes, configure EasyHAProxy behavior with these annotations on your Ingress resources. Annotations apply to **all hosts** in the ingress configuration.
155
155
 
156
- | Annotation | Description | Default | Example |
157
- |-------------------------------------|--------------------------------------------------------------------------------------|------------|-----------------------------|
158
- | kubernetes.io/ingress.class | (deprecated) Activate EasyHAProxy. Use `spec.ingressClassName` instead. | *optional* | easyhaproxy-ingress |
159
- | easyhaproxy.redirect_ssl | (optional) Boolean. Force redirect all endpoints to HTTPS. | false | true or false |
160
- | easyhaproxy.certbot | (optional) Boolean. Request certbot certificates for the ingress domains. | false | true or false |
161
- | easyhaproxy.redirect | (optional) JSON. Key pair with a domain and its destination. | *empty* | \{"domain":"redirect_url"} |
162
- | easyhaproxy.mode | (optional) Set the HTTP mode for that connection. | http | http or tcp |
163
- | easyhaproxy.listen_port | (optional) Override the HTTP listen port created for that ingress. | 80 | 8081 |
164
- | easyhaproxy.plugins | (optional) Comma-separated list of plugins to enable for this ingress. | *empty* | cloudflare,deny_pages |
165
- | easyhaproxy.plugin.`{name}`.`{key}` | (optional) Plugin-specific configuration (see [Using Plugins](../guides/plugins.md)) | *varies* | See plugin docs |
156
+ | Annotation | Description | Default | Example |
157
+ |-------------------------------------|------------------------------------------------------------------------------------------------|------------|----------------------------|
158
+ | kubernetes.io/ingress.class | (deprecated) Activate EasyHAProxy. Use `spec.ingressClassName` instead. | *optional* | easyhaproxy-ingress |
159
+ | easyhaproxy.redirect_ssl | (optional) Boolean. Force redirect all endpoints to HTTPS. | false | true or false |
160
+ | easyhaproxy.certbot | (optional) Boolean. Request certbot certificates for the ingress domains. | false | true or false |
161
+ | easyhaproxy.redirect | (optional) JSON. Key pair with a domain and its destination. | *empty* | \{"domain":"redirect_url"} |
162
+ | easyhaproxy.mode | (optional) Set the HTTP mode for that connection. | http | http or tcp |
163
+ | easyhaproxy.proto | (optional) Backend server protocol. Automatically set to `fcgi` when using the fastcgi plugin. | *empty* | fcgi, h2 |
164
+ | easyhaproxy.listen_port | (optional) Override the HTTP listen port created for that ingress. | 80 | 8081 |
165
+ | easyhaproxy.plugins | (optional) Comma-separated list of plugins to enable for this ingress. | *empty* | cloudflare,deny_pages |
166
+ | easyhaproxy.plugin.`{name}`.`{key}` | (optional) Plugin-specific configuration (see [Using Plugins](../guides/plugins.md)) | *varies* | See plugin docs |
166
167
 
167
168
  For annotation usage examples, see the [Kubernetes getting started guide](../getting-started/kubernetes.md).
168
169
 
@@ -35,19 +35,21 @@ Set `service.create: true` and `service.type: NodePort` for most setups. DaemonS
35
35
 
36
36
  ## Port Binding
37
37
 
38
- | Value | Description | Default |
39
- |---------------------------|------------------------------------|---------|
40
- | `binding.ports.http` | HTTP port | `80` |
41
- | `binding.ports.https` | HTTPS port | `443` |
42
- | `binding.ports.stats` | HAProxy stats port | `1936` |
43
- | `binding.additionalPorts` | List of additional ports to expose | `[]` |
38
+ | Value | Description | Default |
39
+ |----------------------------|--------------------------------------------------------------------|----------|
40
+ | `binding.ports.http` | HTTP port | `80` |
41
+ | `binding.ports.https` | HTTPS port | `443` |
42
+ | `binding.ports.stats` | HAProxy stats port | `1936` |
43
+ | `binding.ports.dashboard` | Monitoring dashboard port (always `stats + 10000` inside the pod) | `11936` |
44
+ | `binding.additionalPorts` | List of additional ports to expose | `[]` |
44
45
 
45
46
  ## EasyHAProxy Settings
46
47
 
47
48
  | Value | Description | Default |
48
49
  |------------------------------------|-----------------------------------------------------|------------|
49
- | `easyhaproxy.stats.username` | HAProxy stats dashboard username | `admin` |
50
- | `easyhaproxy.stats.password` | HAProxy stats dashboard password | `password` |
50
+ | `easyhaproxy.stats.username` | HAProxy stats username | `admin` |
51
+ | `easyhaproxy.stats.password` | HAProxy stats password. **Required** to enable the stats endpoint and dashboard. | `password` |
52
+ | `easyhaproxy.stats.corsOrigin` | Allowed origin for stats API CORS (e.g. `http://node01:11936`). **Required** for the dashboard to load in a browser. | `""` |
51
53
  | `easyhaproxy.refresh` | Seconds between service discovery polls | `"10"` |
52
54
  | `easyhaproxy.customErrors` | Enable custom HTML error pages | `"true"` |
53
55
  | `easyhaproxy.sslMode` | TLS mode: `strict`, `default`, or `loose` | `loose` |
@@ -67,6 +67,8 @@ services:
67
67
 
68
68
  ### Kubernetes Annotations
69
69
 
70
+ The `proto: fcgi` backend protocol is set automatically when using this plugin — no need to add `easyhaproxy.proto` manually.
71
+
70
72
  ```yaml
71
73
  apiVersion: networking.k8s.io/v1
72
74
  kind: Ingress
@@ -75,12 +77,15 @@ metadata:
75
77
  easyhaproxy.plugins: "fastcgi"
76
78
  easyhaproxy.plugin.fastcgi.document_root: "/var/www/html"
77
79
  easyhaproxy.plugin.fastcgi.index_file: "index.php"
80
+ easyhaproxy.plugin.fastcgi.script_filename: "/var/www/html/index.php"
78
81
  spec:
82
+ ingressClassName: easyhaproxy
79
83
  rules:
80
84
  - host: phpapp.example.com
81
85
  http:
82
86
  paths:
83
87
  - path: /
88
+ pathType: ImplementationSpecific
84
89
  backend:
85
90
  service:
86
91
  name: php-fpm
@@ -15,12 +15,12 @@ type: application
15
15
  # This is the chart version. This version number should be incremented each time you make changes
16
16
  # to the chart and its templates, including the app version.
17
17
  # Versions are expected to follow Semantic Versioning (https://semver.org/)
18
- version: 2.0.1
18
+ version: 2.0.3
19
19
 
20
20
  # This is the version number of the application being deployed. This version number should be
21
21
  # incremented each time you make changes to the application. Versions are not expected to
22
22
  # follow Semantic Versioning. They should reflect the version the application is using.
23
23
  # It is recommended to use it with quotes.
24
- appVersion: "6.0.1"
24
+ appVersion: "6.1.0"
25
25
 
26
26
  icon: https://opensource.byjg.com/img/easy_haproxy_logo.png
@@ -48,6 +48,9 @@ spec:
48
48
  - name: stats
49
49
  containerPort: 1936
50
50
  {{ if not .Values.service.create }}hostPort: {{ .Values.binding.ports.stats }}{{ end }}
51
+ - name: dashboard
52
+ containerPort: 11936
53
+ {{ if not .Values.service.create }}hostPort: {{ .Values.binding.ports.dashboard }}{{ end }}
51
54
  {{- range $port := .Values.binding.additionalPorts }}
52
55
  - name: extra{{ $port }}
53
56
  containerPort: {{ $port }}
@@ -62,6 +65,10 @@ spec:
62
65
  value: {{ .Values.easyhaproxy.stats.username }}
63
66
  - name: HAPROXY_PASSWORD
64
67
  value: {{ .Values.easyhaproxy.stats.password }}
68
+ {{- if .Values.easyhaproxy.stats.corsOrigin }}
69
+ - name: HAPROXY_STATS_CORS_ORIGIN
70
+ value: {{ .Values.easyhaproxy.stats.corsOrigin | quote }}
71
+ {{- end }}
65
72
  - name: EASYHAPROXY_REFRESH_CONF
66
73
  value: {{ .Values.easyhaproxy.refresh | quote }}
67
74
  - name: HAPROXY_CUSTOMERRORS
@@ -22,6 +22,9 @@ spec:
22
22
  - name: stats
23
23
  port: 1936
24
24
  {{ if eq .Values.service.type "NodePort" }}nodePort: {{ .Values.binding.ports.stats }}{{ end }}
25
+ - name: dashboard
26
+ port: 11936
27
+ {{ if eq .Values.service.type "NodePort" }}nodePort: {{ .Values.binding.ports.dashboard }}{{ end }}
25
28
  {{- range $port := .Values.binding.additionalPorts }}
26
29
  - name: extra{{ $port }}
27
30
  port: {{ $port }}