Argo-cd: Helm parameters should allow maps

Created on 13 Jul 2020  路  2Comments  路  Source: argoproj/argo-cd

Summary

Helm parameters should allow for map values instead of just strings

Motivation

Trying to configure annotations for ingress https://github.com/goharbor/harbor-helm/blob/master/values.yaml#L37-L40
Using application spec https://argoproj.github.io/argo-cd/operator-manual/declarative-setup/

May need to use values.yaml. In which case, the ability to have secrets referenced in parameters would also be nice

Proposal

Unknown but adjustments may be needed to CRD at the least.



Message from the maintainers:

If you wish to see this enhancement implemented please add a 馃憤 reaction to this issue! We often sort issues this way to know what to prioritize.

Most helpful comment

+1 On this one..

Currently the HELM charts look like this when u try to provision your own values.

Current declaration looks like this:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: awesome-app
spec:
  destination:
    namespace: awesome-namespace
    server: 'https://kubernetes.default.svc'
  project: 'awesome-project'
  source:
    path: ''
    repoURL: 'awesome_helm_repo'
    targetRevision: 0.1.0
    chart: helm-guestbook
    helm:
      values: | # Everything treated as a string :(
        replicaCount: 1
        image:
          repository: awesome-image
          tag: dev-67ce5bf
        env:
          - name: INJECTED_VAR_1
            value: VALUE
          - name: INJECTED_VAR_2
            value: VALUE
          - name: INJECTED_VAR_3
            value: VALUE
        route:
          host: ""
          enabled: true

Proposal would be to allow the mapping values too:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: awesome-app
spec:
  destination:
    namespace: awesome-namespace
    server: 'https://kubernetes.default.svc'
  project: 'awesome-project'
  source:
    path: ''
    repoURL: 'awesome_helm_repo'
    targetRevision: 0.1.0
    chart: helm-guestbook
    helm:
      values: # Let YAML do it's syntax validation :)
        replicaCount: 1
        image:
          repository: awesome-image
          tag: dev-67ce5bf
        env:
          - name: INJECTED_VAR_1
            value: VALUE
          - name: INJECTED_VAR_2
            value: VALUE
          - name: INJECTED_VAR_3
            value: VALUE
        route:
          host: ""
          enabled: true

Adding to what @sfxworks said, this looks the same but it makes it easier:

  • for your IDE to help where it can
  • you can use Kustomize to make a patch on one of the values

We can see similar design in the HelmRelease CRD used in the Helm-Operator (Flux).

All 2 comments

I think this is an Argo CD issue, not an Argo Workflows issue?

+1 On this one..

Currently the HELM charts look like this when u try to provision your own values.

Current declaration looks like this:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: awesome-app
spec:
  destination:
    namespace: awesome-namespace
    server: 'https://kubernetes.default.svc'
  project: 'awesome-project'
  source:
    path: ''
    repoURL: 'awesome_helm_repo'
    targetRevision: 0.1.0
    chart: helm-guestbook
    helm:
      values: | # Everything treated as a string :(
        replicaCount: 1
        image:
          repository: awesome-image
          tag: dev-67ce5bf
        env:
          - name: INJECTED_VAR_1
            value: VALUE
          - name: INJECTED_VAR_2
            value: VALUE
          - name: INJECTED_VAR_3
            value: VALUE
        route:
          host: ""
          enabled: true

Proposal would be to allow the mapping values too:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: awesome-app
spec:
  destination:
    namespace: awesome-namespace
    server: 'https://kubernetes.default.svc'
  project: 'awesome-project'
  source:
    path: ''
    repoURL: 'awesome_helm_repo'
    targetRevision: 0.1.0
    chart: helm-guestbook
    helm:
      values: # Let YAML do it's syntax validation :)
        replicaCount: 1
        image:
          repository: awesome-image
          tag: dev-67ce5bf
        env:
          - name: INJECTED_VAR_1
            value: VALUE
          - name: INJECTED_VAR_2
            value: VALUE
          - name: INJECTED_VAR_3
            value: VALUE
        route:
          host: ""
          enabled: true

Adding to what @sfxworks said, this looks the same but it makes it easier:

  • for your IDE to help where it can
  • you can use Kustomize to make a patch on one of the values

We can see similar design in the HelmRelease CRD used in the Helm-Operator (Flux).

Was this page helpful?
0 / 5 - 0 ratings