Code Monkey home page Code Monkey logo

community's Introduction

Helm

Build Status Go Report Card GoDoc CII Best Practices

Helm is a tool for managing Charts. Charts are packages of pre-configured Kubernetes resources.

Use Helm to:

  • Find and use popular software packaged as Helm Charts to run in Kubernetes
  • Share your own applications as Helm Charts
  • Create reproducible builds of your Kubernetes applications
  • Intelligently manage your Kubernetes manifest files
  • Manage releases of Helm packages

Helm in a Handbasket

Helm is a tool that streamlines installing and managing Kubernetes applications. Think of it like apt/yum/homebrew for Kubernetes.

  • Helm renders your templates and communicates with the Kubernetes API
  • Helm runs on your laptop, CI/CD, or wherever you want it to run.
  • Charts are Helm packages that contain at least two things:
    • A description of the package (Chart.yaml)
    • One or more templates, which contain Kubernetes manifest files
  • Charts can be stored on disk, or fetched from remote chart repositories (like Debian or RedHat packages)

Install

Binary downloads of the Helm client can be found on the Releases page.

Unpack the helm binary and add it to your PATH and you are good to go!

If you want to use a package manager:

  • Homebrew users can use brew install helm.
  • Chocolatey users can use choco install kubernetes-helm.
  • Scoop users can use scoop install helm.
  • Snapcraft users can use snap install helm --classic

To rapidly get Helm up and running, start with the Quick Start Guide.

See the installation guide for more options, including installing pre-releases.

Docs

Get started with the Quick Start guide or plunge into the complete documentation

Roadmap

The Helm roadmap uses GitHub milestones to track the progress of the project.

Community, discussion, contribution, and support

You can reach the Helm community and developers via the following channels:

Contribution

If you're interested in contributing, please refer to the Contributing Guide before submitting a pull request.

Code of conduct

Participation in the Helm community is governed by the Code of Conduct.

community's People

Contributors

adamkorcz avatar adamreese avatar bridgetkromhout avatar budde377 avatar c0d1ngm0nk3y avatar caniszczyk avatar flynnduism avatar gtseres avatar henrynash avatar hickeyma avatar idvoretskyi avatar jdolitsky avatar karenhchu avatar lucasreed avatar maorfr avatar marckhouzam avatar mattfarina avatar narasux avatar panicstevenson avatar phil9909 avatar prydonius avatar radu-matei avatar runyontr avatar sabre1041 avatar scottrigby avatar seants avatar stuartpb avatar sudermanjr avatar technosophos avatar zheng1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

community's Issues

Are documents here up-to-date?

I am trying to learn more about Helm internals and am reading this document. But I see some differences from what I see in practice with latest Helm:

  • There seems to be only helm.sh/release.v1 objects in secrets, I cannot find release object anywhere. So is there an object which points to the latest/current release?
  • The version is integer, not ULID.

Make the repository format hierarchical

It would be nice if the repository format would support a non-flat model, so it could mirror Docker registries and Maven repositories (the famous groupId+artifactId+version tuple).
This could help us leverage a consistent storage of artifacts.
To achieve this in the current repository model, we would need a repository per group (and name the repository after the group, which seems like a lot of repositories, and then all infrastructure should add repositories every time a new group is created, which is not scalable).

Furthermore immutability could be something discussed as well.

We currently run a private repository, done in an evening, with Spring Boot 2 + Disk + H2, serving all our charts very effectively. H2 is only used to enforce immutability in a concurrent environment, everything is on disk, so backup is very easy. We could share this here on GitHiub as a simple approach to solving a missing repository, and for others to take further (UI etc.)?

multiple images

Can multiple docker images installed and configured with single helm chart. If yes, is there any example for reference?

Possible error in governance doc

Taken from the governance doc:

Technical decisions for code resides with the project maintainers unless there is a decision related to cross maintainer groups that cannot be resolved by those groups. Those cases can be escalated to the project maintainers.

Should those cases be escalated to org maintainers?

Thanks!

Support for bearer token in Helm client

HI,
I could not find exact requirement for bearer token support and hence i am opening this new issue. If you feel that this requirement is taken into consideration then please provide appropriate PR / issue and this can be closed.
Recently we implemented Kubernetes at the enterprise level. We have multiple clusters ( > 10 ). At the enterprise level for audit controls and traceability, security we use centralised deployment tool. The deployment tool uses agents for executing deployment process. In this case Agent has helm cli installed. The clusters have OIDC connector which goes to LDAP for authenticating user and then provides id_access and refresh token which we use in the deployment process. The user id that we use is generic user id ( no personal user ids for prod deployments) for which we get token from OIDC.
Currently with kubectl cli we can safely use this token along with other parameters such as cluster master url, namespace etc, this eliminates need of generating kube config file on agent. Having kube config file residing on server is a security exposure as agent runs with root permissions and user can easily "cat" the file generated as part of process and get the token ( valid for ~12 hrs). Having kubectl pass the id_access token is the safest and most secured way as tokens can be generated tokens dynamically ( secured/encrypted property ) to connect to multiple clusters with different ids. Eliminated need of managing multiple config files.
As we started looking at helm due to user community interest, I found that helm doesn't support bearer token instead it needs kube config file. Due to this we had to ask users not to use helm as we can not create config files and expose prod id tokens in there at run time. It also adds additional overhead of cleaning these files in any failure or success.
I am opening this issue to see if helm can support parameters similar to kubectl or may be more and honour kubernetes security model while performing any actions.
I know that there is going to be security model change in Helm 3 and no more tiler which is exciting but the requirement i stated is not clearly mentioned anywhere. I posted this on #helm-dev and #helm-user channel and i have been told to open the issue.

Automate the management of GitHub org/team membership

For the Kubernetes org we are using peribolos to automate GitHub org and team membership. This includes inviting users to the Kubernetes org as well as creating/deleting teams and adding/removing team members to teams.

I think this is definitely useful for an open source project as Helm as well. This way all changes are going through pull requests, in which things may be discussed as well, e.g. Let's get person A invited because he already has done some amazing work for Charts. Right now it seems a bit vague how new contributors are invited to the Helm org / specific repo (e.g. helm/charts#16168 (comment)).

Next to that with peribolos it is possible to automate GitHub team creation and delegate ownership for those teams as well, e.g. the leads for Charts may be granting access to new contributors for Charts related teams whereas the leads of Web and Docs may be approving pull requests for Docs related teams. This will be done through pull requests as well so history is always kept.

What does everyone think of this?

I'd be happy to help out with the setup for this (best repo name would probably be helm/org). After having a working setup it is probably a good idea to document it as well in this community repo, e.g.: https://github.com/kubernetes/community/blob/master/github-management/org-owners-guide.md#team-guidance

/cc @jdolitsky

please support semantic version ranges with chart version

helm deplendecy update works with the following yaml. However ; I got the following 404 error when replacing version 0.0.5 with ~0.0.5. Is it possible to support semantic version range ?

dependencies:

  • name: mychart
    version: 0.0.5
    repository: "oci:///my-charts"

error output from helm dep update
response.status="401 Unauthorized" url="https://<oci_reg>.com/v2/my-charts/mychart/manifests/~0.0.1"

Add if function to helm template function library

A if function will greatly reduce the complexity of some helm template. From example:

{{ if .Values.isNewYear }}
{{ $msg := "Happy New Year" }}
{{ else }}
{{ $msg := "Have a nice day" }}
{{ end }}
msg: {{ $msg }}

Using the if function, it becomes:
msg: {{ if .Values.isNewYear "Happy New Year" "Have a nice day" }}

To avoid conflict, we can choose different name.

helm dependencies update pulls wrong version

I have a chart with a dependency.

Chart.yaml

apiVersion: v2
name: smartwedev
type: application
version: 5.9.0
appVersion: 5.9.0

dependencies:
- name: smartwe-testdb-maria
  alias: smartweDb
  version: 5.9.0
  condition: smartweDb.enableTestDb
  repository: http://registry.swecluster.cas-it.cas.de/chartrepo/smartwedev

However, when I call helm dependencies update in the projects folder helm downloads the version 5.9.0.SUBCHARTS-SNAPSHOT into the /charts subfolder.

In my harbor registry there are several versions of my chart:

$ helm search repo harbor/smartwedev --version=5.9.0 -l
NAME                    CHART VERSION                           APP VERSION                             DESCRIPTION
harbor/smartwedev       5.9.0+BERND-SNAPSHOT                    5.9.0.BERND-SNAPSHOT                    Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+HELMDEPENDENCIES-SNAPSHOT         5.9.0.HELMDEPENDENCIES-SNAPSHOT         Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+SALUTATION-SNAPSHOT               5.9.0.SALUTATION-SNAPSHOT               Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+NATIVETOKENSSO-SNAPSHOT           5.9.0.NATIVETOKENSSO-SNAPSHOT           Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+HELMLIB-SNAPSHOT                  5.9.0.HELMLIB-SNAPSHOT                  Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+COUNTRYPRESELECTION-SNAPSHOT      5.9.0.COUNTRYPRESELECTION-SNAPSHOT      Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+STJAVA11-SNAPSHOT                 5.9.0.STJAVA11-SNAPSHOT                 Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+SUBCHARTS-SNAPSHOT                5.9.0.SUBCHARTS-SNAPSHOT                Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+HELMLIBFUNC-SNAPSHOT              5.9.0.HELMLIBFUNC-SNAPSHOT              Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0                                   5.9.0                                   Deploys SmartWe as a development setup with two...
harbor/smartwedev       5.9.0+TRIALINFO-SNAPSHOT                5.9.0.TRIALINFO-SNAPSHOT                Deploys SmartWe as a development setup with two...

My helm version:
version.BuildInfo{Version:"v3.3.4", GitCommit:"a61ce5633af99708171414353ed49547cf05013d", GitTreeState:"clean", GoVersion:"go1.14.9"}

Install command does not work

Hello,

I'm trying to install at least something but nothing gets installed. Here is the list of commands

root@server:# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
root@server:
# chmod 700 get_helm.sh
root@server:~# ./get_helm.sh
Downloading https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm

root@server:~# helm version
version.BuildInfo{Version:"v3.1.2", GitCommit:"d878d4d45863e42fd5cff6743294a11d28a9abce", GitTreeState:"clean", GoVersion:"go1.13.8"}

root@server:~# helm install happy-panda stable/mariadb
Error: failed to download "stable/mariadb" (hint: running helm repo update may help)

Any suggestions on how it could be resolved?

Helm org Code of Conduct

Question

Helm repos that have a code-of-conduct file still point to the Kubernetes CoC (which in turn points to the CNCF one). Since we're no longer under k8s, and some of the Helm repos don't have a CoC file at all, how should we address this?

Proposal

Ensure all Helm org repos include a file stating the existing policy that it must follow the CNCF Code of Conduct, with a direct link.

Current status

โœ…Approved (see issue thread). PRs have been opened in all relevant Helm org repos, removing the k8s layer of indirection, and fills the gaps where there wasn't a CoC file at all.

Original issue

The chart-testing/code-of-conduct.md file was accidentally removed in #35 (thanks @nvtkaszpir for noticing). Adding this issue to make sure we add it back to master.

Applying to be a trusted collaborator

I'd like to apply to become a trusted collaborator on the Helm org. We at vshn use Helm a lot and often create PRs to create and improve stable Helm charts.
I'll be at KubeCon Barcelona (and VSHN is sponsoring) if you'd like to chat ๐Ÿ˜ƒ

helm lint issue with templates folder in umbrella chart

I have a scenario of having one umbrella chart with many sub-charts as dependencies. When I have the templates folder in umbrella chart, helm lint takes more time like almost 30 to 40 minutes. When this folder is not there, helm lint returns very fast. Can I know the reason.running in debug mode not giving any logs.

helm 2 to helm 3 upgrade story

it'd be nice if it was seamless. migration path.

  • possibly a plugin
  • baked into helm 3? mmm no
  • at the very least, some steps

Things we need to do:

  • Release storage is now config maps. These are going to be CRDs... transition story would be nice.
  • backup and mirror step would be nice. hand holding required. need to feel safe.

Sincerely,
Helm 3 Deep Dive from KubeCon Seattle 2018

Assigned to: Josh Dolitsky. He volunteered.

Request for Helm mapkubeapis plugin to join the Helm Org

  • A link back to the project:

  • The GitHub user names of those in a governance role for that project:

  • A short description (1-3 paragraphs) of why it makes sense to add to Helm:

    • Helm doc describes an issue with Helm when releases that are already deployed with Kubernetes APIs that are no longer supported. If the Kubernetes cluster (containing such releases) is updated to a version where the APIs are removed, then Helm becomes unable to manage such releases anymore. It does not matter if the chart being passed in the upgrade contains the supported API versions or not. The Helm mapkubeapis plugin updates in-place Helm release metadata that contains deprecated or removed Kubernetes APIs to a new instance with supported Kubernetes APIs. It enables Helm to manage those releases again.
  • A short explanation of how the project is to be staffed going forward:

    • The project can be staffed by Martin Hickey and other Helm core maintainers

HIP-0002: When should a patch release be cancelled?

I'm trying to update HIP-2 to define when a patch release will be cancelled due to a minor release being too close.

Monthly patch releases make it that we have a maximum of 4 weeks between releases.

If we choose to cancel a patch release that is within X weeks of a minor here are the impacts:

cancellation range max between releases min between releases max between patch releases*
within 3 weeks 7 weeks 3 weeks + 1 day 12 weeks
within 2 weeks 6 weeks 2 weeks + 1 day 12 weeks
within 1 week 5 weeks 1 week + 1 day 8 weeks
on the same day 4 weeks 1 day 8 weeks
no cancellation 4 weeks 0 days 4 weeks

*The third column shows the wait for users that don't want to install minor releases, but prefer to wait for patch releases (for perceived stability).

From a user's point of view, the "no cancellation" option gives them the fastest access to a release and the option to skip one if there are too many for their taste.
The other cancellation options cause slightly more delay than the standard 4 weeks, but particularly impact users that don't want to use minor releases.

I would like the maintainers opinion on what they feel is reasonable.

Helm template ignores custom values file

I have the following structure

  • my-helm-charts
    • application-chart
    • common-chart
    • my-umbrella-chart
    • my-custom-values.yaml

The content of the value file in application-chart is:
application-chart/values.yaml
custom: default

The content of my custom file is:
my-custom-values.yaml:
application-chart:
custom: custom_value (with the proper indentation)

The template command through my-umbrella-chart works fine:
helm template my-umbrella-chart -f my-custom-values.yaml > output.yaml
I can see the values interpolated from my custom values file.

The template of the specific chart however ignores my custom file:
helm template application-chart -f my-custom-values.yaml > output.yaml
I see the default value rather than custom_value

Is this intended functionality?

add helm/helm and other helm subproject maintainers to maintainers.cncf.io

I've been going through the oldest issues looking to see why they're not resolved. Some of them could be resolved by open PRs that could have been but were not merged for quite some time. It seems like we need more maintainers.

One value individuals and companies get from maintaining upstream projects (besides the obvious stable code and feedback to ensure their business needs are met) is community recognition. This recognition provides value to the contributor and their employer and just feels good. Part of that is being recognized as a maintainer by the CNCF, and being able to take part in discussions on the cncf-helm-maintainers list.

Currently, only the nine Helm Org maintainers are listed as Helm maintainers on the official CNCF spreadsheet.

Some of our team is also involved in the Flux project. We have seen where Weaveworks has implemented a strategy where they collect all the names in all the MAINTAINERS files from all the repos for submission to the CNCF. If we did something similar, I think we could get more maintainers, shorten the PR backlog, and that would lead to more contributors and a healthier community.

Can't install by brew

โžœ  ~ brew install helm
==> Downloading https://homebrew.bintray.com/bottles/helm-3.5.3.big_sur.bottle.t
#=#=-#  #
curl: (22) The requested URL returned error: 403 Forbidden
Error: Failed to download resource "helm"
Download failed: https://homebrew.bintray.com/bottles/helm-3.5.3.big_sur.bottle.tar.gz

Request for chartmuseum org repos to join the Helm org

This request is to cover the following 4 separate repositories. If needed, I can open an issue for each.

dependencies

I am trying to create dependencies in requirements.yaml and looking to expose outside like on nodeport/loadbalance.
Example: I have a node api application, already created helm chart and expose on both loadbalancer and nodeport. But I am using mysql db, so want to install it with same helm chart and want to expose that mysql outside on nodeport/loadbalancer as well. Please advice?

Request for security announce list

We have received a request to create a security announce mailing list, similar to the Kubernetes one. That list is for service providers and they are warned 24 hours before the public that there is a security vulnerability.

I'm filing that request here for further discussion.

collect blog post topics for helm blog

Karen wanted a way to collect blog post topics from the community so we thought it might make sense to put a document that people can pull request against in the community repo. She has a list of topics already but wanted to make this an open process. cc/ @karenhchu

Migrate repositories

The repositories we have are currently under the kubernetes and kubernetes-helm organization. We have a todo to migrate them to the helm GitHub organization. This issue is to track that work.

There are a few steps we need to do:

  1. Create teams for the different areas in the helm org including:
  • Helm project maintainers
  • Helm core maintainers (for the code)
  • Charts maintainers
  • Monocular maintainers
  • Chartmuseum maintainers
  • The Helm website(s)
  1. Associate the maintainers to the teams. This includes inviting people to the organization and removing people from pre-existing teams if no longer relevant. The list of teams for this is:
  • Helm project maintainers
  • Helm core maintainers (for the code)
  • Charts maintainers
  • Monocular maintainers
  • Chartmuseum maintainers
  • The Helm website(s)
  1. Repositories need to be migrated to the new location:
  • Helm - Note, the redirects for k8s.io/helm on Go imports need to be validated first
  • Charts - Note, the collaborators and bot automation needs to be worked out in this switch
  • Community
  • Chartmuseum
  • monocular
  • chart-testing
  • helm-summit-notes
  • rudder-federation
  • charts-tooling

There is an open question of archiving the rudder-federation repo. Should we do this?

Chart dependencies

  • What about diamond dependencies? Sometimes you have duplicates and want to skip them.
Product A
|--Service A
|  |--Namespace Config
|  \--Service C
|     \--Namespace Config
|--Service B
|  \--Namespace Config
\--Service C
   \--Namespace Config
  • What about more powerfull conditions in requirements.yaml like in go templating?

Repository v2 parser choice

Part of the discussion for Helm 3 at the moment is over the introduction of several approaches to make indexing-related tasks more efficient (heirarchical index files, optional server-side search, etc). My current focus is optimizing the index file parsing step. To this end, I've benchmarked a number of parsers, following existing work by @mattfarina. My current results are available here.

I've created this issue to share with the community my progress and my intended path forward, and to ask for feedback. I'd like to make sure my approach is on the right track, and that I'm not unknowingly duplicating someone else's work, or vice versa.

Approach

My approach is derived from three core expectations:

  • Indexes should be saved as JSON files, not YAML files
    • YAML is complicated, and parsing it is naturally expensive.
    • JSON is a very simple format, and yet it's still more than sufficient to properly encode indexing data, with no change to the structure of the data.
    • YAML has no advantage over JSON in this case. The primary reason to use YAML over JSON is increased ability for humans to read and edit the data, but humans don't directly read or edit index files.
    • Since JSON is a subset of YAML, a newer JSON index could technically be backwards-compatible with older YAML-based versions of Helm.
  • Index files should be streamed from disk
    • Currently, index files are loaded to memory in their entirety before being parsed. Streaming the text data into the parser a block at a time is much more space-efficient.
    • Much more often than not, index files are parsed simply to search for an attribute or check the existence of a particular chart. These simple lookups can have O(1) space efficiency if streaming is used.
    • As YAML supports references, this kind of efficient streaming isn't possible. If JSON is used instead, that problem disappears.
  • All else being equal, allocations should be minimized where possible
    • Parsers tend to use a lot of temporary intermediate data during conversion. If this data is allocated to the heap, it can potentially create a lot of garbage.
    • Go's GC is non-generational, meaning it's less likely to immediately collect short-lived allocations. These allocations can build up quickly, which can cause both time and space efficiency to decrease.
    • Minimizing allocations (for example, by allocating intermediate data to the stack instead of the heap) can reduce the GC workload, increasing efficiency.

At this point, my goal was to compare and judge a number of existing parsers based on these three expectations.

Results

This is a breakdown of the benchmarks, which can be found here. Index files contain 500,000 charts, and are 200 - 350 MB in size.

  • ghodss/yaml and yaml.v2 are the only YAML parsers being tested, and they have the worst performance by far, with 20 - 40 seconds and 4 - 8 GB to parse an index.
  • encoding/json (the standard library JSON parser) fares a little better, with 6 seconds and 1 GB to parse an index. It's interesting to note that the streaming version has worse time and space efficiency than the non-streaming version.
  • json-iterator/go and a8m/djson improve time, but not space, with 2 seconds and 1 GB for an index.
  • buger/jsonparser seems very promising, with 1 - 1.5 seconds and 300 - 800 MB for an index. However, it doesn't support streaming.
  • darthfennec/jsonparser is a customized fork of buger/jsonparser, modified to support streaming. I hacked this together as a PoC for this benchmark, because I wanted to see what kind of practical improvements streaming could make for space efficiency. The results are 2 - 3 seconds and 120 MB for an index. This is twice as slow as the original buger/jsonparser, but it has the best space efficiency by far.

Allocation count appears to be roughly proportional to cpu and ram usage, as expected. buger/jsonparser claims that zero allocations are made in the common case, although this depends on the lengths of the JSON strings being parsed. In practice, it does appear to allocate less than other parsers.

Next Steps

darthfennec/jsonparser is unstable and will not function as-is outside of the benchmark environment. I suppose that's what happens when I try to retrofit streaming into a library that really isn't designed to support it. I expect the drop in speed would have been mostly avoided if I had been more careful with the modifications; I don't think it's inherent to the addition of streaming capabilities. Also, I do think the clear space advantage of this approach makes it worth looking further into.

I don't think fixing darthfennec/jsonparser is the right move. Streaming is very much in conflict with the design of buger/jsonparser, so I don't believe this hack could ever be particularly effective. Instead, I've started to write a new JSON parser from scratch, which I expect will benchmark at least as well as darthfennec/jsonparser, without sacrificing flexibility and consistency.

When the new parser is far enough in development, I'll add it to the benchmark to see where it stands.

EDIT: The new parser is up

Helm Refresh

With Helm 3 coming closer, this feels like a good opportunity to update the Helm brand/site/assets with an incremental design refresh.

I've been working on some ideas, and would like to present them here for maintainer and community input!

We last overhauled Helm.sh and the brand (in marketing terms) around Helm 2 in early 2017. Since then the adoption and community around the project has matured and grown, and I think we could update / improve on the project appearance and messaging to reflect this.


Goals:

  • Freshen up the appearance, to project new energy
  • Bolder, more distinct use of colors
  • Change the typeface (klinic slab has inconsistent rendering across OS/browsers)
  • Stronger set of brand rules to work across things like blogs, swag, event banners, etc
  • Brand elements should work equally in light or dark modes (aka can invert)

Logo

Logo-Tweak-Light

Logo-Tweak-Dark

Shouldn't really change. Helm is distinctive and clear.

Color Palette & Typography

Color selections should still tie well into Kubernetes.

Helm-3-Color-Palettes-Light

Helm-3-Color-Palettes-Dark

Typography suggestions - a headline / display type with personality, and a simpler approach for body copy that prioritizes legibility:

type-notes

Typography choices are public open source fonts that are accessible to all.


Examples:

The above styles are intended to result in modern brand elements to make Helm 3 look and feel bolder.

Typography

Example typography.

Example-Icon-Illustrations

Helm-Summit

Illustrations and icon examples.

Website-Exmple

Example for a website refresh with these branding ideas (though I think we may want to overhaul the site content + messaging as a separate item as we prepare for Helm 3).

Screen Shot 2019-03-15 at 3 37 08 PM

Example banners (again we may want new messaging for Helm 3).

Helm is able to install Namespace templates

As described in helm/helm#3179 Helm cannot install namespace templates such as:

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    foo: {{ .Values.foo }}
  labels:
    bar: {{ .Values.bar }}
  name: {{ .Release.Namespace }}
spec:
  finalizers:
  - kubernetes

This prevents a chart from managing the annotations and labels on the namespace is creates. helm upgrade actually does work.

helm install is first creating the namespace for the release you are creating with --namespace and then it tries (and fails) to create the same namespace from the manifest which you have given the same name {{ .Release.Namespace }}.

Several folks have agreed this should be addressed as part of Helm3. The simplest suggestion is an InstallOption that will skip auto-creating the namespace until the manifest is processed.

More ambitiously:

If helm is deploying across two namespaces, how does one ensure that both namespaces exist? You can't use '--namespace' twice. And you can't include Namespace manifests because if either namespace does already exist the install will hard fail.

Multiple namespace support seems like a more difficult endeavor, but if it's warranted, Helm3 might be the time.

[stable] relocate charts to new repos

Current status

๐Ÿ“ฃ Hi everyone, the checklist has been moved from the top of this issue description to a file in the community repo so the community can help maintain this through PRs:
https://github.com/helm/community/blob/main/stable-repo-charts-new-locations.md

Original issue

Given the stable and incubator support plan and Deprecation Timeline, the community (chart OWNERS, organizations, groups or individuals who want to host charts) are moving charts to new Helm repos, and will list these new repos on the Helm Hub before stable and incubator are de-listed there. This issue is to help the community track this migration.

helm-v3: install set of custom plugins during helm init

At an organization, a group of people have a set of custom plugins that they use with helm. Currently, you can install a plugin via helm plugin install. This is a proposal to add a --custom-plugins <file.yaml> flag to helm init to give a user the ability to install a set of pre-defined plugins from a yaml file to helm while they are setting up helm.

The yaml file that contains the list of plugins would look like this:

plugins:
- name: helm-template
  version: 0.1.0
  url: https://github.com/technosophos/helm-template
- name: helm-value-store
  version: 1.0.0
  url: https://github.com/skuid/helm-value-store
- name: helm-diff
  version: 2.0.0
  url: https://github.com/databus23/helm-diff

How to handle multiple target architectures properly?

Hi community,

Do you have any advice how to pack a chart properly if I target multiple architectures, like Minikube, EKS, etc.

I'd like to have different packaged artifacts for them but with the same version like

myapp-1.0-minikube.tgz
myapp-1.0-eks.tgz

And I don't want to use ugly workarounds like renaming files after helm package etc... :)

Helm 3.2.1 install command returns unable to build error

I have a Windows 10 machine with newly installed Helm. I have Az Cli and Kubernetes cli installed.

When I try to install a chart into my AKS cluster, I get the error:
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Service.metadata): unknown field "release" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta

Here is the command line I use:
helm install voting-app voting-app-helm

Here is an example of my Chart.yaml file:
apiVersion: v2
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: voting-frontend
version: 1.0.0

Any ideas what is going on?

Larry

Improve on getting started for new members

We can improve on "how to get started" for a new person to the Helm community. At the community landing page, it needs some update to make it more clear and concise for someone to start helping.

Suggestions on things to look at, links to information like quick start and developer guide. Links also to the communication page for Slack, mailing list and meetings from the landing page. Step by step points to help guide the person.

Have a published release-date cycle for helm

The idea is to have a well-known release cadence for the helm minor releases.

In my experience contributors and users greatly appreciate knowing in advance when the next release will be available.
It allows contributors to plan their work, avoids disappointing delays and provides users with clear timelines for access to bug fixes and features.

We could imagine planning a minor release every 2 or 3 months for example but at an announced set date.

This would not prevent from having an earlier release if it was justified.

Helm doesn't use dockerhub credentials to pull images

Hi,
I use AWS EKS and my pod deployments hit the Dockerhub rate limit.
I purchased a Dockerhub pro account to extend my rate limit.
I configured my Dockerhub credentials into a k8s secret.
I tested my Dockerhub account credentials by deploying a pod using the following kubectl command:
kubectl run prom --image=prom/prometheus:v2.16.0 --restart=Never -n monitoring
With the above command kubectl is able to bypass the rate limit and pull the prometheus image, so far so good.

When I run this helm command:
helm install prometheus prometheus-community/prometheus --namespace monitoring --values https://bit.ly/2RgzDtg --version 11.0.3
Most of the pods fail with ErrImagePull and show this error:
Normal Pulling 14s kubelet Pulling image "prom/prometheus:v2.16.0"
Warning Failed 14s kubelet Failed to pull image "prom/prometheus:v2.16.0": rpc error: code = Unknown desc = Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

I tested this option:
export HELM_EXPERIMENTAL_OCI=1
helm registry login -u myaccountname docker.io

After the successful login l attempted the above helm install again but got the same ErrImagePull and rate limit errors.

Did I miss some configuration?
Please advise.

Thx.
AAber

Helm v3.7.2
K8s version v1.18.9-eks-d1db3c

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.