Skip to content

feat(helm): init helm chart#1

Open
TartanLeGrand wants to merge 27 commits into
docmost:mainfrom
TartanLeGrand:feat/init-chart
Open

feat(helm): init helm chart#1
TartanLeGrand wants to merge 27 commits into
docmost:mainfrom
TartanLeGrand:feat/init-chart

Conversation

@TartanLeGrand

Copy link
Copy Markdown

This pull request introduces a Helm chart for deploying Docmost, transitioning the Kubernetes deployment from static YAML manifests to a configurable, templated Helm-based approach. The new chart includes templates for all major Kubernetes resources, supports optional integrations (Redis, PostgreSQL), and provides automated testing and linting via GitHub Actions. The previous monolithic app.yaml manifest is removed in favor of this modular, maintainable solution.

Helm Chart Introduction and Resource Templating:

  • Added a new Helm chart in charts/docmost/, including templates for Deployment, Service, Ingress, HTTPRoute, ServiceAccount, Secret, and autoscaling (hpa.yaml). These templates use values from values.yaml for flexible configuration. (charts/docmost/templates/deployment.yaml, charts/docmost/templates/service.yaml, charts/docmost/templates/ingress.yaml, charts/docmost/templates/httproute.yaml, charts/docmost/templates/serviceaccount.yaml, charts/docmost/templates/secret.yaml, charts/docmost/templates/hpa.yaml) [1] [2] [3] [4] [5] [6] [7]

  • Defined chart metadata, dependencies (Redis, PostgreSQL), and versioning in Chart.yaml, enabling optional database and cache integration via subcharts. (charts/docmost/Chart.yaml)

DevOps and Testing Enhancements:

  • Added a GitHub Actions workflow (test-lint.yml) to automate Helm chart linting, dependency setup, and installation tests on pull requests. This ensures chart integrity and deployment reliability. (.github/workflows/test-lint.yml)

  • Included a Helm test manifest (test-connection.yaml) to verify service connectivity post-deployment. (charts/docmost/templates/tests/test-connection.yaml)

Documentation and Chart Usability:

  • Added a comprehensive NOTES.txt template to guide users on accessing the deployed application based on their chosen ingress method (HTTPRoute, Ingress, NodePort, LoadBalancer, ClusterIP). (charts/docmost/templates/NOTES.txt)

  • Provided a .helmignore file to exclude unnecessary files from chart packaging. (charts/docmost/.helmignore)

Removal of Previous Static Manifests:

  • Removed the legacy app.yaml Kubernetes manifest, fully replacing it with Helm chart templates for improved maintainability and flexibility. (app.yaml)

@TartanLeGrand

Copy link
Copy Markdown
Author

@Philipinho

@QuentinBtd

Copy link
Copy Markdown

Hello @TartanLeGrand!

Great job on the implementation!

I have some suggestions regarding PostgreSQL and Redis configuration:

External Database Support
We should add support for external databases, similar to the approach used in the Netbox Helm chart:
https://github.com/netbox-community/netbox-chart/blob/4fbc936e6e67abed508ac3ef7217573163f0c601/charts/netbox/values.yaml#L1090

This would allow users to leverage external database solutions such as:

  • AWS RDS PostgreSQL
  • CloudNativePG
  • Other managed PostgreSQL services

External Redis Support
Similarly, we should provide configuration options for external Redis instances, whether managed (e.g., AWS ElastiCache, Redis Cloud) or self-hosted.

This would give users more flexibility in their deployment architectures and align with production best practices.

What do you think?

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