Helm Charts Deployment Guide¶
Overview¶
This document outlines the complete process for deploying applications using Helm Charts after setting up Terraform infrastructure. The deployment process utilizes Argo CD to continuously deliver and manage Kubernetes applications.
Workflow Diagram¶
The deployment process follows the workflow illustrated in the diagram below, showing the progression from prerequisites through final deployment.

Prerequisites¶
- Terraform infrastructure already set up
- Kubernetes cluster access
- kubectl CLI tool installed
- Git installed
- Access to the GitHub repository
Repository Setup¶
- Clone the deployment charts repository:
git clone <https://github.com/ovesorg/deployment-charts.git>
- Navigate to the appropriate environment directory:
- For development environment:
cd dev - For production environment:
cd prod
- For development environment:
Argo CD Installation¶
1. Create Namespace¶
Create a dedicated namespace for Argo CD:
kubectl create namespace argocd
2. Install Argo CD¶
Apply the Argo CD manifests to your cluster:
Ykubectl apply -n argocd -f <https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml>
3. Verify Installation¶
Check the status of Argo CD pods:
kubectl get pods -n argocd
Ensure all pods show a "Running" status.
4. Configure Local Access¶
Set up port forwarding to access Argo CD UI:
kubectl port-forward svc/argocd-server -n argocd 8080:443
5. Retrieve Admin Credentials¶
Get the initial admin password:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Application Namespace Setup¶
Create a namespace for ERM applications:
kubectl create namespace erm
Argo CD Configuration¶
Access the Argo CD UI at: https://localhost:8080
Repository Configuration¶
- Log in using:
- Username:
admin - Password: (generated password from step 5)
- Username:
- Configure Repository Access:
- Navigate to Settings
- Select "Add Repository"
- Choose "Connect Repository"
- Select the deployment charts repository
- Enter GitHub credentials when prompted
Application Deployment¶
Initial Setup - OVESBOT Server¶
- Create a new application:
- Click "New App" or "+ CREATE APPLICATION"
- Use lowercase letters for the application name
- Set namespace to
erm - Important: Deploy ovesbot-server first as it contains critical SSL data
- Configuration Guidelines:
- Ensure proper namespace selection
- Verify repository connection
- Review application settings before deployment
- Deploy and Sync:
- Click "Create"
- Sync the application
- Monitor deployment status
Deploying Additional Applications¶
After successful deployment of ovesbot-server:
- Follow the same application creation process
- Ensure dependencies are considered in deployment order
- Monitor application health and status through Argo CD UI
Best Practices¶
- Always verify application status after deployment
- Monitor logs for any deployment issues
- Follow proper naming conventions
- Maintain consistent namespace usage
- Regular backup of configurations
- Document any custom modifications
Troubleshooting¶
Common issues and solutions:
- If pods fail to start, check logs using:
kubectl logs -n <namespace> <pod-name> - For connectivity issues, verify network policies and firewall rules
- If synchronization fails, check repository access and credentials
Security Considerations¶
- Regularly rotate Argo CD admin password
- Use RBAC policies for access control
- Secure sensitive configuration data using Kubernetes secrets
- Monitor cluster access and audit logs
Support and Maintenance¶
- Regular updates of Helm charts
- Monitoring of application health
- Backup of critical configurations
- Documentation of changes and updates
Version Control¶
- Maintain version history of Helm charts
- Document all changes in a changelog
- Use semantic versioning for releases
- Keep backup of previous versions
Monitoring and Logging¶
Monitoring¶
- Set up monitoring for:
- Pod health
- Resource usage
- Application performance
- Network connectivity
Logging¶
- Configure centralized logging
- Set up log rotation
- Implement log analysis tools
- Maintain audit logs
Disaster Recovery¶
- Regular backup procedures
- Recovery plan documentation
- Testing recovery procedures
- Maintaining backup configurations