I don't want to fuzzy search the entire chart name including the local repo name I want to explicitly search in a specific repo.
I have private repos:
> helm repo list
NAME URL
dev https://me.jfrog.io/artifactory/helm-dev
prod https://me.jfrog.io/artifactory/helm-prod
How can I do this (this arg does not exist --repo-name=dev):
helm search repo --repo-name=dev --devel -l
Or even this:
helm search repo --repo-url=https://me.jfrog.io/artifactory/helm-dev --devel -l
There's this nugget from Helm v2 --help, which will restrict matches to an exact repo and chart:
To look for charts with a particular name (such as stable/mysql), try
searching using vertical tabs (\v). Vertical tabs are used as the delimiter
between search fields. For example:
helm search --regexp '\vstable/mysql\v'
This still works in Helm v3 (despite not being mentioned in the docs), so in your case substitute in dev/prod as needed:
helm search repo --regexp "\vdev/my-chart\v"
Related
I have added new repository. using the command.
helm repo add --username <username> <reponame> <url>.
I am also able to add the same using the lens file->preferences->Kubernetes->Helm charts-> Add custom Helm repo
Check the image below
Repository added using preferences.
Once done I updated the repository list using command
helm repo update and then I am also able to list the repo using the helm command helm search repo -l
helm search repo -l result snippet
But the same is not showing in the kubernetes IDE Lens
Kubernetes lens charts list.
One this I noticed is the version in the lens chart list doesn't start with any letter but the one that is not shown in the list but in the cli starts with letter "v". I doubt if that could be the cause.
Any help or suggestion will be much appreciated
I'm following Helm's document here to install a package, a.k.a. a helm chart:
$ helm install happy-panda stable/mariadb
It's really convenient to have a ready-to-use package. But in case of a package doesn't belong to stable repo, for example appmesh-grafana then I have to do more than this:
$ helm repo add aws https://aws.github.io/eks-charts
$ helm install aws/appmesh-grafana --version 0.1.0
Therefore, it forces me surf around the internet to find repo url, package name, etc. I don't want to do it every single time!
Is there any way to specify the repo and chart to install using Chart.yaml? I prefer Chart.yaml than shell script.
The short answer is no, if a chart is not in the official repo, then you always need to add the repository first before installing the chart.
However, starting from the Helm 3, you can look for the chart directly in the Helm Hub. In your case, if you wanted to find appmesh-grafana, you can execute the following command.
$ helm search hub appmesh-grafana
URL CHART VERSION APP VERSION DESCRIPTION
https://hub.helm.sh/charts/aws/appmesh-grafana 0.1.0 6.4.3 App Mesh Grafana Helm chart for Kubernetes
But then, yes, you need to open the link, find the address, and anyway execute $ helm repo add aws https://aws.github.io/eks-charts.
When searching in my Helm repository there are no pre-releases listed in the search results
helm search repo
NAME CHART VERSION APP VERSION DESCRIPTION
nexus/my-app 0.1.0 1.0.0 A Helm chart for Kubernetes
In the Nexus I can see several other versions (like 0.1.0-test123) and also the index.yaml of the repository shows other versions of my-app.
By default helm search does not list pre-releases as mentioned by a Helm commiter in this Github issue.
Pre-release versions are hidden by default.
Using the --devel option will include pre-release version in the search results.
E.g.
helm search repo --devel
I have an existing github project. I want to create/add a helm folder to the project to store the helm yaml files. I want to reference this github project/folder to act like a helm repo in my local/dev environment. I know I can add the charts to my local/default helm repo. The use case is if another developer checks out the code in github and he needs to work on the charts then he can run helm install directly from the working folder. The helm.sh website has instructions of adding a gh-pages branch but I am wondering if I can avoid it.
Can I use an existing github project and it via the helm repo add command?
Unfortunately, I wasn't able to find a way to publish helm charts via GitHub using private repositories. On a theoretical level, it might work using GitHub token and 2nd (raw URLs method), but I haven't tried it. Since you're using docker registry anyway, it might be worth trying using OCI (docker) registry to store the charts.
If that doesn't work, or you have public repos, it is possible to either use GitHub Pages, or use GitHub raw URLs. Both of the solutions require public repository.
To use GitHub pages:
Setup github pages to publish docs folder as github pages (you can use a different name, just substitue later)
Package the helm repo as .tgz (using helm package): helm package charts/mychart -d docs/. Substitute charts/mychart with a path to a chart root folder
Include an index.yaml -- an index file for the repository helm repo index ./docs --url https://<YOUR_ORG_OR_USERNAME>.github.io/<REPO_NAME>
Now you can add the repo: helm repo add <INTERNAL_NAME> https://<YOUR_ORG_OR_USERNAME>.github.io/<REPO_NAME>
To use Raw URLs:
Place index.yaml and chart TGZs into a folder called docs, just like above
Now you can add a repo: helm repo add <INTERNAL_NAME> https://raw.githubusercontent.com/<YOUR_ORG_OR_USERNAME>/<REPO_NAME>/<BRANCH_USUALLY_MASTER>/docs
Firstly make sure that you have have fully functional helm repository. The tricky part is to access it as if it was simple HTTP server hosting raw files. Fortunately Github provides such feature using raw.githubusercontent.com. In order for helm to be able to pull files from such repository you need to provide it with Github username and token (Personal Access Token):
> helm repo add - username <your_github_username> - password <your_github_token> my-github-helm-repo 'https://raw.githubusercontent.com/my_organization/my-github-helm-repo/master/'
> helm repo update
> helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
my-github-helmrepo https://raw.githubusercontent.com/my_organization/my-github-helm-repo/master/
> helm search my-app
NAME CHART VERSION APP VERSION DESCRIPTION
my-github-helmrepo/my-app-chart 0.1.0 1.0 A Helm chart for Kubernetes
These are steps for adding new packages to existing repository
If you want to add new package to existing repository simply:
1. Place new package in your local repository root
2. Execute: helm repo index .. This will detect new file/folder and make updates.
3. Commit and push your new package
4. Finally execute command: helm repo update
Security ascpect
It is important to realize where does helm actually store your Github token. It is stored as plain text in ~/.helm/repository/repositories.yaml. In this case it will be good to generate token with as few permissions as possible.
Take a look here: hosting helm private repository.
I have a private helm repo using apache, after migrating to helm3 I cannot install/search charts anymore.
Using helm v3
helm repo list
NAME URL
mas http://localhost:8080/charts/
helm search repo mas/devops-openshift
No results found
Using helm 2.*
helm search -r mas/devops-openshift
NAME CHART VERSION APP VERSION DESCRIPTION
mas/devops-openshift 7.0.0 Devops (OpenShift)
Same happens when using "helm install" command, it cannot find the charts.
I guess it could be something related to the helm repo index file. Maybe helmv3 is expecting a different structure? But same happen when generating index file from helmv3.
Thanks all for the answers but I've found the issue.
My repository were using development version of the charts so I had something like this 1.0.0-pre.dev (Semantic Versioning 2.0.0).
By default helm 3 does not look at non production charts.
You have to set the flag -devel. something like:
helm search repo mas/devops-openshift --devel
While migrating from helm 2 to helm 3 remove private repo and add it after migration, then run helm repo update to refresh repository file.
If the chart is available locally, run helm repo index <DIR> --url <your_repo_url> to create new index.yaml for this repository.
Running helm env will show you the directory where the repository.yamlis located so check if the file is generated correctly.