Skip to content

v2.11 to 2.12

Server-Side Apply Management of ApplicationSet Fields

Summary

If you are using server-side apply with multiple field managers to manage a single selector or labelSelector field in an ApplicationSet, that field management must be changed to be atomic starting with 2.12.

Details

Argo CD 2.12 upgraded its controller-gen version from 0.4.1 to 0.14.0. As part of that change, several ApplicationSet CRD fields now have x-kubernetes-map-type: atomic.

Each of the affected fields is a label selector with two child keys: matchLabels and matchExpressions.

Prior to this change, two field managers could manage the matchLabels and matchExpressions fields independently. Starting with the 2.12 CRD, a single field manager must manage both of those fields. This behavior is in line with the upstream behavior of the label selector struct.

See the Kubernetes server-side apply merge strategy docs for more information about the fields' behavior.

The affected ApplicationSet fields are the following (jq selector syntax):

  • .spec.generators[].selector
  • .spec.generators[].cluster.selector
  • .spec.generators[].clusterDecisionResource.labelSelector
  • .spec.generators[].matrix.generators[].selector
  • .spec.generators[].merge.generators[].selector