When we set up a new Argo application using Helm, we can provide parameters to get passed as Helm values (which is implemented by using the --set Helm flag). If we provide a parameter with a number or boolean value, then Helm will preserve these types (event though we provide them as strings). However, if we actually want the value to be interpreted as a string, there is no way to do this with Argo.
Helm has a solution to this issue, which is the --set-string flag. This flag will force the value to be interpreted as a string. Argo's HelmParameter interface should be augmented to support this semantic.
I see two ways to update Argo's interface to support this. One is to add a boolean field to HelmParameter called forceString (or something). This would default to false, and when true, we would pass the value to Helm using --set-string.
Alternatively, we can allow more types than "string" as a HelmParameter's value. If it's a string, use the --set-string flag. Otherwise, use the --set flag. I think this is a more user-friendly implementation (it's what one would expect when writing yaml), but it is a breaking change.
I think you can achieve this using argocd app patch ?
I remember a discussion about the same issue. Unfortunately argocd app patch won't help since we need some way to tell to helm that parameter is a string, not number/boolean. Same problem exist for ksonnet
we'd need to change this code:
good one for community contribution, existing code examples and known pattern
I'd be happy to give this a go, as long as I can find the time for it!
Since the PR that fixed this issue was merged almost 3 weeks ago, can this issue be closed?
Most helpful comment
I'd be happy to give this a go, as long as I can find the time for it!