VoltDB Kubernetes Administrator's Guide


VoltDB Home » Documentation » VoltDB Kubernetes Administrator's Guide

VoltDB Kubernetes Administrator's Guide


The text and illustrations in this document are licensed under the terms of the GNU Affero General Public License Version 3 as published by the Free Software Foundation. See the GNU Affero General Public License (http://www.gnu.org/licenses/) for more details.

Many of the core VoltDB database features described herein are part of the VoltDB Community Edition, which is licensed under the GNU Affero Public License 3 as published by the Free Software Foundation. Other features are specific to the VoltDB Enterprise Edition and VoltDB Pro, which are distributed by Volt Active Data, Inc. under a commercial license.

The VoltDB client libraries, for accessing VoltDB databases programmatically, are licensed separately under the MIT license.

Your rights to access and use VoltDB features described herein are defined by the license you received when you acquired the software.

Volt Active Data, VoltDB, and Active(N) are registered trademarks of Volt Active Data, Inc.

VoltDB software is protected by U.S. Patent Nos. 9,600,514, 9,639,571, 10,067,999, 10,176,240, and 10,268,707. Other patents pending.


This book explains how to create and manage VoltDB database clusters using Kubernetes.

Table of Contents

1. Structure of This Book
2. Related Documents
1. Introduction
1.1. Overview: Running VoltDB in Kubernetes
1.2. Setting Up Your Kubernetes Environment
1.2.1. Product Requirements
1.2.2. Configuring the Host Environment and Accounts
1.2.3. Configuring the Client
1.2.4. Granting Kubernetes Access to the Docker Repository
2. Configuring the VoltDB Database Cluster
2.1. Using Helm Properties to Configure Your Database
2.2. Configuring the Cluster
2.3. Configuring the Database
2.3.1. Configuring High Availability (K-Safety and Placement Groups)
2.3.2. Configuring Command Logging
2.3.3. Configuring Export
2.4. Configuring Logging
3. Starting and Stopping the Database
3.1. Starting the Cluster for the First Time
3.2. Stopping and Restarting the Cluster
3.3. Resizing the Cluster with Elastic Scaling
3.4. Pausing and Resuming the Cluster
3.5. Starting More than One Cluster Within a Namespace
3.6. Stopping, Restarting, and Shutting Down Multiple Clusters Within a Namespace
4. Managing VoltDB Databases in Kubernetes
4.1. Managing the Cluster Using kubectl and helm
4.2. Managing the Database Using voltadmin and sqlcmd
4.2.1. Accessing the Database Interactively
4.2.2. Accessing the Database Programmatically
5. Updates and Upgrades
5.1. Updating the Database Schema
5.2. Updating the Database Configuration
5.2.1. Changing Database Properties on the Running Database
5.2.2. Changing Database Properties That Require a Restart
5.2.3. Changing Cluster Properties
5.3. Upgrading the VoltDB Software and Helm Charts
5.3.1. Updating Your Helm Repository
5.3.2. Updating the Custom Resource Definition (CRD)
5.3.3. Upgrading the VoltDB Operator and Software
5.3.4. Updating VoltDB for XDCR Clusters
6. Monitoring VoltDB Databases in Kubernetes
6.1. Using Prometheus to Monitor VoltDB
7. Configuring Security in Kubernetes
7.1. Configuring User Accounts and Roles Within The Database
7.2. Configuring TLS/SSL
7.2.1. Configuring TLS/SSL With YAML Properties
7.2.2. Using Kubernetes Secrets to Store and Reuse TLS/SSL Information
7.2.3. Using Kubernetes cert-manager to Store TLS/SSL Certificates
7.3. Updating TLS/SSL Security Certificates
8. Cross Datacenter Replication in Kubernetes
8.1. Requirements for XDCR in Kubernetes
8.2. Choosing How to Establish a Network Mesh
8.3. Common XDCR Properties
8.4. Configuring XDCR in Local Namespaces
8.5. Configuring XDCR Using Load Balancers
8.5.1. Separate Load Balancers For Each Node (cluster.serviceSpec.perpod)
8.5.2. Single Load Balancer For Discovery with Virtual Networking Peering (cluster.serviceSpec.dr)
8.6. Configuring XDCR Using Node Ports for Replication
8.7. Configuring XDCR Using Network Services
9. Managing XDCR Clusters in Kubernetes
9.1. Removing a Cluster Temporarily
9.2. Removing a Cluster Permanently
9.3. Resetting XDCR When a Cluster Leaves Unexpectedly
9.4. Rejoining an XDCR Cluster That Was Previously Removed
A. Helm voltadmin Plugin
helm voltadmin — Performs administrative functions on a VoltDB database in Kubernetes.
B. VoltDB Helm Properties
B.1. How to Use the Properties
B.2. Top-Level Kubernetes Options
B.3. Kubernetes Cluster Startup Options
B.4. Network Options
B.5. VoltDB Database Startup Options
B.6. VoltDB Database Configuration Options
B.7. Operator Configuration Options
B.8. Metrics Configuration Options
B.9. Volt Management Center (VMC) Configuration Options

List of Figures

1.1. Kubernetes/VoltDB Architecture