https://github.com/microbean/microbean-helm
A Java API for Helm, the Kubernetes package manager.
https://github.com/microbean/microbean-helm
grpc-java helm helm-charts java kubernetes kubernetes-deployment tiller-server
Last synced: 3 months ago
JSON representation
A Java API for Helm, the Kubernetes package manager.
- Host: GitHub
- URL: https://github.com/microbean/microbean-helm
- Owner: microbean
- License: apache-2.0
- Created: 2017-05-30T21:52:48.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-03-04T20:44:04.000Z (over 5 years ago)
- Last Synced: 2025-05-20T11:05:11.375Z (5 months ago)
- Topics: grpc-java, helm, helm-charts, java, kubernetes, kubernetes-deployment, tiller-server
- Language: Java
- Homepage: https://microbean.github.io/microbean-helm/index.html
- Size: 11.8 MB
- Stars: 118
- Watchers: 9
- Forks: 53
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# microBean Helm
[](https://travis-ci.org/microbean/microbean-helm)
[](https://maven-badges.herokuapp.com/maven-central/org.microbean/microbean-helm)The [microBean Helm project][12] lets you work with the server-side
componentry of [Helm][0] from Java.This means your Java applications can now manage applications in your
Kubernetes cluster using the [Helm][0] notions of [charts][3]
and [releases][9].Until now, Java developers had to use the `helm` command line client
to do these operations.# Announcements
Project announcements may be found [in the
wiki](https://github.com/microbean/microbean-helm/wiki/Announcements).
You are encouraged to take a look!# Versioning
The microBean Helm project's version number tracks the Helm and Tiller
release it works with, together with its own version semantics. For
example, a microBean Helm version of `2.12.3.0.0.1` means that the Helm
version it tracks is `2.12.3` and the (SemVer-compatible) version of
the non-generated code that is part of _this_ project is `0.0.1`.# Installation
To install microBean Helm, simply include it as a dependency in your
project. If you're using Maven, the dependency stanza should look
like this:
org.microbean
microbean-helm
2.12.3.0.0.1
jar
Releases are [available in Maven Central][10]. Snapshots are available
in [Sonatype Snapshots][11].# Documentation
The microBean Helm project [documentation is online][8].
# Helm
[Helm][0] is the package manager for [Kubernetes][1]. It consists of
a command line program named `helm` and a server-side component named
Tiller. `helm` serves as a Tiller client.# Tiller
[Tiller][2] is the server-side component of Helm. Tiller accepts and
works with Helm [_charts_][3]—packaged Kubernetes manifest
templates together with their values. microBean Helm lets
you
[build and work with those charts and the _releases_ they produce from Java][4] and
send them back and forth to and from Tiller.## Tiller Installation
In a normal Helm usage scenario, Tiller
is
[installed just-in-time by the `helm` command line client (via the `helm init` subcommand)][5].
It runs as a Pod in a Kubernetes cluster. microBean Helm features
the [`TillerInstaller` class][13] that can do the same thing from
Java.## Tiller Connectivity
Because Tiller normally runs as a Pod, communicating with it from
outside the cluster is not straightforward. The `helm` command line
client internally forwards a local port to a port on the Tiller Pod
and, via this tunnel, establishes communication with the Tiller
server. The microBean Helm project does the same thing but via a Java
library.## Tiller Communication
Tiller is fundamentally a [gRPC][6] application. The microBean Helm
project [generates the Java bindings][7] to its gRPC API, allowing
applications to communicate with Tiller using Java classes.# [`ReleaseManager`][4]
Ideally, business logic for installing and updating releases would be
entirely encapsulated within the Tiller server. Unfortunately, this
is not the case. The `helm` command-line program investigates and
processes a Helm chart's `requirements.yaml` file at installation time
and uses it to alter what is actually dispatched to Tiller. For this
reason, if you are using the microBean Helm project, you must use the
_non_-generated [`ReleaseManager` class][4] to perform your
Helm-related operations, since it contains a port of the business
logic embedded in the `helm` program.[0]: https://helm.sh/
[1]: https://kubernetes.io/
[2]: https://docs.helm.sh/glossary/#tiller
[3]: https://docs.helm.sh/developing_charts/#
[4]: https://microbean.github.io/microbean-helm/apidocs/org/microbean/helm/ReleaseManager.html
[5]: https://docs.helm.sh/using_helm/#easy-in-cluster-installation
[6]: http://www.grpc.io/
[7]: https://microbean.github.io/microbean-helm/apidocs/index.html
[8]: https://microbean.github.io/microbean-helm/
[9]: https://docs.helm.sh/glossary/#release
[10]: http://search.maven.org/#search%7Cga%7C1%7Ca%3Amicrobean-helm
[11]: https://oss.sonatype.org/content/repositories/snapshots/org/microbean/microbean-helm/
[12]: https://github.com/microbean/microbean-helm
[13]:https://microbean.github.io/microbean-helm/apidocs/org/microbean/helm/TillerInstaller.html