Skip to content

Build1 publisher2 min readPublished

Server-side apply moves ArgoCD's diff into the Kubernetes API server

ArgoCD now hands diff calculation to the API server and accepts OCI registries as first-class sources. The same write-up still calls Git the sole source of truth, so teams pulling charts from Harbor have to decide which system records intent.

The Engineer · Build desk

Illustration accompanying Server-side apply moves ArgoCD's diff into the Kubernetes API server

What happened

  • A dev.to overview of the 2026 releases says ArgoCD v3 treats OCI registries including Harbor, ECR and Artifactory as first-class sources, pulling Helm charts and raw manifests straight from the registry.
  • Version 3.3, released early in 2026, added PreDelete hooks so a job can run before a resource is deleted, for example to take a database backup or deregister an IP from an external load balancer.
  • Version 3.4, from May 2026, can pause reconciliation for an entire cluster from the CLI or the UI, giving SREs room to hotfix with kubectl before the fix is committed.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • contradiction The overview calls Git the sole source of truth and in the same pages makes registry artifacts first-class inputs, so a shop pulling charts from Harbor has to pick which of the two its release and rollback procedures trust.
  • cost The label enforcement turns the 3.4 upgrade into an audit of every generator block, and the platform team pays that in review time before it sees any of the new features.
  • exposure A paused cluster stops drift correction for every application on it, so the pause needs a time limit and someone watching the clock.
  • decision Sizing the Application Controller down on the 40 percent claim is a bet on someone else's high-density cluster, and the merge work it removes lands on the API server, so both sides need capacity planning.

Under the v3 defaults, diff calculation moves out of the Application Controller and into the Kubernetes API server, which also arbitrates which controller owns which field [3][5]. A dev.to overview of the 2026 releases puts the saving at up to 40 percent of Application Controller memory in high-density environments [4]. For that figure to transfer, your controller's memory has to be going on cached live state and computed diffs in the first place, and your API server needs headroom to absorb the merge work. The overview stops at the controller-side drop and says nothing about API server load [16].

The same overview places first-class OCI registry support in the v3 architecture work, next to server-side apply, and lists the 3.3 and 3.4 features separately [2][7][10]. In practice "first-class" means an Application's source can be a registry such as Harbor, ECR or Artifactory, with Helm charts or raw manifests pulled from there. The overview describes that as converging application code and infrastructure configuration into a single immutable artifact [2].

It also writes that "Git becomes the sole source of truth" [6]. If the manifests reaching a cluster come out of a registry, the commit holds a reference and the registry holds the content, and someone has to write down which of the two the release process treats as authoritative.

Cluster-level pause is the 3.4 feature I would upgrade for. Before it, an SRE fixing production with kubectl had the change detected as drift, and ArgoCD synced the old configuration back from Git [11]. Reverting the hotfix was the controller behaving as configured. Now `argocd cluster pause production-cluster` stops reconciliation for a whole cluster from the CLI or the UI [10]. Every application on that cluster stops being corrected [10]. Plan for that.

Cluster version labels are strictly enforced as vMajor.Minor.Patch, ApplicationSets whose generators use another format will fail after the move to 3.4, and the overview calls a review of every `.spec.generators` mandatory [13]. That review gets expensive at scale. In the overview's own example, one ApplicationSet covering 50 microservices across 3 regions replaces 150 Application manifests [14], so one generator that trips the label check takes 150 applications with it [17].

Two smaller 3.3 items change Repo Server sizing. Depth=1 cloning loads only the current commit, where the Repo Server previously pulled the repository's entire history [8]. OIDC tokens are renewed in the background while a user is active, for Keycloak, Okta or Dex [9]. Teams notifications now go through Workflow Adaptive Cards, replacing the discontinued Office 365 connectors [12].

What to watch

  • Whether the ApplicationSet UI ships stable in v3.5 in summer 2026, as the overview expects, or stays in beta.
  • Whether ArgoCD's own release notes confirm the 40 percent Application Controller figure, and whether they measure API server load under SSA.
  • Whether ArgoCD spells out which one wins when an Application names both a Git ref and an OCI artifact.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories