I've created a tier ranking for each ArgoCD setting.
#SRGThe Service Reliability Group primarily provides comprehensive support for the infrastructure surrounding our media services, focusing on improving existing services, launching new ones, and contributing to open-source software (OSS).
This time, we've taken a deep dive into ArgoCD settings and created a tier ranking based on the importance and usefulness of each setting. If you're already using ArgoCD or are considering using it, please refer to this article and consider which ArgoCD settings you should enable.
Why Tier Ranking?Tier Ranking ListTier 1: Should be left as default.Tier 2: Always usefulTier 3: Useful depending on the situationTier 4: Not very importantTier 5: Nobody Needs ItIn conclusion
Why Tier Ranking?
ArgoCD is a very powerful GitOps tool, but it also has a lot of configuration options. Which settings are really important?Which ones are limited to specific use cases?It's important to determine whether a setting is rarely used or not.
This ranking is based on the Lightning Talks at KubeCon NA 2024.Ranking Argo CD Settings in a Tier List - Gerald Nunn, Red HatThis article is based on the content of the presentation and the opinions of the attendees (including myself). Because the Lightning Talk was only half-contained due to time constraints, I hope this article can serve to supplement that content.
Tier Ranking List
I've recreated the Tier List Maker presentation I gave in Lightning Talk, in Japanese.

Tier 1: Should be left as default.
Resource TrackingOutOfSyncPersist Health in RedisThis setting saves the application's status information to Redis. This is another important setting that should be used by default.
5~10% In most cases, you won't need to manage application status information with any tool other than ArgoCD, so enabling this setting is generally considered appropriate.
v3.0You can change the Persist Health in Redis setting using the following method.
Self HealSyncOptionExternalSecretWhile this type of resource duplication management may not occur very often, enabling this setting allows you to detect and prevent problems early.
Tier 2: Always useful
IgnoreDifferencesThis setting ignores differences in specific fields of a resource. It is particularly useful when other controllers modify the resource.
IgnoreDifferencesIgnoreResourceUpdatesThis setting ignores updates to the resource's status field.
argocd-application-controllerFor example, you can ignore the following fields:
.metadata.ownerReferences
.status.refreshTime
IgnoreResourceUpdate ServerSideApply
SyncOptionServerSideApplyClientSideApplyServerSideDiff
ServerSideApplyTier 3: Useful depending on the situation
Resource TrackingWhile I'd like to make this setting "unnecessary," realistically it should be classified as Tier 3, meaning it's "useful in certain situations."
Aggregated ClusterRoleSelectiveSyncHowever, the following precautions are necessary.
- Since synchronization is not recorded in the history, rollback is not possible.
Resource Hooks
CreateNamespace--reorder noneui.bannerThis setting allows you to display custom banners on the UI. This is useful for displaying important information or warnings to ArgoCD users.
This setting is very useful if you have many ArgoCD users.
v2.8argocd-application-controllerThe CNOE blog concludes that this algorithm offers the best performance. However, in past tuning experiments with ArgoCD conducted on Ameba, this algorithm did not yield the expected results.
If you're interested in more details or results from other cases, please refer to the related blog.
SyncOptionkubectl delete/createReplace
kubectl replace/createSkipDryRun
CustomResourceEventLabelKeys
.metadata.labelsAutoRespectRBAC
argocd-application-controllerArgoCD can automatically stop monitoring unauthorized resources, allowing for dynamic adjustment of resource discovery/synchronization scope. Depending on your organization's security regulations, this setting may be useful.
Resource Exclusions Inclusions
AutoRespectRBACTier 4: Not very important
Resource CustomLabelsThese are custom labels used for resource management and identification.
In the Lightning Talk, the presenter stated that they had never used this feature themselves, and that it "allows for the identification of resources owned by each team." Upon investigating this setting, the documentation only contained the following single line:
Custom Labels configured with resource.customLabels (comma separated string) will be displayed in the UI (for any resource that defines them).
getCluster()Because its actual use is unclear, it was classified as Tier 3 in the Lightning Talk, but I think it should be classified as Tier 4.
Tier 5: Nobody Needs It
Resource Tracking(Label)
Resource Tracking (Annotation) While many projects at our company still use the label system, it was unanimously decided at the Lightning Talk venue that this setting should be classified as the only Tier 5 category. Therefore, I also classified it as Tier 5.
In conclusion
We have now looked at each of the ArgoCD settings in detail. These tiers are based on typical usage scenarios, but their actual importance may vary depending on the requirements of your organization and project. We hope this article has been helpful to you.
SRG is looking for new team members.
If you are interested, please contact us here.
