Skip to content

cotzo/chartpack

Repository files navigation

ChartPack

Artifact Hub Lint & Test Integration Tests Kubernetes >= 1.28 Helm v3 License

Chartpack

A single, opinionated Helm chart for deploying any Kubernetes application workload. Instead of maintaining separate charts per application, define your entire deployment through values.

Quick Start

helm install my-app ./chartpack -f values.yaml
containers:
  app:
    image:
      repository: nginx
      tag: "1.27"
    ports:
      http:
        port: 80

networking:
  services:
    http:
      ports:
        http:
          port: 80

This produces a Deployment with 1 replica, a ClusterIP Service, and a ServiceAccount.

Key Features

Any workload type -- Deployment, StatefulSet, DaemonSet, CronJob, Job, or Argo Rollout -- all from a single chart with workloadType.

Full networking stack -- Services, Ingresses, Gateway API routes, Istio VirtualServices, Envoy Gateway policies, NetworkPolicies, and cert-manager Certificates. OAuth2 proxy autowiring for ingresses and routes.

Observability built in -- Prometheus/VictoriaMetrics monitors, alerting rules (PrometheusRule/VMRule), and Grafana dashboards.

Event-driven autoscaling -- HPA v2, VPA, and KEDA (ScaledObject + ScaledJob) with any trigger.

Secrets management -- ConfigMaps, Secrets, External Secrets, and auto-generated passwords via ESO (ArgoCD-safe). Stakater Reloader annotations auto-generated per resource.

Lifecycle hooks -- Pre-install/pre-upgrade Jobs for DB migrations, schema setup, etc. Auto-generates both Helm and Argo CD hook annotations. Hooks share the main workload's pod settings (SA, volumes, secrets).

Argo CD native -- Auto sync waves for ordered deployment, sync options, and dual hook annotations. Works with Argo CD, Flux, and Helm CLI without configuration changes.

Schema validation -- Catches misconfigurations at install time: missing mounts, port mismatches, conflicting settings.

Documentation

Core

Guide Description
Workloads Deployment, StatefulSet, DaemonSet, CronJob, Job, Argo Rollout
Containers Container spec, env, mounts, health checks, init/sidecar containers
Configuration ConfigMaps, Secrets, External Secrets, auto-generated secrets
Persistence PVCs, StatefulSet volume claim templates, static PV binding
RBAC ServiceAccount, Roles, ClusterRoles, Bindings
Scheduling Node affinity, tolerations, topology spread, priority classes

Networking

Guide Description
Services & Ingresses ClusterIP, NodePort, LoadBalancer, headless services, Ingress
Gateway API HTTPRoute, GRPCRoute, TLSRoute, TCPRoute, UDPRoute, Envoy policies
Istio VirtualService, DestinationRule, PeerAuthentication, AuthorizationPolicy
Certificates cert-manager TLS certificates with auto-named secrets
Network Policies Ingress/egress rules, deny-all, namespace/pod/IP selectors
OAuth2 Proxy Sidecar and deployment mode, ingress/route autowiring

Autoscaling & Availability

Guide Description
Autoscaling HPA v2, VPA, KEDA (ScaledObject, ScaledJob), Pod Disruption Budgets

Observability

Guide Description
Monitoring ServiceMonitor, PodMonitor, VMServiceScrape, VMPodScrape
Alerting PrometheusRule, VMRule (alerting + recording rules)
Dashboards GrafanaDashboard (inline JSON, grafana.com, URL, ConfigMap, Jsonnet)

GitOps & Deployment

Guide Description
Argo CD Sync waves, sync options, hook annotations
Hooks Pre-install/pre-upgrade Jobs, Argo CD + Flux compatible

Advanced

Guide Description
Resource Quotas LimitRange, ResourceQuota
Extra Resources Escape hatch for arbitrary resources, global settings, pod settings

Requirements

  • Kubernetes >= 1.28
  • Helm >= 3.x

The core chart (Deployment, Service, Ingress, ConfigMap, Secret, HPA, PDB, RBAC) has zero external dependencies. Optional features require their respective operators:

Feature Operator Values key Version
Argo Rollouts Argo Rollouts workloadType: Rollout v1.6+
VPA Vertical Pod Autoscaler autoscaling.vpa.enabled v1.0+
KEDA autoscaling KEDA autoscaling.keda.enabled v2.12+
Gateway API Gateway API CRDs networking.gatewayApi.routes v1.2+
Envoy policies Envoy Gateway networking.gatewayApi.routes.*.policies.envoy v1.0+
Istio mesh Istio networking.istio.* v1.20+
TLS certificates cert-manager networking.certificates v1.12+
External Secrets ESO config.externalSecrets / config.secrets.*.generate v0.9+
Prometheus Prometheus Operator monitors / alerting (operator: prometheus) v0.70+
VictoriaMetrics VictoriaMetrics Operator monitors / alerting (operator: victoriametrics) v0.44+
Grafana dashboards Grafana Operator dashboards.grafana v5.22+

Examples

Tested configurations in ci/:

File Scenario
minimal-values.yaml Simplest deployment
deployment-values.yaml Deployment with ingress, HPA, monitoring
statefulset-values.yaml StatefulSet with persistence
daemonset-values.yaml DaemonSet with pod monitoring
cronjob-values.yaml Scheduled batch job
job-values.yaml One-shot job
rollout-values.yaml Argo Rollout with canary strategy
keda-values.yaml KEDA ScaledObject
scaledjob-values.yaml KEDA ScaledJob
full-values.yaml Every feature exercised

Values Reference

See the fully commented values.yaml for all available options.

License

Apache License 2.0 -- see LICENSE.

About

A single, opinionated Helm chart for deploying any Kubernetes application workload. Instead of maintaining separate charts per application, define your entire deployment through values.

Topics

Resources

License

Stars

Watchers

Forks

Packages