This repository contains Kubernetes Sandbox environment running on a Kind cluster [1], designed for various types of development and integration purposes. The focus is on creating a local or on-premise workspace to evaluate:
-
Kubernetes components with custom configurations,
-
custom application developments on Kubernetes,
-
IoT platforms using Kubernetes (e.g., on Raspberry Pi).
The following components are installed:
-
kube-prometheus monitoring stack: Prometheus [3], Grafana [4], AlertManager [5] and Thanos [6]
-
CloudNativePG operator for PostgreSQL [7] databases
-
Strimzi operator for Kafka [8] (and related components, like Debezium [9])
-
Kafka tools (UI for Apache Kafka [10], Debezium UI [11])
-
-
Istio (Gateway API)
-
Various Kubernetes tools: Sealed Secrets, Reloader
-
Sandbox application for testing
Most of the components are deployed using Helm charts with custom parameters.
Helm chart versions are not defined (so the latest versions are used), but deployments may require setting custom version numbers to run the latest/updated/custom images. The following list collects such customizations.
-
k8s/cluster/kind/kind.yaml
-
nodes[*].image
: Kind "node" image [1]
-
-
k8s/config/metallb-config.yaml
-
k8s/config/kube-stack-config.yaml
-
k8s/infra/001-kafka.yaml
-
spec.kafka.version
: Kafka [8]
-
-
k8s/infra/002-postgresql.yaml
-
spec.imageName
: PostgreSQL [7]
-
-
k8s/infra/011-artemis.yaml
-
k8s/infra/012-debezium.yaml
A custom PostgreSQL image is used because the official image (including Timescale/PostGIS prepared versions) doesn’t include the necessary locale settings for collation. The preferred method for setting these is described in Locale Customization.
The official Kafka image doesn’t include required Java libraries like the Debezium PostgreSQL connector. Therefore, it’s necessary to add them to a custom image.
Custom images are pushed to local registry created for the Kubernetes cluster, so no need to use external registry services.