Installation using Helm

Helm is a package manager for Kubernetes, and is the preferred way to install and deploy Ververica Platform. In Helm a package is called a Chart, and it contains all of the resource definitions necessary to run an application, tool, or service inside of a Kubernetes cluster. Charts are essentially just a collection of Templates and some input Values, which Helm refers to as Manifests that are then rendered into Kubernetes resources.

If you’re unfamiliar with Helm and would like to know more about Charts, we recommend checking out the Helm charts documentation

Before continuing, please read the documentation about the Ververica Platform Docker images and take any necessary action.

Prerequisites

You must have a working Kubernetes environment, an installation of the helm CLI tool, and a healthy “Tiller” pod—Helm’s server-side component—running on your cluster. Setting up Helm is not covered by this guide, so please refer to the Helm documentation for further information.

Attention

If your Kubernetes cluster has RBAC enabled, you may get an “access denied” error when trying to use Helm. If this is the case, make sure you have created a service account and role binding according to the documentation.

Note

If you plan to use the Ververica Docker registry, or any other private registry requiring authentication, it’s important to keep this in mind when installing Application Manager.

In this scenario Application Manager must be installed to a Namespace that has an imagePullSecret configured and bound to the default ServiceAccount for that Namespace. In addition, this imagePullSecret must be referenced at install time so Helm will add it to the custom ServiceAccount that Application Manager uses by default.

To verify that your environment is prepared, the following commands should complete without error:

$ kubectl get pods
$ helm list

If you are working in a Kubernetes namespace that is not the default specified in your local Kubernetes configuration file, you can specify the Kubernetes namespace in the above command as follows:

$ kubectl --namespace my-namespace get pods

Similarly, if you set up Helm to use a non-default Kubernetes namespace for its Tiller pod, you can specify it in the above command as follows:

$ helm --tiller-namespace my-tiller-namespace list

Ververica Platform Chart Default Values

  • If no license file is referenced, Ververica Platform will operate in a limited trial mode, with its capabilities restricted.
  • By default, the chart uses the Docker registry hosted by Ververica. To specify your own registry, override the appropriate image/registry values for the respective chart component (see Ververica Platform Docker Images).
  • By default, the chart will create and manage persistent volumes for the components that require them. For this to work, your Kubernetes installation must have a default StorageClass configured. You can use any existing PersistentVolumeClaims that you might have by using the respective *.persistentVolume.existingClaim: "" options for each of the components.
  • If your Kubernetes installation uses role-based access control (RBAC), you must specify either rbac.create: true (default) or reference an existing ServiceAccount that you manage using the rbac.serviceAccountName option.
  • In addition, if you are using multiple Kubernetes namespaces as Deployment Targets (recommended), you can specify rbac.additionalNamespaces to create proper roles and role bindings in all target Kubernetes namespaces.

Overriding chart values

Helm provides several options for setting and overriding the values in a chart. These consist of the following:

-f, –values valueFiles:
 specify values in a YAML file or a URL (can specify multiple)
–set stringArray:
 set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
–set-file stringArray:
 set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)
–set-string stringArray:
 set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)

For the Ververica Platform charts the the method we will cover here is --values.

Helm has an offline templating option that is useful for debugging charts, and as a kind of dry-run/preview mode. With this you can render a Helm chart wihtout applying the values and see what it would create in your Kubernetes cluster (the target Helm chart can be either the .tar.gz archive you downloaded, or the resulting folder if you extracted it, both are valid):

$ helm template --debug ververica-platform-2.0.1.tgz

Similarly you can preview this with a custom values specified also:

$ helm template --debug ververica-platform-2.0.1.tgz --values values.yaml

Passing the --debug flag to helm template exposes several important pieces of information:

  • USER-SUPPLIED VALUES: as the name suggests, these are any values provided by the user, using any of the methods outlined above. This is useful for seeing how Helm has interpreted your input if it’s not behaving as you expected.
  • COMPUTED VALUES: this is a combination of the user-supplied values, and the defaults, showing what will be used in the Helm charts ultimately. This is useful for seeing what other values are being set (defaults), and what you can change/override without having to resort to extracting the Helm release and inspecting the raw yaml files directly. Although this is a valid option when needed. This is a good source of information for creating your own values.yaml file.
  • MANIFEST: this is a default section not specific to the --debug output and shows the manifests/kubernetes resources in yaml format that Helm will create. This can help to contextualize the various values in the USER-SUPPLIED and COMPUTED values sections above.

Note

The output of helm template will contain the string RELEASE-NAME in many places. This is a special Helm variable, which will be replaced by Helm when you install the Chart. It is determined by the --name parameter, which we recommend setting to ververica-platform, or dynamically set by Helm if not specified.

Completing the installation using Helm

Standard settings

To install into the Kubernetes namespace my-namespace and call the release vvp, run:

$ helm install \
    --namespace my-namespace \
    --name vvp \
    ververica-platform-2.0.1.tgz

Custom settings

If you want to modify the installation configuration, you can use the following command to generate a values.yaml from the ververica-platform-2.0.1.tgz release archive:

$ helm inspect values ververica-platform-2.0.1.tgz > values.yaml

You can now pass the modified values.yaml file as an explicit argument --values to Helm install:

$ helm install \
    --namespace my-namespace \
    --name vvp \
    --values values.yaml \
    ververica-platform-2.0.1.tgz

Please see Configuration for a reference of the Ververica Platform configuration.