Skip to content

This project sets up a CI/CD pipeline using Jenkins, Docker, and Kubernetes to automate the building, testing, and deployment of applications. It integrates tools like SonarQube for code quality analysis and Helm for Kubernetes deployments. The pipeline is defined in a Jenkinsfile, ensuring consistent and scalable application delivery.

Notifications You must be signed in to change notification settings

ItsNotRohit02/Jenkins-Kubernetes-CI-CD-Pipeline

Repository files navigation

Jenkins Kubernetes Docker CI/CD Pipeline Setup

Project Overview:

This project demonstrates the implementation of a CI/CD pipeline using Jenkins, Docker, Kubernetes, and associated tools. The primary goal is to automate the building, testing, and deployment of applications in a scalable Kubernetes environment. The infrastructure is configured using Vagrant VMs and tools like Kops, Helm, and SonarQube, enabling a comprehensive, automated, and repeatable deployment process.

1. Infrastructure Setup:

  • Vagrant VMs: Three VMs are provisioned using Vagrant for Jenkins, SonarQube, and Kops. Each VM is configured with specific roles and scripts to facilitate CI/CD pipeline tasks.

2. Jenkins Setup:

  • Software Installation: Jenkins is set up with JDK, Maven, and Docker to handle the build and deployment processes.
  • Integrations: Jenkins is integrated with SonarQube for code quality analysis and DockerHub for managing Docker images.
  • Plugins: Essential Jenkins plugins are installed to support various stages of the pipeline, including Docker and Kubernetes plugins.

3. SonarQube Setup:

  • Quality Gate: A custom quality gate is configured to enforce code quality standards.
  • WebHooks: SonarQube is configured with webhooks to integrate seamlessly with Jenkins and trigger actions based on code quality results.

4. Kops Setup:

  • AWS Configuration: SSH keys, AWS S3 buckets, IAM users, and Route 53 DNS settings are configured to manage the Kubernetes cluster.
  • Helm: Helm is installed to manage Kubernetes deployments via charts.
  • GitHub Webhooks: Webhooks are set up to trigger builds in Jenkins based on changes in the GitHub repository.

5. Helm Charts:

  • Chart Creation: Helm charts are created and tested to streamline Kubernetes deployments, ensuring that applications are deployed consistently across different environments.

6. Jenkins Pipeline:

  • Pipeline Definition: A comprehensive Jenkinsfile defines the CI/CD pipeline, including stages for building, testing, static code analysis, Docker image creation, and Kubernetes deployment.
  • Key Stages:
    • Build: Maven is used to compile the application.
    • Test: Automated tests are executed.
    • Checkstyle Analysis: Code is analyzed for adherence to coding standards.
    • SonarQube Analysis: The code undergoes a thorough quality check.
    • Docker Image: A Docker image of the application is built and pushed to DockerHub.
    • Kubernetes Deployment: The application is deployed to a Kubernetes cluster using Helm.

7. Kubernetes Cluster:

  • Cluster Management: A Kubernetes cluster is created and managed using Kops. Validation and cleanup procedures are implemented to ensure cluster integrity.

Key Technologies:

  • Jenkinsfile: Defines the pipeline stages and the CI/CD process.
  • Dockerfile: Specifies the Docker image build process for the application.
  • Kubernetes Manifests: Deployment and service definitions for various components such as the database, Memcached, RabbitMQ, and the application itself.

About

This project sets up a CI/CD pipeline using Jenkins, Docker, and Kubernetes to automate the building, testing, and deployment of applications. It integrates tools like SonarQube for code quality analysis and Helm for Kubernetes deployments. The pipeline is defined in a Jenkinsfile, ensuring consistent and scalable application delivery.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published