Skip to content

MrBomber0x001/instabug-devops-intern-2023

Repository files navigation

Wow Such Program

This program is very simple, it connects to a MySQL database based on the following env vars:

  • MYSQL_HOST
  • MYSQL_USER
  • MYSQL_PASS
  • MYSQL_PORT

And exposes itself on port 9090:

  • On /healthcheck it returns an OK message,
  • On GET it returns all recorded rows.
  • On POST it creates a new row.
  • On PATCH it updates the creation date of the row with the same ID as the one specified in query parameter id

PoC

Documentation files:

Bug Solution and Application Status ✅

Health Check ✅

ArgoCD ✅

Jenkins Pipeline ✅

Image Pushed to Docker Registery ✅

Architecture Overview

Here's an overview of the Architecture

Tools used

  • Docker
  • Kubernetes
  • Go
  • Minikube
  • Helm
  • wait-for
  • Jenkins
  • ArgoCD

Logs

  • Docker

    • Dockerfile
    • Docker Compose
    • Testing and running the application
  • Setup Jenkins

    • Installing and building tools
    • creating Github WebHook and Use Github Credentials in Jenkins
    • creating the docker hub credentials for docker inside jenkins
    • Finish the pipeline
      • If error was in the build [report it]
      • unless, push it to dockerhub
      • use credentials as environment variables for security best practices
      • setup build status for Github repo
  • Helm

    • Add autoscaling manifest for number of replicas.
  • Add argocd app that points to helm manifests to apply gitops concept.

  • Secure your containers as much as you can.

    • Choosed lightweight and secure docker image
    • Run Code and Container security analysis using Synk
    • Added Additional stage in the Jenkins Pipeline before pushing to Docker repo
  • Fix a bug in the code that would appear when you test the api

About

GitOps pipeline for deploying Go web server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published