You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bug: Charts with long CRD annotations cannot be easily installed #7065
This is a recurring bug that I've encountered many times with different charts. Whenever there's a CRD with a long textual annotation, installing a helm chart fails with something like this message:
The CustomResourceDefinition '<CRD.NAME>' is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
Right now I ran into this trying to install the cloudnative-pg chart. The usual workaround is to set the syncOption to server-side on ArgoCD (the documentation even mentions this known issue directly), or manually apply the CRDs myself. I'm not sure if this is possible to do through one of the devtron configured CMs for argo, but it's a quite frustrating problem that I've encountered more than once. Doing manual actions to overcome it feel brittle, it's unreliable and shouldn't be required, I much rather manage my applications through devtron itself.
Maybe this is a "feature" technically, but because it's a limitation that prevents normal operations and usage of devtron as is, I see it as a bug and would very much appreciate it if there'd be some kind of simple toggle when installing a helm chart from devtron that allows you to set "server-side" option to true. Thank you
By default, argo applies manifests in the same way as kubectl apply. It writes an kubectl.kubernetes.io/last-applied-configuration annotation to the object containing a full copy of the manifest. For large CRDs, this copy exceeds the limit.
I recommend reading the argo and kubernetes documentation first and foremost.
The solution, according to the argo cd documentation, is Server-Side Apply. With this approach, last-applied-configuration is not written to the log, so the limit does not cause any issues. There are two ways to enable it:
For the entire argo application: spec.syncPolicy.syncOptions: [ServerSideApply=true]. In Devtron, this setting cannot be configured via the UI for Chart Store applications, so I apply the annotation directly to the cdrs themselves.
@krama I know it's a limitation of kubernetes, yes, but when deploying charts through the devtron chart store I can't just set the metadata annotation the way you suggest. Sometimes I can, if the maintainers of the chart provide the option through their values.yaml, but that's not always the case. I can manually do it myself, but I want to manage our charts from the Devtron dashbaord. That's what I'm asking for, give us the option to set the sync options for these cases.
I know this is technically a "feature" ask and not a bug, but it's not some additional functinoality that is a benefit. I currently cannot manage and maintain some charts from devtron because of this limitation, and it's not very difficult as far as features go. Please consider it. Thank you
Activity
krama commentedon Oct 19, 2026
@yuvii this is not a bug, but a limitation of Kubernetes, the total size of an object’s metadata.annotations must not exceed 262,144 bytes (256 KiB). This explains your the error message: ‘Too long: may not be more than 262,144 bytes’.
By default, argo applies manifests in the same way as kubectl apply. It writes an kubectl.kubernetes.io/last-applied-configuration annotation to the object containing a full copy of the manifest. For large CRDs, this copy exceeds the limit.
I recommend reading the argo and kubernetes documentation first and foremost.
In fact, you have several "workaround" options
The solution, according to the argo cd documentation, is Server-Side Apply. With this approach, last-applied-configuration is not written to the log, so the limit does not cause any issues. There are two ways to enable it:
metadata: annotations: argocd.argoproj.io/sync-options: ServerSideApply=trueFor the entire argo application: spec.syncPolicy.syncOptions: [ServerSideApply=true]. In Devtron, this setting cannot be configured via the UI for Chart Store applications, so I apply the annotation directly to the cdrs themselves.
yuvii commentedon Oct 20, 2026
@krama I know it's a limitation of kubernetes, yes, but when deploying charts through the devtron chart store I can't just set the metadata annotation the way you suggest. Sometimes I can, if the maintainers of the chart provide the option through their values.yaml, but that's not always the case. I can manually do it myself, but I want to manage our charts from the Devtron dashbaord. That's what I'm asking for, give us the option to set the sync options for these cases.
I know this is technically a "feature" ask and not a bug, but it's not some additional functinoality that is a benefit. I currently cannot manage and maintain some charts from devtron because of this limitation, and it's not very difficult as far as features go. Please consider it. Thank you