github.com/umeshredd/helm@v3.0.0-alpha.1+incompatible/docs/architecture.md (about)

     1  # The Kubernetes Helm Architecture
     2  
     3  This document describes the Helm architecture at a high level.
     4  
     5  ## The Purpose of Helm
     6  
     7  Helm is a tool for managing Kubernetes packages called _charts_. Helm
     8  can do the following:
     9  
    10  - Create new charts from scratch
    11  - Package charts into chart archive (tgz) files
    12  - Interact with chart repositories where charts are stored
    13  - Install and uninstall charts into an existing Kubernetes cluster
    14  - Manage the release cycle of charts that have been installed with Helm
    15  
    16  For Helm, there are three important concepts:
    17  
    18  1. The _chart_ is a bundle of information necessary to create an
    19     instance of a Kubernetes application.
    20  2. The _config_ contains configuration information that can be merged
    21     into a packaged chart to create a releasable object.
    22  3. A _release_ is a running instance of a _chart_, combined with a
    23     specific _config_.
    24  
    25  ## Components
    26  
    27  Helm is an executable which is implemented into two distinct parts:
    28  
    29  **The Helm Client** is a command-line client for end users. The client
    30  is responsible for the following:
    31  
    32  - Local chart development
    33  - Managing repositories
    34  - Managing releases
    35  - Interfacing with the Helm library
    36    - Sending charts to be installed
    37    - Requesting upgrading or uninstalling of existing releases
    38  
    39  **The Helm Library** provides the logic for executing all Helm operations.
    40  It interfaces with the Kubernetes API server and provides the following capability:
    41  
    42  - Combining a chart and configuration to build a release
    43  - Installing charts into Kubernetes, and providing the subsequent release object
    44  - Upgrading and uninstalling charts by interacting with Kubernetes
    45  
    46  The standalone Helm library encapsulates the Helm logic so that it can be leveraged by different clients.
    47  
    48  ## Implementation
    49  
    50  The Helm client and library is written in the Go programming language.
    51  
    52  The library uses the Kubernetes client library to communicate with Kubernetes. Currently,
    53  that library uses REST+JSON. It stores information in Secrets located inside of Kubernetes.
    54  It does not need its own database.
    55  
    56  Configuration files are, when possible, written in YAML.