[ANNOUNCE] haproxy-ingress v0.16.0-alpha.1

0 views
Skip to first unread message

Joao Morais

unread,
Aug 20, 2025, 7:42:25 AMAug 20
to haproxy...@googlegroups.com
HAProxy Ingress v0.16.0-alpha.1 is here!

This is the first tag of the v0.16 branch, which brings most, if not
all the breaking changes expected to the v0.16 release:

* Minimum HAProxy version on the External HAProxy topology changed
from 2.2 to 2.4, due to a change on how Lua scripts are loaded.
* Default load balance algorithm was changed from Roundrobin to
Random(2) if not declared in global ConfigMap or as a backend
annotation.
* Code cleanup might have an impact in the case your workload depends
on it somehow. Removed codes that might impact are:
- Old controller engine was removed altogether, so the
`"HAPROXY_INGRESS_RUNTIME" == "LEGACY"` envvar has no effect.
- Endpoints API was deprecated on Kubernetes 1.33 and removed from
our v0.16 codebase, HAProxy Ingress now uses only EndpointSlice API.

We should have at least one other alpha/snapshot release, and we will
report any new breaking changes on its release notes in the case it
happens.

Besides that, the following areas had some improvement since v0.15:

* Embedded HAProxy version changed from 2.6 to 2.8.
* FastCGI protocol is now supported, both plain and on top of TLS. See
its documentation -
https://haproxy-ingress.github.io/v0.16/docs/configuration/keys/#fastcgi
* Clustered metrics, non centralized, via peers configuration. HAProxy
Ingress configures every HAProxy instance to talk to each other to
share their local metrics. Note that alpha.1 supports only global
configuration with a single shared stick table, a backend scoped
configuration should be done for alpha.2. See its documentation -
https://haproxy-ingress.github.io/v0.16/docs/configuration/keys/#peers
* Customized proxy HTTP responses are now Host/Backend scoped, so they
can be configured per hostname or backend via ingress or service
annotation. See its documentation -
https://haproxy-ingress.github.io/v0.16/docs/configuration/keys/#http-response
* Better support for a namespaced controller by adding the
`--disable-ingress-class-api` command-line option. See its
documentation -
https://haproxy-ingress.github.io/v0.16/docs/configuration/command-line/#ingress-class
* Code cleanup: legacy controller code (on behalf of
controller-runtime), deprecated Endspoins API (on behalf of
EndpointSlice), and deprecated structs used to track changes on a
former HAProxy Ingress version.

Dependencies:

* embedded haproxy from 2.6.22 to 2.8.15
* client-go from v0.32.8 to v0.33.4
* controller-runtime from v0.20.4 to v0.21.0
* go from 1.23.12 to 1.24.6

Links and refs of this release:

* Changelog: https://github.com/jcmoraisjr/haproxy-ingress/blob/master/CHANGELOG/CHANGELOG-v0.16.md#v0160-alpha1
* GitHub release:
https://github.com/jcmoraisjr/haproxy-ingress/releases/tag/v0.16.0-alpha.1
* Release date: 2025-08-20
* Helm chart: --version 0.16.0-alpha.1 --devel
* Image (Quay): quay.io/jcmoraisjr/haproxy-ingress:v0.16.0-alpha.1
* Image (Docker Hub): docker.io/jcmoraisjr/haproxy-ingress:v0.16.0-alpha.1
* Embedded HAProxy version: 2.8.15

New features and improvements since v0.15:

* Bump golangci/golangci-lint-action from 6 to 7 [#1231] (dependabot)
* remove legacy controller and work queue [#1233] (jcmoraisjr)
* Update(docs): for custom tcp ports [#1247] (till)
* Bump golang.org/x/crypto from 0.36.0 to 0.40.0 [#1258] (dependabot)
* Bump k8s.io/api from 0.32.3 to 0.33.2 [#1259] (jcmoraisjr)
* Bump k8s.io/client-go from 0.33.2 to 0.33.3 [#1261] (jcmoraisjr)
* Bump sigs.k8s.io/controller-runtime from 0.20.4 to 0.21.0 [#1263] (dependabot)
* auth external integration tests [#1264] (jcmoraisjr)
* change tests to haproxy 3.2 [#1268] (jcmoraisjr)
* remove fields used by the former tracking [#1270] (jcmoraisjr)
* deprecate v1.endpoints api [#1271] (jcmoraisjr)
* add grace period for embedded haproxy [#1272] (jcmoraisjr) - doc:
https://haproxy-ingress.github.io/v0.16/docs/configuration/command-line/#haproxy-grace-period
- Command-line options:
- `--haproxy-grace-period`
* Bump github.com/prometheus/client_golang from 1.22.0 to 1.23.0
[#1278] (dependabot[bot])
* Bump golang.org/x/crypto from 0.40.0 to 0.41.0 [#1285] (dependabot[bot])
* Bump actions/checkout from 4 to 5 [#1286] (dependabot[bot])
* add option to disable ingress class watch [#1274] (jcmoraisjr) -
doc: https://haproxy-ingress.github.io/v0.16/docs/configuration/command-line/#ingress-class
- Command-line options:
- `--disable-ingress-class-api`
* add fastcgi support [#1275] (jcmoraisjr) - doc:
https://haproxy-ingress.github.io/v0.16/docs/configuration/keys/#fastcgi
- Configuration keys:
- `fcgi-app`
- `fcgi-enabled-apps`
* add config snippet config-backend-early [#1276] (jcmoraisjr) - doc:
https://haproxy-ingress.github.io/v0.16/docs/configuration/keys/#configuration-snippet
- Configuration keys:
- `config-backend-early`
- `config-backend-late`
* load lua script per thread instead [#1281] (jcmoraisjr)
* change default load balance algorithm to random(2) [#1282] (jcmoraisjr)
* makes controller pod namespace and name mandatory [#1287] (jcmoraisjr)
* allows to configure http responses via ingress [#1280] (jcmoraisjr)
* turn envvars optional [#1290] (jcmoraisjr)
* add peers config [#1277] (jcmoraisjr) - doc:
https://haproxy-ingress.github.io/v0.16/docs/configuration/keys/#peers
- Configuration keys:
- `peers-name`
- `peers-port`
- `peers-table`
* update client-go from v0.33.3 to v0.33.4 [2aa3cf6] (Joao Morais)
* update dependencies [1b4bc87] (Joao Morais)
* update go from 1.23.7 to 1.24.6 [59062bf] (Joao Morais)
* update embedded haproxy from 2.6.21 to 2.8.15 [#1292] (jcmoraisjr)
* update docsy from v0.11.0 to v0.12.0 [0f869c4] (Joao Morais)

Chart improvements since v0.15:

* Allow custom labels to be added to the controllers
DaemonSet/Deployment [#93] (gezb)
* add permission to replicasets and daemonsets [#94] (jcmoraisjr)

Fixes since v0.15:

* block attempt to read cluster credentials [#1273] (jcmoraisjr)
* create new event queues when leader is acquired [#1283] (jcmoraisjr)
* read controller pod selector from owner [#1288] (jcmoraisjr)
Reply all
Reply to author
Forward
0 new messages