Skip to content

feat: add Helm chart for Kubernetes deployment - #280

Merged
ArtyomSavchenko merged 2 commits into
hcengineering:mainfrom
ledoent:feat/helm-chart
Mar 21, 2026
Merged

feat: add Helm chart for Kubernetes deployment#280
ArtyomSavchenko merged 2 commits into
hcengineering:mainfrom
ledoent:feat/helm-chart

Conversation

@dnplkndll

@dnplkndll dnplkndll commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Summary

Production-ready Helm chart for deploying Huly on Kubernetes with a single helm install command.

  • All 13 services with health probes, init containers for startup ordering, and configurable resources
  • S3 storage support — use external S3-compatible storage (rootBucket or bucketPrefix modes) alongside built-in MinIO
  • External infrastructure — replace built-in CockroachDB, Redpanda, or Elasticsearch with external instances
  • Secret auto-generation with persistence across helm upgrade (server secret, DB password, storage config)
  • Auth providers — Google, GitHub, and OIDC OAuth, plus signup toggle
  • NGINX ingress with cert-manager TLS and path-based routing
  • DRY templates — shared helpers for env vars, checksums, scheduling, and init containers
  • Optional AI bot service — chat, translation, and summarization powered by OpenAI. Gated behind aibot.enabled, includes built-in MongoDB (or external), auto-generated bot password, and full upstream env var parity (LOVE_ENDPOINT, model overrides for translate/summary/embedding)
  • Comprehensive README with quick start, values reference, upgrade guide, and troubleshooting
  • CI workflow — lint on PR, package and push to GHCR on merge
  • Upstream sync workflow — daily cron checks for new upstream commits and creates GitHub issues

Tested on K3s (Hetzner) with Hetzner S3 Object Storage and Google OAuth.

This complements the Kustomize manifests in #278 — the Helm chart adds templating, secret management, and configurable external infrastructure on top of the same service definitions.

Test plan

  • helm template renders without errors
  • helm install on a fresh cluster brings all 13 services to Ready
  • helm upgrade with --reuse-values preserves secrets
  • Switching storage.type=s3 updates STORAGE_CONFIG correctly
  • Disabling built-in infra (cockroach.enabled=false) with external URLs works
  • Google OAuth login flow works end to end
  • Init containers wait for cockroach/redpanda before app services start
  • aibot.enabled=true deploys aibot + MongoDB, pod starts and registers with account service
  • aibot.enabled=false (default) produces no aibot/mongodb resources
  • Missing secrets.openaiApiKey with aibot enabled fails with clear error
  • External MongoDB (mongodb.enabled=false + external.mongodb) routes correctly

🤖 Generated with Claude Code

@huly-github-staging

Copy link
Copy Markdown

Connected to Huly®: SELFH-279

@ArtyomSavchenko

ArtyomSavchenko commented Mar 19, 2026

Copy link
Copy Markdown
Member

Hi @dnplkndll
Thank you for the contribution.
Could you please check validation and parsing errors in CI?
https://github.com/hcengineering/huly-selfhost/actions/runs/23032724697/job/66909771777?pr=280
For example:

error validating "helm/huly/Chart.yaml": error validating data: kind not set; if you choose to ignore these errors, turn validation off with --validate=false
error parsing helm/huly/templates/account/deployment.yaml: error converting YAML to JSON: yaml: line 5: did not find expected node content
error parsing helm/huly/templates/account/service.yaml: error converting YAML to JSON: yaml: line 5: did not find expected node content

dnplkndll and others added 2 commits March 21, 2026 00:14
Comprehensive Helm chart for deploying Huly to Kubernetes:
- All core services (front, account, transactor, collaborator, etc.)
- Infrastructure (CockroachDB, Redpanda, Elasticsearch, MinIO)
- Optional AI bot with MongoDB
- Automated backup CronJobs to S3-compatible storage
- Configurable image registry and version pinning
- Auto-generated secrets with persistence across upgrades
- NGINX ingress with TLS via cert-manager
- CI workflow for lint, template validation, and OCI publish

Chart lives at helm/ (outside kube/) to avoid conflict with the
existing kubectl-based CI that recursively applies kube/*.yaml.

Signed-off-by: Daniel Kendall <dkendall@ledoweb.com>

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>
Deploy pod-github for bidirectional sync of issues, PRs, and comments
between Huly and GitHub. Gated behind githubIntegration.enabled (false
by default).

Adds:
- templates/github/deployment.yaml + service.yaml
- GITHUB_URL to configmap and front deployment
- GitHub App credentials to shared secret
- /_github ingress backend
- README documentation for GitHub integration and AI bot

Signed-off-by: Daniel Kendall <dkendall@ledoweb.com>

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>
@ArtyomSavchenko
ArtyomSavchenko merged commit 5dc03d0 into hcengineering:main Mar 21, 2026
3 checks passed
@ArtyomSavchenko

Copy link
Copy Markdown
Member

Hi @dnplkndll
Thank you for the contribution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants