Volt Operator for Kubernetes

Documentation

VoltDB Home » Documentation » Volt Operator for Kubernetes

Volt Operator for Kubernetes

V3.0.1

April 4, 2024


Introduction

The Volt Operator for Kubernetes and its accompanying Helm chart manage the creation, configuration, and operation of VoltDB databases within the Kubernetes environment. You do not interact with the Operator directly; instead, you specify the desired state for the database through Helm properties, as explained in the Volt Kubernetes Administrator's Guide. This document provides additional information concerning the Operator, including:

Volt Operator Release Notes

This section describes changes and improvements made to the Volt Operator and accompanying Helm charts in each release, starting with version 3.0.0. Users of Volt Active Data on Kubernetes should take note of the following changes that might impact their existing applications.

1. Release V3.0.1 (April 4, 2024)

1.1.

Improvements

The following limitation in the previous version has been resolved:

  • The global.voltdbVersion property is not supposed to have a default value; you must specify the software version you wish to use when creating a Helm release. However, in the initial Operator V3.0.0 release, a value used in testing was accidentally left in as the default. This would not affect anyone who sets the property to the software version to use. However, when using older versions by specifying only the image tag, the Operator would attempt to create a release using the older software but the most recent configuration semantics. In most cases, the pods would fail to start due to various configuration errors. This issue has been resolved.

2. Release V3.0.0 (March 29, 2024)

2.1.

Volt Operator V3.0.0 and changes to the Helm commands

This release of Volt Operator for Kubernetes version 3.0.0 improves the management of Volt database applications in two ways. It allows the user to select the chart, operator, and Docker image by specifying just the software version of VoltDB. It also uses a single operator and chart for managing all current versions of VoltDB, rather than separate operator releases for each software release. These changes have two major benefits:

  • Ease of Use — You only need to specify the version of VoltDB to use, you no longer need to correlate which operator and chart versions are compatible with which software versions.

  • Reliability — There is a single operator for all currently supported versions of VoltDB; consequently, fixes to the operator itself automatically apply to all versions of the product.

The one noticeable change resulting from the transition to Operator V3.0.0 is that there is no longer a default version of VoltDB. In other words, you must explicitly identify the version of VoltDB you want to use when you start the database or upgrade the VoltDB version. For example:

$ helm install mydb voltdb/voltdb --set global.voltdbVersion=13.2.0

This applies to all helm commands, but especially helm install when you are first instantiating the cluster. Once the cluster is running, for other Helm commands (such as helm upgrade) you can use the --reuse-values qualifier to retain the current setting of the software version.

2.2.

Volt Operator 3.0.0 supports Kubernetes versions 1.25 through 1.28

The current Operator requires a minimum of Kubernetes version 1.25 and has been tested and verified against versions through 1.28.

2.3.

New value allowed for the vmc.enabled property.

Previously, the vmc.enabled property allowed the values "true" or "false" to specify whether VMC and the JSON API are run as a separate service (true) or as part of the database server process (false). However, depending on what version of VoltDB you are running, the default differs. For VoltDB V13.x, the default is true, for previous versions, the default is false. Therefore, the property now allows the value "default" to set the property to match the default behavior for the version of VoltDB being used.

2.4.

New default TLS/SSL configuration for the VMC/JSON API service

If TLS/SSL is enabled for the cluster, the separate VMC service and Prometheus agent (if in use) must also be configured to use TLS to access the servers. Previously, it was necessary to configure this explicitly. Now, if TLS/SSL is enabled for the cluster but no TLS properties are defined for VMC, the operator will automatically configure these services (through the vmc.voltdb.ssl.* properties) to use the appropriate TLS settings when accessing the server. It will also enable and configure SSL for the VMC services outbound port (that is, the vmc.ssl.* properties).

This automatic propagation of TLS/SSL settings is done through a new property value for the properties metrics.ssl.enabled and vmc.ssl.enabled. Where previously these properties only supported "true" and "false", they now also support "auto" to let the operator configure their TLS /SSL settings, which is now the default. Note that any VMC or Prometheus Agent properties that are explicitly set will overide any automated settings from the ...enabled="auto" property.

2.5.

Additional improvements

The following limitations in previous versions have been resolved:

  • Previously, if TLS/SSL was not enabled for the cluster, the Operator still created Kubernetes secrets for SSL information. Although these secrets were harmless because they were empty, they were also unnecessary. These secrets are no longer created if TLS/SSL is not enabled.

Running Older Releases of VoltDB

You should always run the latest point release of the LTS version of Volt you are using. This ensures you have the most reliable software, free of all known bugs and/or security vulnerabilities. However, if you must use an older point release, you must also use an older version of the Operator as well.

The Volt Operator version 3.0.0 and later manages the operation of recent releases of all supported versions of VoltDB, including:

  • Volt Active Data V13.0.3 and later

  • Volt Active Data V12.3.4 and later (LTS)

  • Volt Active Data V11.4.13 and later (LTS)

  • Volt Active Data V10.2.21 and later (LTS)

For these versions of Volt, you use Helm with the global.voltdbVersion property specifying the software version to use, as described in the Volt Kubernetes Administrator's Guide. If you need to use a version of VoltDB prior to the releases listed above, you cannot use the global.voltdbVersion property. Instead, you must identify and use the appropriate earlier version of the Operator itself. You can do this by looking it up on the compatibility chart or by having Helm list the available versions. For example, let's say you need to run VoltDB V12.3.0, first you list the older Operator versions with the helm search repo command:

helm search repo voltdb/voltdb --versions
NAME           CHART VERSION  APP VERSION               DESCRIPTION 
      . . .           
voltdb/voltdb  2.1.1          12.3.1                    The Helm chart for VoltDB
voltdb/voltdb  2.1.0          12.3.0                    The Helm chart for VoltDB
voltdb/voltdb  2.0.2          12.2.2                    The Helm chart for VoltDB
      . . .

Once you identify the correct Operator version (in this case, 2.1.0), you include the --version qualifier on the commands you issue to Helm. For example, to start the database you include --version=2.1.0 on the helm install command:

$ helm install mydb voltdb/voltdb \
     --version=2.1.0              \ 
     --values myconfig.yaml       \
     --set cluster.clusterSpec.replicas=5

You must include the --version qualifier for all Helm commands related to this cluster, except when upgrading to a newer release supported by Operator V3 or later.

Compatibility for Older Versions of the Volt Operator

All recent releases of Volt Active Data — including the current major version and Long-Term Support (LTS) releases —use a single operator : Volt Operator V3.0.0 or later. If you must run an older release of Volt, you must use the appropriate older version of the Volt Operator as well. The following tables map older Volt versions to the compatible Operator and chart version.

* Long-Term Support releases are highlighted in bold.

Table 1. Volt Active Data V13.x Compatibility Chart

VoltDBKubernetesVoltDB OperatorHelm Chart
13.0.31.23-1.272.2.32.2.3
13.0.21.23-1.272.2.22.2.2
13.0.01.23-1.272.2.02.2.0

Table 2. Volt Active Data V12.x Compatibility Chart

VoltDBKubernetesVoltDB OperatorHelm Chart
12.3.3 *1.23-1.272.1.32.1.3
12.3.2 *1.23-1.272.1.22.1.2
12.3.1 *1.21-1.272.1.12.1.1
12.3.0 *1.21-1.272.1.02.1.0
12.2.21.21-1.252.0.22.0.2
12.2.11.21-1.252.0.12.0.1
12.21.21-1.252.0.02.0.0
12.1.11.21-1.241.10.11.10.1
12.11.21-1.241.10.01.10.0
12.01.21-1.231.9.01.9.0

Table 3. Volt Active Data V11.x Compatibility Chart

VoltDBKubernetesVoltDB OperatorHelm Chart
11.4.12 *1.21-1.271.8.101.8.10
11.4.11 *1.21-1.271.8.91.8.9
11.4.10 *1.21-1.271.8.81.8.8
11.4.9 *1.21-1.271.8.71.8.7
11.4.8 *1.16-1.231.8.61.8.6
11.4.5, 11.4.6, 11.4.7 *1.16-1.231.8.51.8.5
11.4.4 *1.16-1.231.8.41.8.4
11.4.3 *1.16-1.231.8.31.8.3
11.4.1, 11.4.2 *1.16-1.231.8.21.8.2
11.4.0 *1.16-1.231.8.0, 1.8.11.8.0, 1.8.1
11.3.21.16-1.221.7.4, 1.7.51.7.4, 1.7.5
11.3.11.16-1.221.7.31.7.3
11.31.16-1.221.7.01.7.0
11.2.61.16-1.211.6.101.6.10
11.2.51.16-1.211.6.91.6.9
11.2.41.16-1.211.6.8, 1.6.91.6.8, 1.6.9
11.2.31.16-1.211.6.61.6.6
11.2.21.16-1.211.6.51.6.5
11.2.11.16-1.211.6.31.6.3
11.21.16-1.211.5.0, 1.6.21.5.0, 1.6.2
11.1, 11.1.11.16-1.211.4.01.4.0

Table 4. Volt Active Data V10.x Compatibility Chart

VoltDBKubernetesVoltDB OperatorHelm Chart
10.2.20 *1.21-1.271.3.171.3.17
10.2.19 *1.21-1.271.3.161.3.16
10.2.18 *1.21-1.271.3.151.3.15
10.2.17 *1.16-1.231.3.141.3.14
10.2.16 *1.16-1.231.3.131.3.13
10.2.15 *1.16-1.231.3.121.3.12
10.2.14 *1.16-1.231.3.111.3.11
10.2.13 *1.16-1.231.3.101.3.10
10.2.12 *1.16-1.221.3.101.3.10
10.2.11 *1.16-1.221.3.91.3.9
10.2.10 *1.16-1.221.3.81.3.8
10.2.9 *1.16-1.201.3.51.3.5
10.2.8 *1.16-1.201.3.51.3.5
10.2.7 *1.16-1.201.3.51.3.5
10.2.6 *1.16-1.201.3.51.3.5
10.2.5 *1.16-1.201.3.51.3.5
10.2.4 *1.16-1.191.3.41.3.4
10.2.3 *1.16-1.191.3.31.3.3
10.2.2 *1.16-1.181.3.21.3.2
10.2.1 *1.16-1.181.3.01.3.1
10.1.31.16-1.181.2.11.2.1
10.1.21.16-1.181.2.01.2.0
10.1.0, 10.1.11.16-1.181.1.01.1.0, 1.1.1
10.0.01.16-1.181.0.01.0.0 to 1.0.2