Skip to content

Deployment strategy

Vincent Neeb edited this page Jan 26, 2025 · 5 revisions

For more information take a look at the deployment repository (IaC).

Table of Contents
  1. 🌐 What We Use
  2. ⚙️ The Workflow
  3. Why This Approach?
  4. Sources

🌐 What We Use

Domain & VPS

We own the domain connect-u.site, hosted on a Virtual Private Server (VPS) provided by STRATO.

VPS Specifications:

  • CPU: 6 Cores
  • Memory: 23 GB
  • HDD: 360 GB

Kubernetes

Our application runs on a Kubernetes instance deployed on the VPS. We use K3s, a Lightweight Kubernetes distribution. K3s offers a highly available, production-grade Kubernetes environment, ideal for managing modern workloads.

ArgoCD

To ensure seamless deployment and lifecycle management, we use ArgoCD. This tool allows for:

  • Automated rollouts and rollbacks
  • Continuous monitoring and synchronization
  • Direct integration within the Kubernetes cluster for enhanced control

⚙️ The Workflow

Below is a visual overview of our workflow:

Workflow Diagram
inspired by this video

Step-by-Step Process:

  1. Trigger:

    • New release branches on the frontend or backend repositories automatically trigger a GitHub Action Workflow.
  2. Containerization:

    • The application is containerized using Docker and pushed to our container registry.
    • Image tags follow a branch-name-based naming convention.
  3. Deployment Repository Update:

    • The workflow clones the deployment repository and updates the image tag for the desired application.
    • Changes are committed and pushed back to the repository.
  4. ArgoCD Integration:

    • ArgoCD polls the deployment repository every 3 minutes for changes.
    • Upon detecting updates, ArgoCD automatically applies them to the Kubernetes cluster.

Container replacement

  1. Health Checks:
    • Before replacing old containers, health checks ensure the new containers are operational.
Healthcheck

Why This Approach?

  • Automation First: Minimize manual intervention with automated CI/CD pipelines.
  • Reliability: Health checks ensure stability during rollouts.
  • Scalability: Kubernetes and ArgoCD allow for efficient scaling and management of workloads.

Sources

Files and folders icons created by Ghozi Muhtarom - Flaticon

Clone this wiki locally