You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Service template rendered loadBalancerIP and loadBalancerSourceRanges but
had no way to select a non-default load balancer implementation, leaving this
the only chart in the repo without loadBalancerClass after 1.2.0 added it to
haproxy-unified-gateway.
Unlike the other two charts, this one declares kubeVersion ">=1.17.0-0", which
predates the field entirely (added in Kubernetes 1.21, GA in 1.24). Gate it
behind semverCompare ">=1.21.0-0", matching how the same template already gates
trafficDistribution behind 1.31, and additionally on type=LoadBalancer since the
API server forbids loadBalancerClass on any other Service type.
No ci/ values file: `ct install` and integration-test.sh use `helm install
--wait`, which blocks until a LoadBalancer Service reports
status.loadBalancer.ingress, and this chart is not in LB_CHARTS in
.github/scripts/install_charts.sh so cloud-provider-kind is not running. The
test_loadbalancer_fields checks in test/local-test.sh pick this chart up
automatically now that values.yaml carries the key.
Also fix the absence assertion in that helper to use [[:space:]] instead of the
GNU-only \s, which BSD grep does not support in ERE; on macOS the check could
never match and so always passed.
Chart version 1.29.0 -> 1.30.0.
Signed-off-by: Dinko Korunic <dkorunic@haproxy.com>
**_NOTE_**: With helm `--set` it is needed to put quotes and escape dots in the annotation key and commas in the value string.
137
137
138
+
### Selecting a LoadBalancer implementation
139
+
140
+
When more than one load balancer controller runs in a cluster, `service.loadBalancerClass` picks which one reconciles the Service. Leaving it unset uses the cluster's default implementation:
**_NOTE_**: `loadBalancerClass` renders only when `service.type` is `LoadBalancer` and the cluster is Kubernetes 1.21 or newer (the field is GA as of 1.24). On older clusters it is omitted.
150
+
151
+
**_NOTE_**: `loadBalancerClass` is immutable while the Service stays type `LoadBalancer`. Kubernetes rejects a change on an existing Service, so `helm upgrade` cannot alter it in place - the Service has to be recreated.
152
+
138
153
### Using values from YAML file
139
154
140
155
As opposed to using many `--set` invocations, much simpler approach is to define value overrides in a separate YAML file and specify them when invoking Helm.
0 commit comments