Argo-cd: Application CRD validation errors hard to diagnose from UI/CLI

Created on 18 May 2019  路  5Comments  路  Source: argoproj/argo-cd

Describe the bug
Onboarding a new service today, ran into a couple issues where problems with the Application CRD resulted in odd state in the CLI/UI and no errors propagated up from the application controller.

Ran into this in a couple ways:

  • the application CRD referenced a project that didn't exist
  • the application CRD referenced a Helm values file that didn't exist
  • the targetRevision in the CRD referenced a branch that existed, but the HEAD of that branch didn't have the expected folder in it.

In each of these circumstance, the UI displays the Application, but no error or status:

Screen Shot 2019-05-17 at 3 30 03 PM

the CLI shows empty status/health columns:

dev-scheduleservice                  https://kubernetes.default.svc  dev           dev                                   Auto-Prune  <none>

No 'status' object was added to the CRD, which led me to look in the application controller's logs (examples below)

To Reproduce
Steps to reproduce the behavior:

  1. create a new application CRD , introduce a typo to the project reference or had reference to helm values file that doesn't exist.

Expected behavior
Errors listed in the synchronization results that show the problems in UI -- and error/unknown status for the CRD. I _know_ I made the mistake with a missing/typo'd helm-values-file before and saw the error in the 0.12 UI

Screenshots
If applicable, add screenshots to help explain your problem.

Version

argocd version
argocd: v1.0.0+c74ca22
  BuildDate: 2019-05-16T20:04:43Z
  GitCommit: c74ca22023cbee245cb83fb23224978fbe23703c
  GitTreeState: clean
  GoVersion: go1.11.4
  Compiler: gc
  Platform: darwin/amd64
argocd-server: v1.0.0+c74ca22
  BuildDate: 2019-05-16T20:04:21Z
  GitCommit: c74ca22023cbee245cb83fb23224978fbe23703c
  GitTreeState: clean
  GoVersion: go1.11.4
  Compiler: gc
  Platform: linux/amd64
  Ksonnet Version: 0.13.1

Logs
log from invalid project:

argocd-application-controller-55967fb844-785rl argocd-application-controller time="2019-05-17T21:30:28Z" level=warning msg="Error updating application: Application.argoproj.io \"test-scheduleservice\" is invalid: []: Invalid value: map[string]interface {}{\"metadata\":map[string]interface {}{\"creationTimestamp\":\"2019-05-17T21:28:38Z\", \"labels\":map[string]interface {}{\"app.kubernetes.io/instance\":\"test-apps\"}, \"annotations\":map[string]interface {}{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"argoproj.io/v1alpha1\\\",\\\"kind\\\":\\\"Application\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"labels\\\":{\\\"app.kubernetes.io/instance\\\":\\\"test-apps\\\"},\\\"name\\\":\\\"test-scheduleservice\\\",\\\"namespace\\\":\\\"argocd\\\"},\\\"spec\\\":{\\\"destination\\\":{\\\"namespace\\\":\\\"test\\\",\\\"server\\\":\\\"https://REDACTED\\\"},\\\"ignoreDifferences\\\":[{\\\"group\\\":\\\"apps\\\",\\\"jsonPointers\\\":[\\\"/spec/replicas\\\"],\\\"kind\\\":\\\"Deployment\\\"}],\\\"project\\\":\\\"test-trading\\\",\\\"source\\\":{\\\"helm\\\":{\\\"valueFiles\\\":[\\\"test-values.yaml\\\"]},\\\"path\\\":\\\"scheduleservice\\\",\\\"repoURL\\\":\\\"https://gitlab.com/REDACTED/cd-scheduleservice.git\\\",\\\"targetRevision\\\":\\\"HEAD\\\"},\\\"syncPolicy\\\":{\\\"automated\\\":{\\\"prune\\\":true}}}}\\n\"}, \"name\":\"test-scheduleservice\", \"namespace\":\"argocd\", \"uid\":\"bbd02c5c-78ea-11e9-b117-42010a130089\", \"resourceVersion\":\"22796360\", \"generation\":1}, \"spec\":map[string]interface {}{\"destination\":map[string]interface {}{\"namespace\":\"test\", \"server\":\"https://REDACTED\"}, \"ignoreDifferences\":[]interface {}{map[string]interface {}{\"jsonPointers\":[]interface {}{\"/spec/replicas\"}, \"kind\":\"Deployment\", \"group\":\"apps\"}}, \"project\":\"test-trading\", \"source\":map[string]interface {}{\"helm\":map[string]interface {}{\"valueFiles\":[]interface {}{\"test-values.yaml\"}}, \"path\":\"scheduleservice\", \"repoURL\":\"https://gitlab.com/REDACTED/cd-scheduleservice.git\", \"targetRevision\":\"HEAD\"}, \"syncPolicy\":map[string]interface {}{\"automated\":map[string]interface {}{\"prune\":true}}}, \"status\":map[string]interface {}{\"sync\":map[string]interface {}{\"status\":\"Unknown\"}, \"conditions\":[]interface {}{map[string]interface {}{\"message\":\"Application referencing project test-trading which does not exist\", \"type\":\"InvalidSpecError\"}}, \"health\":map[string]interface {}{\"status\":\"Unknown\"}}, \"apiVersion\":\"argoproj.io/v1alpha1\", \"kind\":\"Application\"}: validation failure list:\nstatus.sync.comparedTo in body is required\nstatus.sync.revision in body is required" application=test-scheduleservice

log from missing chart at targetRevision

argocd-application-controller-55967fb844-785rl argocd-application-controller time="2019-05-17T21:54:29Z" level=warning msg="Error updating application: Application.argoproj.io \"staging-scheduleservice\" is invalid: []: Invalid value: map[string]interface {}{\"apiVersion\":\"argoproj.io/v1alpha1\", \"kind\":\"Application\", \"metadata\":map[string]interface {}{\"name\":\"staging-scheduleservice\", \"namespace\":\"argocd\", \"uid\":\"c696d734-78ed-11e9-b1a9-42010a13008a\", \"resourceVersion\":\"22803070\", \"generation\":1, \"creationTimestamp\":\"2019-05-17T21:50:24Z\", \"labels\":map[string]interface {}{\"app.kubernetes.io/instance\":\"staging-apps\"}, \"annotations\":map[string]interface {}{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"argoproj.io/v1alpha1\\\",\\\"kind\\\":\\\"Application\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"labels\\\":{\\\"app.kubernetes.io/instance\\\":\\\"staging-apps\\\"},\\\"name\\\":\\\"staging-scheduleservice\\\",\\\"namespace\\\":\\\"argocd\\\"},\\\"spec\\\":{\\\"destination\\\":{\\\"namespace\\\":\\\"staging\\\",\\\"server\\\":\\\"https://IPREDACTED\\\"},\\\"ignoreDifferences\\\":[{\\\"group\\\":\\\"apps\\\",\\\"jsonPointers\\\":[\\\"/spec/replicas\\\"],\\\"kind\\\":\\\"Deployment\\\"}],\\\"project\\\":\\\"staging-trading\\\",\\\"source\\\":{\\\"helm\\\":{\\\"valueFiles\\\":[\\\"staging-values.yaml\\\"]},\\\"path\\\":\\\"scheduleservice\\\",\\\"repoURL\\\":\\\"https://gitlab.com/REDACTEDREPO/cd-scheduleservice.git\\\",\\\"targetRevision\\\":\\\"staging\\\"},\\\"syncPolicy\\\":{\\\"automated\\\":{\\\"prune\\\":true}}}}\\n\"}}, \"spec\":map[string]interface {}{\"destination\":map[string]interface {}{\"namespace\":\"staging\", \"server\":\"https://IPREDACTED\"}, \"ignoreDifferences\":[]interface {}{map[string]interface {}{\"group\":\"apps\", \"jsonPointers\":[]interface {}{\"/spec/replicas\"}, \"kind\":\"Deployment\"}}, \"project\":\"staging-trading\", \"source\":map[string]interface {}{\"helm\":map[string]interface {}{\"valueFiles\":[]interface {}{\"staging-values.yaml\"}}, \"path\":\"scheduleservice\", \"repoURL\":\"https://gitlab.com/REDACTEDREPO/cd-scheduleservice.git\", \"targetRevision\":\"staging\"}, \"syncPolicy\":map[string]interface {}{\"automated\":map[string]interface {}{\"prune\":true}}}, \"status\":map[string]interface {}{\"sync\":map[string]interface {}{\"status\":\"Unknown\", \"comparedTo\":map[string]interface {}{\"destination\":map[string]interface {}{\"namespace\":\"staging\", \"server\":\"https://IPREDACTED\"}, \"source\":map[string]interface {}{\"helm\":map[string]interface {}{\"valueFiles\":[]interface {}{\"staging-values.yaml\"}}, \"path\":\"scheduleservice\", \"repoURL\":\"https://gitlab.com/REDACTEDREPO/cd-scheduleservice.git\", \"targetRevision\":\"staging\"}}}, \"conditions\":[]interface {}{map[string]interface {}{\"message\":\"rpc error: code = Unknown desc = chdir /tmp/https:__gitlab.com_tzero-git_REDACTED_REPOcd-scheduleservice/scheduleservice: no such file or directory\", \"type\":\"ComparisonError\"}}, \"health\":map[string]interface {}{\"status\":\"Healthy\"}, \"observedAt\":\"2019-05-17T21:54:28Z\", \"reconciledAt\":\"2019-05-17T21:54:28Z\"}}: validation failure list:\nstatus.sync.revision in body is required" application=staging-scheduleservice
bug

Most helpful comment

App Panel

app-panel

Invalid Path Within Repo

invalid-path

Invalid Project

invalid-project

Invalid Repo URL

invalid-repo-url

All 5 comments

We've similar issues where apps with bad app manifests don't display errors in the UI. @jessesuen I think we should try and address this.

App Panel

app-panel

Invalid Path Within Repo

invalid-path

Invalid Project

invalid-project

Invalid Repo URL

invalid-repo-url

鈽濓笍 @stevesea - thoughts?

Looks good!

Fixed in v1.2

Was this page helpful?
0 / 5 - 0 ratings

Related issues

duboisf picture duboisf  路  3Comments

clintberry picture clintberry  路  3Comments

peterbosalliandercom picture peterbosalliandercom  路  3Comments

haf picture haf  路  3Comments

jessesuen picture jessesuen  路  3Comments