Skip to content

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.

Workflow

Prerequisites

  • Terraform infrastructure already set up
  • Kubernetes cluster access
  • kubectl CLI tool installed
  • Git installed
  • Access to the GitHub repository

Repository Setup

  1. Clone the deployment charts repository:
git clone <https://github.com/ovesorg/deployment-charts.git>
  1. Navigate to the appropriate environment directory:
    • For development environment: cd dev
    • For production environment: cd prod

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

  1. Log in using:
    • Username: admin
    • Password: (generated password from step 5)
  2. 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

  1. 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
  2. Configuration Guidelines:
    • Ensure proper namespace selection
    • Verify repository connection
    • Review application settings before deployment
  3. Deploy and Sync:
    • Click "Create"
    • Sync the application
    • Monitor deployment status

Deploying Additional Applications

After successful deployment of ovesbot-server:

  1. Follow the same application creation process
  2. Ensure dependencies are considered in deployment order
  3. 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