<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Swapnil Suresh Mohite</title>
    <description>The latest articles on DEV Community by Swapnil Suresh Mohite (@swapi123).</description>
    <link>https://dev.to/swapi123</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1157839%2F13f16c0e-5c32-4752-ae3f-49d2af289132.jpeg</url>
      <title>DEV Community: Swapnil Suresh Mohite</title>
      <link>https://dev.to/swapi123</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/swapi123"/>
    <language>en</language>
    <item>
      <title>🚀 Just Launched — My Personal Cloud &amp; DevOps Portfolio! 🌩️</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Sun, 26 Oct 2025 18:14:13 +0000</pubDate>
      <link>https://dev.to/swapi123/just-launched-my-personal-cloud-devops-portfolio-20ni</link>
      <guid>https://dev.to/swapi123/just-launched-my-personal-cloud-devops-portfolio-20ni</guid>
      <description>&lt;p&gt;After months of building, debugging, and fine-tuning…&lt;br&gt;
I’ve finally created a space that reflects my DevOps journey, projects, and passion for automation ⚙️&lt;/p&gt;

&lt;p&gt;🔗 Live Now: &lt;a href="https://swapnil.mohite.in/" rel="noopener noreferrer"&gt;https://swapnil.mohite.in/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Tech Behind the Build:&lt;br&gt;
🧠 Frontend: React (Vite) + TailwindCSS — fast &amp;amp; beautiful&lt;br&gt;
🐍 Backend: Python (Flask) — clean, reliable, and API-driven&lt;br&gt;
☁️ Hosting: Vercel (@vercel/python runtime) — smooth deployments&lt;br&gt;
🐳 Infra Experiments: Docker + Terraform — because DevOps never stops!&lt;br&gt;
🔐 Contact Form: SMTP-secured — production-ready communication&lt;/p&gt;

&lt;p&gt;📂 What You’ll Find Inside:&lt;br&gt;
✨ Real-world projects → Cloud Migration, GitOps, CI/CD Pipelines&lt;br&gt;
🚀 Hands-on tools → AWS | Docker | Kubernetes | Terraform | Ansible | GitHub Actions&lt;br&gt;
⚡ Clean UI + Fast Performance + Cloud-native mindset&lt;/p&gt;

&lt;p&gt;💬 I’d love your thoughts!&lt;br&gt;
If it inspires you —&lt;br&gt;
❤️ Drop a like&lt;br&gt;
💭 Leave a comment&lt;br&gt;
🔁 Share it with your network&lt;br&gt;
🤝 Let’s connect &amp;amp; collaborate!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8lfpzcandlwtzdd5azt6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8lfpzcandlwtzdd5azt6.png" alt=" " width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  DevOps #Cloud #AWS #Flask #React #Vite #TailwindCSS #Docker #Terraform #Vercel #Portfolio #Kubernetes #SRE #CICD #CloudEngineer #DevOpsEngineer #WebDev #OpenSource #TechCommunity
&lt;/h1&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>DevOps Shack: Multi-Cluster CI/CD DevOps Project 🌟</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Wed, 28 Aug 2024 12:04:18 +0000</pubDate>
      <link>https://dev.to/swapi123/devops-shack-multi-cluster-cicd-devops-project-3llf</link>
      <guid>https://dev.to/swapi123/devops-shack-multi-cluster-cicd-devops-project-3llf</guid>
      <description>&lt;p&gt;🚀 Introduction&lt;br&gt;
A multi-cluster CI/CD pipeline further enhances resilience and scalability, allowing seamless management across different environments. This guide will walk you through setting up a multi-cluster CI/CD pipeline using GitHub Actions—from environment setup to full pipeline implementation. Let's get started! 💻✨&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/swapnil-m-2424sm/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/SwapnilM24/Multi-Cluster_Project" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7h33g6jvbxpd222fgfi3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7h33g6jvbxpd222fgfi3.gif" alt=" " width="760" height="950"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔧 Prerequisites&lt;br&gt;
Before diving into the setup, make sure you have the following ready:&lt;/p&gt;

&lt;p&gt;✅ GitHub account and repository for your project.&lt;br&gt;
✅ Docker installed on your local machine.&lt;br&gt;
✅ Kubernetes clusters set up on Amazon EKS.&lt;br&gt;
✅ Basic understanding of CI/CD and Kubernetes.&lt;br&gt;
✅ Necessary permissions for creating and managing GitHub Actions workflows.&lt;br&gt;
With these in place, you’re all set to begin! 🚀🔗&lt;/p&gt;

&lt;p&gt;🛠️ Setting Up the Environment&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setting Up the Runner for GitHub Actions
First, let's configure a self-hosted runner to execute your CI/CD workflows.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Create a GitHub Repository:&lt;/p&gt;

&lt;p&gt;🌐 Navigate to GitHub and create a new repository for your project.&lt;br&gt;
💻 Clone the repository to your local machine to start working on it.&lt;br&gt;
Configure GitHub Actions Runner:&lt;/p&gt;

&lt;p&gt;🛠️ Go to your repository on GitHub, click on Settings &amp;gt; Actions &amp;gt; Runners.&lt;br&gt;
🆕 Click New self-hosted runner and follow the instructions to set it up on your machine or server.&lt;br&gt;
With the runner configured, your workflows can now be executed in a dedicated environment, giving you better control over the CI/CD process. 🖥️🔄&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configuring GitHub Repository
Next, let's set up your GitHub repository for smooth integration with GitHub Actions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Repository Setup:&lt;/p&gt;

&lt;p&gt;📂 Initialize your repository with essential files like README, .gitignore, and LICENSE.&lt;br&gt;
🚀 Push your initial codebase to GitHub to start building the CI/CD pipeline.&lt;br&gt;
Create GitHub Actions Workflow:&lt;/p&gt;

&lt;p&gt;📁 In your repository, create a .github/workflows directory to host your workflow files.&lt;br&gt;
📝 Create a new YAML file (e.g., ci-cd-pipeline.yml) to define your workflow.&lt;br&gt;
This setup lays the foundation for a structured and efficient CI/CD pipeline. 🗂️🔧&lt;/p&gt;

&lt;p&gt;💻 CI/CD Pipeline Design&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Continuous Integration (CI)
CI automatically builds and tests code changes to catch issues early.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Define CI Workflow:&lt;/p&gt;

&lt;p&gt;📝 Open your ci-cd-pipeline.yml file and define the stages for the CI process.&lt;br&gt;
Testing and Static Code Analysis:&lt;/p&gt;

&lt;p&gt;🔍 Extend your workflow to include testing and static code analysis with tools like JUnit and SonarQube.&lt;br&gt;
Example YAML configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: CI Pipeline

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: self-hosted
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: '11'

      - name: Build with Maven
        run: mvn clean install

      - name: Run tests
        run: mvn test

      - name: SonarQube Scan
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        run: mvn sonar:sonar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures every code change is automatically built and tested, catching issues early. 🧪✔️&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Continuous Deployment (CD)
CD automates the deployment of code changes to production environments.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Define CD Workflow:&lt;/p&gt;

&lt;p&gt;🚀 Extend your CI workflow to include deployment stages.&lt;br&gt;
Example YAML configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Deploy to Kubernetes
  uses: actions/kubernetes-action@v1.0.0
  with:
    kubeconfig: ${{ secrets.KUBECONFIG }}
    manifests: |
      k8s/deployment.yaml
      k8s/service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By automating the deployment process, you ensure that every code change passing CI is deployed to the right environment. 🌐🚀&lt;/p&gt;

&lt;p&gt;🔒 Security and Quality Assurance&lt;br&gt;
Ensuring security and code quality is crucial in any CI/CD pipeline.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Static Code Analysis
Integrate SonarQube to detect code quality issues, bugs, and security vulnerabilities.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Integrate SonarQube:&lt;/p&gt;

&lt;p&gt;🌐 Set up a SonarQube server or use a hosted service.&lt;br&gt;
🔗 Create a SonarQube project and obtain the authentication token.&lt;br&gt;
Example configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: SonarQube Scan
  env:
    SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
  run: mvn sonar:sonar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures your code meets quality and security standards before deployment. 🛡️🔍&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Vulnerability Scanning
Integrate Aqua Trivy to scan Docker images for known vulnerabilities.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Integrate Aqua Trivy:&lt;/p&gt;

&lt;p&gt;🛠️ Install Trivy for container image scanning.&lt;br&gt;
Example YAML configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Trivy Scan
  run: |
    docker pull your-docker-repo/your-app:${{ github.sha }}
    trivy image --severity HIGH,CRITICAL your-docker-repo/your-app:${{ github.sha }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📦 Artifact Management&lt;br&gt;
Build, tag, and store Docker images for deployment.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Docker Image Creation and Tagging
Build Docker Images:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🛠️ Define a stage in your workflow to build Docker images.&lt;br&gt;
Tag Docker Images:&lt;/p&gt;

&lt;p&gt;🏷️ Tag images for different environments (e.g., dev, prod).&lt;br&gt;
Push Docker Images:&lt;/p&gt;

&lt;p&gt;📤 Push tagged Docker images to a registry like Docker Hub or Amazon ECR.&lt;br&gt;
This ensures consistent and reliable deployments across environments. 🐳📦&lt;/p&gt;

&lt;p&gt;🌍 Deployment Strategy&lt;br&gt;
Deploy applications to multiple clusters using Kubernetes and Amazon EKS.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Multi-Cluster Kubernetes Deployment
Kubernetes Configuration:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;📜 Create Kubernetes manifests for your application and store them in your GitHub repository.&lt;br&gt;
Deploy to Multiple Clusters:&lt;/p&gt;

&lt;p&gt;🌐 Configure your workflow to deploy to multiple Kubernetes clusters.&lt;br&gt;
Example YAML configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Deploy to Kubernetes
  uses: actions/kubernetes-action@v1.0.0
  with:
    kubeconfig: ${{ secrets.KUBECONFIG }}
    manifests: |
      k8s/deployment.yaml
      k8s/service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📈 Monitoring and Logging&lt;br&gt;
Effective monitoring and logging are essential for smooth operations.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;GitHub Actions Monitoring
Monitor GitHub Actions:
📊 Use the GitHub Actions dashboard to monitor workflow runs and logs.&lt;/li&gt;
&lt;li&gt;Trivy Post-Deployment Scanning
Continuous Vulnerability Scanning:
🕵️ Schedule periodic scans of deployed images using Trivy to maintain security.
This helps in quickly identifying and addressing any issues in the CI/CD pipeline. 🛡️👀&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🛠️ Issue Tracking and Team Collaboration&lt;br&gt;
Integrate tools for efficient issue tracking and team collaboration.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Integrating Jira
Set Up Jira Integration:
🔗 Connect your GitHub repository to Jira for seamless issue tracking and task management.&lt;/li&gt;
&lt;li&gt;Enhancing Team Collaboration
Use Collaboration Tools:
💬 Leverage tools like Slack for real-time communication and CI/CD notifications.
Example YAML configuration for Slack notifications:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Notify Slack
  uses: slackapi/slack-github-action@v1.16.0
  with:
    slack-message: 'Build ${{ github.run_id }} has completed'
    channel-id: 'your-channel-id'
    slack-token: ${{ secrets.SLACK_TOKEN }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures your team stays informed and productive. 🤝💬&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxt4k4meveamuldk2hgb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxt4k4meveamuldk2hgb.png" alt=" " width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmec9a9fvv1d9qyp91gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmec9a9fvv1d9qyp91gm.png" alt=" " width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm17ie58lvlb40k1tzniu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm17ie58lvlb40k1tzniu.png" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43mmttghssszi91tfk1b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43mmttghssszi91tfk1b.png" alt=" " width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lejckazih426pguepnu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lejckazih426pguepnu.png" alt=" " width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmdpw2ppwju6l8dxbb58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmdpw2ppwju6l8dxbb58.png" alt=" " width="800" height="219"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rf603krk8btjiau9126.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rf603krk8btjiau9126.png" alt=" " width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wc04cap0xmkt3to2hb2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wc04cap0xmkt3to2hb2.png" alt=" " width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎯 Conclusion&lt;br&gt;
Setting up a multi-cluster CI/CD pipeline with GitHub Actions involves careful planning and configuration. By following this guide, you can establish a robust, scalable, and secure CI/CD pipeline that enhances your software development process. Happy DevOps-ing! 🚀🔧&lt;/p&gt;

&lt;h1&gt;
  
  
  DevOps #CI_CD #Kubernetes #GitHubActions #MultiCluster #Automation #CloudComputing #Docker #AmazonEKS #Security #DevOpsShack
&lt;/h1&gt;

</description>
      <category>kubernetes</category>
      <category>webdev</category>
      <category>devops</category>
      <category>git</category>
    </item>
    <item>
      <title>Comprehensive DevSecOps Pipeline: Secure &amp; Scalable Kubernetes Deployment with AWS EKS, ArgoCD and Jenkins Integration</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Sun, 18 Aug 2024 12:43:00 +0000</pubDate>
      <link>https://dev.to/swapi123/comprehensive-devsecops-pipeline-secure-scalable-kubernetes-deployment-with-aws-eks-argocd-and-jenkins-integration-3l7g</link>
      <guid>https://dev.to/swapi123/comprehensive-devsecops-pipeline-secure-scalable-kubernetes-deployment-with-aws-eks-argocd-and-jenkins-integration-3l7g</guid>
      <description>&lt;p&gt;This is a detailed guide for setting up an Advanced End-to-End DevSecOps Kubernetes Three-Tier Project using AWS EKS, ArgoCD, Prometheus, Grafana, and Jenkins. Below is the structured content for each step, allowing for comprehensive deployment, security, and monitoring of a scalable application environment. This project introduces a robust three-tier architecture on AWS using Kubernetes, emphasizing DevOps best practices and security measures.&lt;br&gt;
&lt;a href="https://github.com/SwapnilM24/End-to-End-Kubernetes-Three-Tier-DevSecOps-Project/tree/master" rel="noopener noreferrer"&gt;GitHub Repository:&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/swapnil-m-2424sm/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4e7x3e4zokvls0xx4vz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4e7x3e4zokvls0xx4vz.gif" alt=" " width="760" height="1013"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome to the End-to-End DevSecOps Kubernetes Project! This project will guide you through deploying, securing, and monitoring a three-tier application using AWS EKS and several DevSecOps tools. You'll gain hands-on experience with Infrastructure as Code (IaC), continuous integration, and continuous delivery (CI/CD) pipelines, security scanning, and monitoring, ensuring a secure and reliable deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;The project covers these key areas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IAM User Setup&lt;/strong&gt;&lt;br&gt;
Create an IAM user on AWS with Administrator access for deployment and management activities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure as Code (IaC)&lt;/strong&gt;&lt;br&gt;
Use Terraform and AWS CLI to deploy a Jenkins server on an EC2 instance in AWS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jenkins Server Configuration&lt;/strong&gt;&lt;br&gt;
Install and configure Jenkins, Docker, Sonarqube, Terraform, Kubectl, AWS CLI, and Trivy on the Jenkins server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EKS Cluster Deployment&lt;/strong&gt;&lt;br&gt;
Use eksctl commands to create an Amazon EKS cluster on AWS, a managed Kubernetes service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Load Balancer Configuration&lt;/strong&gt;&lt;br&gt;
Configure an AWS Application Load Balancer (ALB) for the EKS cluster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon ECR Repositories&lt;/strong&gt;&lt;br&gt;
Create private repositories for frontend and backend Docker images on Amazon Elastic Container Registry (ECR).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ArgoCD Installation&lt;/strong&gt;&lt;br&gt;
Install and configure ArgoCD for continuous delivery and GitOps practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sonarqube Integration&lt;/strong&gt;&lt;br&gt;
Integrate Sonarqube into the DevSecOps pipeline for code quality analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jenkins Pipelines&lt;/strong&gt;&lt;br&gt;
Set up Jenkins pipelines for deploying backend and frontend code to the EKS cluster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring Setup&lt;/strong&gt;&lt;br&gt;
Implement monitoring for the EKS cluster using Helm, Prometheus, and Grafana.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ArgoCD Application Deployment&lt;/strong&gt;&lt;br&gt;
Deploy the three-tier application using ArgoCD, covering database, backend, frontend, and ingress components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DNS Configuration&lt;/strong&gt;&lt;br&gt;
Configure DNS settings to make the application accessible via custom subdomains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Persistence&lt;/strong&gt;&lt;br&gt;
Implement persistent volume and persistent volume claims for database pods to ensure data persistence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion and Monitoring&lt;/strong&gt;&lt;br&gt;
Summarize key achievements and monitor the EKS cluster’s performance using Grafana.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;br&gt;
Before beginning this project, ensure you have:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An AWS account with permissions to create resources.&lt;br&gt;
Terraform and AWS CLI installed on your local machine.&lt;br&gt;
Basic familiarity with &lt;em&gt;Kubernetes, Docker, Jenkins, and DevOps principles.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Step-by-Step Execution&lt;br&gt;
Step 1: Create an IAM User and Generate AWS Access Key&lt;br&gt;
Navigate to the AWS IAM service and create a new IAM user with AdministratorAccess.&lt;br&gt;
Generate the AWS Access Key and download the CSV file for future reference.&lt;/p&gt;

&lt;p&gt;Step 2: Install Terraform &amp;amp; AWS CLI&lt;br&gt;
Install Terraform and AWS CLI using provided scripts.&lt;br&gt;
Configure both tools with the access key generated in Step 1.&lt;/p&gt;

&lt;p&gt;Step 3: Deploy the Jenkins Server Using Terraform&lt;br&gt;
Clone the Git repository and modify the backend.tf file for Terraform configurations.&lt;br&gt;
Initialize and apply Terraform to create the Jenkins server on AWS.&lt;/p&gt;

&lt;p&gt;Step 4: Configure Jenkins&lt;br&gt;
Log into the Jenkins server and install Jenkins, Docker, Sonarqube, Terraform, Kubectl, AWS CLI, and Trivy.&lt;br&gt;
Access the Jenkins dashboard via the public IP and port 8080.&lt;/p&gt;

&lt;p&gt;Step 5: Deploy the EKS Cluster Using eksctl&lt;br&gt;
Install AWS Credentials and Pipeline plugins in Jenkins.&lt;br&gt;
Configure AWS credentials in Jenkins and create an EKS cluster using eksctl commands.&lt;/p&gt;

&lt;p&gt;Step 6: Configure Load Balancer on EKS&lt;br&gt;
Create IAM policies and an OIDC provider for the Load Balancer.&lt;br&gt;
Deploy the AWS Load Balancer Controller and validate its deployment.&lt;/p&gt;

&lt;p&gt;Step 7: Create Amazon ECR Repositories&lt;br&gt;
Create private repositories on Amazon ECR for the frontend and backend.&lt;br&gt;
Configure ECR locally on the Jenkins server to push Docker images.&lt;/p&gt;

&lt;p&gt;Step 8: Install &amp;amp; Configure ArgoCD&lt;br&gt;
Create namespaces for ArgoCD and the three-tier application.&lt;br&gt;
Install ArgoCD, expose it as a LoadBalancer, and access the dashboard via the LoadBalancer DNS.&lt;/p&gt;

&lt;p&gt;Step 9: Configure Sonarqube for DevSecOps Pipeline&lt;br&gt;
Access Sonarqube on the Jenkins server and create tokens and webhooks for code quality checks.&lt;br&gt;
Configure Sonarqube projects for frontend and backend code in Jenkins pipelines.&lt;/p&gt;

&lt;p&gt;Step 10: Install Required Plugins and Configure Jenkins&lt;br&gt;
Install necessary Jenkins plugins for Docker, NodeJS, OWASP Dependency-Check, and SonarQube Scanner.&lt;br&gt;
Configure Jenkins with SonarQube, Docker, and other tools to support CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;Step 11: Setup Monitoring for EKS Cluster&lt;br&gt;
Install Prometheus and Grafana using Helm.&lt;br&gt;
Access the Prometheus and Grafana dashboards via LoadBalancer DNS and configure monitoring.&lt;/p&gt;

&lt;p&gt;Step 12: Deploy the Three-Tier Application Using ArgoCD&lt;br&gt;
Configure the private repository in ArgoCD.&lt;br&gt;
Deploy the application components (database, backend, frontend) using ArgoCD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
The project concludes with the successful deployment of a secure, monitored three-tier application using advanced DevSecOps practices. The use of Jenkins, ArgoCD, Prometheus, and Grafana on AWS EKS showcases the integration of continuous deployment, security scanning, and monitoring in a cloud-native environment. Explore and monitor the application performance using Grafana dashboards, ensuring the environment's stability and security.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/SwapnilM24/End-to-End-Kubernetes-Three-Tier-DevSecOps-Project/tree/master" rel="noopener noreferrer"&gt;GitHub Repository:&lt;/a&gt;&lt;br&gt;
 &lt;a href="https://www.linkedin.com/in/swapnil-m-2424sm/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo17jfaowuhftd9ts9kv2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo17jfaowuhftd9ts9kv2.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2bhir81bgpsh08e8pr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2bhir81bgpsh08e8pr2.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzb5enjza3117c9vpjww7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzb5enjza3117c9vpjww7.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hqlxgve2kk0t0sczcs6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hqlxgve2kk0t0sczcs6.png" alt=" " width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  DevSecOps #Kubernetes #AWS #EKS #ArgoCD #Jenkins #Prometheus #Grafana #CloudSecurity #CICD #Automation #InfrastructureAsCode #CloudComputing #Containerization #DevOps
&lt;/h1&gt;

&lt;p&gt;This project guide will give you a comprehensive understanding of deploying and managing applications in a Kubernetes environment using DevSecOps principles.&lt;/p&gt;

</description>
      <category>devsecops</category>
      <category>devops</category>
      <category>aws</category>
      <category>jenkins</category>
    </item>
    <item>
      <title>Edureka DevOps Certification Project</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Fri, 16 Aug 2024 11:24:15 +0000</pubDate>
      <link>https://dev.to/swapi123/edureka-devops-certification-project-3kb5</link>
      <guid>https://dev.to/swapi123/edureka-devops-certification-project-3kb5</guid>
      <description>&lt;p&gt;I'm thrilled to share my journey through the Edureka DevOps Certification Project, where I tackled a real-world challenge for Abstergo Corp., a retail company looking to streamline their deployment process. This project involved building an end-to-end CI/CD pipeline that automated everything from code integration to deployment on a Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb5av6opfnb9v9re22hd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb5av6opfnb9v9re22hd.gif" alt=" " width="898" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key Achievements:&lt;br&gt;
Continuous Integration: Automated Jenkins pipelines triggered by GitHub commits.&lt;br&gt;
Containerization: Dockerized applications, with images pushed to Docker Hub.&lt;br&gt;
Continuous Deployment: Automated deployments to a Kubernetes cluster.&lt;br&gt;
Scalability: Implemented Horizontal Pod Autoscaling (HPA) for optimal performance.&lt;br&gt;
Monitoring: Set up Prometheus, Grafana, and Loki for comprehensive monitoring and logging.&lt;br&gt;
If you're interested in getting hands-on with this project, feel free to ping me on LinkedIn : &lt;a href="https://www.linkedin.com/in/swapnil-m-2424sm/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/swapnil-m-2424sm/&lt;/a&gt; or check out the GitHub repository for all the details.&lt;br&gt;
GitHub repository 📢 &lt;a href="https://shorturl.at/y8cfj" rel="noopener noreferrer"&gt;https://shorturl.at/y8cfj&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0zpugzs41ky11vbu3urn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0zpugzs41ky11vbu3urn.png" alt=" " width="784" height="699"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  DevOps #Kubernetes #CI_CD #CloudComputing #Automation #TechInnovation #ContinuousLearning #Edureka #Certification #TechCommunity #DevOpsJourney #Docker #GitHub #Jenkins #K8s #OpenSource #ProjectSharing #CareerGrowth #LearnWithMe #TechSkills #ITTraining
&lt;/h1&gt;

</description>
      <category>edureka</category>
      <category>devops</category>
      <category>certification</category>
      <category>eks</category>
    </item>
    <item>
      <title>Create and Deploy AWS EKS Cluster with Terraform.</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Sat, 04 May 2024 07:16:21 +0000</pubDate>
      <link>https://dev.to/swapi123/create-and-deploy-aws-eks-cluster-with-terraform-41h3</link>
      <guid>https://dev.to/swapi123/create-and-deploy-aws-eks-cluster-with-terraform-41h3</guid>
      <description>&lt;p&gt;📌 A managed container service for running and scaling Kubernetes applications on-premises or in the cloud is Amazon EKS (Elastic Kubernetes Service). &lt;/p&gt;

&lt;p&gt;📌With the Infrastructure as Code (IaC) tool HashiCorp Terraform, you can specify on-premises and cloud resources in human-readable configuration files that you can share, reuse, and version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/SwapnilM24/Terraform-EKS_" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;❇Install AWS CLI: Begin by installing the AWS CLI to seamlessly connect Terraform with AWS. Follow the simple steps outlined in the AWS CLI Installation Guide.&lt;/p&gt;

&lt;p&gt;❇Install Terraform: Install Terraform using the provided link in the Terraform Installation Guide.&lt;/p&gt;

&lt;p&gt;❇Connect Terraform with AWS: Easily link Terraform with AWS by executing the aws configure command and inputting your AWS Security credentials.&lt;/p&gt;

&lt;p&gt;❇Initialize Terraform: Clone the repository and initialize Terraform by running terraform init. This step sets up the Terraform environment, downloading necessary modules, providers, and configurations. &lt;/p&gt;

&lt;p&gt;❇Review Configuration (Optional): For clarity, you can run terraform plan to preview the configuration before execution.&lt;/p&gt;

&lt;p&gt;❇Apply Terraform Configuration: Finally, apply the Terraform configuration to create the EKS cluster within the VPC by executing terraform apply. This straightforward process simplifies the creation of your EKS infrastructure on AWS.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;⚠Cleanup⚠&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;terraform destroy: command is a convenient way to destroy all remote objects managed by a particular Terraform configuration.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;🏷 Happy Learning!!! *&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Terraform #AWS #EKS
&lt;/h1&gt;

&lt;h1&gt;
  
  
  DevOps #project #GitHub
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hgs3qz1p0jh034dfxoq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hgs3qz1p0jh034dfxoq.png" alt=" " width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feo0ljkclxyfnn9h7rgpe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feo0ljkclxyfnn9h7rgpe.png" alt=" " width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>aws</category>
      <category>eks</category>
      <category>github</category>
    </item>
    <item>
      <title>AWS Certified Solutions Architect – Associate!</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Tue, 05 Mar 2024 07:13:22 +0000</pubDate>
      <link>https://dev.to/swapi123/aws-certified-solutions-architect-associate-40p4</link>
      <guid>https://dev.to/swapi123/aws-certified-solutions-architect-associate-40p4</guid>
      <description>&lt;p&gt;🚀 **&lt;/p&gt;

&lt;h2&gt;
  
  
  Exciting Achievement Unlocked: AWS Certified Solutions Architect – Associate!
&lt;/h2&gt;

&lt;p&gt;** 🚀&lt;/p&gt;

&lt;p&gt;Thrilled to announce that I've earned the prestigious AWS Certified Solutions Architect – Associate certification! 🎓 This journey has been a thrilling ride through the intricate landscapes of cloud architecture, and I'm honored to join the league of certified professionals at the forefront of innovation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.credly.com/badges/f78e5aab-4d2e-42ff-a3b1-dba9f29a601b/public_url" rel="noopener noreferrer"&gt;Solutions Architect&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvziey3b9md9rzap80hy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvziey3b9md9rzap80hy.png" alt=" " width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/swapnil-m-2424sm/" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Edureka's DevOps Certification Project🏅🏅</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Mon, 08 Jan 2024 05:44:11 +0000</pubDate>
      <link>https://dev.to/swapi123/edurekas-devops-certification-project-55p</link>
      <guid>https://dev.to/swapi123/edurekas-devops-certification-project-55p</guid>
      <description>&lt;p&gt;&lt;a href="//www.linkedin.com/in/swapnil-m-2424sm"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/SwapnilM24/projCert_Edureka" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;br&gt;
🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mwvnb4zt2i7wcfbv0vw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mwvnb4zt2i7wcfbv0vw.png" alt=" " width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅🏅&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ft4mpddd9ecxxak9vzq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ft4mpddd9ecxxak9vzq.gif" alt=" " width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Problem Statement&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;AppleBite Co. is using Cloud for one of their products. The project uses modular components, &lt;br&gt;
multiple frameworks and want the components to be developed by different teams or by 3rd-party &lt;br&gt;
vendors. &lt;br&gt;
The company’s goal is to deliver the product updates frequently to production with High quality &amp;amp; &lt;br&gt;
Reliability. They also want to accelerate software delivery speed, quality and reduce feedback time &lt;br&gt;
between developers and testers. &lt;br&gt;
As development progressed, they are facing multiple problems, because of various technologies &lt;br&gt;
involved in the project. Following are the problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;-  Building Complex builds is difficult&lt;/li&gt;
&lt;li&gt;-  Incremental builds are difficult to manage, and deploy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfaicb1ebfuesqj4e263.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfaicb1ebfuesqj4e263.gif" alt=" " width="427" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To solve these problems, they need to implement Continuous Integration &amp;amp; Continuous Deployment &lt;br&gt;
with DevOps using following tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Git – For version control for tracking changes in the code files
Jenkins – For continuous integration and continuous deployment
Docker – For deploying containerized applications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ansible - Configuration management tools&lt;br&gt;
This project will be about how to do deploy code to dev/stage/prod etc, just on a click of button.&lt;/p&gt;
&lt;h2&gt;
  
  
  Business challenge/requirement
&lt;/h2&gt;

&lt;p&gt;As soon as the developer pushes the updated code on the GIT master branch, a new test server &lt;br&gt;
should be provisioned with all the required software. Post this, the code should be containerized and &lt;br&gt;
deployed on the test server. &lt;br&gt;
The deployment should then be built and pushed to the prod server.&lt;br&gt;
All this should happen automatically and should be triggered from a push to the GitHub master &lt;br&gt;
branch. &lt;/p&gt;
&lt;h2&gt;
  
  
  Steps for executing the solution:
&lt;/h2&gt;

&lt;p&gt;• Use the Master VM for Jenkins, Ansible, GIT etc.&lt;br&gt;
• Use the fresh instance for Jenkins Slave Node (Test Server)&lt;br&gt;
• Change the IP address of the VMs accordingly&lt;br&gt;
• Add Build Pipeline Plugin and Post-build task plugin to Jenkins on the master VM&lt;br&gt;
• Install python, openssh-server and git on the slave node manually&lt;br&gt;
• Use the image devopsedu/webapp and add your PHP website to it using a Dockerfile&lt;br&gt;
• Push the PHP website, and the Dockerfile to a git repository &lt;/p&gt;

&lt;p&gt;Below tasks should be automated through Jenkins by creating a pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install and configure puppet agent on the slave node (Job 1)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm29mwth3168ivcc00b77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm29mwth3168ivcc00b77.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Push an Ansible configuration on test server to install docker (Job 2)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpuauvwz57cr4pl9yn3lk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpuauvwz57cr4pl9yn3lk.png" alt=" " width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pull the PHP website, and the Dockerfile from the git repo and build and deploy your PHP 
docker container. After. (Job 3)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjugq4mvctgwc5wy4njiy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjugq4mvctgwc5wy4njiy.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48w8iwxvs5fi72tay456.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48w8iwxvs5fi72tay456.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy4d6ppxlevsipb815t7i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy4d6ppxlevsipb815t7i.png" alt=" " width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If Job 3 fails, delete the running container on Test Server&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hu73uilxij1c9eegg9k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hu73uilxij1c9eegg9k.png" alt=" " width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkikuqdob6khb5z3o6caz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkikuqdob6khb5z3o6caz.png" alt=" " width="800" height="283"&gt;&lt;/a&gt;&lt;br&gt;
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#aws #Edureka #Jenkins #GitHub #Ansible #Docker #python

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="//www.linkedin.com/in/swapnil-m-2424sm"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/SwapnilM24/projCert_Edureka" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>edureka</category>
      <category>aws</category>
      <category>devops</category>
      <category>jenkins</category>
    </item>
    <item>
      <title>Deploying Super Mario on Kubernetes🎮🎮</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Wed, 20 Dec 2023 07:15:09 +0000</pubDate>
      <link>https://dev.to/swapi123/deploying-super-mario-on-kubernetes-3ojc</link>
      <guid>https://dev.to/swapi123/deploying-super-mario-on-kubernetes-3ojc</guid>
      <description>&lt;p&gt;Hey folks, remember the thrill of 90's gaming? Let's step back in time and relive those exciting moments! With the game deployed on Kubernetes, it's time to dive into the nostalgic world of Mario. Grab your controllers, it's game time!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/SwapnilM24/k8s-mario" rel="noopener noreferrer"&gt;GIT&lt;/a&gt;&lt;br&gt;
&lt;a href="//www.linkedin.com/in/swapnil-m-2424sm"&gt;linkedin&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
https://www.linkedin.com/posts/activity-7143143843671048192-siWq?utm_source=share&amp;amp;utm_medium=member_desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Super Mario is a classic game loved by many. In this guide, we'll explore how to deploy a Super Mario game on Amazon's Elastic Kubernetes Service (EKS). Utilizing Kubernetes, we can orchestrate the game's deployment on AWS EKS, allowing for scalability, reliability, and easy management.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3rz1f68h998o2otaiim.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3rz1f68h998o2otaiim.gif" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An Ubuntu Instance&lt;/li&gt;
&lt;li&gt;IAM role&lt;/li&gt;
&lt;li&gt;Terraform should be installed on instance&lt;/li&gt;
&lt;li&gt;AWS CLI and KUBECTL on Instance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;LET'S DEPLOY&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&amp;gt; STEP 1: Launch Ubuntu instance&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Sign in to AWS Console: Log in to your AWS Management Console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to EC2 Dashboard: Go to the EC2 Dashboard by selecting "Services" in the top menu and then choosing "EC2" under the Compute section.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;launch Instance: Click on the "Launch Instance" button to start the instance creation process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose an Amazon Machine Image (AMI): Select an appropriate AMI for your instance. For example, you can choose Ubuntu image.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose an Instance Type: In the "Choose Instance Type" step, select t2.micro as your instance type. Proceed by clicking "Next: Configure Instance Details."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure Instance Details:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;For "Number of Instances," set it to 1 (unless you need multiple instances).&lt;/li&gt;
&lt;li&gt;Configure additional settings like network, subnets, IAM role, etc., if necessary.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For "Storage," click "Add New Volume" and set the size to 8GB (or modify the existing storage to 8GB).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click "Next: Add Tags" when you're done.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Add Tags (Optional): Add any desired tags to your instance. This step is optional, but it helps in organizing instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure Security Group:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Choose an existing security group or create a new one.&lt;/li&gt;
&lt;li&gt;Ensure the security group has the necessary inbound/outbound 
rules to allow access as required.
9.Review and Launch: Review the configuration details. Ensure everything is set as desired.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Select Key Pair:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Select "Choose an existing key pair" and choose the key pair from the dropdown.&lt;/li&gt;
&lt;li&gt;Acknowledge that you have access to the selected private key file.&lt;/li&gt;
&lt;li&gt;Click "Launch Instances" to create the instance.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Access the EC2 Instance: Once the instance is launched, you can access it using the key pair and the instance's public IP or DNS.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ensure you have necessary permissions and follow best practices while configuring security groups and key pairs to maintain security for your EC2 instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2: Create IAM role&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Search for IAM in the search bar of AWS and click on roles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofnn67hgjajkh62oobzy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofnn67hgjajkh62oobzy.png" alt=" " width="686" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on Create Role&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8kvpd2mxwiwwrjvezmpe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8kvpd2mxwiwwrjvezmpe.png" alt=" " width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select entity type as AWS service&lt;/p&gt;

&lt;p&gt;Use case as EC2 and click on Next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0mpyhhitlwx2e9istkzt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0mpyhhitlwx2e9istkzt.png" alt=" " width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For permission policy select Administrator Access (Just for learning purpose), click Next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuogvbo51u502nzypzfci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuogvbo51u502nzypzfci.png" alt=" " width="800" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Provide a Name for Role and click on Create role.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faphr3zgj83zjdxrowqnl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faphr3zgj83zjdxrowqnl.png" alt=" " width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Role is created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdt8l6liu6loiblpsnfqh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdt8l6liu6loiblpsnfqh.png" alt=" " width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now Attach this role to Ec2 instance that we created earlier, so we can provision cluster from that instance.&lt;/p&gt;

&lt;p&gt;Go to EC2 Dashboard and select the instance.&lt;/p&gt;

&lt;p&gt;Click on Actions --&amp;gt; Security --&amp;gt; Modify IAM role.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw57vmftwh92tfwizyxdj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw57vmftwh92tfwizyxdj.png" alt=" " width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the Role that created earlier and click on Update IAM role&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wgpolll8v7u6xr1xpgf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wgpolll8v7u6xr1xpgf.png" alt=" " width="800" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3: Cluster provision&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now clone this Repo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/SwapnilM24/k8s-mario.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;change directory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd k8s-mario
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Provide the executable permission to script.sh file, and run it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chmod +x script.sh
./script.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This script will install Terraform, AWS cli, Kubectl, Docker.&lt;/p&gt;

&lt;p&gt;Check versions&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker --version
aws --version
kubectl version --client
terraform --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2x81ffs9bp3l56fjnfdo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2x81ffs9bp3l56fjnfdo.png" alt=" " width="767" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now change directory into the EKS-TF&lt;/p&gt;

&lt;p&gt;Run Terraform init&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTE: Don’t forgot to change the s3 bucket name in the backend.tf file&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd EKS-TF
terraform init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now run terraform validate and terraform plan&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform validate
terraform plan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93q2wls4wh5vovs2fv9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93q2wls4wh5vovs2fv9q.png" alt=" " width="684" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now Run terraform apply to provision cluster.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform apply --auto-approve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnjoo6poz05fd3c4s6vs8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnjoo6poz05fd3c4s6vs8.png" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Completed in 10mins&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4o9fqnkkf5lxu3y4mq8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4o9fqnkkf5lxu3y4mq8g.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Update the Kubernetes configuration&lt;/p&gt;

&lt;p&gt;Make sure change your desired region&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws eks update-kubeconfig --name EKS_CLOUD --region ap-south-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now change directory back to k8s-mario&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s apply the deployment and service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f deployment.yaml
#to check the deployment 
kubectl get all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxop4t0ez6slmgqu2ovb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxop4t0ez6slmgqu2ovb1.png" alt=" " width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s apply the service&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f service.yaml
kubectl get all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let’s describe the service and copy the LoadBalancer Ingress&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe service mario-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5j7plvbof9kee0tsp6p6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5j7plvbof9kee0tsp6p6.png" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paste the ingress link in a browser and you will see the Mario game.&lt;/p&gt;

&lt;p&gt;Let’s Go back to 1985 and play the game like children.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqxjbh5uhb2i68vkhggxd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqxjbh5uhb2i68vkhggxd.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Destruction :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's remove the service and deployment first&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get all
kubectl delete service mario-service
kubectl delete deployment mario-deployment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s Destroy the cluster&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform destroy --auto-approve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After 10mins Resources that are provisioned will be removed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwsouxjl3rcuyjqd27i59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwsouxjl3rcuyjqd27i59.png" alt=" " width="800" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for joining this nostalgic journey to the 90s! We hope you enjoyed rekindling your love for gaming with the deployment of the iconic Mario game on Kubernetes. Embracing the past while exploring new technologies is a true testament to the timeless allure of classic games. Until next time, keep gaming and reliving those fantastic memories! 👾🎮.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>eks</category>
      <category>kubernetes</category>
      <category>mariogame</category>
    </item>
    <item>
      <title>Building Cloud Native Monitoring Application on Kubernetes and AWS ECR 🚀 🚀 🚀</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Sat, 09 Dec 2023 09:35:12 +0000</pubDate>
      <link>https://dev.to/swapi123/building-cloud-native-monitoring-application-on-kubernetes-and-aws-ecr-3d2</link>
      <guid>https://dev.to/swapi123/building-cloud-native-monitoring-application-on-kubernetes-and-aws-ecr-3d2</guid>
      <description>&lt;p&gt;In the ever-evolving world of DevOps and cloud computing, the need for robust and scalable monitoring solutions is paramount. As applications grow more complex and distributed, having insights into their performance and resource utilization becomes essential. In this tutorial, we’ll take you through the journey of creating a Cloud Native Monitoring Application using Flask, Docker, Kubernetes (K8s), and Amazon EKS.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/SwapnilM24/cloud-native-monitoring-app" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;a href="//www.linkedin.com/in/swapnil-m-2424sm"&gt;Linkdin&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7a6k4o0eoz0ptxcpxvjm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7a6k4o0eoz0ptxcpxvjm.gif" alt=" " width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffr8wqhdup3dnnqkse2r9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffr8wqhdup3dnnqkse2r9.png" alt=" " width="434" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prerequisites !&lt;br&gt;
(Things to have before starting the projects)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; AWS Account.
 Programmatic access and AWS configured with CLI.
 Python3 Installed.
 Docker and Kubectl installed.
 Code editor (Vscode)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Part 1: Deploying the Flask application locally&lt;br&gt;
Step 1: Clone the code&lt;/p&gt;

&lt;p&gt;Start by cloning the project repository to your local machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/SwapnilM24/cloud-native-monitoring-app.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2: Install dependencies&lt;/p&gt;

&lt;p&gt;The application utilizes Python libraries like psutil, Flask, Plotly, and boto3. Install them using pip:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip3 install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;You can also go ahead with pip install -r requirements.txt in the whole project&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Run the application&lt;/p&gt;

&lt;p&gt;Navigate to the project’s root directory and execute the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will start the Flask server on &lt;code&gt;localhost:5000&lt;/code&gt;. You can access the application by opening your browser and going to &lt;code&gt;http://localhost:5000/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Part 2: Dockerizing the Flask application&lt;br&gt;
Step 1: Create a Dockerfile&lt;/p&gt;

&lt;p&gt;In the project’s root directory, create a Dockerfile with the following contents:&lt;/p&gt;
&lt;h1&gt;
  
  
  Use the official Python image as the base image
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;FROM python:3.9-slim-buster&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Set the working directory in the container
WORKDIR /app
# Copy the requirements file to the working directory
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
# Copy the application code to the working directory
COPY . .
# Set the environment variables for the Flask app
ENV FLASK_RUN_HOST=0.0.0.0
# Expose the port on which the Flask app will run
EXPOSE 5000
# Start the Flask app when the container is run
CMD ["flask", "run"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2: Build the Docker image&lt;/p&gt;

&lt;p&gt;To build the Docker image, execute the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t &amp;lt;image_name&amp;gt; .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Run the Docker container&lt;/p&gt;

&lt;p&gt;Run the Docker container with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -p 5000:5000 &amp;lt;image_name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will start the Flask server in a Docker container on &lt;code&gt;localhost:5000&lt;/code&gt;. You can access the application the same way as before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 3: Pushing the Docker image to ECR&lt;/strong&gt;&lt;br&gt;
Step 1: Create an ECR repository&lt;/p&gt;

&lt;p&gt;Using Python and Boto3, create an Amazon ECR repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Create an ECR client
ecr_client = boto3.client('ecr')
# Create a new ECR repository
repository_name = 'my-ecr-repo'
response = ecr_client.create_repository(repositoryName=repository_name)
# Print the repository URI
repository_uri = response['repository']['repositoryUri']
print(repository_uri)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2: Push the Docker image to ECR&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fob5ixhy48inwixgo97v0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fob5ixhy48inwixgo97v0.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Push the Docker image to the created ECR repository using the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker push &amp;lt;ecr_repo_uri&amp;gt;:&amp;lt;tag&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Part 4: Creating an EKS cluster and deploying the app using Python&lt;br&gt;
Step 1: Create an EKS cluster&lt;/p&gt;

&lt;p&gt;Create an EKS cluster and add a node group.&lt;/p&gt;

&lt;p&gt;Step 2: Create a node group&lt;/p&gt;

&lt;p&gt;Create a node group in the EKS cluster. Remember to create security groups and roles in IAM for specific clusters. Use t2.micro to stay in free tier and create 2 nodes in a node group while creating cluster.&lt;/p&gt;

&lt;p&gt;Step 3: Create deployment and service&lt;/p&gt;

&lt;p&gt;Using Python and the Kubernetes client library, create a deployment and service for your Flask application. Be sure to replace &lt;code&gt;&amp;lt;image_uri&amp;gt;&lt;/code&gt; with the URI of your Docker image.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from kubernetes import client, config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Load Kubernetes configuration
config.load_kube_config()
# Create a Kubernetes API client
api_client = client.ApiClient()
# Define the deployment
deployment = client.V1Deployment(
    metadata=client.V1ObjectMeta(name="my-flask-app"),
    spec=client.V1DeploymentSpec(
        replicas=1,
        selector=client.V1LabelSelector(
            match_labels={"app": "my-flask-app"}
        ),
        template=client.V1PodTemplateSpec(
            metadata=client.V1ObjectMeta(
                labels={"app": "my-flask-app"}
            ),
            spec=client.V1PodSpec(
                containers=[
                    client.V1Container(
                        name="my-flask-container",
                        image="&amp;lt;image_uri&amp;gt;",
                        ports=[client.V1ContainerPort(container_port=5000)]
                    )
                ]
            )
        )
    )
)
# Create the deployment
api_instance = client.AppsV1Api(api_client)
api_instance.create_namespaced_deployment(
    namespace="default",
    body=deployment
)
# Define the service
service = client.V1Service(
    metadata=client.V1ObjectMeta(name="my-flask-service"),
    spec=client.V1ServiceSpec(
        selector={"app": "my-flask-app"},
        ports=[client.V1ServicePort(port=5000)]
    )
)
# Create the service
api_instance = client.CoreV1Api(api_client)
api_instance.create_namespaced_service(
    namespace="default",
    body=service
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure that you replace &lt;code&gt;&amp;lt;image_uri&amp;gt;&lt;/code&gt;on line 25 with the actual URI of your Docker image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F49ly5g96db8e3re5dm0k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F49ly5g96db8e3re5dm0k.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After running the Python script &lt;code&gt;eks.py&lt;/code&gt;, your deployment and service will be created. You can check their status using the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get deployment -n default  # Check deployments
kubectl get service -n default    # Check service
kubectl get pods -n default       # Check pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once your pod is up and running, run the port-forward command to expose the service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl port-forward service/&amp;lt;service_name&amp;gt; 5000:5000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2rphcyxc8dgh6q0ague.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2rphcyxc8dgh6q0ague.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You’ve successfully created a Cloud Native Monitoring Application and deployed it on Kubernetes with AWS EKS. This application can be extended to monitor various resources and provide valuable insights into your cloud infrastructure. Explore further and enhance your DevOps skills! 🚀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3reo8ttm7434bsb9ps0v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3reo8ttm7434bsb9ps0v.gif" alt="DONE&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;" width="220" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>docker</category>
    </item>
    <item>
      <title>Explored the deployment of a 2048 Game Application on AWS EKS</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Tue, 05 Dec 2023 03:17:56 +0000</pubDate>
      <link>https://dev.to/swapi123/explored-the-deployment-of-a-2048-game-application-on-aws-eks-dho</link>
      <guid>https://dev.to/swapi123/explored-the-deployment-of-a-2048-game-application-on-aws-eks-dho</guid>
      <description>&lt;p&gt;🚀 Completed an end-to-end Kubernetes project. Explored the deployment of a 2048 Game Application on AWS EKS (Elastic Kubernetes Service) using Fargate and an Application Load Balancer Ingress Controller.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4mjhcthfwa46g30zuna.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4mjhcthfwa46g30zuna.gif" alt=" " width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;🛠️ Steps involved:&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set up prerequisites: Install awscli, eksctl, and kubectl,helm &lt;/li&gt;
&lt;li&gt;Installed EKS with Fargate.
**ekctl create cluster --name  --region  --fargate
Note:: fargate is serverless computing service like aws lamda,choosing fargate service other than ec2 is cost optimized&lt;/li&gt;
&lt;li&gt;Acquired or updated the KubeConfig file for CLI access to cluster resources.
**aws eks update-kubeconfig --name  --region &lt;/li&gt;
&lt;li&gt;For deploying the pods other then the default namespaces we need to create the new namespace..for this deploy the new fargate profile and allow the pods to run on the new namespace ..
**for eg namespace :: game-2048.
5.Create the custom fargate profile allowing the namespace created to deploy the pods in that..
eksctl create fargateprofile \
--cluster prod-web-hyd-eks \
--region=ap-south-2 \
--name fargate-1 \
--namespace game-2048&lt;/li&gt;
&lt;li&gt;Deployed the 2048 app as a K8s Pod, created a corresponding service, and set up an Ingress resource for traffic routing.
kubectl apply -f &lt;/li&gt;
&lt;li&gt;Implemented the Ingress Controller to automate ALB Controller creation.&lt;/li&gt;
&lt;li&gt;Established an IAM OIDC Provider to grant ALB Controller access to the Application Load Balancer.&lt;/li&gt;
&lt;li&gt;Created a service account with an IAM Role and Policy for Load Balancer access.
$ eksctl create iamserviceaccount --cluster=prod-web-hyd-eks --namespace=game-2048 --name=aws-load-balancer-controller --role-name awsELKloadbalancerRole --attach-policy-arn= --approve&lt;/li&gt;
&lt;li&gt;Deployed ALB Controller using Helm Charts, interfacing with the service account.
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ 
-n game-2048 \
--set clusterName= \
--set serviceAccount.create=false \
--set serviceAccount.name= \
--set region= \
--set vpcId=&lt;/li&gt;
&lt;li&gt;Accessed the deployed 2048 application with the DNS URL of the Load Balancer in the public subnet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fba4w0o7i0pyo1bqt4uok.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fba4w0o7i0pyo1bqt4uok.gif" alt=" " width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="//www.linkedin.com/in/swapnil-m-2424sm"&gt;linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/SwapnilM24" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#kubernetes 
#AWS 
#EKS 
#DevOps
#CloudComputing .🎮🚢
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fneht76owfvvwx5pblq97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fneht76owfvvwx5pblq97.png" alt="2048 Game Application" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fioyw2lg4wltprphy67zn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fioyw2lg4wltprphy67zn.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycecq925a7zw1ealyxav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycecq925a7zw1ealyxav.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly93fvoosn6it7n93h1r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly93fvoosn6it7n93h1r.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qtbc6kd0rlgsp2ohp6x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qtbc6kd0rlgsp2ohp6x.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>eks</category>
      <category>kubernetes</category>
      <category>fargate</category>
      <category>aws</category>
    </item>
    <item>
      <title>🚀The Netflix DevSecOps Project 🚀</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Mon, 13 Nov 2023 16:42:44 +0000</pubDate>
      <link>https://dev.to/swapi123/the-netflix-devsecops-project-49e3</link>
      <guid>https://dev.to/swapi123/the-netflix-devsecops-project-49e3</guid>
      <description>&lt;p&gt;Hi connections.&lt;br&gt;
I'm thrilled to announce the completion of a DevSecOps project ✨ . The goal was to set up a cloud-based Netflix clone.&lt;/p&gt;
&lt;h2&gt;
  
  
  🚀 *&lt;em&gt;The Netflix DevSecOps Project *&lt;/em&gt;🚀
&lt;/h2&gt;

&lt;p&gt;Phase 1: Initial Setup and Deployment&lt;br&gt;
✅ Launch EC2 (Ubuntu 22.04):&lt;br&gt;
Provisioned an EC2 instance on AWS with Ubuntu&lt;br&gt;
22.04.&lt;br&gt;
✅ Connected to the instance using SSH.&lt;br&gt;
✅ Clone the Code:&lt;br&gt;
 Updated all packages and cloned the application code&lt;br&gt;
from GitHub.&lt;br&gt;
Install Docker and Run the App Using a Container:&lt;br&gt;
Set up Docker on the EC2 instance.&lt;br&gt;
Built and ran the Netflix clone application using Docker&lt;br&gt;
containers.&lt;br&gt;
Get the API Key:&lt;br&gt;
Obtained the TMDB API key for the application.&lt;br&gt;
Phase 2: Security&lt;br&gt;
✅ Installed SonarQube and Trivy for vulnerability&lt;br&gt;
scanning.&lt;br&gt;
✅ Integrated SonarQube with the CI/CD pipeline.&lt;br&gt;
Phase 3: CI/CD Setup&lt;br&gt;
✅ Installed Jenkins for automation.&lt;br&gt;
✅ Configured Jenkins plugins and tools for the CI/CD&lt;br&gt;
pipeline.&lt;br&gt;
Created a Jenkins pipeline for application deployment.&lt;br&gt;
Phase 4:Monitoring&lt;br&gt;
Installed Prometheus and Grafana for monitoring.&lt;br&gt;
✅ Set up Node Exporter to collect system-level metrics.&lt;br&gt;
✅ Configured Prometheus to scrape metrics from Node&lt;br&gt;
Exporter.&lt;br&gt;
Created Grafana dashboards for visualization.&lt;br&gt;
Phase 5: Notification&lt;br&gt;
 Implemented email notifications in Jenkins for alerts.&lt;br&gt;
Phase 6: Kubernetes&lt;br&gt;
 Created a Kubernetes cluster with node groups.&lt;br&gt;
 Monitored Kubernetes with Prometheus and Node&lt;br&gt;
Exporter.&lt;br&gt;
Phase 7: Cleanup&lt;br&gt;
Terminated AWS EC2 instances that were no longer&lt;br&gt;
needed.&lt;br&gt;
 &lt;a href="https://github.com/SwapnilM24/DevSecOps-Project_netflix" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="//www.linkedin.com/in/swapnil-m-278848171"&gt;Linkdin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Tools used: 🛠&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Jenkins
Docker
SonarQube
Trivy
Email
Prometheus
Grafana
Kubernetes
ArgoCD

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9bkaf8qanqn162shl54.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9bkaf8qanqn162shl54.jpg" alt=" " width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5ni6h4ebcdxufw8tkbe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5ni6h4ebcdxufw8tkbe.jpg" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0usaadzus4gybg4uldsw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0usaadzus4gybg4uldsw.jpg" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllay9anekvjruwyfekkh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllay9anekvjruwyfekkh.png" alt=" " width="800" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sonarqube</category>
      <category>docker</category>
      <category>kubernetes</category>
      <category>netflix</category>
    </item>
    <item>
      <title>Jenkins Pipeline for Java based application using Maven, SonarQube, Argo CD and Kubernetes</title>
      <dc:creator>Swapnil Suresh Mohite</dc:creator>
      <pubDate>Sun, 08 Oct 2023 17:17:06 +0000</pubDate>
      <link>https://dev.to/swapi123/jenkins-pipeline-for-java-based-application-using-maven-sonarqube-argo-cd-and-kubernetes-2386</link>
      <guid>https://dev.to/swapi123/jenkins-pipeline-for-java-based-application-using-maven-sonarqube-argo-cd-and-kubernetes-2386</guid>
      <description>&lt;p&gt;End-to-end CI/CD with Jenkins and GitHub integration, deployment of a Java base application on an AWS EC2 instance, and exploration of Minikube for Kubernetes deployment! 🎉 🔧 &lt;strong&gt;Tools and technologies used&lt;/strong&gt;: AWS created an Ubuntu AWS-EC2 instance; Jenkins and Docker were installed on the Ubuntu EC2 instance; and a secure connection was established between Jenkins and GitHub using an SSH key produced on EC2.Jenkins produces Docker images from the GitHub-hosted Dockerfile and runs containers * The image was then submitted to Docker Hub, preparing it for Kubernetes Minikube was used to deploy the application also using Argo CD.&lt;/p&gt;

&lt;p&gt;This project showed me the power of automation, CI/CD, containerization, Argo CD, and Kubernetes orchestration, as well as allowing me to improve my DevOps skills. It's incredible to watch how different technologies work together to improve development and deployment procedures. I'd want to thank the fantastic DevOps community on YouTube for their constant support in assisting me in transitioning from fundamental knowledge to hands-on expertise, as well as my amazing tutor Abhishek Veeramalla. 🚀 Your suggestions and collaborative spirit have been invaluable! I'm eternally grateful to all of the incredible content authors that diligently share their expertise and experiences, paving the path for other DevOps enthusiasts like me to prosper in the world.@Abhishekveeram deserves special recognition.&lt;/p&gt;

&lt;p&gt;Prerequisites:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Java application code hosted on a Git repository&lt;/li&gt;
&lt;li&gt;Jenkins server&lt;/li&gt;
&lt;li&gt;Kubernetes cluster&lt;/li&gt;
&lt;li&gt;Argo CD&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Steps:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Install the necessary Jenkins plugins:
   1.1 Git plugin
   1.2 Maven Integration plugin
   1.3 Pipeline plugin
   1.4 Kubernetes Continuous Deploy plugin

2. Create a new Jenkins pipeline:
   2.1 In Jenkins, create a new pipeline job and configure it with the Git repository URL for the Java application.
   2.2 Add a Jenkinsfile to the Git repository to define the pipeline stages.

3. Define the pipeline stages:
    Stage 1: Checkout the source code from Git.
    Stage 2: Build the Java application using Maven.
    Stage 3: Run unit tests using JUnit and Mockito.
    Stage 4: Run SonarQube analysis to check the code quality.
    Stage 5: Package the application into a JAR file.
    Stage 6: Run user acceptance tests on the deployed application.
    Stage 7: Promote the application to a production environment using Argo CD.

4. Configure Jenkins pipeline stages:
    Stage 1: Use the Git plugin to check out the source code from the Git repository.
    Stage 2: Use the Maven Integration plugin to build the Java application.
    Stage 3: Use the JUnit and Mockito plugins to run unit tests.
    Stage 4: Use the SonarQube plugin to analyze the code quality of the Java application.
    Stage 5: Use the Maven Integration plugin to package the application into a JAR file.
    Stage 6: Use the Kubernetes Continuous Deploy plugin to deploy the application to a test environment using Helm.
    Stage 7: Use a testing framework like Selenium to run user acceptance tests on the deployed application.
    Stage 8: Use Argo CD to promote the application to a production environment.

5. Set up Argo CD:
    Install Argo CD on the Kubernetes cluster.
    Set up a Git repository for Argo CD to track the changes in the Helm charts and Kubernetes manifests.
    Create a Helm chart for the Java application that includes the Kubernetes manifests and Helm values.
    Add the Helm chart to the Git repository that Argo CD is tracking.

6. Configure Jenkins pipeline to integrate with Argo CD:
   6.1 Add the Argo CD API token to Jenkins credentials.
   6.2 Update the Jenkins pipeline to include the Argo CD deployment stage.

7. Run the Jenkins pipeline:
   7.1 Trigger the Jenkins pipeline to start the CI/CD process for the Java application.
   7.2 Monitor the pipeline stages and fix any issues that arise.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This end-to-end Jenkins pipeline will automate the entire CI/CD process for a Java application, from code checkout to production deployment, using popular tools like SonarQube, Argo CD, and Kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwr95ofhmzfs4mpsll9j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwr95ofhmzfs4mpsll9j.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tib1od2z3w7mqoajosj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tib1od2z3w7mqoajosj.png" alt=" " width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsx8f2cdyzyw51bd2srta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsx8f2cdyzyw51bd2srta.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6mdfu4hbtmhw9081bp8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6mdfu4hbtmhw9081bp8.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/JGQI5pkK82w?si=o8pbky6ri_IR821X" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;&lt;br&gt;
🚀💡 &lt;br&gt;
&lt;a href="https://github.com/SwapnilM24/Jenkins_YOUSM/tree/main/java-maven-sonar-argocd-helm-k8s" rel="noopener noreferrer"&gt;Git&lt;/a&gt;&lt;br&gt;
🚀💡 &lt;br&gt;
&lt;a href="//www.linkedin.com/in/swapnil-mohite-%E2%98%81-278848171"&gt;linkedin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>docker</category>
      <category>jenkins</category>
    </item>
  </channel>
</rss>
