ingress-nginx icon indicating copy to clipboard operation
ingress-nginx copied to clipboard

ArgoCD installation results in "Failed to unmarshal "values.yaml": <nil>"

Open avilesj opened this issue 11 months ago • 8 comments

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
  • 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

How to reproduce this issue:

  1. Install ArgoCD
  2. Configure an Application CRD that installs this helm chart with default values.
  3. 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 :) )

avilesj avatar Mar 05 '24 04:03 avilesj

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.

k8s-ci-robot avatar Mar 05 '24 04:03 k8s-ci-robot

/remove-kind bug

Please attempt an install with helm and report status

/triage needs-information

longwuyuan avatar Mar 05 '24 06:03 longwuyuan

Direct helm installation works.

avilesj avatar Mar 05 '24 17:03 avilesj

  • 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

longwuyuan avatar Mar 05 '24 17:03 longwuyuan

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.

github-actions[bot] avatar Apr 05 '24 01:04 github-actions[bot]

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 avatar Apr 15 '24 18:04 D1StrX

@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.

longwuyuan avatar Apr 16 '24 02:04 longwuyuan

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.

D1StrX avatar Apr 16 '24 04:04 D1StrX

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 ##

D1StrX avatar Jul 23 '24 19:07 D1StrX

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

avilesj avatar Sep 12 '24 03:09 avilesj

Same problem with the Prometheus Helm chart 😿 . Probably the single "#" hashtags.

MeesvanStraten avatar Sep 24 '24 14:09 MeesvanStraten