| |
| ============ |
| Helm formula |
| ============ |
| |
| This formula installs Helm client, installs Tiller on Kubernetes cluster and |
| manages releases in it. |
| |
| Available States |
| =============== |
| |
| The default state applied by this formula (e.g. if just applying `helm`) will |
| apply the `helm.releases_managed` state. |
| |
| .. note:: For backward compatibility till release 2.0 was kept the state client.sls, |
| which just re-call the helm.release_managed |
| |
| `kubectl_installed` |
| ------------------ |
| |
| Optionally installs the kubectl binary per the configured pillar values, |
| such as the version of `kubectl` to install and the path where the binary should |
| be installed. |
| |
| `kubectl_configured` |
| ------------------ |
| |
| Manages a kubectl configuration file and gce_token json file per the configured |
| pillar values. Note that the available configuration values allow the path of |
| the kube config file to be placed at a different location than the default |
| installation path; this is recommended to avoid confusion if the kubectl |
| binary on the minion might be manually used with multiple contexts. |
| |
| **includes**: |
| * `kubectl_installed` |
| |
| `client_installed` |
| ------------------ |
| |
| Installs the helm client binary per the configured pillar values, such as where |
| helm home should be, which version of the helm binary to install and that path |
| for the helm binary. |
| |
| **includes**: |
| * `kubectl_installed |
| |
| `tiller_installed` |
| ------------------ |
| |
| Optionally installs a Tiller deployment to the Kubernetes cluster per the |
| `helm:client:tiller:install` pillar value. If the pillar value is set to |
| install tiller to the cluster, the version of the tiller installation will |
| match the version of the Helm client installed per the `helm:client:version` |
| configuration parameter |
| |
| **includes**: |
| * `client_installed` |
| * `kubectl_configured` |
| |
| `repos_managed` |
| ------------------ |
| |
| Ensures the repositories configured per the pillar (and only those repositories) |
| are registered at the configured helm home, and synchronizes the local cache |
| with the remote repository with each state execution. |
| |
| **includes**: |
| * `client_installed` |
| |
| `releases_managed` |
| ------------------ |
| |
| Ensures the releases configured with the pillar are in the expected state with |
| the Kubernetes cluster. This state includes change detection to determine |
| whether the pillar configurations match the release's state in the cluster. |
| |
| Note that changes to an existing release's namespace will trigger a deletion and |
| re-installation of the release to the cluster. |
| |
| **includes**: |
| * `client_installed` |
| * `tiller_installed` |
| * `kubectl_configured` |
| * `repos_managed` |
| |
| Availale Modules |
| =============== |
| |
| To view documentation on the available modules, run: |
| |
| `salt '{{ tgt }}' sys.doc helm` |
| |
| |
| Sample pillars |
| ============== |
| |
| See the [default reclass pillar configuration](metadata/service/client.yml) for |
| a documented example pillar file. |
| |
| Example Configurations |
| ====================== |
| |
| _The following examples demonstrate configuring the formula for different |
| use cases._ |
| |
| The default pillar configuration will install the helm client on the target |
| node, and Tiller to the Kubernetes cluster (assuming kubectl config or local |
| cluster endpoint have already been configured. |
| |
| Change version of helm being downloaded and installed: |
| |
| .. code-block:: yaml |
| |
| helm: |
| client: |
| version: 2.6.0 # defaults to 2.6.2 currently |
| download_hash: sha256=youneedtocalculatehashandputithere |
| |
| Don't install tiller and use existing one exposed on some well-known address: |
| |
| .. code-block:: yaml |
| |
| helm: |
| client: |
| tiller: |
| install: false |
| host: 10.11.12.13:14151 |
| |
| Change namespace where tiller is isntalled and looked for: |
| |
| .. code-block:: yaml |
| |
| helm: |
| client: |
| tiller: |
| namespace: not-kube-system # kube-system is default |
| |
| Install Mirantis repository and deploy zookeper chart from it: |
| |
| .. code-block:: yaml |
| |
| helm: |
| client: |
| repos: |
| mirantisworkloads: https://mirantisworkloads.storage.googleapis.com/ |
| releases: |
| zoo1: |
| name: my-zookeeper |
| chart: mirantisworkloads/zookeeper # we reference installed repo |
| version: 1.2.0 # select any available version |
| values: |
| logLevel: INFO # any values used by chart can specified here |
| |
| Delete that release: |
| |
| .. code-block:: yaml |
| |
| helm: |
| client: |
| repos: |
| mirantisworkloads: https://mirantisworkloads.storage.googleapis.com/ |
| releases: |
| zoo1: |
| enabled: false |
| |
| Install kubectl and manage remote cluster: |
| |
| .. code-block:: yaml |
| |
| helm: |
| client: |
| kubectl: |
| install: true # installs kubectl 1.6.7 by default |
| config: |
| # directly translated to cluster definition in kubeconfig |
| cluster: |
| server: https://kubernetes.example.com |
| certificate-authority-data: base64_of_ca_certificate |
| cluster_name: kubernetes.example |
| # directly translated to user definition in kubeconfig |
| user: |
| username: admin |
| password: uberadminpass |
| user_name: admin |
| |
| Change kubectl download URL and use it with GKE-based cluster: |
| |
| .. code-block:: yaml |
| |
| helm: |
| client: |
| kubectl: |
| install: true |
| download_url: https://dl.k8s.io/v1.6.7/kubernetes-client-linux-amd64.tar.gz |
| download_hash: sha256=calculate_hash_here |
| config: |
| # directly translated to cluster definition in kubeconfig |
| cluster: |
| server: https://3.141.59.265 |
| certificate-authority-data: base64_of_ca_certificate |
| # directly translated to user definition in kubeconfig |
| user: |
| auth-provider: |
| name: gcp |
| user_name: gce_user |
| gce_service_token: base64_of_json_token_downloaded_from_cloud_console |
| |
| Known Issues |
| ============ |
| |
| 1. Unable to remove all user supplied values |
| |
| If a release previously has had user supplied value overrides (via the |
| release's `values` key in the pillar), subsequently removing all `values` |
| overrides (so that there is no more `values` key for the release in the |
| pillar) will not actually update the Helm deployment. To get around this, |
| specify a fake key/value pair in the release's pillar; Tiller will override |
| all previously user-supplied values with the new fake key and value. For |
| example: |
| |
| |
| .. code-block:: yaml |
| helm: |
| client: |
| releases: |
| zoo1: |
| enabled: true |
| ... |
| values: |
| fake_key: fake_value |
| |
| |
| More Information |
| ================ |
| |
| * https://github.com/kubernetes/charts |
| * https://fabric8.io/helm/ |
| |
| |
| Documentation and Bugs |
| ====================== |
| |
| To learn how to install and update salt-formulas, consult the documentation |
| available online at: |
| |
| http://salt-formulas.readthedocs.io/ |
| |
| In the unfortunate event that bugs are discovered, they should be reported to |
| the appropriate issue tracker. Use Github issue tracker for specific salt |
| formula: |
| |
| https://github.com/salt-formulas/salt-formula-helm/issues |
| |
| For feature requests, bug reports or blueprints affecting entire ecosystem, |
| use Launchpad salt-formulas project: |
| |
| https://launchpad.net/salt-formulas |
| |
| You can also join salt-formulas-users team and subscribe to mailing list: |
| |
| https://launchpad.net/~salt-formulas-users |
| |
| Developers wishing to work on the salt-formulas projects should always base |
| their work on master branch and submit pull request against specific formula. |
| |
| https://github.com/salt-formulas/salt-formula-home-assistant |
| |
| Any questions or feedback is always welcome so feel free to join our IRC |
| channel: |
| |
| #salt-formulas @ irc.freenode.net |