argo-cd: Helm Capabilities built-in object is not supported by repository server

Capabilities built-in helm object contains information about capabilities which target K8s cluster supports. Argo CD uses helm template to generate chart manifests without specifying the target cluster version. As a result Capabilities field is always empty and charts which depend on it cannot work properly.

The helm template is going to get --api-version flag in https://github.com/helm/helm/pull/5392 . Argo CD should leverage --api-version flag as soon as PR is merged.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 18 (8 by maintainers)

Most upvoted comments

PR https://github.com/argoproj/argo-cd/pull/3243 adds --api-versions flag support to both helm2 and helm3

This should be in 1.4

I see that feature is coming after ArgoCD v1.5 which introduces Helm 3 support. The thing is, Helm 3 template command is not on-par with Helm 2 template, it’s missing the --kube-version parameter. So we’re back to square one on this, there is a bunch of Charts in stable (65 as of today) that relies on Capabilities.KubeVersion.GitVersion object:

cluster-autoscaler
cluster-overprovisioner
cockroachdb
concourse
consul
datadog
dokuwiki
drone
drupal
elasticsearch-curator
eventrouter
external-dns
fluent-bit
ghost
hackmd
jasperreports
joomla
kibana
kube-slack
kube2iam
kuberhealthy
kubewatch
kured
lamp
magento
mariadb
mediawiki
mercure
metabase
minio
moodle
mssql-linux
nats
nfs-client-provisioner
nginx-ingress
node-problem-detector
odoo
opencart
orangehrm
osclass
owncloud
pgadmin
phabricator
phpbb
postgresql
prestashop
prometheus
prometheus-blackbox-exporter
prometheus-cloudwatch-exporter
prometheus-operator
prometheus-pushgateway
redis
redmine
rocketchat
sealed-secrets
selenium
seq
spark
spotify-docker-gc
suitecrm
testlink
traefik
weave-cloud
weave-scope
wordpress

Is this still planned for 1.4(.x?)? Lots of resources got deprecated in k8s 1.16 and helm charts that rely on .Capabilities.APIVersions.Has do not work as expected.

You’re right and there are big boys in that list (prometheus*, grafana, nginx-ingress, fluentbit…). For now, the only workaround I found is to fork the Helm Charts and remove the Capabilities checks to make it run using ArgoCD. Can’t wait to drop these forks though…

Helm2 is still supported. ArgoCD is using Helm3 binary only if chart has apiVersion: v2.

FYI, https://github.com/helm/helm/pull/5392 has been merged! Using --kube-version and now --api-version, ArgoCD has all required information to process correctly Helm Charts that leverages Capabilities Object.

@jessesuen I think we have two issues here. One for --kube-version and one for --api-version. The latter depends on a Helm upstream fix. I’ll create a new issue.