Skip to content

Mono repo with three simple backend service & manifest kubernetes

Notifications You must be signed in to change notification settings

nvlannasik/devops-usecase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

107 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevOps Usecases

This repository contains the DevOps usecases that goal is to provide a CI/CD pipeline for a three simple backend services (User, Order, Product) that are deployed on a kubernetes cluster. The kubernetes cluster is a self hosted cluster on a microcluster of Raspberry Pi 4 Model B. The cluster is connect to the internet using Cloudflare Argo Tunnel. The CI/CD Pipeline is managed by Github Actions and ArgoCD.

Project Structure

  • .github/: contains github actions workflow.
  • App/: contains the backend services.
    • order-nodejs/: contains the order service written in nodejs.
    • product-nodejs/: contains the product service written in nodejs.
    • user-go/: contains the user service written in golang.
  • image/: contains image for Markdown documentation.
  • manifest/: contains the kubernetes manifest for the backend services.
    • apps/: contains the kubernetes manifest for the backend services.
    • database/: contains the kubernetes manifest for the mongodb database.
    • openapi/: contains the kubernetes manifest for the openapi deployment.

Tech Stack

  • Kubernetes (k3s Self Hosted on Microcluster of Raspberry Pi 4 Model B)
  • Docker Registry (https://hub.docker.com/u/nvlannasik)
  • ArgoCD
  • Github Actions
  • NodeJS (Order Service & Product Service)
  • Golang (User Service)
  • MongoDB
  • Cloudflare
  • Nginx Ingress Controller
  • Cert Manager
  • Longhorn
  • MetalLB

Architecture

The CI/CD Pipeline

CI/CD Pipeline is managed by Github Actions. The pipeline is triggered when there is a release tag pushed to the repository. The pipeline includes the following steps:

  • Static Code Analysis
  • Unit Testing
  • Integration Testing
  • e2e Testing
  • Build & Push Docker Image to Docker Registry
  • Change Image Tag on Kubernetes Manifest
  • Sync Kubernetes Manifest to Kubernetes Cluster using ArgoCD

Github Action

ArgoCD

The Kubernetes Cluster

The kubernetes cluster is a self hosted cluster on a microcluster of Raspberry Pi 4 Model B. The cluster is managed by ArgoCD and the ci/cd pipeline is managed by Github Actions.

Kubernetes Cluster Kubernetes Cluster Kubernetes Cluster

Additional Technical Documentation

Author

About

Mono repo with three simple backend service & manifest kubernetes

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •