Add design document for the HAProxy control plane

Why is this change being made?

Adds a design document for the HAProxy control plane: desired server state in Consul KV, applied on every GitLab.com load balancer through HAProxy's agent-check, replacing the per-node TCP admin socket that ChatOps, set-server-state, and ha-ctl used to drive.

The work is done (production-engineering#29645), so this is written after the fact from the proposal and the record on that issue. The proposal is kept as written, with Outcome notes where the implementation departed from it (per-row plus group KV keys, no gradual undrain, rollout by backend instead of by node, ha-ctl removed rather than converted, the HAProxy state-file agent-port bug). Modeled on the Runner Managers on Kubernetes document so the two infrastructure design docs read the same way.

Author and Reviewer Checklist

Please verify the check list and ensure to tick them off before the MR is merged.

  • Provided a concise title for this Merge Request (MR)
  • Added a description to this MR explaining the reasons for the proposed change, per say why, not just what
    • Copy/paste the Slack conversation to document it for later, or upload screenshots. Verify that no confidential data is added, and the content is SAFE
  • Assign reviewers for this MR to the correct
    • The when to get approval handbook section explains when DRI approval is required
    • The who can approve handbook section explains how to identify the DRI
    • If the MR does not require DRI approval, consider asking someone on your team, such as your manager.
    • The approver may merge the MR. If they approve but don't merge, you can merge.
  • For transparency, share this MR with the audience that will be impacted.
    • Team: For changes that affect your direct team, share in your group Slack channel
    • Department: If the update affects your department, share the MR in your department Slack channel
    • Division: If the update affects your division, share the MR in your division Slack channel
    • Company: If the update affects all (or the majority of) GitLab team members, post an update in #whats-happening-at-gitlab linking to this MR

Merge request reports

Loading
Loading