helm / helm-classic

⚠️(OBSOLETE) Helm Classic v1
https://github.com/helm/helm
Other
574 stars 54 forks source link

PROPOSAL: helm init / helm install --save #212

Closed olalonde closed 8 years ago

olalonde commented 8 years ago

Disclosure: I just discovered Helm and don't really know what I'm talking about except that Helm looks awesome. I've been primarily developing in Node.js for the past few years and npm is a big reason for that (so I'm a bit biased for its way of doing things). Just thought I'd share my perspective as a npm user.

unofficial dependencies

https://github.com/deis/charts is nice as an official repository since it leverages existing infrastructure (github) and tools (git). It would be nice in the future to be able to reference dependencies by githubuser/githubrepo / absolute URLs to support private/unofficial charts. e.g:

dependencies:
  - name: nginx
    version: olalonde/nginx#commit-ish (tag, commit hash, etc.)

or

dependencies:
  - name: nginx
    version: git+ssh://user@hostname:project.git#commit-ish

I assume this is already planned/implemented, but it would be nice if the semver v2 standard was followed for versioning. npm supports an extensive syntax for specifying version ranges.

helm init

npm has a useful command that setups up the initial package.json using information from the current environment (git user / remote origin, current directory name, etc.). Similarly, it would be nice to have a helm init to initialise the Chart.yml file when you want to package a service for helm.

helm install --save

If I understand correctly, helm install installs a chart on a remote kubernetes cluster and caches the chart in ~/.helm/workspace?

What if entire systems could be modelled as charts that live under version control, can be re-installed from scratch with a simple helm install . and could be attached as dependencies in larger systems?

The idea would be that every helm install --save (in addition to the default behaviour) would add the installed chart to the local Chart.yml's dependencies key. That Chart.yml would essentially contain all the information necessary to re-install your cluster from scratch and it could live under version control (which in turn means history and better collaboration).

Just food for thought...

technosophos commented 8 years ago

As you probably noticed, I created a feature request based on your first suggestion.

I'm thinking hard about this idea for creating an analog to npm install. It's a slightly different design than what we originally had in mind, but maybe it's a good direction to go.

olalonde commented 8 years ago

Thanks, those were just my first impressions. A distributed package manager is obviously going to be very different from a programming language one.

mboersma commented 8 years ago

The future of Helm is at kubernetes/helm. Helm Classic is in maintenance mode, so I'm closing this proposal.