DevOps / ArgoCD interview questions
What is server-side apply in ArgoCD and why might you enable it?
Server-side apply (SSA) is a Kubernetes API feature (GA since Kubernetes 1.22) where the API server — rather than the client — merges resource updates and tracks field ownership via managed fields. ArgoCD can use SSA instead of its default client-side apply (kubectl apply) by setting the ServerSideApply=true sync option.
With the default client-side apply, ArgoCD computes the three-way merge on the client using the last-applied-configuration annotation. This can cause conflicts when multiple tools (e.g., ArgoCD and a Helm operator) modify the same resource, or when large resources exceed the annotation size limit (generally ~256KB).
Benefits of enabling SSA in ArgoCD:
- Field ownership tracking: The API server knows which field manager last set each field, enabling clean conflict detection and resolution without the last-applied annotation hack.
- No annotation size limits: Large resources (e.g., CRDs with huge schemas, ConfigMaps with large data) no longer hit the 256KB annotation ceiling.
- Better multi-manager coexistence: ArgoCD can own some fields while another controller owns others, without either overwriting the other's fields on each apply.
- CRD-friendly: Works better with CRDs that have complex structural schemas.
syncOptions: - ServerSideApply=true
The trade-off: SSA errors are sometimes harder to interpret than client-side apply errors, and not all Kubernetes versions or configurations handle all edge cases identically. It is worth enabling for complex resources or when you hit annotation size limits.
More Related questions...