Issue with release dependencies with `needs` and multiple files
kpawlik-splunk opened this issue · 14 comments
Operating system
MacOS 13.6.1
Helmfile Version
v0.158.1
Helm Version
v3.13.2
Bug description
helmfile
fails to find release dependencies when using multiple files, using attached sample files:
$ helmfile -f helmfile-all.yaml list
NAME NAMESPACE ENABLED INSTALLED LABELS CHART VERSION
release-1 default true true ingress-nginx/ingress-nginx 4.8.1
release-2 default true true ingress-nginx/ingress-nginx 4.8.1
$ helmfile -f helmfile-all.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile1003781602/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile1003781602/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Linting release=release-2, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile1003781602/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile1003781602/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
But when the release-1
is moved to a separate file:
$ helmfile -f helmfile-split.yaml list
NAME NAMESPACE ENABLED INSTALLED LABELS CHART VERSION
release-1 default true true ingress-nginx/ingress-nginx 4.8.1
release-2 default true true ingress-nginx/ingress-nginx 4.8.1
$ helmfile -f helmfile-split.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile1196831173/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile1196831173/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Fetching ingress-nginx/ingress-nginx
in ./helmfile-split.yaml: release(s) "default/release-2" depend(s) on an undefined release "default/release-1". Perhaps you made a typo in "needs" or forgot defining a release named "release-1" with appropriate "namespace" and "kubeContext"?
Example helmfile.yaml
helmfile-all.yaml
:
repositories:
- name: ingress-nginx
url: https://kubernetes.github.io/ingress-nginx
releases:
- chart: ingress-nginx/ingress-nginx
version: 4.8.1
name: release-1
namespace: default
- chart: ingress-nginx/ingress-nginx
version: 4.8.1
name: release-2
namespace: default
needs:
- release-1
helmfile-split.yaml
:
repositories:
- name: ingress-nginx
url: https://kubernetes.github.io/ingress-nginx
helmfiles:
- helmfile-release-1.yaml
releases:
- chart: ingress-nginx/ingress-nginx
version: 4.8.1
name: release-2
namespace: default
needs:
- release-1
helmfile-release-1.yaml
:
repositories:
- name: ingress-nginx
url: https://kubernetes.github.io/ingress-nginx
releases:
- chart: ingress-nginx/ingress-nginx
version: 4.8.1
name: release-1
namespace: default
Error message you've seen (if any)
in ./helmfile-split.yaml: release(s) "default/release-2" depend(s) on an undefined release "default/release-1". Perhaps you made a typo in "needs" or forgot defining a release named "release-1" with appropriate "namespace" and "kubeContext"?
Steps to reproduce
Given in the issue description, but basically helmfile -f helmfile-split.yaml lint
.
Working Helmfile Version
(none)
Relevant discussion
No response
Still occurring with:
$ helmfile version
▓▓▓ helmfile
Version v0.159.0
Git Commit "brew"
Build Date 24 Nov 23 01:42 CET (3 days ago)
Commit Date 24 Nov 23 01:42 CET (3 days ago)
Dirty Build no
Go version 1.21.4
Compiler gc
Platform darwin/amd64
$ helmfile -f helmfile-all.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile3746902576/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile3746902576/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Linting release=release-2, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile3746902576/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile3746902576/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
$ helmfile -f helmfile-split.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile1230466951/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile1230466951/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Fetching ingress-nginx/ingress-nginx
in ./helmfile-split.yaml: release(s) "default/release-2" depend(s) on an undefined release "default/release-1". Perhaps you made a typo in "needs" or forgot defining a release named "release-1" with appropriate "namespace" and "kubeContext"?
@kpawlik-splunk thanks for your issue.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
/remove wontfix
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Tested with latest version and this is still the case:
$ helmfile version
▓▓▓ helmfile
Version v0.160.0
Git Commit "brew"
Build Date 22 Dec 23 22:36 CET (1 week ago)
Commit Date 22 Dec 23 22:36 CET (1 week ago)
Dirty Build no
Go version 1.21.5
Compiler gc
Platform darwin/amd64
$ helmfile -f helmfile-all.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile779621146/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile779621146/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Linting release=release-2, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile779621146/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile779621146/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
$ helmfile -f helmfile-split.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile3910696982/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile3910696982/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Fetching ingress-nginx/ingress-nginx
in ./helmfile-split.yaml: release(s) "default/release-2" depend(s) on an undefined release "default/release-1". Perhaps you made a typo in "needs" or forgot defining a release named "release-1" with appropriate "namespace" and "kubeContext"?
I have the same problem, using version v0.160.0. Using helmfiles:
to include multiple releases it looks like need is not able to find the other releases.
Also an issue if using --selector
. Even if the selected releases have no needs
, the needs
in an unselected release still causes it to fail with the:
release(s) "default/release-2" depend(s) on an undefined release "default/release-1". Perhaps you made a typo in "needs" or forgot defining a release named "release-1" with appropriate "namespace" and "kubeContext"?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Tested with latest version:
$ helmfile version
▓▓▓ helmfile
Version v0.161.0
Git Commit "brew"
Build Date 24 Jan 24 02:01 CET (2 weeks ago)
Commit Date 24 Jan 24 02:01 CET (2 weeks ago)
Dirty Build no
Go version 1.21.6
Compiler gc
Platform darwin/amd64
$ helmfile -f helmfile-all.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile2024464535/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile2024464535/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Linting release=release-2, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile2024464535/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile2024464535/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
$ helmfile -f helmfile-split.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile180109289/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile180109289/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Fetching ingress-nginx/ingress-nginx
in ./helmfile-split.yaml: release(s) "default/release-2" depend(s) on an undefined release "default/release-1". Perhaps you made a typo in "needs" or forgot defining a release named "release-1" with appropriate "namespace" and "kubeContext"?
Someone know how fix this issue ?
(preventing wontfix
label from being added)
$ helmfile version
▓▓▓ helmfile
Version v0.162.0
Git Commit "brew"
Build Date 18 Feb 24 05:10 CET (1 week ago)
Commit Date 18 Feb 24 05:10 CET (1 week ago)
Dirty Build no
Go version 1.22.0
Compiler gc
Platform darwin/amd64
$ helmfile -f helmfile-all.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile4086749705/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile4086749705/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Linting release=release-2, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile4086749705/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile4086749705/default/release-2/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
$ helmfile -f helmfile-split.yaml lint
Adding repo ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
Fetching ingress-nginx/ingress-nginx
Linting release=release-1, chart=/var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile555423063/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
==> Linting /var/folders/rh/z33gzdts36bb722jk1wmwdwr0000gn/T/helmfile555423063/default/release-1/ingress-nginx/ingress-nginx/4.8.1/ingress-nginx
1 chart(s) linted, 0 chart(s) failed
Fetching ingress-nginx/ingress-nginx
in ./helmfile-split.yaml: release(s) "default/release-2" depend(s) on an undefined release "default/release-1". Perhaps you made a typo in "needs" or forgot defining a release named "release-1" with appropriate "namespace" and "kubeContext"?