ingress-nginx
ingress-nginx copied to clipboard
ArgoCD installation results in "Failed to unmarshal "values.yaml": <nil>"
What happened:
Installation through ArgoCD results in Failed to unmarshal "values.yaml": <nil>
while using the default values file.
What you expected to happen: Helm chart should be installed through ArgoCD using the default values successfully.
NGINX Ingress controller version (exec into the pod and run nginx-ingress-controller --version.):
Kubernetes version (use kubectl version
): (chart version) 4.10.0
v1.28.4
Environment:
-
Cloud provider or hardware configuration:
-
OS (e.g. from /etc/os-release): n/a
-
Kernel (e.g.
uname -a
): n/a -
Install tools:
-
k0s
-
-
Basic cluster related info:
-
kubectl version
-
kubectl get nodes -o wide
-
-
How was the ingress-nginx-controller installed:
- If helm was used then please show output of
helm ls -A | grep -i ingress
- If helm was used then please show output of
helm -n <ingresscontrollernamespace> get values <helmreleasename>
- If helm was not used, then copy/paste the complete precise command used to install the controller, along with the flags and options used
- if you have more than one instance of the ingress-nginx-controller installed in the same cluster, please provide details for all the instances
- If helm was used then please show output of
-
Current State of the controller:
-
kubectl describe ingressclasses
-
kubectl -n <ingresscontrollernamespace> get all -A -o wide
-
kubectl -n <ingresscontrollernamespace> describe po <ingresscontrollerpodname>
-
kubectl -n <ingresscontrollernamespace> describe svc <ingresscontrollerservicename>
-
-
Current state of ingress object, if applicable:
-
kubectl -n <appnamespace> get all,ing -o wide
-
kubectl -n <appnamespace> describe ing <ingressname>
- If applicable, then, your complete and exact curl/grpcurl command (redacted if required) and the reponse to the curl/grpcurl command with the -v flag
-
-
Others:
- Any other related information like ;
- copy/paste of the snippet (if applicable)
-
kubectl describe ...
of any custom configmap(s) created and in use - Any other related information that may help
- Any other related information like ;
How to reproduce this issue:
- Install ArgoCD
- Configure an
Application
CRD that installs this helm chart with default values. - Application should display the error "Failed to unmarshal "values.yaml":
" and not sync.
Anything else we need to know: This is in my homelab. I use the app of apps pattern to install everything and everything works so far. I am migrating from Traefik to NGINX through this helm chart and found this error with the default values files.
I had seen something like this before with a prometheus helm chart where the values files had some portions that kind of looked like a kubernetes manifest, which made the parser blow up. That one was easier to catch and work out but I am not sure what's going on with this helm chart. (Or me, of course :) )
This issue is currently awaiting triage.
If Ingress contributors determines this is a relevant issue, they will accept it by applying the triage/accepted
label and provide further guidance.
The triage/accepted
label can be added by org members by writing /triage accepted
in a comment.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
/remove-kind bug
Please attempt an install with helm and report status
/triage needs-information
Direct helm installation works.
- ok thanks for that update
- that means we need data on what is wrong with the controller or the values file and its integration with ArgoCD
- the project ci does not test installation with ArgoCD.
- there are many users who deployed with ArgoCD so wait and see if a change in chart v4.10 is causing this for others too
This is stale, but we won't close it automatically, just bare in mind the maintainers may be busy with other tasks and will reach your issue ASAP. If you have any question or request to prioritize this, please reach #ingress-nginx-dev
on Kubernetes Slack.
Minio tenant of the Minio Operator is also a perfect example of a Helm values.yaml that Argocd cannot parse. The issue in this one are all the 'exotic' tokens (e.g: `__ and ###) https://github.com/minio/operator/blob/master/helm/tenant/values.yaml
@D1StrX thanks for the update.
With this info, I guess we can be certain that the problem is parsing.
The project maintains the chart for helm usage and no problem is detected on helm usage.
Since the fields containing tokens or extraArgs
or raw yaml
work with helm and seem to break when ArgoCD parses it, I think its better to approach the ArgoCD developers for comments. I don't think there are resources available on this project to test and debug ArgoCD integration for parsers/parsing values file content.
Minio tenant of the Minio Operator is also a perfect example of a Helm values.yaml that Argocd cannot parse. The issue in this one are all the 'exotic' tokens (e.g: `__ and ###) https://github.com/minio/operator/blob/master/helm/tenant/values.yaml
Was able to narrow it down to the KES config part in the Minio tenant values.yaml. So, my suggestion would be; Try stripping down the values.yaml for your nginx Helm deployment and then push it to Git to let ArgoCD apply the changes.
I also tried the apps-of-apps pattern for the Kubernetes-nginx controllers, and I'm not experiencing any issues at all. I'm using the default values.yaml file with basic value changes in the default keys.
Funny thing with argo-cd
helm chart, this also says Failed to unmarshal
when deploying ArgoCD with ArgoCD.
When testing/narrowing down this issue:
It's due a line or lines that has a single # .
Not due ##
or # @default
lines in my tests. I first removed # @default
lines and next ##
Update.
I tried the helm chart version 4.11.2, removed all the comments in the values file and it works now :)
Thanks for the hints @D1StrX
Same problem with the Prometheus Helm chart 😿 . Probably the single "#" hashtags.