High Availability Deployment
For production environments, it is recommended to deploy the Connectors system in a high availability (HA) configuration to ensure service continuity and fault tolerance.
The whole Connectors install is driven by a single ConnectorsConfig resource (see the Installation Guide). To run components in HA, edit that same ConnectorsConfig and set per-component workload settings under spec.components.<name>.spec.workloads.
Key Steps Overview
Configuring HA on ConnectorsConfig involves three steps:
- Set replicas ≥ 2 — Specify
replicasfor each managed component's workloads throughspec.components.<name>.spec.workloads[]. At minimum, configurecore(api, controller-manager, proxy) and any plugin components you use. - Rely on built-in anti-affinity — The operator automatically adds
preferredDuringSchedulingIgnoredDuringExecutionpod anti-affinity rules so replicas are spread across nodes with no extra configuration required. - Customize affinity for multi-zone clusters (optional) — Override
spec.components.<name>.spec.workloads[].template.spec.affinityto enforce zone-level distribution usingrequiredDuringSchedulingIgnoredDuringExecutionif needed.
More details on each step are provided below.
Configuring Replicas
Increase the number of replicas for each component's workloads to achieve high availability. For production environments, we recommend configuring at least 2 replicas for each workload to ensure service continuity during node failures or rolling updates.
The components that ship Deployment workloads, and the workload names you address from ConnectorsConfig, are:
The other connector components do not have Deployment workloads and therefore do not require replica configuration. The connectors-csi DaemonSet that core also manages runs one pod per node and is not part of this list.
The following ConnectorsConfig sets HA replicas for every Deployment workload in one place:
After a period of time, each configured workload scales to 2 replicas:
Built-in Pod Anti-Affinity
The system includes built-in pod anti-affinity rules to ensure that replicas are distributed across different nodes. By default, the system uses preferredDuringSchedulingIgnoredDuringExecution with a weight of 100, which means the scheduler will try to place pods on different nodes when possible, but will still schedule them on the same node if no other options are available.
This default configuration ensures:
- Pods are spread across different nodes when possible
- Deployment remains schedulable even if the cluster has limited nodes
- Automatic failover capability when a node becomes unavailable
Customizing Affinity Rules
If the default affinity rules do not meet your requirements, you can override them through the workloads configuration on ConnectorsConfig. The template.spec.affinity field allows you to specify custom affinity rules.
For multi-zone clusters, you can configure zone-aware scheduling to spread pods across availability zones. The following example uses requiredDuringSchedulingIgnoredDuringExecution to enforce zone-level distribution, combined with preferredDuringSchedulingIgnoredDuringExecution to prefer node-level distribution within each zone:
This configuration ensures:
- Pods are strictly distributed across different availability zones (hard requirement)
- Within the same zone, pods are preferably scheduled on different nodes (soft requirement)
- Provides resilience against both zone-level and node-level failures