Skip to content

[TASK] Create Helm Charts for Email System Deployment #318

@Aravinda-HWK

Description

@Aravinda-HWK

What needs to be done?

📌 Overview

Design and implement Helm charts to deploy the complete email system on Kubernetes. This includes packaging all core services, configurations, and dependencies into reusable and configurable Helm charts to enable consistent, scalable, and automated deployments across environments.


🎯 Objectives

  • Containerize and orchestrate all email system components using Helm.
  • Provide a unified deployment mechanism for development, staging, and production environments.
  • Ensure configuration flexibility through values.yaml.
  • Enable modular and maintainable chart structure (umbrella + subcharts).

🧩 Scope

The Helm charts should cover (but not be limited to):

  • Mail Transfer Agent (e.g., Postfix)
  • DKIM service (OpenDKIM)
  • Spam filtering (Rspamd)
  • Authentication/Identity integration (OAuth/IdP)
  • Supporting services (if any: Redis, database, etc.)

🏗️ Key Requirements

1. Chart Structure

  • Create an umbrella chart for the entire email system.
  • Define individual subcharts for each component/service.
  • Ensure proper dependency management via Chart.yaml.

2. Configuration Management

  • Use values.yaml for all configurable parameters:

    • Domains and DKIM settings
    • Resource limits (CPU/memory)
    • Persistence (storage classes, sizes)
    • Service ports and exposure types
  • Support environment-specific overrides (e.g., values-dev.yaml, values-prod.yaml).


3. Kubernetes Resources

  • Define required resources for each component:

    • Deployments / StatefulSets
    • Services
    • ConfigMaps
    • Secrets
    • PersistentVolumeClaims
  • Ensure best practices for:

    • Security contexts
    • Resource limits
    • Health probes (liveness/readiness)

4. Persistence & Data Management

  • Enable persistent storage for stateful components (e.g., DKIM keys).

  • Support both:

    • Dynamically provisioned volumes
    • Existing PVCs

5. Security

  • Avoid privileged containers.
  • Use Kubernetes Secrets for sensitive data.
  • Apply least-privilege principles (ServiceAccounts, RBAC if needed).

6. Deployment & Lifecycle

  • Support:

    • helm install
    • helm upgrade
    • helm rollback
  • Include Helm hooks where necessary (e.g., test hooks, init jobs).


7. Observability & Reliability

  • Add health checks (readiness/liveness probes).
  • Ensure logs are accessible for debugging.
  • Support rolling updates on configuration changes.

8. Testing & Validation

  • Include Helm test hooks to validate service connectivity.
  • Verify inter-service communication (e.g., Postfix → OpenDKIM).

📦 Deliverables

  • Umbrella Helm chart for the email system

  • Subcharts for each component

  • Default values.yaml and environment-specific overrides

  • Documentation (README) with:

    • Installation steps
    • Configuration guide
    • DNS requirements (e.g., DKIM setup)

✅ Acceptance Criteria

  • Email system can be deployed with a single Helm command.
  • All components are correctly configured and interconnected.
  • DKIM signing works with configured domains.
  • Charts are reusable and configurable across environments.
  • Documentation is complete and clear.

🔗 Notes

  • Follow Helm best practices for naming, labels, and templating.
  • Ensure compatibility with Kubernetes cluster environments used in the project.
  • Design charts to be extensible for future components.

Metadata

Metadata

Labels

ImprovementThe functionality is working but can be improved.enhancementNew feature or requestsecurityTasks related to the security of the system.

Type

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions