cowboysysop Helm Charts
repository·master·Indexed 41 days ago
https://github.com/cowboysysop/chartsA collection of Helm charts for deploying Kubernetes-native applications, including LLM frameworks, observability tools, and database management interfaces. Includes detailed installation, upgrade, and configuration guides for Katib (supporting version 2.0.0) and KFServing (supporting controller v0.6.1), with specific parameters for controllers, UI components, and MariaDB integration.
What's inside cowboysysop charts
- This Helm chart bootstraps a MariaDB replication cluster deployment on a Kubernetes cluster. It is packaged by Bitnami and provides a relational database with an SQL interface, including support for GIS and JSON features in recent versions.
Overview of Cowboy Sysop Charts
masterCowboy Sysop Charts is a collection of Helm charts for deploying various applications and tools on Kubernetes. The repository includes charts for LLM tools (Ollama, Flowise, Local-AI), observability (Grafana MCP, Kubeview), databases (Qdrant, Mongo-Express), and Kubernetes utilities (Vertical Pod Autoscaler, Kubebox).Use global variables for credentials in complex deployments
masterIn deployments with multiple dependent sub-charts that all need to connect to the same PostgreSQL instance, instead of repeating credentials for every sub-chart (e.g.,
subchart1.postgresql.auth.username), use global variables.Setting credentials under the
global.key makes them available to all sub-charts automatically.global.postgresql.auth.username=testuser global.postgresql.auth.password=testpass global.postgresql.auth.database=testdbRun Flowise in queue mode
masterTo enable queue mode in Flowise, you must configure the following parameters to ensure the architecture supports distributed task processing:
- Set
config.modetoqueue. - Enable the worker by setting
worker.enabledtotrue. - Enable a database. You must set one of the following to
true:mariadb.enabledorexternalMariadb.enabledpostgresql.enabledorexternalPostgresql.enabled
- Enable Redis by setting
redis.enabledorexternalRedis.enabledtotrue.
config: mode: queue worker: enabled: true redis: enabled: true postgresql: enabled: true- Set
Chart Quality and Testing Standards
masterAll charts in this repository undergo quality testing usingct(helm-chart-testing) across multiple Kubernetes versions (v1.24 to v1.27) usingkind(Kubernetes in Docker) as the test environment.Understand Redis Cluster Topologies
masterThe chart supports several deployment architectures via the
architectureparameter:- Master-Replicas (
architecture=replication): Deploys a Redis master StatefulSet and a replicas StatefulSet. Two services are exposed: a Master service (read-write) and a Replicas service (read-only). - Standalone (
architecture=standalone): Deploys a single Redis StatefulSet with one Master service (read-write). - Master-Replicas with Sentinel (
architecture=replication+sentinel.enabled=true): Deploys a master and replicas, but each pod includes a Redis Sentinel container. Sentinel handles automatic failover. Only one service is exposed (port 6379 for Redis, 26379 for Sentinel). To find the current master, use:SENTINEL get-master-addr-by-name <name>. - Multiple Masters (Experimental): Setting
master.count > 1. This is not designed for use withsentinel.enabled=true. To use this safely, it is recommended to setmaster.service.internalTrafficPolicy=Localand use pod anti-affinity to ensure no more than one master is deployed per node.
- Master-Replicas (
Choose between Redis Helm Chart and Redis Cluster Helm Chart
masterDepending on your data requirements and scaling needs, you should choose one of two different Helm charts:
Redis Helm Chart
- Topology: Master-replica cluster.
- High Availability: Supports enabling Redis Sentinel.
- Databases: Supports multiple databases.
- Writes: Single write point (single master).
- Best for: General purpose use cases where multiple databases are required.
Redis Cluster Helm Chart
- Topology: Redis Cluster topology with sharding.
- Databases: Supports only one database.
- Writes: Multiple write points (multiple masters).
- Best for: Large datasets that require horizontal scaling through sharding.
Configure Kroki sub-module parameters (BPMN, Diagrams.net, Excalidraw, Mermaid)
masterKroki allows enabling or disabling specific diagramming engines. Each engine can be configured independently with its own image, ports, and security settings.
Available Modules
- BPMN:
bpmn.enabled(Default:true), Port:8003 - Diagrams.net:
diagramsnet.enabled(Default:true), Port:8005 - Excalidraw:
excalidraw.enabled(Default:true), Port:8004 - Mermaid:
mermaid.enabled(Default:true), Port:8002
Module Configuration Pattern
Each module follows a similar configuration schema:
[module].enabled: Boolean to toggle the module.[module].image.*: Settings for the specific engine image.[module].containerPorts.http: The HTTP port for that specific engine.[module].securityContext: Specific security settings for the engine container.[module].extraEnvVars: Additional environment variables for the engine.
- BPMN:
Choose between Standalone and Replicaset architectures
masterThe MongoDB chart supports two primary deployment architectures, which you can select using the
architectureparameter:standalone: Installs a single MongoDB server (via a Deployment or StatefulSet). This instance cannot be scaled.replicaset: Deploys a set of MongoDB servers (one primary and N-1 secondaries) for high availability.
Replicaset Variations:
- Without Arbiter: Deploys a single StatefulSet containing N MongoDB servers. Each node has its own service for individual access; there is no service load balancing between nodes.
- With Arbiter: Deploys two StatefulSets: one for the N MongoDB servers and one for a single, non-scalable Arbiter node. This is useful for maintaining quorum in environments where a third full MongoDB instance cannot be hosted.
architecture="standalone" architecture="replicaset"Use existing secrets with ExistingSecret
masterThe
ExistingSecretschema allows you to use pre-existing Kubernetes secrets instead of having the chart create a new one. This is useful for sensitive data managed outside the chart.Key fields:
name: The name of the existing secret.keyMapping: An object that maps the expected key name used by the application to the actual key name inside the existing secret.
Implementation Example
To use this in your templates, you can leverage the
common.secrets.nameandcommon.secrets.keyhelpers.values.yaml
existingSecret: name: mySecret keyMapping: password: myPasswordKeyDeployment Template Snippet
env: - name: PASSWORD valueFrom: secretKeyRef: name: {{ include "common.secrets.name" (dict "existingSecret" .Values.existingSecret "context" $) }} key: {{ include "common.secrets.key" (dict "existingSecret" .Values.existingSecret "key" "password") }}# values.yaml name: mySecret keyMapping: password: myPasswordKeyCustomize primary and read replica services
masterIn a replicated configuration, you can customize services at different levels:
- Top-level
serviceobject: Defines services for both primary andreadReplicas. - Specific service objects: Use
primary.serviceorreadReplicas.servicefor deeper customization.
Specific objects take precedence over the top-level object. This allows the primary and read replicas to have different service types or different
clusterIPs/nodePorts. If usingtype: nodePortfor both, ensure you set differentnodePortsto avoid collisions.- Top-level
High Availability (HA) PostgreSQL
masterThe standard PostgreSQL chart is intended for single-instance deployments. If you require a High Availability (HA) configuration, you should use thepostgresql-hachart instead of this one.