Repository navigation
Conversation
41a765d to
f27017b
Compare
|
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
|
Hi @MaxRink , Thanks for your submission! We'll be discussing a few points internally that could impact your PR. We hope to wrap this up shortly and will get back to you as soon as possible. |
b215ee6 to
e202d40
Compare
e202d40 to
e505d3c
Compare
e505d3c to
1f78f40
Compare
9de97f3 to
55d228e
Compare
854eabf to
82f3084
Compare
b0789b8 to
d1e6180
Compare
61ed5b1 to
31fa49d
Compare
2953fbc to
6e04b83
Compare
Assisted-by: OpenAI Codex
6e04b83 to
9ad3ada
Compare
|
Hi @ivanmatmati, did the internal discussion lead anywhere? If it helps, I can change the scope, for example by splitting the local peer-entry reconciliation from the source-IP persistence annotation. About the red |
Summary
localinstancepeer entries from the current controller pod plus same-workload controller pods.pod name -> PodIP.source-ip-persistencesource-ip-persistence-sizesource-ip-persistence-expirestick-table type ip size <size> expire <expire> peers localinstancestick on srcSRV_<n>slots so every controller replica maps the same endpoint to the same server identity. This matters for MagLev/source-hash consistency and for peer-replicated stick-table server IDs during failover.--localpeer-port, generated stick-table peer behavior, source-IP persistence annotations, and the deterministic server-slot requirement indocumentation/doc.yaml; regeneratecontroller.mdandannotations.md.Behavior
localpeer entry and ensures its own pod peer entry during startup.localinstancepeer section.--localpeer-port;source-ip-persistence: "true"is set, the backend gets a source-IP stick table attached topeers localinstanceand astick on srcrule.load-balance: "source"and CRD hash-type settings can still choose the initial server. The stick table then records the selected server and can replicate that state between controller pods through the local peer section.SRV_1,SRV_2, etc. stable across controller replicas, so MagLev/source-hash choices and replicated stick-table server IDs refer to the same backend pod on each controller.Full failover setup
Service annotation example:
Generated HAProxy backend shape:
Topology requirements:
--localpeer-portis reachable between ingress-controller pods. The default is10000.source-ip-persistenceon the Service or globally in the ConfigMap.load-balance: "source"for standard Ingress source-hash behavior, or CRD hash-type settings where an environment needs explicit hash-type control.Validation
Local Go/unit checks:
Local kind checks only:
Additional local two-controller proof in
kind-codex-haproxy-failover:haproxy-controller/haproxy-kubernetes-ingressto 2 replicas.No actual clusters were used for validation; all Kubernetes runtime checks above were against local kind only.
Scope and limitations
References