|
|
|
# Kubernetes Helm
|
|
|
|
|
|
|
|
[![CircleCI](https://circleci.com/gh/kubernetes/helm.svg?style=svg)](https://circleci.com/gh/kubernetes/helm)
|
|
|
|
|
|
|
|
Helm is a tool for managing Kubernetes charts. Charts are packages of
|
|
|
|
pre-configured Kubernetes resources.
|
|
|
|
|
|
|
|
Use Helm to...
|
|
|
|
|
|
|
|
- Find and use popular software packaged as Kubernetes charts
|
|
|
|
- Share your own applications as Kubernetes 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 has two parts: a client (`helm`) and a server (`tiller`)
|
|
|
|
- Tiller runs inside of your Kubernetes cluster, and manages releases (installations)
|
|
|
|
of your charts.
|
|
|
|
- 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)
|
|
|
|
|
|
|
|
Using Helm is as easy as this:
|
|
|
|
|
|
|
|
```console
|
|
|
|
$ helm init # Initialize Helm as well as the Tiller server
|
|
|
|
$ helm install docs/examples/alpine # Install the example Alpine chart
|
|
|
|
happy-panda # <-- That's the name of your release
|
|
|
|
$ helm list # List all releases
|
|
|
|
happy-panda
|
|
|
|
quiet-kitten
|
|
|
|
```
|
|
|
|
|
|
|
|
## Install
|
|
|
|
|
|
|
|
Helm is in its early stages of development. At this time there are no binary
|
|
|
|
releases.
|
|
|
|
|
|
|
|
To install Helm from source, follow this process:
|
|
|
|
|
|
|
|
Make sure you have the prerequisites:
|
|
|
|
- Go 1.6
|
|
|
|
- A running Kubernetes cluster
|
|
|
|
- `kubectl` properly configured to talk to your cluster
|
|
|
|
- [Glide](https://glide.sh/) 0.10 or greater with both git and mercurial installed.
|
|
|
|
|
|
|
|
1. [Properly set your $GOPATH](https://golang.org/doc/code.html)
|
|
|
|
2. Clone (or otherwise download) this repository into $GOPATH/src/k8s.io/helm
|
|
|
|
3. Run `make bootstrap build`
|
|
|
|
|
|
|
|
You will now have two binaries built:
|
|
|
|
|
|
|
|
- `bin/helm` is the client
|
|
|
|
- `bin/tiller` is the server
|
|
|
|
|
|
|
|
From here, you can run `bin/helm` and use it to install a recent snapshot of
|
|
|
|
Tiller. Helm will use your `kubectl` config to learn about your cluster.
|
|
|
|
|
|
|
|
For development on Tiller, you can locally run Tiller, or you build a Docker
|
|
|
|
image (`make docker-build`) and then deploy it (`helm init -i IMAGE_NAME`).
|
|
|
|
|
|
|
|
The [documentation](docs) folder contains more information about the
|
|
|
|
architecture and usage of Helm/Tiller.
|
|
|
|
|
|
|
|
## The History of the Project
|
|
|
|
|
|
|
|
Kubernetes Helm is the merged result of [Helm
|
|
|
|
Classic](https://github.com/helm/helm) and the Kubernetes port of GCS Deployment
|
|
|
|
Manager. The project was jointly started by Google and Deis, though it
|
|
|
|
is now part of the CNCF.
|
|
|
|
|
|
|
|
Differences from Helm Classic:
|
|
|
|
|
|
|
|
- Helm now has both a client (`helm`) and a server (`tiller`). The
|
|
|
|
server runs inside of Kubernetes, and manages your resources.
|
|
|
|
- Helm's chart format has changed for the better:
|
|
|
|
- Dependencies are immutable and stored inside of a chart's `charts/`
|
|
|
|
directory.
|
|
|
|
- Charts are strongly versioned using [SemVer 2](http://semver.org/spec/v2.0.0.html)
|
|
|
|
- Charts can be loaded from directories or from chart archive files
|
|
|
|
- Helm supports Go templates without requiring you to run `generate`
|
|
|
|
or `template` commands.
|
|
|
|
- Helm makes it easy to configure your releases -- and share the
|
|
|
|
configuration with the rest of your team.
|
|
|
|
- Helm chart repositories now use plain HTTP instead of Git/GitHub.
|
|
|
|
There is no longer any GitHub dependency.
|
|
|
|
- A chart server is a simple HTTP server
|
|
|
|
- Charts are referenced by version
|
|
|
|
- The `helm serve` command will run a local chart server, though you
|
|
|
|
can easily use object storage (S3, GCS) or a regular web server.
|
|
|
|
- And you can still load charts from a local directory.
|
|
|
|
- The Helm workspace is gone. You can now work anywhere on your
|
|
|
|
filesystem that you want to work.
|