Kubernetes installation steps
This guide provides the high-level steps for installing Capacity Private Cloud within a Kubernetes environment. Cloud-specific instructions are available for Google GCP (GKE) and Amazon EKS, with additional providers to follow. For on-premises installations, a streamlined option is available using kubeadm, which automates most of the steps below — see Setup via Quick Start (kubeadm) for details.
Recommended approach: Set up a Kubernetes cluster environment that is not reliant on external services for MongoDB, PostgreSQL, RabbitMQ, and Redis initially. This allows you to begin testing using the various APIs quickly. Once the setup is verified, the environment can be reconfigured to use external services.
When setting up connection strings to external services, the following characters are not supported within a password: [ ] { } ( ) , ; ? * = ! @ | ^
Helm values files used for the installation commands are available at github.com/lumenvox/helm-charts. You will need to provide the IP address details for the persistent storage device along with the usernames and IP addresses for the prerequisite components (Redis, MongoDB, etc.). The secrets file template must be populated with base64-encoded passwords — the template can be obtained from the Sample Secrets File article.
Installation Steps
- Create a Kubernetes cluster
- This will host your Kubernetes nodes
- Note the IP created for association with DNS and API calls
- Configure the cluster name and networking (e.g. public accessibility)
- Kubernetes version 1.33 is currently recommended — see the latest minimum requirements at github.com/lumenvox/helm-charts
- Create the node pools
- These will host your various pods
- The number of nodes depends on call volumes and products used
- Configure the nodes
- Specify the operating system and node configuration
- Set up node security
- Set up node networking
- Install kubectl (or equivalent, e.g. Google CLI which installs kubectl as part of its package). This is used to connect to the Kubernetes cluster from your local machine.
- Connect to the cluster and configure kubectl to communicate with the new cluster and submit Kubernetes commands.
- Install Linkerd
- A service mesh recommended for effective interaction management and load balancing between pods.
- Install Jaeger
- A plugin for Linkerd. It is a monitoring tool that tracks latency, communication success between pods, and bottlenecks. It can monitor time spent for transactions within the various pods.
- Install the Linkerd Dashboard
- A visual dashboard used to monitor and display latency (uses Jaeger behind the scenes). It also functions as a health check for the service mesh.
- Install Helm
- Required to run the various Helm charts.
- Use Helm to install NGINX Ingress
- NGINX acts as a load balancer into the Kubernetes cluster and functions as a reverse proxy.
- Create namespace and switch to lumenvox
- A namespace is required to install the pods into. A namespace can have multiple tenants (deployment IDs). Multiple namespaces are not currently supported.
- Run the commands to activate and make the lumenvox namespace the default.
- Set up TLS for ingress
- Set up TLS and apply a self-signed certificate or your own certificate.
- Apply the secrets file
- The secrets file must be populated with the various component passwords stored as base64-encoded strings.
The following is an example of the secrets.yaml file:
- Run the Helm chart installation
- The required Helm charts are available at github.com/lumenvox/helm-charts
- The resources file can be used to override any default settings.
- Sample speech Python scripts are available for testing the API and verifying the installation. These can be found at github.com/lumenvox
Troubleshooting
If your containers do not fully deploy, the following steps can help diagnose the problem:
- Are all the pods running?
- Are there any errors in the pods that are not running?
- What are the specific errors?
- Check the deployment pod status and log files. The deployment pod is the most important for getting other pods up and running.
Potential Installation Issues
The following are common areas that may affect your installation:
- Network connectivity between components (e.g. between Kubernetes and MongoDB, Redis, RabbitMQ, PostgreSQL, and the persistent volume)
- Using different clusters and the communication between them
- Cluster configuration differences between hosting providers (e.g. Alibaba, Azure, Google, Amazon)
- Connectivity and configuration for MongoDB, PostgreSQL, RabbitMQ, Redis, and persistent storage can vary per installation — the version or type of these components may also differ
- Passwords for components containing unsupported characters
- TLS connectivity issues
- Connectivity to the licensing service and platform resources
