Skip to content

[fix-issue-9027] Doesn't handle dict override to null #12441

@JordanGoasdoue

Description

@JordanGoasdoue

Output of helm version:

version.BuildInfo{Version:"v3.13.0", GitCommit:"825e86f6a7a38cef1112bfa606e4127a706749b1", GitTreeState:"clean", GoVersion:"go1.20.8"}

Output of kubectl version:

Client Version: v1.24.13
Kustomize Version: v4.5.4
Server Version: v1.24.13

Cloud Provider/Platform (AKS, GKE, Minikube etc.): GKE / On Premise

###########################################
###########################################

I am testing the the fix of the issue-9027
It seems it only works with simple key but not dict override:

let say I have a chart called subchart with these values

strategy:
  rollingUpdate:
    maxSurge: 25%
    maxUnavailable: 10%
  type: RollingUpdate

In one of my other chart, I want to use this subchart as a dependency, but I want to have a Recreate strategy instead of the RollingUpdate one:

so I'm doing this:

subchart:
  strategy:
    rollingUpdate: null
    type: Recreate

But then I can't render the helm template because of this error

coalesce.go:286: warning: cannot overwrite table with non table for xxx.subchart.strategy.rollingUpdate (map[maxSurge:25% maxUnavailable:10%])

What I can only do is the following by overriding my dict children as null:

subchart:
  strategy:
    rollingUpdate:
      maxSurge: null
      maxUnavailable: null
    type: Recreate

This is not what I want because this way I will render this

spec:
  strategy:
    rollingUpdate: {}
    type: Recreate

Which will give me this error after applying to a kubernetes cluster:

spec.strategy.rollingUpdate: Forbidden: may not be specified when strategy `type` is 'Recreate'

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions