<?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>Forem: Archies Gurav </title>
    <description>The latest articles on Forem by Archies Gurav  (@rcheeez).</description>
    <link>https://forem.com/rcheeez</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%2F2601765%2F8cd3ff02-1960-4cf1-9bf7-30ae9839bf79.jpeg</url>
      <title>Forem: Archies Gurav </title>
      <link>https://forem.com/rcheeez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rcheeez"/>
    <language>en</language>
    <item>
      <title>Learning Amazon EventBridge - Notes by Archies Gurav</title>
      <dc:creator>Archies Gurav </dc:creator>
      <pubDate>Tue, 27 May 2025 04:57:17 +0000</pubDate>
      <link>https://forem.com/rcheeez/learning-amazon-eventbridge-notes-by-archies-gurav-1cpp</link>
      <guid>https://forem.com/rcheeez/learning-amazon-eventbridge-notes-by-archies-gurav-1cpp</guid>
      <description>&lt;p&gt;Hello everyone,&lt;/p&gt;

&lt;p&gt;So, recently I have been learning &lt;strong&gt;Amazon EventBridge&lt;/strong&gt; as part of my continuous cloud learning journey. I'm a &lt;strong&gt;DevOps engineer&lt;/strong&gt; exploring how we can build event-driven architecture on AWS, and EventBridge felt like one of those underrated tools that deserves more spotlight.&lt;/p&gt;

&lt;p&gt;In this post, I'll walk you through what things I have learned about Amazon EventBridge in simple words.&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%2Fbdzhg79cqkyletri3hy8.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%2Fbdzhg79cqkyletri3hy8.png" alt="amazon-eventbridge" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before directly learning about the tool, I first understood the concept of Event-Driven Architecture, like exactly what is it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Event-Driven-Architecture (EDA)?
&lt;/h2&gt;

&lt;p&gt;-&amp;gt; In simple words, &lt;strong&gt;Event-Driven-Architecture&lt;/strong&gt; is a software design pattern where services communicates asynchronously through events, allowing for flexibility or loose coupling.&lt;/p&gt;

&lt;p&gt;You may think that okay, we got the concept of EDA, but what is an event actually here in EDA..&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Event in EDA?
&lt;/h2&gt;

&lt;p&gt;-&amp;gt; In &lt;strong&gt;Event-Driven Architecture (EDA)&lt;/strong&gt;, an event represents a significant change in state of an occurrence within a system or service. Events are used to trigger an action or communicate with different parts of other services or system.&lt;/p&gt;

&lt;p&gt;After this, I got a clear understanding of the concept. And then I started learning about the tool.&lt;/p&gt;

&lt;p&gt;Let's understand now about the Amazon EventBridge.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Amazon EventBridge?
&lt;/h2&gt;

&lt;p&gt;-&amp;gt; Amazon EventBridge is a serverless service. It allows different services — AWS, custom apps, or even SaaS — to talk to each other through events instead of direct API calls. It helps you work smarter by letting you filter events, change them if needed, and send them exactly where they need to go.&lt;/p&gt;

&lt;p&gt;So there, you may have a question that When do we have to use this tool..&lt;/p&gt;

&lt;p&gt;AWS EventBridge can be used for different tasks, like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Integrating AWS services like Lambda and CloudWatch to respond to events.
&lt;/li&gt;
&lt;li&gt;Real-time data processing by triggering actions instantly.
&lt;/li&gt;
&lt;li&gt;Automating event-driven architectures with decoupled services.
&lt;/li&gt;
&lt;li&gt;Scheduling tasks using built-in scheduler rules.
&lt;/li&gt;
&lt;li&gt;Monitoring &amp;amp; auditing via CloudWatch metrics and logs.
&lt;/li&gt;
&lt;li&gt;Connecting SaaS apps and third-party event sources seamlessly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;After doing so much of task by one single tool, you may think that Amazon EventBridge does so much, I think it may be costly. But you are very much wrong here. EventBridge is not that expensive as you think.&lt;/p&gt;

&lt;h2&gt;
  
  
  Amazon EventBridge Pricing
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Pricing is usage-based, not rule/schema-based.
&lt;/li&gt;
&lt;li&gt;AWS events (on default event bus) are free.
&lt;/li&gt;
&lt;li&gt;Custom, third-party, or cross-account events cost $1 per million events.
&lt;/li&gt;
&lt;li&gt;Additional charges may apply for event replays and data processing.
&lt;/li&gt;
&lt;li&gt;It’s a serverless model, so you only pay for what you use.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Amazon EventBridge has Key Features, let's look at the most important features and components of EventBridge.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Event Bus
&lt;/h3&gt;

&lt;p&gt;Amazon EventBridge acts as an intelligent event broker called an event bus, receiving JSON-formatted events from various sources and forwarding them to targets based on rules. Each event bus supports up to 300 rules and can route events to a maximum of 5 targets. The default event bus in every AWS account handles events from AWS services, while custom event buses can be created for applications or third-party SaaS integrations. For example, an event bus can listen for S3 upload events and trigger a Lambda function to process the uploaded object automatically.&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%2Fyje1hbe51map9y5dt8dc.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%2Fyje1hbe51map9y5dt8dc.png" alt="event-bus-in-amazon-eventbridge" width="800" height="356"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html" rel="noopener noreferrer"&gt;Image Source&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Pipes
&lt;/h3&gt;

&lt;p&gt;Amazon EventBridge Pipes provide point-to-point, asynchronous communication between specific AWS services. Each pipe connects a single source (like DynamoDB Streams, Kinesis, Amazon MQ, MSK, Kafka, or SQS) to a single target, with optional filtering and enrichment. Unlike event buses, pipes don’t use rules—instead, they filter events using schema-based patterns. If needed, events can be enriched before reaching the target using Lambda functions, Step Functions, API Gateway, or API Connections. This allows additional data to be fetched or transformed, making the event ready for the target system.&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%2Fp3uhlp2gzqmlzqvq6s2k.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%2Fp3uhlp2gzqmlzqvq6s2k.png" alt="pipes-in-amazon-eventbridge" width="764" height="319"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html" rel="noopener noreferrer"&gt;Image Source&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Schedulers
&lt;/h3&gt;

&lt;p&gt;Amazon EventBridge Scheduler allows events to be triggered on a fixed schedule rather than by actions. It supports time-based or recurring schedules and can target over 300 AWS services, including specific actions like "invoke" in AWS Lambda. Users define the payload in JSON to be sent during the trigger. It’s useful for automating periodic tasks like backups or keeping Lambda functions warm to avoid cold starts.&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%2Fv4ci1nvxsu32hfsdxmr7.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%2Fv4ci1nvxsu32hfsdxmr7.png" alt="amazon-eventbridge-scheduler" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Schema Registry
&lt;/h3&gt;

&lt;p&gt;Amazon EventBridge offers a Schema Registry feature that helps manage complex event structures. Since events are in JSON and can be deeply nested, schemas act as templates that define the structure of events from a source. Developers can generate code bindings in languages like Python or Go, making it easier to write logic for processing these events. EventBridge can also automatically discover schemas and store them in a registry, helping simplify development and integration with other services.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Replays
&lt;/h3&gt;

&lt;p&gt;Amazon EventBridge supports event replays by allowing you to archive and manually reprocess past events. This is helpful for debugging or retrying failed events without disrupting the system. You can set up archives on event buses with a defined retention period, making past events available for replay as needed.&lt;/p&gt;




&lt;h3&gt;
  
  
  That’s a Wrap!
&lt;/h3&gt;

&lt;p&gt;These notes covered the core building blocks of Amazon EventBridge. Whether you're just exploring serverless architecture or actively building event-driven workflows, EventBridge offers the flexibility and power to automate with precision.&lt;/p&gt;

&lt;p&gt;Keep experimenting, keep automating — the cloud’s the limit!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>End-to-End DevOps Automation for Meet Application</title>
      <dc:creator>Archies Gurav </dc:creator>
      <pubDate>Fri, 21 Mar 2025 09:25:01 +0000</pubDate>
      <link>https://forem.com/rcheeez/end-to-end-devops-automation-for-meet-application-3h43</link>
      <guid>https://forem.com/rcheeez/end-to-end-devops-automation-for-meet-application-3h43</guid>
      <description>&lt;h2&gt;
  
  
  Meet
&lt;/h2&gt;

&lt;p&gt;Meet is a web-based video conferencing service that allows users to hold real-time face-to-face meetings for free. It is ideal for various use cases such as company meetings, job training sessions, or board member discussions.&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%2F1cjg5s9h4tor4cokguso.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%2F1cjg5s9h4tor4cokguso.png" alt="meet-app-link" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Join Meet&lt;/strong&gt;: Easily join an existing meeting using a provided link or code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create Meet&lt;/strong&gt;: Host your own meeting and invite participants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio Controls&lt;/strong&gt;: Mute and unmute your microphone during the meeting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video Controls&lt;/strong&gt;: Turn your camera on or off as needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-Call Chatting&lt;/strong&gt;: Communicate with participants via text chat during the meeting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link Sharing&lt;/strong&gt;: Share the meeting link with others for easy access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meet Code Sharing&lt;/strong&gt;: Provide a unique meeting code for participants to join.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Participants List&lt;/strong&gt;: View a list of all attendees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leave Meet&lt;/strong&gt;: Exit the meeting when you are done.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Meet Project End-to-End Implementation
&lt;/h2&gt;

&lt;p&gt;In this demo, we will deploy a fully functional Meet application on an AWS EKS (Elastic Kubernetes Service) cluster.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Project Deployment Flow:&lt;/strong&gt;
&lt;/h3&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%2Fmyq50tdec2nt0h1z8ind.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%2Fmyq50tdec2nt0h1z8ind.png" alt="project-development-flow" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack Used in this Project
&lt;/h2&gt;

&lt;p&gt;The following technologies are used in this project for deployment, monitoring, and management:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; (Source Code Management)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; (Containerization)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jenkins&lt;/strong&gt; (Continuous Integration - CI)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP Dependency Check&lt;/strong&gt; (Security Scanning)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SonarQube&lt;/strong&gt; (Code Quality Analysis)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trivy&lt;/strong&gt; (File System Security Scan)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Argo CD&lt;/strong&gt; (Continuous Deployment - CD)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS EKS&lt;/strong&gt; (Kubernetes Orchestration)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terraform&lt;/strong&gt; (Infrastructure Provisioning)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ansible&lt;/strong&gt; (Configuration Management)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Helm&lt;/strong&gt; (Monitoring using Grafana and Prometheus)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  CI/CD Pipelines
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CI Pipeline (Build &amp;amp; Push)&lt;/strong&gt;
&lt;/h3&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%2Fpaylkxqak411ex1qxuhi.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%2Fpaylkxqak411ex1qxuhi.png" alt="jenkins-ci-pipeline" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CD Pipeline (Application Deployment)&lt;/strong&gt;
&lt;/h3&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%2F03a2sul51mn0o7ohhs8f.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%2F03a2sul51mn0o7ohhs8f.png" alt="jenkins-cd-pipeline" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Argo CD Application Deployment on EKS&lt;/strong&gt;
&lt;/h3&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%2F8d7kq4diivh1d5alxnzl.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%2F8d7kq4diivh1d5alxnzl.png" alt="argocd-deployment" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Prerequisites to Implement This Project
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Why Use Google Cloud?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Google Cloud offers a &lt;strong&gt;$300 free credit&lt;/strong&gt; for &lt;strong&gt;three months&lt;/strong&gt;, making it an excellent choice for provisioning heavy instances without incurring costs. This allows us to set up and test our EKS infrastructure efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Master Node Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
This instance will act as the master node and will be used for all EKS cluster operations using Kubectl. It will also be used for Jenkins and Argo CD operations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create a new Ubuntu 22.04 LTS instance on Google Cloud&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Machine Type: &lt;code&gt;e2-standard-2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;RAM: &lt;code&gt;8GB&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;vCPUs: &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Storage: &lt;code&gt;30GB&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open the required ports in firewall rules for the master node&lt;/strong&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%2Fceljog4feqv65m3lh1gt.png" alt="gcp-firewalls" width="800" height="328"&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add Public Key to the instance before creation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to &lt;strong&gt;Security &amp;gt; Scroll Down to Manage Access &amp;gt; Add Key&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Paste the Public Key and save it&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ansible Provisioner VM Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
This instance is used only for configuration and package installations via Ansible. It is not recommended to run any other workloads on this instance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create a new Ubuntu 22.04 LTS instance on Google Cloud&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Machine Type: &lt;code&gt;e2-medium&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;RAM: &lt;code&gt;4GB&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;vCPUs: &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Storage: &lt;code&gt;10GB&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install Ansible on the instance&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the following script to install Ansible:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Exit immediately if a command fails&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt;

run_silent&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;/dev/null 2&amp;gt;&amp;amp;1
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"🔄 Updating package lists..."&lt;/span&gt;
run_silent &lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"📦 Installing required dependencies..."&lt;/span&gt;
run_silent &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; software-properties-common

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"➕ Adding Ansible PPA repository..."&lt;/span&gt;
run_silent &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-add-repository &lt;span class="nt"&gt;--yes&lt;/span&gt; &lt;span class="nt"&gt;--update&lt;/span&gt; ppa:ansible/ansible

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"🚀 Installing Ansible..."&lt;/span&gt;
run_silent &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; ansible

&lt;span class="c"&gt;# Verify installation&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"✅ Ansible installed successfully!"&lt;/span&gt;
ansible &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone the Meet repository&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/rcheeez/meet.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create an SSH key pair for secure remote access&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To enable Ansible to connect and configure the master instance properly, generate an SSH key pair and add the public key to the master instance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/.ssh
ssh-keygen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates an SSH key pair. The &lt;strong&gt;public key must be added to the master node&lt;/strong&gt; to allow secure connections.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Configure the Ansible hosts file&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Open the hosts file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;vim /etc/ansible/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add the following configuration:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;   &lt;span class="nn"&gt;[master]&lt;/span&gt;
   &lt;span class="err"&gt;master_server&lt;/span&gt; &lt;span class="py"&gt;ansible_host&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;public-ip-address&amp;gt;&lt;/span&gt;

   &lt;span class="nn"&gt;[master:vars]&lt;/span&gt;
   &lt;span class="py"&gt;ansible_python_interpreter&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/bin/python3&lt;/span&gt;
   &lt;span class="py"&gt;ansible_user&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;vm-username&amp;gt;&lt;/span&gt;
   &lt;span class="py"&gt;ansible_ssh_private_key_file&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/home/&amp;lt;vm-username&amp;gt;/.ssh/&amp;lt;key-name&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Set proper permissions for the private key&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo chmod &lt;/span&gt;600 /home/&amp;lt;vm-username&amp;gt;/.ssh/&amp;lt;key-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install the required Ansible collections&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ansible-galaxy collection &lt;span class="nb"&gt;install &lt;/span&gt;community.docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the Ansible playbook to configure the master node&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ansible-playbook &lt;span class="nt"&gt;-i&lt;/span&gt; /etc/ansible/hosts master_server_tools_play.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;&lt;br&gt;
Make sure the Master Node is up and running and also make sure the Public key is added to the Master Node.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This will setup all the configuration on the Master Node.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌍 Terraform Configuration for EKS on Google Cloud Shell
&lt;/h2&gt;

&lt;p&gt;We will use &lt;strong&gt;Google Cloud Shell&lt;/strong&gt; to provision our &lt;strong&gt;AWS EKS&lt;/strong&gt; infrastructure using Terraform. Since &lt;strong&gt;Terraform&lt;/strong&gt; is already installed in &lt;strong&gt;Google Cloud Shell&lt;/strong&gt;, we can directly execute our infrastructure provisioning commands without any additional setup.&lt;br&gt;
This approach eliminates the need for external applications and leverages &lt;strong&gt;Google's free cloud credits&lt;/strong&gt; for cost-effective provisioning.&lt;/p&gt;


&lt;h3&gt;
  
  
  🛠 Steps to Set Up Terraform on Google Cloud Shell
&lt;/h3&gt;
&lt;h4&gt;
  
  
  1️⃣ &lt;strong&gt;Launch Google Cloud Shell&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;strong&gt;&lt;a href="https://console.cloud.google.com/" rel="noopener noreferrer"&gt;Google Cloud Console&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Activate Cloud Shell&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  2️⃣ &lt;strong&gt;Clone the Terraform Repository&lt;/strong&gt;
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/rcheeez/meet.git
&lt;span class="nb"&gt;cd &lt;/span&gt;meet/terraform/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  3️⃣ &lt;strong&gt;Initialize Terraform&lt;/strong&gt;
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  4️⃣ &lt;strong&gt;Apply Terraform Configuration to Provision EKS Cluster&lt;/strong&gt;
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform plan
terraform apply &lt;span class="nt"&gt;--auto-approve&lt;/span&gt;
&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%2Fi8szrsm8pai3afr2dgu2.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%2Fi8szrsm8pai3afr2dgu2.png" alt="terraform-apply" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🚀 Setting Up Jenkins &amp;amp; Installing Required Plugins
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1️⃣ Install Required Plugins
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Jenkins &amp;gt; Manage Jenkins &amp;gt; Plugins &amp;gt; Available Plugins&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Install the following plugins:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;OWASP Dependency Check&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker Pipeline&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipeline: Stage View Plugin&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SonarQube Scanner&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;After installing these plugins, &lt;strong&gt;restart Jenkins&lt;/strong&gt; to apply the changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  ⚙️ Setting Up Tools
&lt;/h2&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Jenkins &amp;gt; Manage Jenkins &amp;gt; Tools&lt;/strong&gt; and configure the required tools:&lt;/p&gt;
&lt;h3&gt;
  
  
  1️⃣ Add &lt;strong&gt;SonarQube Scanner&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; &lt;code&gt;sonarqube&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installation:&lt;/strong&gt; Install Automatically&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2️⃣ Add &lt;strong&gt;OWASP Dependency Check&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; &lt;code&gt;OWASP&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installation:&lt;/strong&gt; Install Automatically from GitHub&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3️⃣ Add &lt;strong&gt;Docker&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; &lt;code&gt;docker&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installation:&lt;/strong&gt; Install Automatically from Docker (latest version)&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🔧 Configuring SonarQube for Jenkins Integration
&lt;/h2&gt;

&lt;p&gt;After adding the required tools, we need to &lt;strong&gt;integrate SonarQube with Jenkins&lt;/strong&gt; by creating an authentication token and setting up a webhook for automated analysis.&lt;/p&gt;
&lt;h3&gt;
  
  
  1️⃣ &lt;strong&gt;Generating a SonarQube Token for Jenkins&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;SonarQube &amp;gt; User &amp;gt; Security &amp;gt; Tokens&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Generate Token&lt;/strong&gt; and provide a name (e.g., &lt;code&gt;jenkins-sonar-token&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Copy the generated token and save it securely&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2️⃣ &lt;strong&gt;Adding SonarQube Token in Jenkins&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Jenkins &amp;gt; Manage Jenkins &amp;gt; Credentials&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add a new credential with:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ID:&lt;/strong&gt; &lt;code&gt;sonar-token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; &lt;strong&gt;Secret Text&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secret:&lt;/strong&gt; &lt;em&gt;Paste the copied SonarQube token&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Refer to the next section for detailed steps on adding credentials in Jenkins.)&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3️⃣ &lt;strong&gt;Setting Up a SonarQube Webhook for Jenkins&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Login to &lt;strong&gt;SonarQube&lt;/strong&gt; and navigate to &lt;strong&gt;Administration &amp;gt; Webhooks&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt; and configure the webhook to point to your &lt;strong&gt;Jenkins server URL&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;This enables automatic triggering of &lt;strong&gt;SonarQube analysis&lt;/strong&gt; after each Jenkins build&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🔐 Configuring Credentials for the Pipeline
&lt;/h2&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Jenkins &amp;gt; Manage Jenkins &amp;gt; Credentials &amp;gt; Credentials Provider&lt;/strong&gt; and add the following credentials:&lt;/p&gt;
&lt;h3&gt;
  
  
  1️⃣ &lt;strong&gt;Git Credentials&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ID:&lt;/strong&gt; &lt;code&gt;git-creds&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description:&lt;/strong&gt; Git Credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; Username with Password&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Username:&lt;/strong&gt; &lt;em&gt;Your Git Username&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password:&lt;/strong&gt; &lt;em&gt;Your Git Personal Access Token&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2️⃣ &lt;strong&gt;Docker Credentials&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ID:&lt;/strong&gt; &lt;code&gt;docker-creds&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description:&lt;/strong&gt; Docker Credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; Username with Password&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Username:&lt;/strong&gt; &lt;em&gt;Your Docker Hub Username&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password:&lt;/strong&gt; &lt;em&gt;Your Docker Personal Access Token&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3️⃣ &lt;strong&gt;SonarQube Token&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ID:&lt;/strong&gt; &lt;code&gt;sonar-token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description:&lt;/strong&gt; SonarQube Token&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; Secret Text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secret:&lt;/strong&gt; &lt;em&gt;Your SonarQube API Token&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4️⃣ &lt;strong&gt;Gmail Credentials&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ID:&lt;/strong&gt; &lt;code&gt;gmail-creds&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description:&lt;/strong&gt; Gmail Credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; Username with Password&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Username:&lt;/strong&gt; &lt;em&gt;Your Gmail Email&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password:&lt;/strong&gt; &lt;em&gt;Your Google Account App Password&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Final Step&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;📌 &lt;strong&gt;Ensure all credentials are added correctly as shown in the reference image.&lt;/strong&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%2F3t0qvi4wa8va3exrbxq5.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%2F3t0qvi4wa8va3exrbxq5.png" alt="jenkins-credentials" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Configuring the System in Jenkins
&lt;/h2&gt;

&lt;p&gt;After setting up the credentials, follow these steps to configure the system in Jenkins:&lt;/p&gt;
&lt;h3&gt;
  
  
  1️⃣ Access Jenkins System Configuration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Jenkins &amp;gt; Manage Jenkins &amp;gt; System&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Configure System&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2️⃣ Set System Email Address
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Under &lt;strong&gt;Jenkins Location&lt;/strong&gt;, set the &lt;strong&gt;System E-mail address&lt;/strong&gt; to your Gmail account.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3️⃣ Configure SonarQube Servers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add a new &lt;strong&gt;SonarQube Server&lt;/strong&gt; entry.&lt;/li&gt;
&lt;li&gt;Provide a &lt;strong&gt;name&lt;/strong&gt; for the server, enter the &lt;strong&gt;server URL&lt;/strong&gt;, and set up authentication credentials.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4️⃣ Set Up Global Trusted Pipeline Libraries
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add a new &lt;strong&gt;Shared Library&lt;/strong&gt; entry.&lt;/li&gt;
&lt;li&gt;Provide:

&lt;ul&gt;
&lt;li&gt;Library &lt;strong&gt;name&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Git &lt;strong&gt;repository URL&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Project repository &lt;strong&gt;branch name&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Credentials (if the &lt;strong&gt;Jenkins Shared Library&lt;/strong&gt; repository is private)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  5️⃣ Configure Git Plugin
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Locate &lt;strong&gt;Git Plugin settings&lt;/strong&gt; in the configuration.&lt;/li&gt;
&lt;li&gt;Fill in the following fields:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git Global Config user.name&lt;/strong&gt; → Enter your Git username&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git Global Config user.email&lt;/strong&gt; → Enter your Git email&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  6️⃣ Set Up Email Notifications
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔹 Extended Email Notification:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure the &lt;strong&gt;SMTP server&lt;/strong&gt; and &lt;strong&gt;port&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Add authentication &lt;strong&gt;credentials&lt;/strong&gt; and enable &lt;strong&gt;SSL&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔹 Email Notification:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure the &lt;strong&gt;SMTP server&lt;/strong&gt;, &lt;strong&gt;port&lt;/strong&gt;, and &lt;strong&gt;credentials&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;SSL&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Test the configuration by sending a &lt;strong&gt;test email&lt;/strong&gt; to verify the setup.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🚀 Creating CI and CD Jenkins Pipelines
&lt;/h2&gt;

&lt;p&gt;After configuring the system, follow these steps to create &lt;strong&gt;CI and CD Jenkins pipelines&lt;/strong&gt; for the Meet application.&lt;/p&gt;


&lt;h3&gt;
  
  
  📌 1️⃣ Creating the Jenkins CI Pipeline (Meet-CI)
&lt;/h3&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Step 1: Create a New Jenkins Pipeline Job&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;strong&gt;Jenkins Dashboard&lt;/strong&gt; → Click on &lt;strong&gt;New Item&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enter &lt;strong&gt;Job Name&lt;/strong&gt;: &lt;code&gt;Meet-CI&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Pipeline&lt;/strong&gt; as the project type&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to create the job&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Step 2: Configure the Pipeline&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Scroll down to the &lt;strong&gt;Pipeline&lt;/strong&gt; section&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Under &lt;strong&gt;Definition&lt;/strong&gt;, choose &lt;strong&gt;Pipeline script from SCM&lt;/strong&gt;&lt;strong&gt;Option 1: Using SCM (Recommended)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SCM&lt;/strong&gt;: Select &lt;strong&gt;Git&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository URL&lt;/strong&gt;: Add your GitHub repository URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credentials&lt;/strong&gt;: Add Git credentials if required(if repository is private)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branch&lt;/strong&gt;: Select the branch where the Jenkinsfile exists (e.g., &lt;code&gt;main&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Script Path&lt;/strong&gt;: Set it as &lt;code&gt;Jenkinsfile&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Option 2: Manually Copying the Jenkinsfile&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Pipeline script&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Manually paste the contents of &lt;code&gt;Jenkinsfile&lt;/code&gt; from the &lt;code&gt;gitops&lt;/code&gt; folder&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🖼️ &lt;strong&gt;Screenshot: Jenkins CI Pipeline Configuration&lt;/strong&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%2Fb9pj0bbh7cpfu7rwvp9u.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%2Fb9pj0bbh7cpfu7rwvp9u.png" alt="Meet-CI Pipeline" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  📌 2️⃣ Creating the Jenkins CD Pipeline (Meet-CD)
&lt;/h3&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Step 1: Create a New Jenkins Pipeline Job&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;strong&gt;Jenkins Dashboard&lt;/strong&gt; → Click on &lt;strong&gt;New Item&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enter &lt;strong&gt;Job Name&lt;/strong&gt;: &lt;code&gt;Meet-CD&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Pipeline&lt;/strong&gt; as the project type&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to create the job&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Step 2: Configure the Pipeline&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Scroll down to the &lt;strong&gt;Pipeline&lt;/strong&gt; section&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Definition&lt;/strong&gt;, choose one of the two options:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Option 1: Using SCM (Recommended)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SCM&lt;/strong&gt;: Select &lt;strong&gt;Git&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository URL&lt;/strong&gt;: Add your GitHub repository URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credentials&lt;/strong&gt;: Add Git credentials if required (if repostiory is private)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branch&lt;/strong&gt;: Select the branch where the Jenkinsfile exists (e.g., &lt;code&gt;main&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Script Path&lt;/strong&gt;: Set it as &lt;code&gt;gitops/Jenkinsfile&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Option 2: Manually Copying the Jenkinsfile&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Pipeline script&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Manually paste the contents of &lt;code&gt;Jenkinsfile&lt;/code&gt; from the &lt;code&gt;gitops&lt;/code&gt; folder

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🖼️ &lt;strong&gt;Screenshot: Jenkins CD Pipeline Configuration&lt;/strong&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%2Fxx07fwbmxbb8bshzcn9t.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%2Fxx07fwbmxbb8bshzcn9t.png" alt="Meet-CD Pipeline" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;🎯 &lt;strong&gt;Now your CI/CD pipelines are ready!&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Meet-CI&lt;/strong&gt; will handle &lt;strong&gt;building, testing, and pushing images&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meet-CD&lt;/strong&gt; will handle &lt;strong&gt;deployments via ArgoCD&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/assets%2Fjenkins-ci-cd-pipelines.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/assets%2Fjenkins-ci-cd-pipelines.png" alt="Meet-CI-CD-pipelines" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🚀 Running the CI/CD Pipelines
&lt;/h2&gt;

&lt;p&gt;Now that Jenkins is set up, let's run the pipelines.&lt;/p&gt;
&lt;h3&gt;
  
  
  1️⃣ &lt;strong&gt;Run the CI Pipeline&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Jenkins &amp;gt; Meet-CI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Build Now&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Monitor the pipeline execution to ensure successful build, test, and push steps&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2️⃣ &lt;strong&gt;Run the CD Pipeline&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Jenkins &amp;gt; Meet-CD&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Build Now&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;This will trigger the deployment process using ArgoCD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once the pipelines have successfully run, we can now &lt;strong&gt;set up ArgoCD on EKS&lt;/strong&gt; for automated deployments.&lt;/p&gt;


&lt;h2&gt;
  
  
  🚀 Setting Up ArgoCD on EKS for CI/CD Deployment
&lt;/h2&gt;

&lt;p&gt;Before deploying applications via ArgoCD, we need to &lt;strong&gt;connect &lt;code&gt;kubectl&lt;/code&gt; to our EKS cluster&lt;/strong&gt; and &lt;strong&gt;install ArgoCD&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔗 Connecting &lt;code&gt;kubectl&lt;/code&gt; to EKS Cluster
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Ensure AWS CLI is configured&lt;/strong&gt;&lt;br&gt;
   Before running the following command, &lt;strong&gt;make sure you have configured AWS CLI (&lt;code&gt;aws configure&lt;/code&gt;)&lt;/strong&gt;. Otherwise, the connection will fail.&lt;/p&gt;

&lt;p&gt;2️⃣ &lt;strong&gt;Connect &lt;code&gt;kubectl&lt;/code&gt; to the EKS Cluster&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   aws eks update-kubeconfig &lt;span class="nt"&gt;--region&lt;/span&gt; ap-south-1 &lt;span class="nt"&gt;--name&lt;/span&gt; meet-cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command connects your &lt;strong&gt;EKS cluster&lt;/strong&gt; to &lt;code&gt;kubectl&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠 Installing ArgoCD on EKS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ &lt;strong&gt;Create ArgoCD Namespace&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create ns argocd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2️⃣ &lt;strong&gt;Apply ArgoCD Manifest&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-n&lt;/span&gt; argocd &lt;span class="nt"&gt;-f&lt;/span&gt; https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3️⃣ &lt;strong&gt;Verify ArgoCD Installation&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-n&lt;/span&gt; argocd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure that all &lt;strong&gt;ArgoCD pods are running&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Checking ArgoCD Services
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get svc &lt;span class="nt"&gt;-n&lt;/span&gt; argocd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will list all the services running under the &lt;code&gt;argocd&lt;/code&gt; namespace.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Change ArgoCD Service Type to NodePort&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;By default, ArgoCD runs as a &lt;code&gt;ClusterIP&lt;/code&gt; service. We need to change it to &lt;code&gt;NodePort&lt;/code&gt; for external access.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl patch svc argocd-server &lt;span class="nt"&gt;-n&lt;/span&gt; argocd &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;'{"spec": {"type": "NodePort"}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Confirm the Service is Patched&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get svc &lt;span class="nt"&gt;-n&lt;/span&gt; argocd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Ensure the &lt;code&gt;argocd-server&lt;/code&gt; service is now of type &lt;strong&gt;NodePort&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌐 Accessing ArgoCD UI
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Find Your Public EKS Worker Node IP&lt;/strong&gt;&lt;br&gt;
2️⃣ Open the ArgoCD UI in a browser using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   &amp;lt;public-eks-worker-ip&amp;gt;:&amp;lt;node-port&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3️⃣ Click &lt;strong&gt;Advanced&lt;/strong&gt; and proceed.&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%2Fpvhqs3o49zr61lbayyqj.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%2Fpvhqs3o49zr61lbayyqj.png" alt="argocd-login-page" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 Fetching Initial Admin Password
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; argocd get secret argocd-initial-admin-secret &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nv"&gt;jsonpath&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"{.data.password}"&lt;/span&gt; | &lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the &lt;strong&gt;decoded password&lt;/strong&gt; and use it to log in to ArgoCD.&lt;/p&gt;

&lt;h2&gt;
  
  
  🏗 Updating Admin Password
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Log in to ArgoCD UI&lt;/strong&gt;&lt;br&gt;
2️⃣ Go to &lt;strong&gt;User Info &amp;gt; Update Password&lt;/strong&gt;&lt;br&gt;
3️⃣ Set a &lt;strong&gt;new secure password&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔗 Connecting Git Repository to ArgoCD
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Go to&lt;/strong&gt; &lt;strong&gt;Repositories&lt;/strong&gt; section in ArgoCD UI2️⃣ Click &lt;strong&gt;Connect Repository&lt;/strong&gt;3️⃣ Choose &lt;strong&gt;Git&lt;/strong&gt; as repository type4️⃣ Enter the &lt;strong&gt;Repository URL&lt;/strong&gt; and select the &lt;strong&gt;Branch&lt;/strong&gt;5️⃣ Click &lt;strong&gt;Connect&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;📝 Note:&lt;/strong&gt; The connection &lt;strong&gt;must be successful&lt;/strong&gt; before proceeding.&lt;/p&gt;
&lt;/blockquote&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%2F781see1368i90u6uod8m.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%2F781see1368i90u6uod8m.png" alt="argocd-repositories" width="800" height="383"&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%2F8swk178mu7kk4ttmw8qv.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%2F8swk178mu7kk4ttmw8qv.png" alt="argocd-connect-success" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🔐 Logging in to ArgoCD via CLI
&lt;/h2&gt;

&lt;p&gt;📌 The &lt;strong&gt;ArgoCD CLI&lt;/strong&gt; is already installed using &lt;strong&gt;Ansible&lt;/strong&gt; on the Jenkins Master machine.&lt;/p&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Login to ArgoCD CLI&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;argocd login &amp;lt;eks-worker-public-ip&amp;gt;:&amp;lt;node-port&amp;gt; &lt;span class="nt"&gt;--username&lt;/span&gt; admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ &lt;strong&gt;Enter the password&lt;/strong&gt; fetched earlier.&lt;/p&gt;

&lt;p&gt;✅ You are now logged in to ArgoCD via CLI.&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%2Fxzsx4a8j1fkxk3rrd3v3.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%2Fxzsx4a8j1fkxk3rrd3v3.png" alt="argocd-cli-login" width="800" height="60"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Checking Available Clusters in ArgoCD
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;argocd cluster list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔍 Finding Your EKS Cluster Name
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl config get-contexts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔗 Adding EKS Cluster to ArgoCD
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;argocd cluster add arn:aws:eks:ap-south-1:034362041947:cluster/meet-cluster &lt;span class="nt"&gt;--name&lt;/span&gt; meet-cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🎯 &lt;strong&gt;Verify Cluster in ArgoCD UI&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;1️⃣ Go to &lt;strong&gt;Settings → Clusters&lt;/strong&gt;&lt;br&gt;
2️⃣ Ensure that the EKS cluster is &lt;strong&gt;successfully added&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🚀 Deploying an Application in ArgoCD
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Go to&lt;/strong&gt; &lt;strong&gt;Applications&lt;/strong&gt; → &lt;strong&gt;New App&lt;/strong&gt;&lt;br&gt;
2️⃣ &lt;strong&gt;Fill in the required details&lt;/strong&gt;&lt;br&gt;
3️⃣ &lt;strong&gt;Enable "Auto-Create Namespace"&lt;/strong&gt;&lt;br&gt;
4️⃣ &lt;strong&gt;Set the Application Name same as Namespace&lt;/strong&gt;&lt;br&gt;
5️⃣ Click &lt;strong&gt;Create&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the improved version with better readability and clarity:&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%2Ffz0036euszrlucdw4kid.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%2Ffz0036euszrlucdw4kid.png" alt="argocd-application" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Your ArgoCD deployment is now ready!&lt;/strong&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%2F9vlb4db8pu274y1j9jtc.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%2F9vlb4db8pu274y1j9jtc.png" alt="argocd-deployment" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🔍 Verify Deployment and Access the Application
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1️⃣ &lt;strong&gt;Check the Deployment Status from Master Instance&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Run the following command to check the status of your services and deployments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get all &lt;span class="nt"&gt;-n&lt;/span&gt; meetapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will display the &lt;strong&gt;pods, services, and deployments&lt;/strong&gt; running inside the &lt;code&gt;meetapp&lt;/code&gt; namespace.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ &lt;strong&gt;Find the Service NodePort&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Look for the &lt;strong&gt;NodePort&lt;/strong&gt; assigned to your service in the output. For example:&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%2Femk4ebnf2uody9baxkqm.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%2Femk4ebnf2uody9baxkqm.png" alt="meetapp-getall" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, the &lt;strong&gt;NodePort is &lt;code&gt;31818&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ &lt;strong&gt;Access the Application in Browser&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Open your browser and visit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://&amp;lt;public-eks-worker-ip&amp;gt;:31818
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📌 &lt;strong&gt;Replace &lt;code&gt;&amp;lt;public-eks-worker-ip&amp;gt;&lt;/code&gt; with your actual worker node’s public IP.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;🚀 &lt;strong&gt;Your application has been successfully deployed and is now accessible!&lt;/strong&gt; 🎯&lt;/p&gt;




&lt;h3&gt;
  
  
  🌐 &lt;strong&gt;Access the Deployed Application&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You can now open the application in your browser using the assigned &lt;strong&gt;NodePort&lt;/strong&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%2Ffmd97mxu4bjbzgk00lqp.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%2Ffmd97mxu4bjbzgk00lqp.png" alt="meet-app-view" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;Ensure that you are using the correct public IP of your EKS worker node.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  📩 &lt;strong&gt;Deployment Success Notification&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;success email notification&lt;/strong&gt; has also been sent to the email address configured in the Jenkins pipeline.&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%2F0xvhwgbhefme4x5t25zw.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%2F0xvhwgbhefme4x5t25zw.png" alt="success-email" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;This confirms that the CI/CD pipeline has successfully built and deployed the application!&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 &lt;strong&gt;Monitoring EKS Cluster &amp;amp; Workloads with Prometheus &amp;amp; Grafana (via HELM)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To effectively &lt;strong&gt;monitor your EKS cluster, Kubernetes components, and workloads&lt;/strong&gt;, we will set up &lt;strong&gt;Prometheus&lt;/strong&gt; and &lt;strong&gt;Grafana&lt;/strong&gt; using HELM.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠 &lt;strong&gt;Installing HELM on the Master Machine&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Download and Install HELM&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
&lt;span class="nb"&gt;chmod &lt;/span&gt;700 get_helm.sh
./get_helm.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ &lt;strong&gt;Add HELM Chart Repositories&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm repo add stable https://charts.helm.sh/stable
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ This adds the required repositories for installing &lt;strong&gt;Prometheus&lt;/strong&gt; and &lt;strong&gt;Grafana&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 &lt;strong&gt;Deploying Prometheus &amp;amp; Grafana on EKS&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Create a Namespace for Prometheus&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create ns prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ &lt;strong&gt;Install Prometheus and Grafana using HELM&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm &lt;span class="nb"&gt;install &lt;/span&gt;stable prometheus-community/kube-prometheus-stack &lt;span class="nt"&gt;-n&lt;/span&gt; prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ This installs &lt;strong&gt;Prometheus for monitoring&lt;/strong&gt; and &lt;strong&gt;Grafana for visualization&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;3️⃣ &lt;strong&gt;Check Prometheus Services&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get svc &lt;span class="nt"&gt;-n&lt;/span&gt; prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌍 &lt;strong&gt;Exposing Prometheus &amp;amp; Grafana to External Access&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;By default, &lt;strong&gt;Prometheus and Grafana&lt;/strong&gt; are only accessible within the cluster.&lt;br&gt;
We need to &lt;strong&gt;change their services to NodePort&lt;/strong&gt; to make them accessible externally.&lt;/p&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Expose Prometheus to External Access&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl edit svc stable-kube-prometheus-sta-prometheus &lt;span class="nt"&gt;-n&lt;/span&gt; prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 &lt;strong&gt;Modify the &lt;code&gt;type: ClusterIP&lt;/code&gt; to &lt;code&gt;type: NodePort&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
🔹 Save and exit the editor&lt;/p&gt;

&lt;p&gt;2️⃣ &lt;strong&gt;Verify Prometheus Service is Exposed&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get svc &lt;span class="nt"&gt;-n&lt;/span&gt; prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3️⃣ &lt;strong&gt;Expose Grafana to External Access&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl edit svc stable-grafana &lt;span class="nt"&gt;-n&lt;/span&gt; prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 &lt;strong&gt;Modify the &lt;code&gt;type: ClusterIP&lt;/code&gt; to &lt;code&gt;type: NodePort&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
🔹 Save and exit the editor&lt;/p&gt;

&lt;p&gt;4️⃣ &lt;strong&gt;Verify Grafana Service is Exposed&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get svc &lt;span class="nt"&gt;-n&lt;/span&gt; prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔑 &lt;strong&gt;Accessing Grafana Dashboard&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Get Grafana Admin Password&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get secret &lt;span class="nt"&gt;--namespace&lt;/span&gt; prometheus stable-grafana &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nv"&gt;jsonpath&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"{.data.admin-password}"&lt;/span&gt; | &lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="nt"&gt;--decode&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📌 The &lt;strong&gt;default username&lt;/strong&gt; is &lt;code&gt;admin&lt;/code&gt;. Use the retrieved password to log in.&lt;/p&gt;

&lt;p&gt;2️⃣ &lt;strong&gt;Open Grafana in Your Browser&lt;/strong&gt;&lt;br&gt;
Use the &lt;strong&gt;EKS worker node’s public IP&lt;/strong&gt; and the &lt;strong&gt;Grafana NodePort&lt;/strong&gt; to access it.&lt;/p&gt;


&lt;h2&gt;
  
  
  📊 &lt;strong&gt;Grafana Dashboards&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once logged in, explore the &lt;strong&gt;pre-configured dashboards&lt;/strong&gt; to monitor your 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%2F0wwglvhfyjtn9nugcyh0.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%2F0wwglvhfyjtn9nugcyh0.png" alt="grafana" 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%2Fq5pky4tiwfkkjml1pzik.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%2Fq5pky4tiwfkkjml1pzik.png" alt="grafana-dashboard" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🧹 &lt;strong&gt;Cleaning Up the Infrastructure&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When you're done, &lt;strong&gt;delete the EKS infrastructure&lt;/strong&gt; and &lt;strong&gt;remove the GCP instances&lt;/strong&gt; to avoid unnecessary costs.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;✅ &lt;strong&gt;This command will remove all AWS EKS resources.&lt;/strong&gt;&lt;br&gt;
✅ &lt;strong&gt;Manually delete the two instances from GCP.&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>ansible</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
