https://github.com/jassii/devops-automation
CI/CD Pipeline Deployment to Kubernetes using ArgoCD
https://github.com/jassii/devops-automation
argocd docker git java jenkins kubernetes sonarqube
Last synced: 5 months ago
JSON representation
CI/CD Pipeline Deployment to Kubernetes using ArgoCD
- Host: GitHub
- URL: https://github.com/jassii/devops-automation
- Owner: Jassii
- Created: 2024-07-28T17:18:35.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-09T06:10:23.000Z (almost 2 years ago)
- Last Synced: 2025-02-03T08:46:57.897Z (over 1 year ago)
- Topics: argocd, docker, git, java, jenkins, kubernetes, sonarqube
- Language: Java
- Homepage:
- Size: 15.4 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DevOps-Automation Project
# Assignment is mentioned below
## CI/CD Pipeline Development
## Objective:
Create a Continuous Integration/Continuous Deployment (CI/CD) pipeline using one of the specified tools (Jenkins, GitHub Actions, GitLab CI, AWS CodePipeline, GCP Cloud Build, or Azure Pipeline). The pipeline should automate the deployment of a containerized application to a Kubernetes cluster, ensuring that the application is accessible via a web browser.
# Pipeline Stages:
## Checkout Application Code:
Retrieve the latest code from the version control system (e.g., GitHub, GitLab, BitBucket).
## Code Analysis using SonarQube:
Analyze the code quality and security vulnerabilities using SonarQube.
(Optional) Fail the build if specified quality thresholds are not met.
## Build Docker Image:
Build a Docker image from the application code.
Tag the image appropriately.
## Push into Image Registry:
Push the built Docker image to a specified public or private container image registry (e.g., Docker Hub, AWS ECR, GCP Container Registry).
## Deploy into Kubernetes Cluster using ArgoCD:
Use ArgoCD to deploy the Docker image to a Kubernetes cluster.
The deployment should trigger automatically upon a new docker image tag being updated into deployment.yaml file.
## Kubernetes Exposition:
Configure Kubernetes services or an Ingress controller to expose the application. Ensure the application is accessible from the browser.
# Technical Specifications:
## Tools and Technologies:
Choose a CI/CD tool suitable for your infrastructure and familiarity.
Use Docker for containerization.
Kubernetes for orchestration.
ArgoCD for Kubernetes deployment synchronization.
SonarQube for code quality and security analysis.
Prerequisite:
1) Minikube setup on local -> [https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download](https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download)
2) Setup Jenkins, Sonar
3) Setup ArgoCD
Some good resource links:
1) Follow the below doc to setup ArgoCD
https://medium.com/@eftech93/installing-argo-cd-on-minikube-gitops-with-argo-cd-c451d4a06459
https://medium.com/@eftech93/deploying-a-chat-application-in-minikube-with-argo-cd-a-comprehensive-guide-a7e252fc38a0
For Best CICD Project (jenkins, sonarqube, docker, kubernetes, argocd, image updater):
https://www.youtube.com/watch?v=JGQI5pkK82w&t=2170s
Links to be opened
1) minikube start --force
2) http://localhost:8080/ -> jenkins
3) http://localhost:9000/projects -> sonar, make sure sonaruqube container is up
Command to make it up :
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092
5) kubectl port-forward svc/argocd-server -n argocd 8082:443
Good Content still need to be added