A Helm chart for ksqlDB on Kubernetes
This chart bootstraps a ksqlDB.
ksqlDB is an event streaming database purpose-built to help developers create stream processing applications on top of Apache Kafka.
component | version |
---|---|
Podman | v4.3.1 |
Minikube | v1.28.0 |
Kubernetes | v1.25.3 |
Helm | v3.10.2 |
Confluent Platform | v7.3.0 |
ksqlDB | v0.28.2 |
Add the chart repository, if not done before:
helm repo add rhcharts https://ricardo-aires.github.io/helm-charts/
By default this chart is set to use the umbrella chart kstack, but can be run against an external Kafka, Schema Registry and Kafka Connect by passing:
helm install --set kafka.enabled=false --set kafka.bootstrapServers=PLAINTEXT://kstack-kafka-headless.default:9092 --set schema-registry.enabled=false --set schema-registry.url=kstack-schema-registry.default:8081 --set kafka-connect.enabled=false --set kafka-connect.url=kstack-kafka-connect.default:8083 ktool rhcharts/ksqldb
NAME: ktool
LAST DEPLOYED: Tue Mar 23 18:35:37 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
** Please be patient while the ksqldb chart is being deployed in release ktool **
This chart bootstraps a ksqldb that can be accessed from within your cluster:
ktool-ksqldb.default:8088
$
These commands deploy ksqlDB on the Kubernetes cluster in the default configuration. The Parameters section lists the parameters that can be configured during installation.
One can run the:
- helm list command to list releases installed
- helm status to display the status of the named release
- helm test to run tests for a release
To uninstall the ktool
deployment run:
helm uninstall ktool
The command removes all the Kubernetes components associated with the chart and deletes the release.
You can specify each parameter using the --set key=value[,key=value]
argument to helm install
.
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
helm install ktool -f my-values.yaml rhcharts/ksqldb
A default values.yaml is available and should be checked for more advanced usage.
By default the confluentinc/ksqldb-server is in use.
Parameter | Description | Default |
---|---|---|
image.registry |
Registry used to distribute the Docker Image. | docker.io |
image.repository |
Docker Image of ksqlDB. | confluentinc/ksqldb-server |
image.tag |
Docker Image Tag of ksqlDB. | 0.28.2 |
One can easily change the image.tag
to use another version. When using a local/proxy docker registry we must change image.registry
as well.
ksqlDB supports locked-down, "headless" deployment scenarios where interactive use of the ksqlDB cluster is disabled. For example, the CLI enables a team of users to develop and verify their queries interactively on a shared testing ksqlDB cluster. But when you deploy these queries in your production environment, you want to lock down access to ksqlDB servers, version-control the exact queries, and store them in a .sql file. This prevents users from interacting directly with the production ksqlDB cluster. For more information, see Headless Deployment.
To enable headless mode in this chart, simply pass the name of a ConfiMap containing the sql script file:
Parameter | Description | Default |
---|---|---|
queriesFileConfigMap |
Name of the ConfigMap that stores the queries.sql script with all the ksql queries for a given use case |
nil |
By default the Service will expose the pods in the port 8088
, port
.
This chart is prepared to enable Kerberos authentication in Kafka
Parameter | Description | Default |
---|---|---|
kerberos.enabled |
Boolean to control if Kerberos is enabled. | false |
kerberos.krb5Conf |
Name of the ConfigMap that stores the krb5.conf , Kerberos Configuration file |
nil ¹ |
kerberos.keyTabSecret |
Name of the Secret that stores the Keytab | nil ¹ |
serviceName |
Primary of the Principal (user, service, host) | |
domain |
REALM of the Principal | nil |
¹ When
kerberos.enabled
these parameters are required, and the ConfigMap and Secret need to exist beforehand.
Regarding the management of Resources for Containers the next defaults regarding requests and limits are set:
Parameter | Description | Default |
---|---|---|
resources.limits.cpu |
a container cannot use more CPU than the configured limit | 1 |
resources.limits.memory |
a container cannot use more Memory than the configured limit | 3000Mi |
resources.requests.cpu |
a container is guaranteed to be allocated as much CPU as it requests | 250m |
resources.requests.memory |
a container is guaranteed to be allocated as much Memory as it requests | 1000Mi |
In terms of the JVM the next default is set:
Parameter | Description | Default |
---|---|---|
heapOpts |
The JVM Heap Options for ksqlDB. | "-XX:MaxRAMPercentage=50.0 -XX:InitialRAMPercentage=50.0" |
Check the values.yaml
for more advance configuration such as: