Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Helm project proposal #114

Merged
merged 2 commits into from
Jun 1, 2018
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add Helm project proposal
  • Loading branch information
mattfarina committed May 10, 2018
commit 2295369952475895760cf1d9026c11b78f984f33
122 changes: 122 additions & 0 deletions proposals/helm.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
== Helm

*Name of project*: Helm

*Description*:

link:http:https://helm.sh[Helm] is a package manager, like Debian Apt for Kubernetes, that enables you to define, install, and upgrade container based applications including those with dependencies. Dependencies can be held in distributed repositories including those in public and private locations.

Those who develop packages, known as charts, have the full power of Kubernetes objects and the ability to depend on other charts. Depending on other charts allows individual services to be defined separately while also allowing an application to launch using a microservice architecture.

Helm not only provides a simple out-of-the-box experience for those installing applications, but also simplifies deployment automation by enabling configuration reuse, enabling multiple components to be managed as a single entity, and facilitating observability of overall application health.

*Sponsor / Advisor from TOC*: Brian Grant <[email protected]>

*Unique Identifier*: helm

*License*: ALv2

*Maturity Level:* Incubating

*Source control repositories*:

* https://github.com/kubernetes/helm
* https://github.com/kubernetes/charts
* https://github.com/kubernetes-helm/community
* https://github.com/kubernetes-helm/monocular
* https://github.com/kubernetes-helm/helm-summit-notes
* https://github.com/kubernetes-helm/chart-testing
* https://github.com/kubernetes-helm/charts-tooling
* https://github.com/kubernetes-helm/rudder-federation
* https://github.com/kubernetes-helm/chartmuseum
* https://github.com/helm/helm-www

A goal is to consolidate all repositories under the link:https://github.com/helm[helm] GitHub org.

link:https://github.com/kubernetes/community/blob/6c3b1a6f0c1152f5e35a53ea93e692ed501abf7a/governance.md#subprojects[Kubernetes, where Helm grew up, has the concept of sub-projects]. For Kubernetes these can be ways the core Kubernetes codebase is organized as well as separate codebases, some with their own release schedules, that support Kubernetes as a whole. Under Kuberentes, Helm and its supporting projects were organized as several sub-projects. This proposal groups those supporting projects of Helm, coming from Kubernetes, as sub-projects of Helm. Sub-projects may have their own maintainers and release schedules.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Spelling: kuberentes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for catching that, fixing


*Current Core Maintainers*:

* Adam Reese
* Adnan Abdulhussein
* Justin Scott
* Maciej Kwiek
* Matt Butcher
* Matt Farina
* Matt Fisher
* Michelle Noorali
* Nikhil Manchanda
* Taylor Thomas
* Vic Iglesias

_Note, the current core maintainers represent 5 different companies._

Sub-projects of Helm have their own maintainers. For example, you can read about the Charts maintainers in the link:https://github.com/kubernetes/charts/blob/master/OWNERS[OWNERS file].

*Infrastructure requirements*: CI, CNCF Cluster, Object Storage

*Issue tracker*: https://github.com/kubernetes/helm/issues

Sub-projects each have their own issue queue.

*Mailing lists*

* Slack:
** Helm Dev room https://kubernetes.slack.com/messages/helm-dev
** Helm Users room https://kubernetes.slack.com/messages/helm-users (see https://kubernetes.slackarchive.io/helm-users/page-100)
** Charts room https://kubernetes.slack.com/messages/charts
** Chartmuseum room https://kubernetes.slack.com/messages/chartmuseum
* https://lists.cncf.io/g/cncf-kubernetes-helm

*Website*: http:https://helm.sh

*Release methodology and mechanics*

Helm uses link:http:https://semver.org/[semantic versioning] for releases. Releases are announced using GitHub releases while the release artifacts are placed into object storage for later download. The continuous integration systems, currently CircleCI, automatically places releases and development builds into object storage.

Helm is currently releases stable releases with a major version of 2. When a minor version comes out containing new features a release branch is created where release candidates, final releases, and patch releases are created from. Anything to be added to these releases is cherry-picked into the branch prior to releases.

The Helm release process is documented in the link:https://github.com/kubernetes/helm/blob/master/docs/release_checklist.md[release checklist].

Sub-projects have their own releases processes. For example, the Helm Community Charts repository uses continuous deployments. All changes to individual charts increment the chart versions. A sync job runs every 15 minutes to pickup changes, builds the chart packages, and places them into object storage to be retrieved by Helm clients.

*Social media accounts*:

* https://twitter.com/helmpack
* link:https://www.youtube.com/channel/UC_kvCKc5EHNomq64f8C4sfA[YouTube]

*Existing sponsorship*:

* Microsoft
* Google
* Codefresh
* Bitnami
* Ticketmaster
* Codecentric

_Note, these companies and their logos are listed on the link:https://helm.sh[Helm website]._

*Adopters*:
Copy link

@ghost ghost May 21, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CNCF Graduation Requirements state:

"Document that it is being used successfully in production by at least three independent end users which, in the TOC’s judgement, are of adequate quality and scope."

Please clarify which of the listed adopters are using Helm successfully in production, and provide some details of these uses to enable the evaluation of the "adequate quality and scope" part of the requirement.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@quinton-hoole I updated the list to include a note about who at the conference shared how they were using Helm in production. Is this sufficient or would you like me to change up the list to be those using who've publicly stated they use it in production?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Matt. What we'd like to understand is some of the detail behind the actual production use cases, to help gauge the scope and quality. For those of us who were not present at the conference, are there some slides or presentation videos that might include that info? I looked around a bit, but couldn't find anything.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be clear, using an extreme and totally made-up example, there's a difference between e.g. "Reddit deploys their main public web site comprising 100 microservices, twice a week using Helm" vs "Reddit has an internal system that 2 people use, and it gets updated annually using Helm". So we'd need enough detail to be able to discern between these two kinds of scenarios.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you asking whether Helm is being used in production, or just want some examples to be documented?

One of the main use cases for Helm is templating applications so that they can be deployed in multiple environments, such as for testing as well as in production. People also use it to deploy off-the-shelf applications in production, such as monitoring systems.

Examples aren't hard to find.

Here's the Helm summit Reddit presentation, and the playlist, with videos from WPEngine, Ubisoft, and others:
https://www.youtube.com/watch?v=7Qxuo9W5SlY&index=7&list=PLVt9l4b66d5EjjJ_VBe_5tEiJrAGLsDb-

It's been mentioned in a number of Kubecon presentations over the years. One Ticketmaster example:
https://kccncna17.sched.com/event/CU7m/one-chart-to-rule-them-all-continuous-deployment-with-helm-at-ticketmaster-michael-goodness-raphael-deem-ticketmaster

Google search "kubernetes helm production", and you'll find blog posts about it.
https://medium.com/tailor-tech/production-grade-kubernetes-on-aws-4-tools-that-made-our-lives-easier-29438e8b58ca
https://engineering.saltside.se/building-our-helm-chart-e10da063581c
https://blog.risingstack.com/packing-a-kubernetes-microservices-with-helm/
https://medium.com/stashaway-engineering/running-a-modern-infrastructure-on-kubernetes-286ad6dab002

Or search the same text on Twitter (or helmpack production), and you'll see plenty of tweets about it, such as:
https://twitter.com/JoergHenning/status/953565524839096320
https://twitter.com/Liran_Last/status/998558781888966658

I don't think a question was specifically asked about production usage, but the Kubernetes SIG Apps survey showed about 40% of Kubernetes users using Helm:
https://docs.google.com/presentation/d/1utT0K-u1nl2apXRo29GaBvRV1x7mFLeQSgpw8mI_nGM/edit#slide=id.g38d258f7ff_0_31

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@quinton-hoole There is a YouTube playlist with the videos from the Helm Summit.

Another point, from the Kubernetes Application Survey, is that 26.7% of Helm users are using the community charts in production. This was a question we asked. Others use it as templates, or for demos, or just don't use them. We didn't collect data on the size or details of these production use cases.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I'll dig through the links Brian sent. I was hoping for a summary, saying something like:

n major production use cases are as follows:

  • Company A

    • Brief application description
    • Brief description of multiple environments it's deployed in, including size, complexity and update frequency.
  • Company B
    ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@quinton-hoole I'm happy to go into more detail. Knowing the kind of thing you're looking for will help me make sure I hit the points you'd like to see. Thanks for providing that framework. I'm not sure I can hit on all your points for all of those using it but I'll try to do my best.

For these bullets I'll continue with the companies from the Helm Summit.

  • Reddit
    • reddit.com which is in the process of moving to a SOA. The applications they are using helm for are, last I checked, stateless. It was stated that they aren't quite comfortable putting stateful services in Kubernetes, yet. They have not shared the exact microservices that are being deployed via Helm
    • Their environments include local development and amazon via multiple accounts. The environments are local dev, staging, and production. They keep building separate from production and use varying amazon controls including multiple-accounts and Kubernetes clusters in these accounts
    • Their CI is Drone and they use the drone-helm plugin. Charts are stored in S3
    • For config management they are using a project called helmfile and the workflow is essentially gitops
    • While that have stated they use Helm in production they did not say which services, how high they scale, or how often they update. Helm is used at many stages of their workflow including local dev, staging, and production
  • Ubisoft
    • Helm and Kubernetes is used for some of their games (did not list which ones).
    • Multiple clusters per production (on-premise, GKE, etc)
    • One of their goals is sharing and Helm is central to that. To share microservices between games
    • They have 60 charts with over 1,000 chart versions in their repository because they are doing continuous delivery
    • They have built tools on Helm to help automate some of their tasks
    • Helm is used as part of CI in GitLab CI
    • For configuration management they are using Terraform which has a plugin to work with Helm
  • WP Engine
    • WP Engine provides hosted WordPress where they managing more than 300,000 wordpress sites for customers
    • As of the helm summit they had more than 7,000 releases of WordPress going through Helm. A release to wordpress site is not a 1:1 mapping
    • To manage all the configuration data about each of these sites they are using a project called lostromos. Lostromos knows how to work with Helm
    • Jenkins is used for CI

Note, each of these is using Helm for package management and something else for config management. Each is using a different tool for this. In addition, each of these are using Helm in a different CI tool.

In addition to these there are other ways to look at production and users. We have user profiles to describe the different roles. One of those is Application Distributor and Bitnami is an excellent example of this who was doing application distribution prior to Kubernetes and still does for other platforms. They distribute numerous charts for common applications (e.g., mariadb, wordpress, and drupal).

If there is interest in more detail or other examples please let me know. Also, I'm not intimately familiar with these systems. If someone has a correction or more detail that information would be appreciated.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @mattfarina . That addresses my question well.


Many Kubernetes users depend on Helm to configure and deploy their applications. The following is a partial list of those who have said they are using Helm at the Helm Summit, a conference held earlier this year that focused solely on the development of and use of Helm. The list is in alphabetical order.

* IBM
* jFrog
* Microsoft
* Nike
* Oteemo
* Reddit
* Samsung SDS
* SUSE
* Ubisoft
* WP Engine

In addition to these we have measured downloads of Helm. A sample of that for the month of April 2018 shows 59,050 downloads from unique IPs from the Helm distribution channel along with 11,618 installations via Homebrew for MacOS.

*Statement on alignment with CNCF mission*:

Helm joined the CNCF at the same time Kubernetes did as it was a sub-project of Kubernetes at that time. Helm is seeking to become a top-level project within the CNCF because Helm has grown up and is taking on a life of it's own. This can be seen in the over 300 contributors to Helm, the over 800 contributors to the community charts, a successful conference based solely on Helm, and the unique culture forming around Helm compared to core Kubernetes.

*External Dependencies*: A full list of dependencies can be found at https://github.com/kubernetes/helm/blob/master/glide.lock.

*Other Contributors*: https://github.com/kubernetes/helm/graphs/contributors