I have several ArgoCD applications deployed as third party helm charts, using custom values. These are specified either as vaulesObject or valueFiles in the application definition. As an example, I'll paste the relatively simple cert-manager app.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cert-manager
namespace: argocd
spec:
destination:
namespace: cert-manager
server: https://kubernetes.default.svc
project: governance
source:
chart: cert-manager
repoURL: https://charts.jetstack.io
targetRevision: 1.16.3
helm:
valuesObject:
nodeSelector:
role: governance
crds:
enabled: true
prometheus:
enabled: true
servicemonitor:
enabled: true
syncPolicy:
automated:
prune: true
Applying this manifest, I get a Sync Error on the ArgoCD UI.
Failed sync attempt to 1.16.3: one or more synchronization tasks are not valid (retried 5 times).
I am aware of this issue, in which it is suggested to quote any boolean values. This doesn't work for this cert-manager chart, giving another error:
application spec for cert-manager is invalid: InvalidSpecError: Unable to generate manifests in : rpc error: code = Unknown desc = failed to execute helm template command: failed to get command args to log: `helm template . --name-template cert-manager --namespace cert-manager --kube-version 1.31 --values /tmp/30a203c7-c52e-44f3-b7c9-b8fa3dcd0cdf <api versions removed> --include-crds` failed exit status 1: Error: values don't meet the specifications of the schema(s) in the following chart(s): cert-manager: - crds.enabled: Invalid type. Expected: boolean, given: string - prometheus.enabled: Invalid type. Expected: boolean, given: string - prometheus.servicemonitor.enabled: Invalid type. Expected: boolean, given: string
Basically complaining that these should be booleans, not strings. Other charts don't have this problem, but fail to work with strings also, giving the same original error as above.
Has anyone found a solution to this?