Open mrtndwrd opened 5 years ago
@mrtndwrd Hey!
First of, do you set HELM_HOME
to a custom location yourself, or just leaving it unset when running helmfile
?
Also - I may be confused but would you mind removing the @
within your repo name in requirements.yaml
? Wondering if it makes any difference.
Lastly, it might not be your case, but when you encounter https://github.com/aslafy-z/helm-git/issues/16 try adding a sparse=0
query to the repo url.
helm seems to empty HELM_HOME when calling a helm plugin, but that's the problem other plugins should be affected as well. That's why I'm doubting @
in the repo name is considered as an actual part of the chart name, which doesn't exist in your repo list.
Hey @mumoshu thanks for the help! It's much appreciated :)
First of, do you set HELM_HOME to a custom location yourself, or just leaving it unset when running helmfile?
I didn't, but I'll try it now to set it and see if that changes behaviour.
...
Nope. Seems like you're right: if I override HELM_HOME
helm will empty it.
Also - I may be confused but would you mind removing the @ within your repo name in requirements.yaml? Wondering if it makes any difference.
If I remove the @
from the repo name in the requirements.yaml
it doesn't work anymore in the normal way:
$ helm repo add onlyoffice-documentserver git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora
"onlyoffice-documentserver" has been added to your repositories
$ cd nextcloud/nextcloud-onlyoffice
$ helm dep update
Error: no repository definition for onlyoffice-documentserver. Please add them via 'helm repo add'
Note that repositories must be URLs or aliases. For example, to refer to the stable
repository, use "https://kubernetes-charts.storage.googleapis.com/" or "@stable" instead of
"stable". Don't forget to add the repo, too ('helm repo add').
I can, however, add the repo as a URL instead of an alias:
- name: onlyoffice-documentserver
version: 0.1.0
repository: "git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora"
But now when I try to install, I get this:
err: helm exited with status 1:
Error: no repository definition for git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora. Please add them via 'helm repo add'
Error in plugin 'helm-git': Error while helm_dependency_update
Error: Looks like "git+https://code.greenhost.net/openappstack/nextcloud@nextcloud-onlyoffice?ref=4-use-onlyoffice-instead-of-collabora" is not a valid chart repository or cannot be reached: plugin "helm-git" exited with error
changing working directory back to "/root"
in /oas/source/repos/helmfiles/helmfile.d/20-nextcloud.yaml: helm exited with status 1:
Error: no repository definition for git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora. Please add them via 'helm repo add'
Error in plugin 'helm-git': Error while helm_dependency_update
Error: Looks like "git+https://code.greenhost.net/openappstack/nextcloud@nextcloud-onlyoffice?ref=4-use-onlyoffice-instead-of-collabora" is not a valid chart repository or cannot be reached: plugin "helm-git" exited with error
So basically the same error, because however you specify the repo, you still need to have it listed when you run helm repo list
, but with HELM_HOME
overridden for plugin execution that doesn't work. For completeness, when I run helm repo list
normally, I get this result:
$ helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
jetstack https://charts.jetstack.io
onlyoffice-documentserver git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora
Lastly, it might not be your case, but when you encounter aslafy-z/helm-git#16 try adding a sparse=0 query to the repo url.
I tried that, but it doesn't make a difference:
...
err: release "oas-test-files" in "20-nextcloud.yaml" failed: failed processing release oas-test-files: helm exited with status 1:
Error: no repository definition for @onlyoffice-documentserver. Please add them via 'helm repo add'
Error in plugin 'helm-git': Error while helm_dependency_update
Error: plugin "helm-git" exited with error
Error: plugin "diff" exited with error
changing working directory back to "/root"
in /oas/source/repos/helmfiles/helmfile.d/20-nextcloud.yaml: failed processing release oas-test-files: helm exited with status 1:
Error: no repository definition for @onlyoffice-documentserver. Please add them via 'helm repo add'
Error in plugin 'helm-git': Error while helm_dependency_update
Error: plugin "helm-git" exited with error
Error: plugin "diff" exited with error
$ helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
jetstack https://charts.jetstack.io
onlyoffice-documentserver git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora&sparse=0
nextcloud-onlyoffice git+https://code.greenhost.net/openappstack/nextcloud@nextcloud-onlyoffice?ref=4-use-onlyoffice-instead-of-collabora
helm seems to empty HELM_HOME when calling a helm plugin
As far as I can tell it seems to not empty it but set it to whatever is in settings.Home
, but I don't really understand why that doesn't default to /root/.helm
in my case :thinking:
Hi @mrtndwrd! Thanks for reporting, I'm unable to test now as it seems your git server is blocked at my workplace. Gonna try to debug when I'm back home. I added a Troubleshooting section in the helm-git
repo, feel free to have a try.
Thanks @mumoshu for your input!
I started to think if you've incorrect a repository url. A repository URL must point to the parent directory of the charts, not the chart directory itself.
This is not correct:
git+https://code.greenhost.net/openappstack/nextcloud@nextcloud-onlyoffice?ref=4-use-onlyoffice-instead-of-collabora
But this is:
git+https://code.greenhost.net/openappstack/nextcloud?ref=4-use-onlyoffice-instead-of-collabora
Now see your helmfile.yaml and if you still have the incorrect URL under repositories
, try something like:
repositories:
- name: nextcloud
url: git+https://code.greenhost.net/openappstack/nextcloud?ref=4-use-onlyoffice-instead-of-collabora
releases:
- name: nextcloud-onlyoffice
chart: nextcloud/nextcloud-onlyoffice
I can't access it via git+https as I have no read permission to it, but worth trying!
@mumoshu Sadly, helm-git
still needs a path section within the repo URL, even if it's empty (see https://github.com/aslafy-z/helm-git/issues/15). So it would become:
git+https://code.greenhost.net/openappstack/nextcloud@?ref=4-use-onlyoffice-instead-of-collabora
but from what I've seen (cached google page of https://code.greenhost.net/openappstack/nextcloud), the chart is in a nextcloud subfolder (according to the google cached page), it's also possible to use:
git+https://code.greenhost.net/openappstack/nextcloud@nextcloud?ref=4-use-onlyoffice-instead-of-collabora
I understand the URL syntax could be misleading, sorry for that. It can still be discussed, I'd be pleased to have your feedback!
Thanks for your support @aslafy-z!
From what I see he's using this branch https://code.greenhost.net/openappstack/nextcloud/tree/4-use-onlyoffice-instead-of-collabora for testing, and nextcloud
seems like the repository name, where there are two charts(=directories) in it:
So I bet your first suggestion git+https://code.greenhost.net/openappstack/nextcloud@?ref=4-use-onlyoffice-instead-of-collabora
works.
Now hoping either of the two options works :) Thansk again for your help.
Oh so do you mean that it would work in both cases, @nextcloud
and @
?
Thanks for all your quick replies! That's spot on, @mumoshu
Now when I try to use that URL for the repo, I run into a chicken-and-egg problem...
I updated my requirements.yaml
to this:
dependencies:
- name: nextcloud
version: 1.1.1
repository: "@stable"
tags:
- nextcloud
- name: onlyoffice-documentserver
version: 0.1.0
repository: "@nextcloud"
tags:
- onlyoffice
- nextcloud
Because the onlyoffice-documentserver
chart would now be in the same repo as the nextcloud-onlyoffice
chart, correct?
So then I try to add the repo as follows:
$ helm repo add nextcloud git+https://code.greenhost.net/openappstack/nextcloud@?ref=4-use-onlyoffice-instead-of-collabora
But I get this error:
Error: no repository definition for @nextcloud. Please add them via 'helm repo add'
Error in plugin 'helm-git': Error while helm_dependency_update
Error: Looks like "git+https://code.greenhost.net/openappstack/nextcloud@?ref=4-use-onlyoffice-instead-of-collabora" is not a valid chart repository or cannot be reached: plugin "helm-git" exited with error
Oh so do you mean that it would work in both cases,
@nextcloud
and@
?
No it shouldn't with @nextcloud
, I was referring to the wrong branch (master, where there is a nextcloud folder). It could have worked with only @
but yeah, chicken and egg problem as one chart refer to the other :(
You can try that:
helm repo add nextcloud-onlyoffice git+https://code.greenhost.net/openappstack/nextcloud@nextcloud-onlyoffice?ref=4-use-onlyoffice-instead-of-collabora
helm repo add @nextcloud git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora
And then install this release: nextcloud-onlyoffice/nextcloud-onlyoffice
(is this what you already tried?)You could also try to set repository
key from your dep to git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora
instead
Thanks @aslafy-z Yes that was my starting position. And when I run helm repo add
like you suggest and then run helm dep update
for nextcloud-onlyoffice
it works. But when I have these repos as described in my first post and I run helmfile apply
, it doesn't...
You could also try to set repository key from your dep to git+https://code.greenhost.net/openappstack/nextcloud@onlyoffice-documentserver?ref=4-use-onlyoffice-instead-of-collabora instead
I tried that too in this post: https://github.com/roboll/helmfile/issues/726#issuecomment-506245134
As far as I can tell it seems to not empty it but set it to whatever is in settings.Home, but I don't really understand why that doesn't default to /root/.helm in my case
Yeah that's interesting. I see no suspicious code that can result in the empty value, at least in the recent helm code-base.
On helm dependency build
, settings
are parsed from flags:
https://github.com/helm/helm/blob/b0b0accdfc84e154b3d48ec334cd5b4f9b345667/cmd/helm/dependency_build.go#L78
HELM_HOME
is derived from the settings.Home
:
https://github.com/helm/helm/blob/7cad59091a9451b2aa4f95aa882ea27e6b195f98/pkg/plugin/plugin.go#L182
And the whole envvars should be inherited to the plugin command, in this case helm-git
in:
https://github.com/helm/helm/blob/7cad59091a9451b2aa4f95aa882ea27e6b195f98/pkg/getter/plugingetter.go#L67-L68
🤔
@mrtndwrd Do you see anything suspicious when you run helm home --debug
?
For my it's like this - where the first line is settings.Home
:
$ helm home --debug
/Users/myuesr/.helm
Repository: /Users/myuesr/.helm/repository
RepositoryFile: /Users/myuesr/.helm/repository/repositories.yaml
Cache: /Users/myuesr/.helm/repository/cache
Stable CacheIndex: /Users/myuesr/.helm/repository/cache/stable-index.yaml
Starters: /Users/myuesr/.helm/starters
LocalRepository: /Users/myuesr/.helm/repository/local
Plugins: /Users/myuesr/.helm/plugins
Not really...
# helm home --debug
/root/.helm
Repository: /root/.helm/repository
RepositoryFile: /root/.helm/repository/repositories.yaml
Cache: /root/.helm/repository/cache
Stable CacheIndex: /root/.helm/repository/cache/stable-index.yaml
Starters: /root/.helm/starters
LocalRepository: /root/.helm/repository/local
Plugins: /root/.helm/plugins
Actually we have the same issue when using both helm-diff and helm-git plugins... Very annoying as for us git references are simply unusable right now... Any workaround for that?
was there a resolution to this?
Workaround
sed -i 's| \-\-skip\-refresh||g' "$(helm env HELM_PLUGINS)/helm-git/helm-git-plugin.sh"
More info https://github.com/aslafy-z/helm-git/pull/155
// upd
Dont do this! Fork bomb!
helm dep up
calls recursively helm dep up
for each helm repos and every time helm calls helm-git plugin where plugin calls helm dep up
- and here we gotcha infinity loop.
This should now be fixed with https://github.com/aslafy-z/helm-git/releases/tag/v0.11.2. Thank you @metajiji for your work on this issue. Can you have a look @mrtndwrd?
Sorry, I can't confirm whether this solves the original issue because we've since moved to hosting our charts on Helm repositories and we've also replaced helmfile with flux2/helm-controller.
The charts and branches from this issue's description are also gone, so it would be quite a lot of work to bring them back.
Congrats on solving it!
7 Jun 2022 13:42:07 Zadkiel Aharonian @.***>:
This should now be fixed with https://github.com/aslafy-z/helm-git/releases/tag/v0.11.2. Thank you @metajiji[https://github.com/metajiji] for your work on this issue. Can you have a look @mrtndwrd[https://github.com/mrtndwrd]?
— Reply to this email directly, view it on GitHub[https://github.com/roboll/helmfile/issues/726#issuecomment-1148553013], or unsubscribe[https://github.com/notifications/unsubscribe-auth/AAGLJUZ43AJDTNTCIAGPAG3VN4YQZANCNFSM4H3RWLLA]. You are receiving this because you were mentioned.[Tracking image][https://github.com/notifications/beacon/AAGLJUYUIRIEU5ATXZFRWPTVN4YQZA5CNFSM4H3RWLLKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOIR2YONI.gif]
I have written two helm charts. The first helm chart lists the second helm chart in the
requirements.yaml
file. I don't have a helm repository, so I usehelm-git
to download and install these charts. This means that I have a "repository" listing for each of the charts.When I run
helmfile install
, I run into trouble whenhelm diff
tries to download the first chart:I understand that this is all very vague, but I wanted to give a short summary of the problem before I went into specifics.
I am talking about the two charts in this repository and branch:
https://code.greenhost.net/openappstack/nextcloud/tree/4-use-onlyoffice-instead-of-collabora
(in time of writing HEAD is at this commit)
The nextcloud-onlyoffice chart includes a job that installs an integration of NextCloud and OnlyOffice, so it's
requirements.yaml
file lists:The first dependency is no problem, because it uses the
@stable
repository, but the second (a link to theonlyoffice-documentserver
chart in the same git repository) needs you to have that helm repository available.In the non-
helmfile
scenario, a user would runTo add that repository. In this case, however, we want to use
helmfile
. So we have this second repository with our helmfile configuration:https://code.greenhost.net/openappstack/helmfiles/tree/7077c08573bac6b87601d6e1d7b8abd7e16ffae3
Here, in
helmfile.d/20-nextcloud.yaml
, we have listed the two repositories we need:But when we run the following command:
Helmfile exits with this error:
I have done some debugging, and it turns out that at some point
helm-git
is run with the following environment variables set:Now I'm not sure where this is going wrong, because I'm not sure if these environment variables are set by
helm-diff
or byhelmfile
, but the problem is thatHELM_HOME
is set to an empty string, which results inhelm-git
using a temporary home directory instead of the user's normal helm home, which is the reason why it can not find the@onlyoffice-documentserver
repository definition.So I'm aware that this might be a problem in one of the plugins, but I'm not experienced enough with the whole toolset to find the exact cause of this problem on my own. Since
helmfile
supports usinghelm-git
I thought I'd start here, and I'll open an issue with either plugin if we figure out that they're the culprit.Any help would be appreciated!