Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with release dependencies with needs and multiple files #1165

Open
ghost opened this issue Nov 23, 2023 · 14 comments
Open

Issue with release dependencies with needs and multiple files #1165

ghost opened this issue Nov 23, 2023 · 14 comments

Comments

@ghost
Copy link

ghost commented Nov 23, 2023

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

@ghost
Copy link
Author

ghost commented Nov 27, 2023

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"?

@yxxhero
Copy link
Member

yxxhero commented Nov 27, 2023

@kpawlik-splunk thanks for your issue.

Copy link

stale bot commented Dec 12, 2023

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.

@stale stale bot added the wontfix This will not be worked on label Dec 12, 2023
@ghost
Copy link
Author

ghost commented Dec 12, 2023

/remove wontfix

@stale stale bot removed the wontfix This will not be worked on label Dec 12, 2023
Copy link

stale bot commented Dec 26, 2023

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.

@stale stale bot added the wontfix This will not be worked on label Dec 26, 2023
@yxxhero yxxhero removed the wontfix This will not be worked on label Dec 27, 2023
@ghost
Copy link
Author

ghost commented Jan 3, 2024

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"?

@jer0enA
Copy link

jer0enA commented Jan 4, 2024

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.

@austince
Copy link

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"?

Copy link

stale bot commented Jan 26, 2024

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.

@stale stale bot added the wontfix This will not be worked on label Jan 26, 2024
@stale stale bot closed this as completed Feb 3, 2024
@yxxhero yxxhero reopened this Feb 3, 2024
@stale stale bot removed the wontfix This will not be worked on label Feb 3, 2024
@ghost
Copy link
Author

ghost commented Feb 7, 2024

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"?

@fafarun
Copy link

fafarun commented Feb 15, 2024

Someone know how fix this issue ?

@ghost
Copy link
Author

ghost commented Feb 26, 2024

(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"?

@yxxhero
Copy link
Member

yxxhero commented Feb 26, 2024

@fafarun I am so busy recently. PR is welcome. thanks so much.

@yxxhero
Copy link
Member

yxxhero commented Feb 26, 2024

@fafarun I'll try to work on this. but maybe in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants