Skip to content

[Bug] Argo CD notes are incomplete and outdated #1925

@julian-waibel

Description

@julian-waibel

Page link

https://github.com/kyverno/website/blob/main/src/content/docs/docs/installation/platform-notes.md

Description

The Kyverno platform-specific notes for Argo CD page seem incomplete and outdated to me:

  1. Incomplete: It's recommended to set config.preserve=false but the "Complete Application Example" below that text doesn't set this Helm value.

  2. Outdated: The statement "ArgoCD automatically sets the app.kubernetes.io/instance label and uses it to determine which resources form the app." is not true anymore since the release of Argo CD v3 in May 2025: "The default behavior for tracking resources has changed to use annotation-based tracking instead of label-based tracking.". So for newer Argo CD deployments with default config this section is wrong or at least outdated.

  3. Incomplete: The Resource Tracking and Ownership section states "Add appropriate annotations to your Application manifest.". What is meant by "appropriate annotations"? Can this described in more detail or a code example be provided? Is this still necessary for Argo CD v3+ (see point 2 above)?

  4. Wrong/incomplete/conflicting: The Complete Application Example sets the webhookLabels Helm value.

    1. According to the Kyverno Helm chart values.yaml this value is actually nested within config, so in the example the Helm value should probably be renamed from webhookLabels to config.webhookLabels in order to work.
    2. In the example the webhook label app.kubernetes.io/managed-by: argocd is set. While in the Kyverno Helm chart values.yaml the label argocd.argoproj.io/instance: kyverno is used as an example. Should both labels be set? Is the argocd.argoproj.io/instance: kyverno label outdated (see point 2 above)? Why is the app.kubernetes.io/managed-by: argocd label set and what does it do exactly? Which label(s) should be set for Argo CD v3+ (see point 2 above)?
    3. In the "Configuration Best Practices" section above the example it's not explained why this value is set and what it does exactly. Further down on the page it's explained but I think this could be more clear as the first time I browsed the page I was confused.

Expected behavior

The info on the page should be overworked based on my described points.

Slack discussion

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions