Rework Helm chart and add local dev support - #558
Conversation
Rework the Helm chart around external datastores with two deployment
modes: a stateless Deployment (default) and a SQLite StatefulSet+PVC
mode gated by persistence.enabled, with guardrails preventing unsafe
multi-replica/autoscaling combinations.
Add HTTP /health and /health/ready probes, ConfigMap-rendered
config.yaml with ${VAR} expansion, chart or existing Secret via
envFrom, distroless-matched securityContext, plus Ingress, HPA, PDB,
NetworkPolicy, ServiceMonitor and config/secret checksum auto-reload.
Add CI workflows to lint, template, and kubeconform-validate the chart
and to publish it to the Docker Hub OCI registry on helm-v* tags.
Drop the previous Bitnami redis subchart and Gateway API HTTPRoute in
favor of external-only dependencies and Ingress-based routing.
Deploy a stdlib-only OpenAI-compatible mock upstream (ConfigMap-mounted Python server) via `make kind-up`, and point the dev OpenAI provider at it (OPENAI_BASE_URL) so /v1/models and /v1/chat/completions work end-to-end in kind without real provider credentials. Extends CI kubeconform validation and dev docs accordingly.
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This pull request introduces a comprehensive Helm chart for GoModel, along with a local Kubernetes development workflow using kind and Skaffold. It adds all necessary Helm templates, CI/CD automation for chart linting and publishing, and Makefile targets for local cluster management. The changes enable streamlined deployment, testing, and packaging of GoModel on Kubernetes, supporting both stateless (multi-replica) and persistent (SQLite) modes.
The most important changes are:
Helm Chart Introduction and Structure:
deploy/helm/gomodel, including templates, example values, documentation, and helper templates to support flexible, production-grade Kubernetes deployments. (deploy/helm/gomodel/Chart.yaml,README.md,templates/,ci/, etc.) [1] [2] [3] [4] [5] [6] [7] [8]CI/CD Automation for Helm:
.github/workflows/helm-ci.yml), and for packaging and publishing the chart to Docker Hub as an OCI artifact on tagged releases (.github/workflows/helm-release.yml). [1] [2]Local Kubernetes Development Workflow:
Dockerfile.dev, Makefile targets for cluster management (kind-up,kind-down,dev-k8s, etc.), and configuration for local dependencies and manifests. [1] [2] [3] [4]Configuration and Pre-commit Updates:
.pre-commit-config.yamlto match the new Helm chart directory structure for YAML checks.Repository Structure Adjustments:
helm/withdeploy/helm/, adding.dockerignoreentries, and updating deployment-related files.These changes provide a robust foundation for deploying, testing, and maintaining GoModel on Kubernetes in both development and production environments.