<?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: Ragul.M</title>
    <description>The latest articles on DEV Community by Ragul.M (@ragul_21).</description>
    <link>https://dev.to/ragul_21</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%2F2341873%2Feb1f7d76-9712-4f97-b5f1-a0fcf7bb4520.jpg</url>
      <title>DEV Community: Ragul.M</title>
      <link>https://dev.to/ragul_21</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ragul_21"/>
    <language>en</language>
    <item>
      <title>Setting Up Kubernetes and Nginx Ingress Controller on an EC2 Instance</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Wed, 19 Mar 2025 16:52:47 +0000</pubDate>
      <link>https://dev.to/ragul_21/setting-up-kubernetes-and-nginx-ingress-controller-on-an-ec2-instance-9p1</link>
      <guid>https://dev.to/ragul_21/setting-up-kubernetes-and-nginx-ingress-controller-on-an-ec2-instance-9p1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes (K8s)&lt;/strong&gt; is a powerful container orchestration platform that simplifies application deployment and scaling. In this guide, we’ll set up Kubernetes on an AWS EC2 instance, install the Nginx Ingress Controller, and configure Ingress rules to expose multiple services (app1 and app2).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Setting Up Kubernetes on an EC2 Instance&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1.1&lt;/strong&gt; Launch an EC2 Instance&lt;br&gt;
Choose an instance with enough resources (e.g., t3.medium or larger) and install Ubuntu 20.04 or Amazon Linux 2.&lt;br&gt;
&lt;strong&gt;1.2&lt;/strong&gt; Update Packages&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y  # For Ubuntu 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;1.3&lt;/strong&gt; Install Docker&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install -y docker.io  
sudo systemctl enable --now docker

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;1.4&lt;/strong&gt; Install Kubernetes (kubectl, kubeadm, kubelet)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;1.5&lt;/strong&gt; Initialize Kubernetes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo kubeadm init --pod-network-cidr=192.168.0.0/16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow the output instructions to set up kubectl for your user:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;1.6&lt;/strong&gt; Install a Network Plugin (Calico)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;For Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

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

&lt;/div&gt;



&lt;p&gt;Now, Kubernetes is ready!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Install Nginx Ingress Controller&lt;/strong&gt;&lt;br&gt;
Nginx Ingress Controller helps manage external traffic to services inside 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;kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait until the controller is running:&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 pods -n ingress-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see ingress-nginx-controller running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Deploy Two Applications (app1 and app2)&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;3.1&lt;/strong&gt; Deploy app1&lt;br&gt;
Create &lt;em&gt;app1-deployment.yaml&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: app1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: app1
  template:
    metadata:
      labels:
        app: app1
    spec:
      containers:
      - name: app1
        image: nginx
        ports:
        - containerPort: 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create &lt;em&gt;app1-service.yaml&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: app1-service
spec:
  selector:
    app: app1
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: ClusterIP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the resources:&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 app1-deployment.yaml 
kubectl apply -f app1-service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3.2&lt;/strong&gt; Deploy app2&lt;br&gt;
Create &lt;em&gt;app2-deployment.yaml&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: app2
spec:
  replicas: 2
  selector:
    matchLabels:
      app: app2
  template:
    metadata:
      labels:
        app: app2
    spec:
      containers:
      - name: app2
        image: nginx
        ports:
        - containerPort: 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create &lt;em&gt;app2-service.yaml&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: app2-service
spec:
  selector:
    app: app2
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: ClusterIP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the resources:&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 app2-deployment.yaml 
kubectl apply -f app2-service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Configure Ingress for app1 and app2&lt;/strong&gt;&lt;br&gt;
Create &lt;em&gt;nginx-ingress.yaml&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: app1.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app1-service
            port:
              number: 80
  - host: app2.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app2-service
            port:
              number: 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the Ingress rule:&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 nginx-ingress.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5: Verify Everything&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;5.1&lt;/strong&gt; Get Ingress External IP&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 ingress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5.2&lt;/strong&gt; Update /etc/hosts (Local Testing Only)&lt;br&gt;
If you're testing on a local machine, add this to /etc/hosts:&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;EXTERNAL-IP&amp;gt; app1.example.com
&amp;lt;EXTERNAL-IP&amp;gt; app2.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace  with the actual external IP of your Ingress Controller.&lt;br&gt;
&lt;strong&gt;5.3&lt;/strong&gt; Test in Browser or Curl&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl http://app1.example.com
curl http://app2.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything is set up correctly, you should see the default Nginx welcome page for both applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
In this guide, we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installed Kubernetes on an EC2 instance&lt;/li&gt;
&lt;li&gt;Set up Nginx Ingress Controller&lt;/li&gt;
&lt;li&gt;Deployed two services (app1 and app2)&lt;/li&gt;
&lt;li&gt;Configured Ingress to expose them via domain names&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, you can easily manage multiple applications in your cluster using a single Ingress resource.&lt;/p&gt;

&lt;p&gt;Follow for more . Happy learning :) &lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>api</category>
    </item>
    <item>
      <title>Deploying a Two-Tier Web Application on AWS with MySQL and Apache</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Wed, 12 Mar 2025 12:46:23 +0000</pubDate>
      <link>https://dev.to/ragul_21/deploying-a-two-tier-web-application-on-aws-with-mysql-and-apache-3189</link>
      <guid>https://dev.to/ragul_21/deploying-a-two-tier-web-application-on-aws-with-mysql-and-apache-3189</guid>
      <description>&lt;p&gt;In this blog, I will guide you through step-by-step instructions to set up a two-tier architecture on AWS using VPC, Subnets, Internet Gateway, Route Tables, RDS, EC2, Apache, MySQL, PHP, and HTML. This project will allow you to host a registration web application where users can submit their details, which will be stored in an RDS MySQL database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a VPC&lt;/strong&gt;&lt;br&gt;
1.1 Login to AWS Management Console&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the VPC service&lt;/li&gt;
&lt;li&gt;Click Create VPC&lt;/li&gt;
&lt;li&gt;Enter the following details:&lt;/li&gt;
&lt;li&gt;VPC Name: my-vpc&lt;/li&gt;
&lt;li&gt;IPv4 CIDR Block: 10.0.0.0/16&lt;/li&gt;
&lt;li&gt;Tenancy: Default&lt;/li&gt;
&lt;li&gt;Click Create VPC&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ema70v3otrrepd1v4z7.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%2F0ema70v3otrrepd1v4z7.png" alt="Image description" width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create Subnets&lt;/strong&gt;&lt;br&gt;
2.1 Create a Public Subnet&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to VPC &amp;gt; Subnets&lt;/li&gt;
&lt;li&gt;Click Create Subnet&lt;/li&gt;
&lt;li&gt;Choose my-vpc&lt;/li&gt;
&lt;li&gt;Set Subnet Name: public-subnet&lt;/li&gt;
&lt;li&gt;IPv4 CIDR Block: 10.0.1.0/24&lt;/li&gt;
&lt;li&gt;Click Create&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.2 Create a Private Subnet&lt;br&gt;
Repeat the steps above but set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subnet Name: private-subnet&lt;/li&gt;
&lt;li&gt;IPv4 CIDR Block: 10.0.2.0/24&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0v0nldajis4op2emhv6k.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%2F0v0nldajis4op2emhv6k.png" alt="Image description" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Create an Internet Gateway (IGW) and Attach to VPC&lt;/strong&gt;&lt;br&gt;
3.1 Create IGW&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to VPC &amp;gt; Internet Gateways&lt;/li&gt;
&lt;li&gt;Click Create Internet Gateway&lt;/li&gt;
&lt;li&gt;Set Name: your-igw&lt;/li&gt;
&lt;li&gt;Click Create IGW
3.2 Attach IGW to VPC&lt;/li&gt;
&lt;li&gt;Select your-igw&lt;/li&gt;
&lt;li&gt;Click Actions &amp;gt; Attach to VPC&lt;/li&gt;
&lt;li&gt;Choose my-vpc and click Attach&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9ryg2seg6pjmwswnvt2.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%2Fa9ryg2seg6pjmwswnvt2.png" alt="Image description" width="800" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Configure Route Tables&lt;/strong&gt;&lt;br&gt;
4.1 Create a Public Route Table&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to VPC &amp;gt; Route Tables&lt;/li&gt;
&lt;li&gt;Click Create Route Table&lt;/li&gt;
&lt;li&gt;Set Name: public-route-table&lt;/li&gt;
&lt;li&gt;Choose my-vpc and click Create&lt;/li&gt;
&lt;li&gt;Edit Routes → Add a new route:&lt;/li&gt;
&lt;li&gt;Destination: 0.0.0.0/0&lt;/li&gt;
&lt;li&gt;Target: my-igw&lt;/li&gt;
&lt;li&gt;Edit Subnet Associations → Attach public-subnet&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0a62ep1r3a6epi1momi.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%2Fn0a62ep1r3a6epi1momi.png" alt="Image description" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Create an RDS Database (MySQL)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to RDS &amp;gt; Create Database&lt;/li&gt;
&lt;li&gt;Choose Standard Create&lt;/li&gt;
&lt;li&gt;Select MySQL&lt;/li&gt;
&lt;li&gt;Set DB instance identifier: my-rds&lt;/li&gt;
&lt;li&gt;Master Username: admin&lt;/li&gt;
&lt;li&gt;Master Password: yourpassword&lt;/li&gt;
&lt;li&gt;Subnet Group: Select private-subnet&lt;/li&gt;
&lt;li&gt;VPC Security Group: Allow 3306 (MySQL) from my-vpc&lt;/li&gt;
&lt;li&gt;Click Create Database&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsoxty53b3k8j0496eap.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%2Fvsoxty53b3k8j0496eap.png" alt="Image description" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Launch an EC2 Instance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to EC2 &amp;gt; Launch Instance&lt;/li&gt;
&lt;li&gt;Choose Ubuntu 22.04&lt;/li&gt;
&lt;li&gt;Set Instance Name: my-ec2&lt;/li&gt;
&lt;li&gt;Select my-vpc and attach public-subnet&lt;/li&gt;
&lt;li&gt;Security Group: Allow&lt;/li&gt;
&lt;li&gt;SSH (22) from your IP&lt;/li&gt;
&lt;li&gt;HTTP (80) from anywhere&lt;/li&gt;
&lt;li&gt;MySQL (3306) from my-vpc&lt;/li&gt;
&lt;li&gt;Click Launch Instance&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/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxbgiz80jmnqie9wtqtq.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%2Fkxbgiz80jmnqie9wtqtq.png" alt="Image description" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Install Apache, PHP, and MySQL Client&lt;/strong&gt;&lt;br&gt;
7.1 Connect to EC2&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh -i your-key.pem ubuntu@your-ec2-public-ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7.2 Install LAMP Stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y apache2 php libapache2-mod-php php-mysql mysql-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7.3 Start Apache&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl start apache2
sudo systemctl enable apache2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 8: Configure Web Application&lt;/strong&gt;&lt;br&gt;
8.1 Create the Registration Form&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd /var/www/html
&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;sudo nano index.html
&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;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Registration Form&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;h2&amp;gt;User Registration&amp;lt;/h2&amp;gt;
    &amp;lt;form action="submit.php" method="POST"&amp;gt;
        Name: &amp;lt;input type="text" name="name" required&amp;gt;&amp;lt;br&amp;gt;
        DOB: &amp;lt;input type="date" name="dob" required&amp;gt;&amp;lt;br&amp;gt;
        Email: &amp;lt;input type="email" name="email" required&amp;gt;&amp;lt;br&amp;gt;
        &amp;lt;input type="submit" value="Register"&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;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%2Faqzf0on6u1lxfvhle6s9.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%2Faqzf0on6u1lxfvhle6s9.jpg" alt="Image description" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8.2 Create PHP Script (submit.php)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /var/www/html/submit.php
&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;&amp;lt;?php
$servername = "your-rds-endpoint";
$username = "admin";
$password = "yourpassword";
$dbname = "registration";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn-&amp;gt;connect_error) {
    die("Connection failed: " . $conn-&amp;gt;connect_error);
}
$name = $_POST['name'];
$dob = $_POST['dob'];
$email = $_POST['email'];
$stmt = $conn-&amp;gt;prepare("INSERT INTO users (name, dob, email) VALUES (?, ?, ?)");
$stmt-&amp;gt;bind_param("sss", $name, $dob, $email);
if ($stmt-&amp;gt;execute()) {
    echo "Registration successful";
} else {
    echo "Error: " . $stmt-&amp;gt;error;
}
$stmt-&amp;gt;close();
$conn-&amp;gt;close();
?&amp;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%2Fmwx8754d7uhqn4vpplik.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%2Fmwx8754d7uhqn4vpplik.png" alt="Image description" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9: Create Target Group&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the AWS EC2 Console → Navigate to Target Groups&lt;/li&gt;
&lt;li&gt;Click Create target group&lt;/li&gt;
&lt;li&gt;Choose Target type: Instance&lt;/li&gt;
&lt;li&gt;Enter Target group name: my-target-group&lt;/li&gt;
&lt;li&gt;Select Protocol: HTTP&lt;/li&gt;
&lt;li&gt;Select Port: 80&lt;/li&gt;
&lt;li&gt;Choose the VPC you created earlier&lt;/li&gt;
&lt;li&gt;Click Next&lt;/li&gt;
&lt;li&gt;Under Register Targets, select your EC2 instances&lt;/li&gt;
&lt;li&gt;Click Include as pending below, then Create target group&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%2F91tu9t6mi86rxfkneedq.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%2F91tu9t6mi86rxfkneedq.png" alt="Image description" width="800" height="316"&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%2Ff4sd5off05inp9w9h5u3.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%2Ff4sd5off05inp9w9h5u3.png" alt="Image description" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10: Create an Application Load Balancer (ALB)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to AWS EC2 Console → Navigate to Load Balancers&lt;/li&gt;
&lt;li&gt;Click Create Load Balancer&lt;/li&gt;
&lt;li&gt;Choose Application Load Balancer&lt;/li&gt;
&lt;li&gt;Enter ALB Name: my-alb&lt;/li&gt;
&lt;li&gt;Scheme: Internet-facing&lt;/li&gt;
&lt;li&gt;IP address type: IPv4&lt;/li&gt;
&lt;li&gt;Select the VPC&lt;/li&gt;
&lt;li&gt;Select at least two public subnets (for high availability)&lt;/li&gt;
&lt;li&gt;Click Next&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%2F2tqxpp0o8zxvo8po2e57.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%2F2tqxpp0o8zxvo8po2e57.png" alt="Image description" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 11: Test the Application&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Restart Apache
sudo systemctl restart apache2&lt;/li&gt;
&lt;li&gt;Open your browser and visit:
&lt;a href="http://your-ec2-public-ip/" rel="noopener noreferrer"&gt;http://your-ec2-public-ip/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Fill in the form and Submit&lt;/li&gt;
&lt;li&gt;Check MySQL Database:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql -u admin -p -h your-rds-endpoint
USE your_database;
SELECT * FROM table_name;
&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%2Fz10azlp7wbbz39sc8206.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%2Fz10azlp7wbbz39sc8206.png" alt="Image description" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This setup ensures a scalable, secure, and high-availability application on AWS! 🚀&lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awschallenge</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Deploying a Scalable AWS Infrastructure with VPC, ALB, and Target Groups Using Terraform</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Tue, 11 Mar 2025 06:01:20 +0000</pubDate>
      <link>https://dev.to/ragul_21/deploying-a-scalable-aws-infrastructure-with-vpc-alb-and-target-groups-using-terraform-3b8m</link>
      <guid>https://dev.to/ragul_21/deploying-a-scalable-aws-infrastructure-with-vpc-alb-and-target-groups-using-terraform-3b8m</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
In this blog, we will walk through the process of deploying a scalable AWS infrastructure using Terraform. The setup includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A VPC with public and private subnets&lt;/li&gt;
&lt;li&gt;An Internet Gateway for public access&lt;/li&gt;
&lt;li&gt;Application Load Balancers (ALBs) for distributing traffic&lt;/li&gt;
&lt;li&gt;Target Groups and EC2 instances for handling incoming requests&lt;/li&gt;
&lt;li&gt;By the end of this guide, you’ll have a highly available setup with proper networking, security, and load balancing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Creating a VPC with Public and Private Subnets&lt;br&gt;
The first step is to define our Virtual Private Cloud (VPC) with four subnets (two public, two private) spread across multiple Availability Zones.&lt;br&gt;
Terraform Code: vpc.tf&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_vpc" "main_vpc" {
  cidr_block = "10.0.0.0/16"
}
# Public Subnet 1 - ap-south-1a
resource "aws_subnet" "public_subnet_1" {
  vpc_id            = aws_vpc.main_vpc.id
  cidr_block        = "10.0.1.0/24"
  availability_zone = "ap-south-1a"
  map_public_ip_on_launch = true
}
# Public Subnet 2 - ap-south-1b
resource "aws_subnet" "public_subnet_2" {
  vpc_id            = aws_vpc.main_vpc.id
  cidr_block        = "10.0.2.0/24"
  availability_zone = "ap-south-1b"
  map_public_ip_on_launch = true
}
# Private Subnet 1 - ap-south-1a
resource "aws_subnet" "private_subnet_1" {
  vpc_id            = aws_vpc.main_vpc.id
  cidr_block        = "10.0.3.0/24"
  availability_zone = "ap-south-1a"
}
# Private Subnet 2 - ap-south-1b
resource "aws_subnet" "private_subnet_2" {
  vpc_id            = aws_vpc.main_vpc.id
  cidr_block        = "10.0.4.0/24"
  availability_zone = "ap-south-1b"
}
# Internet Gateway for Public Access
resource "aws_internet_gateway" "igw" {
  vpc_id = aws_vpc.main_vpc.id
}
# Public Route Table
resource "aws_route_table" "public_rt" {
  vpc_id = aws_vpc.main_vpc.id
}
resource "aws_route" "internet_access" {
  route_table_id         = aws_route_table.public_rt.id
  destination_cidr_block = "0.0.0.0/0"
  gateway_id             = aws_internet_gateway.igw.id
}
resource "aws_route_table_association" "public_assoc_1" {
  subnet_id      = aws_subnet.public_subnet_1.id
  route_table_id = aws_route_table.public_rt.id
}
resource "aws_route_table_association" "public_assoc_2" {
  subnet_id      = aws_subnet.public_subnet_2.id
  route_table_id = aws_route_table.public_rt.id
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration ensures that our public subnets can access the internet, while our private subnets remain isolated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Setting Up Security Groups&lt;br&gt;
Next, we define security groups to control access to our ALBs and EC2 instances.&lt;br&gt;
Terraform Code: security_groups.tf&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_security_group" "alb_sg" {
  vpc_id = aws_vpc.main_vpc.id
  # Allow HTTP and HTTPS traffic to ALB
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  # Allow outbound traffic
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows public access to the ALB but restricts other traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Creating the Application Load Balancers (ALB)&lt;br&gt;
Now, let’s define two ALBs—one public and one private.&lt;br&gt;
Terraform Code: alb.tf&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Public ALB
resource "aws_lb" "public_alb" {
  name               = "public-alb"
  internal           = false
  load_balancer_type = "application"
  security_groups    = [aws_security_group.alb_sg.id]
  subnets           = [aws_subnet.public_subnet_1.id, aws_subnet.public_subnet_2.id]
}
# Private ALB
resource "aws_lb" "private_alb" {
  name               = "private-alb"
  internal           = true
  load_balancer_type = "application"
  security_groups    = [aws_security_group.alb_sg.id]
  subnets           = [aws_subnet.private_subnet_1.id, aws_subnet.private_subnet_2.id]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures redundancy and distributes traffic across different subnets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Creating Target Groups for EC2 Instances&lt;br&gt;
Each ALB needs target groups to route traffic to EC2 instances.&lt;br&gt;
Terraform Code: target_groups.tf&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_lb_target_group" "public_tg" {
  name     = "public-tg"
  port     = 80
  protocol = "HTTP"
  vpc_id   = aws_vpc.main_vpc.id
}
resource "aws_lb_target_group" "private_tg" {
  name     = "private-tg"
  port     = 80
  protocol = "HTTP"
  vpc_id   = aws_vpc.main_vpc.id
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These target groups allow ALBs to forward requests to backend EC2 instances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Launching EC2 Instances&lt;br&gt;
Finally, we deploy EC2 instances and register them with the target groups.&lt;br&gt;
Terraform Code: ec2.tf&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_instance" "public_instance" {
  ami           = "ami-0abcdef1234567890" # Replace with a valid AMI ID
  instance_type = "t2.micro"
  subnet_id     = aws_subnet.public_subnet_1.id
}
resource "aws_instance" "private_instance" {
  ami           = "ami-0abcdef1234567890" # Replace with a valid AMI ID
  instance_type = "t2.micro"
  subnet_id     = aws_subnet.private_subnet_1.id
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These instances will serve web requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Registering Instances to Target Groups&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_lb_target_group_attachment" "public_attach" {
  target_group_arn = aws_lb_target_group.public_tg.arn
  target_id        = aws_instance.public_instance.id
}
resource "aws_lb_target_group_attachment" "private_attach" {
  target_group_arn = aws_lb_target_group.private_tg.arn
  target_id        = aws_instance.private_instance.id
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This registers our EC2 instances as backend servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Step:&lt;/strong&gt; &lt;em&gt;Terraform Apply!&lt;/em&gt;&lt;br&gt;
Run the following command to deploy everything:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Once completed, you’ll get ALB DNS names, which you can use to access your deployed infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
This guide covered how to deploy a highly available AWS infrastructure using Terraform, including VPC, subnets, ALBs, security groups, target groups, and EC2 instances. This setup ensures a secure and scalable architecture.&lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)&lt;/p&gt;

</description>
      <category>awschallenge</category>
      <category>terraform</category>
      <category>applicationloadbalancer</category>
    </item>
    <item>
      <title>Managing EKS Clusters Using AWS Lambda: A Step-by-Step Approach</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Fri, 20 Dec 2024 12:20:54 +0000</pubDate>
      <link>https://dev.to/ragul_21/managing-eks-clusters-using-aws-lambda-a-step-by-step-approach-2c3</link>
      <guid>https://dev.to/ragul_21/managing-eks-clusters-using-aws-lambda-a-step-by-step-approach-2c3</guid>
      <description>&lt;p&gt;Efficiently managing &lt;strong&gt;Amazon Elastic Kubernetes Service&lt;/strong&gt; (EKS) clusters is critical for maintaining cost-effectiveness and performance. Automating the process of starting and stopping EKS clusters using AWS Lambda ensures optimal utilization and reduces manual intervention. Below is a structured approach to achieve this. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Define the Requirements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify the clusters that need automated start/stop operations. &lt;/li&gt;
&lt;li&gt;Determine the dependencies among clusters, if any, to ensure smooth transitions. &lt;/li&gt;
&lt;li&gt;Establish the scaling logic, such as leveraging tags to specify operational states (e.g., &lt;code&gt;auto-start&lt;/code&gt;, &lt;code&gt;auto-stop&lt;/code&gt;). &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Prepare the Environment&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS CLI Configuration: Ensure the AWS CLI is set up with appropriate credentials and access. &lt;/li&gt;
&lt;li&gt;IAM Role for Lambda: 

&lt;ul&gt;
&lt;li&gt;Create a role with permissions to manage EKS clusters (&lt;code&gt;eks:DescribeCluster&lt;/code&gt;, &lt;code&gt;eks:UpdateNodegroupConfig&lt;/code&gt;, etc.). &lt;/li&gt;
&lt;li&gt;Include logging permissions for CloudWatch Logs to monitor the Lambda function execution. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Tag EKS Clusters&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use resource tagging to identify clusters for automation. &lt;/li&gt;
&lt;li&gt;Example tags: 

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;auto-start=true&lt;/code&gt;: Indicates clusters that should be started by the Lambda function. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dependency=&amp;lt;cluster-name&amp;gt;&lt;/code&gt;: Specifies any inter-cluster dependencies. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Design the Lambda Function&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trigger Setup&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Use CloudWatch Events or schedule triggers (e.g., daily or weekly) to invoke the function. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Environment Variables&lt;/strong&gt;: Configure the function with environment variables for managing cluster names and dependency details. &lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Scaling Configuration&lt;/strong&gt;: Ensure the function dynamically retrieves scaling logic via tags to handle operational states. &lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Define the Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fetch Cluster Information&lt;/strong&gt;: Use AWS APIs to retrieve cluster details, including their tags and states. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check Dependencies&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Identify dependent clusters and validate their status before initiating operations on others. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Start/Stop Clusters&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Update node group configurations or use cluster-level start/stop APIs where supported. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Implement Logging and Alerts&lt;/strong&gt;: Capture the execution details and errors in CloudWatch Logs. &lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;(If you want my code , just comment "ease-py-code" on my blog , will share you 🫶 )&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Test and Validate&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dry Runs&lt;/strong&gt;: Perform simulations to ensure the function executes as expected without making actual changes. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Scenarios&lt;/strong&gt;: Test different scenarios involving dependencies to validate the logic. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error Handling&lt;/strong&gt;: Verify retries and exception handling for potential API failures. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;7. Deploy and Monitor&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deploy the Function&lt;/strong&gt;: Once validated, deploy the Lambda function in the desired region. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set Up Monitoring&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Use CloudWatch Metrics to monitor function executions and errors. &lt;/li&gt;
&lt;li&gt;Configure alarms for failure scenarios to take corrective actions. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;By automating the start and stop operations for EKS clusters, organizations can significantly enhance resource management and optimize costs. This approach provides scalability and ensures that inter-cluster dependencies are handled efficiently.&lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)&lt;/p&gt;

</description>
      <category>eks</category>
      <category>lambda</category>
      <category>aws</category>
    </item>
    <item>
      <title>How to Create a Lambda Function to Export IAM Users to S3 as a CSV File</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Mon, 16 Dec 2024 15:36:54 +0000</pubDate>
      <link>https://dev.to/ragul_21/how-to-create-a-lambda-function-to-export-iam-users-to-s3-as-a-csv-file-5enb</link>
      <guid>https://dev.to/ragul_21/how-to-create-a-lambda-function-to-export-iam-users-to-s3-as-a-csv-file-5enb</guid>
      <description>&lt;p&gt;Managing AWS resources efficiently often requires automation. One common task is exporting a list of IAM users into a CSV file for auditing or reporting purposes. AWS Lambda is an excellent tool to achieve this, combined with the power of S3 for storage. Here's a step-by-step guide:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Understand the Requirements&lt;/strong&gt;&lt;br&gt;
Before starting, ensure you have the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IAM permissions to list users (&lt;code&gt;iam:ListUsers&lt;/code&gt;) and access S3 (&lt;code&gt;s3:PutObject&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;An existing S3 bucket to store the generated CSV file.&lt;/li&gt;
&lt;li&gt;A basic understanding of AWS Lambda and its environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create an S3 Bucket&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log in to the AWS Management Console.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;S3&lt;/strong&gt; and create a new bucket or use an existing one.&lt;/li&gt;
&lt;li&gt;Note the bucket name for use in the Lambda function.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Set Up a Lambda Function&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Lambda&lt;/strong&gt; service in the AWS Console.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Create Function&lt;/strong&gt; and choose the option to create a function from scratch.&lt;/li&gt;
&lt;li&gt;Configure the runtime environment (e.g., Python or Node.js).&lt;/li&gt;
&lt;li&gt;Assign an appropriate IAM role to the Lambda function with permissions for IAM and S3 operations. (If you want my code , just comment "ease-py-code" on my blog , will share you 🫶 )&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Implement Logic for IAM and S3&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Lambda function will:

&lt;ul&gt;
&lt;li&gt;Retrieve a list of IAM users using the AWS SDK.&lt;/li&gt;
&lt;li&gt;Format the list into a CSV structure.&lt;/li&gt;
&lt;li&gt;Upload the file to the specified S3 bucket.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Test the Function&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use the AWS Lambda testing tools to trigger the function.&lt;/li&gt;
&lt;li&gt;Verify that the CSV file is successfully uploaded to the S3 bucket.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Monitor and Review&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check the S3 bucket for the uploaded CSV files.&lt;/li&gt;
&lt;li&gt;Review the Lambda logs in CloudWatch to ensure the function runs successfully.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By following these steps, you can automate the task of exporting IAM user information into a CSV file and store it securely in S3, making it easier to track and manage your AWS users.&lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)&lt;/p&gt;

</description>
      <category>lambda</category>
      <category>aws</category>
      <category>cloud</category>
      <category>iam</category>
    </item>
    <item>
      <title>Automating AWS Cost Management Reports with Lambda</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Wed, 11 Dec 2024 16:08:41 +0000</pubDate>
      <link>https://dev.to/ragul_21/automating-aws-cost-management-reports-with-lambda-d90</link>
      <guid>https://dev.to/ragul_21/automating-aws-cost-management-reports-with-lambda-d90</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Monitoring AWS costs is essential for keeping budgets in check&lt;/em&gt;&lt;/strong&gt;. In this guide, we’ll walk through creating an AWS Lambda function to retrieve cost details and send them to email (via SES) and Slack. &lt;br&gt;
Prerequisites &lt;br&gt;
1.AWS Account with IAM permissions for Lambda, SES, and Cost Explorer. &lt;br&gt;
2.Slack Webhook URL to send messages. &lt;br&gt;
3.Configured SES Email for notifications. &lt;br&gt;
4.S3 Bucket for storing cost reports as CSV files. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Enable Cost Explorer&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;em&gt;AWS Billing Dashboard&lt;/em&gt; &amp;gt; &lt;em&gt;Cost Explorer&lt;/em&gt;. &lt;/li&gt;
&lt;li&gt;Enable Cost Explorer to access detailed cost data. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create an S3 Bucket&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an S3 bucket (e.g., &lt;code&gt;aws-cost-reports&lt;/code&gt;) to store cost reports. &lt;/li&gt;
&lt;li&gt;Ensure the bucket has appropriate read/write permissions for Lambda. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Write the Lambda Code&lt;/strong&gt; &lt;br&gt;
1.Create a Lambda Function &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;em&gt;AWS Lambda&lt;/em&gt; &amp;gt; &lt;em&gt;Create Function&lt;/em&gt;. &lt;/li&gt;
&lt;li&gt;Select Python Runtime (e.g., Python 3.9). 

&lt;ol&gt;
&lt;li&gt;Add Dependencies &lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Use a Lambda layer or package libraries like &lt;code&gt;boto3&lt;/code&gt; and &lt;code&gt;slack_sdk&lt;/code&gt;. 
3.Write your python code and execute them. (If you want my code , just comment "ease-py-code" on my blog , will share you 🫶 )&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Add S3 Permissions&lt;/strong&gt; &lt;br&gt;
Update the Lambda execution role to allow &lt;code&gt;s3:PutObject&lt;/code&gt;, &lt;code&gt;ses:SendEmail&lt;/code&gt;, and &lt;code&gt;ce:GetCostAndUsage&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Test the Lambda&lt;/strong&gt; &lt;br&gt;
1.Trigger Lambda manually using a test event. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Verify the cost report is: 

&lt;ul&gt;
&lt;li&gt;Uploaded to the S3 bucket. &lt;/li&gt;
&lt;li&gt;Emailed via SES. &lt;/li&gt;
&lt;li&gt;Notified in Slack. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; &lt;br&gt;
With this setup, AWS cost reports are automatically delivered to your inbox and Slack, keeping you updated on spending trends. Fine-tune this solution by customizing the report frequency or grouping costs by other dimensions.&lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)&lt;/p&gt;

</description>
      <category>aws</category>
      <category>lambda</category>
      <category>python</category>
      <category>devops</category>
    </item>
    <item>
      <title>Exploring Kubernetes: A Step Ahead of Basics</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Tue, 10 Dec 2024 05:35:38 +0000</pubDate>
      <link>https://dev.to/ragul_21/exploring-kubernetes-a-step-ahead-of-basics-23jc</link>
      <guid>https://dev.to/ragul_21/exploring-kubernetes-a-step-ahead-of-basics-23jc</guid>
      <description>&lt;p&gt;Kubernetes is a powerful platform that simplifies the management of containerized applications. If you’re familiar with the fundamentals, it’s time to take a step further and explore intermediate concepts that enhance your ability to manage and optimize Kubernetes clusters.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Understanding Deployments&lt;/strong&gt; &lt;br&gt;
A Deployment ensures your application runs reliably by managing scaling, updates, and rollbacks. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Using ConfigMaps and Secrets&lt;/strong&gt; &lt;br&gt;
Kubernetes separates application configuration and sensitive data from the application code using ConfigMaps and Secrets. &lt;/p&gt;
&lt;h3&gt;
  
  
  ConfigMaps
&lt;/h3&gt;

&lt;p&gt;Store non-sensitive configurations, such as environment variables or application settings.&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create configmap app-config &lt;span class="nt"&gt;--from-literal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;production 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. &lt;strong&gt;Liveness and Readiness Probes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Probes ensure your application is healthy and ready to handle traffic. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Liveness Probe&lt;/strong&gt; &lt;br&gt;
Checks if your application is running. If it fails, Kubernetes restarts the pod. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Readiness Probe&lt;/strong&gt; &lt;br&gt;
Checks if your application is ready to accept traffic. If it fails, Kubernetes stops routing requests to the pod. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Resource Requests and Limits&lt;/strong&gt; &lt;br&gt;
To ensure efficient resource utilization, define requests (minimum resources a pod needs) and limits (maximum resources a pod can use). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.Horizontal Pod Autoscaling (HPA)&lt;/strong&gt; &lt;br&gt;
Scale your application dynamically based on CPU or memory usage. &lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl autoscale deployment my-app &lt;span class="nt"&gt;--cpu-percent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;70 &lt;span class="nt"&gt;--min&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2 &lt;span class="nt"&gt;--max&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures your application scales automatically when resource usage increases or decreases.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.Network Policies&lt;/strong&gt; &lt;br&gt;
Control how pods communicate with each other and external resources using Network Policies. &lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Kubernetes has revolutionized the way we manage containerized applications. By automating tasks like deployment, scaling, and maintenance, it allows developers and organizations to focus on innovation. Whether you're a beginner or a seasoned developer, mastering Kubernetes is a skill that will enhance your ability to build and manage modern applications.&lt;/p&gt;

&lt;p&gt;By mastering these slightly advanced Kubernetes concepts, you’ll improve your cluster management, application reliability, and resource utilization. With this knowledge, you’re well-prepared to dive into more advanced topics like Helm, monitoring with Prometheus, and service meshes like Istio.&lt;/p&gt;

&lt;p&gt;Follow for more and Happy learning :)&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>pods</category>
      <category>containers</category>
    </item>
    <item>
      <title>Understanding Kubernetes Basics: A Beginner’s Guide</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Fri, 29 Nov 2024 17:12:38 +0000</pubDate>
      <link>https://dev.to/ragul_21/understanding-kubernetes-basics-a-beginners-guide-1efg</link>
      <guid>https://dev.to/ragul_21/understanding-kubernetes-basics-a-beginners-guide-1efg</guid>
      <description>&lt;p&gt;In today’s tech-driven world, Kubernetes has emerged as one of the most powerful tools for container orchestration. Whether you’re managing a few containers or thousands of them, Kubernetes simplifies the process, ensuring high availability, scalability, and efficient resource utilization. This blog will guide you through the basics of Kubernetes, helping you understand its core components and functionality. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Kubernetes?&lt;/strong&gt;&lt;br&gt;
Kubernetes, often abbreviated as &lt;strong&gt;K8s&lt;/strong&gt;, is an open-source platform developed by Google that automates the deployment, scaling, and management of containerized applications. It was later donated to the Cloud Native Computing Foundation (CNCF). &lt;br&gt;
With Kubernetes, developers can focus on building applications, while Kubernetes takes care of managing their deployment and runtime. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features of Kubernetes&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Automated Deployment and Scaling&lt;/strong&gt; 
Kubernetes automates the deployment of containers and can scale them up or down based on demand. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-Healing&lt;/strong&gt; 
If a container fails, Kubernetes replaces it automatically, ensuring minimal downtime. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Load Balancing&lt;/strong&gt; 
Distributes traffic evenly across containers, optimizing performance and preventing overload. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rollbacks and Updates&lt;/strong&gt; 
Kubernetes manages seamless updates and rollbacks for your applications without disrupting service. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Management&lt;/strong&gt; 
Optimizes hardware utilization by efficiently scheduling containers across the cluster. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Core Components of Kubernetes&lt;/strong&gt; &lt;br&gt;
To understand Kubernetes, let’s break it down into its core components: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cluster&lt;/strong&gt; 
A Kubernetes cluster consists of: &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Master Node&lt;/strong&gt;: The control plane managing the entire cluster. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Worker Nodes&lt;/strong&gt;: Machines where containers run. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pods&lt;/strong&gt; :The smallest deployable unit in Kubernetes. 
         A pod can contain one or more containers that share resources like storage and networking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nodes&lt;/strong&gt; :  Physical or virtual machines that run the pods. 
            Managed by the &lt;strong&gt;Kubelet&lt;/strong&gt;, a process ensuring pods are running as expected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Services&lt;/strong&gt; : Allow communication between pods and other resources, both inside and outside the cluster. 
              Examples include ClusterIP, NodePort, and LoadBalancer services. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ConfigMaps and Secrets&lt;/strong&gt; :
&lt;strong&gt;ConfigMaps&lt;/strong&gt;: Store configuration data for your applications. 
&lt;strong&gt;Secrets&lt;/strong&gt;: Store sensitive data like passwords and tokens securely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Namespaces&lt;/strong&gt; 
Virtual clusters within a Kubernetes cluster, used for organizing and isolating resources.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; &lt;br&gt;
Kubernetes has revolutionized the way we manage containerized applications. By automating tasks like deployment, scaling, and maintenance, it allows developers and organizations to focus on innovation. Whether you're a beginner or a seasoned developer, mastering Kubernetes is a skill that will enhance your ability to build and manage modern applications. &lt;/p&gt;

&lt;p&gt;Follow for more and Happy learning :)&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>pods</category>
      <category>containers</category>
    </item>
    <item>
      <title>Deep Dive into AWS</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Tue, 26 Nov 2024 13:50:21 +0000</pubDate>
      <link>https://dev.to/ragul_21/deep-dive-into-aws-h4m</link>
      <guid>https://dev.to/ragul_21/deep-dive-into-aws-h4m</guid>
      <description>&lt;p&gt;Hi folks , welcome to my blog. Here we are going to see about &lt;strong&gt;&lt;em&gt;some interesting deep topics in AWS&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is AWS?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AWS is a subsidiary of Amazon that offers on-demand cloud computing services. These services eliminate the need for physical infrastructure, allowing businesses to rent computing power, storage, and other resources as needed. AWS operates on a pay-as-you-go model, which means you only pay for what you use.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Deep Dive: Serverless Architecture&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;One of AWS’s most revolutionary offerings is serverless computing. Traditional servers are replaced with fully managed services, allowing developers to focus solely on writing code.&lt;/p&gt;

&lt;h4&gt;
  
  
  Key Components of Serverless Architecture:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS Lambda&lt;/strong&gt;: Automatically scales based on the number of requests. Ideal for microservices and event-driven workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Gateway&lt;/strong&gt;: Connects client applications with backend services using APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DynamoDB&lt;/strong&gt;: High-performance NoSQL database for low-latency reads and writes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EventBridge&lt;/strong&gt;: Orchestrates serverless workflows using event-driven triggers.
&lt;strong&gt;Example Use Case&lt;/strong&gt;: Build a RESTful API without managing servers. Combine Lambda for compute, DynamoDB for storage, and API Gateway for routing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Advanced Concepts in AWS&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. Elasticity and Auto-Scaling&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;AWS Auto Scaling monitors your application and adjusts capacity automatically to maintain performance. For example, if traffic spikes, AWS can add more EC2 instances or scale down when traffic reduces.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. Hybrid Cloud and Outposts&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Hybrid cloud models integrate on-premises infrastructure with AWS. AWS Outposts allow you to run AWS services on your own hardware, enabling low-latency solutions for specific industries.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;3. High Availability and Disaster Recovery&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;AWS provides tools like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Route 53&lt;/strong&gt; for DNS failover.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Region Replication&lt;/strong&gt; for S3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Backup&lt;/strong&gt; for centralized backup management across multiple services.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;4. Monitoring and Logging&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CloudWatch&lt;/strong&gt;: Collect and monitor logs, metrics, and events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CloudTrail&lt;/strong&gt;: Records all API calls for auditing purposes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Config&lt;/strong&gt;: Tracks changes to your resources for compliance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AWS empowers organizations to innovate faster by providing scalable, secure, and cost-effective solutions. Whether you’re deploying a simple static website or a complex AI-powered application, AWS has the tools to support your goals. By leveraging its services and following best practices, you can build resilient and future-ready applications.&lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Introduction to AWS</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Wed, 20 Nov 2024 16:13:29 +0000</pubDate>
      <link>https://dev.to/ragul_21/introduction-to-aws-4lnm</link>
      <guid>https://dev.to/ragul_21/introduction-to-aws-4lnm</guid>
      <description>&lt;p&gt;Hi folks , welcome to my blog. Here we are going to see about &lt;strong&gt;"Introduction to AWS"&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Web Services (AWS)&lt;/strong&gt; is the world’s leading cloud computing platform, offering a wide range of services to help businesses scale and innovate. Whether you're building an application, hosting a website, or storing data, AWS provides reliable and cost-effective solutions for individuals and organizations of all sizes. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is AWS?&lt;/strong&gt; &lt;br&gt;
AWS is a comprehensive cloud computing platform provided by Amazon. It offers on-demand resources such as compute power, storage, networking, and databases on a pay-as-you-go basis. This eliminates the need for businesses to invest in and maintain physical servers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Benefits of AWS&lt;/strong&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: AWS allows you to scale your resources up or down based on your needs. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost-Effective&lt;/strong&gt;: With its pay-as-you-go pricing, you only pay for what you use. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global Availability&lt;/strong&gt;: AWS has data centers worldwide, ensuring low latency and high availability. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: AWS follows a shared responsibility model, offering top-notch security features like encryption and access control. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt;: Supports multiple programming languages, operating systems, and architectures. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Key AWS Services&lt;/strong&gt; &lt;br&gt;
Here are some of the most widely used AWS services: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Compute&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon EC2&lt;/strong&gt;: Virtual servers to run your applications. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Lambda&lt;/strong&gt;: Serverless computing to run code without managing servers. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon S3&lt;/strong&gt;: Object storage for data backup and distribution. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon EBS&lt;/strong&gt;: Block storage for EC2 instances. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon RDS&lt;/strong&gt;: Managed relational databases like MySQL, PostgreSQL, and Oracle. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon DynamoDB&lt;/strong&gt;: NoSQL database for high-performance applications. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networking&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon VPC&lt;/strong&gt;: Create isolated networks in the cloud. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Route 53&lt;/strong&gt;: Domain name system (DNS) and traffic management. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI/ML&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon SageMaker&lt;/strong&gt;: Build, train, and deploy machine learning models. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DevOps Tools&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS CodePipeline&lt;/strong&gt;: Automates the release process. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon EKS&lt;/strong&gt;: Managed Kubernetes service. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; &lt;br&gt;
AWS has revolutionized the way businesses leverage technology by providing scalable, secure, and flexible cloud solutions. Whether you're a developer, an enterprise, or an enthusiast, understanding AWS basics is the first step toward mastering the cloud. Start your AWS journey today and unlock endless possibilities! &lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
    <item>
      <title>Basic Linux Commands</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Fri, 15 Nov 2024 14:25:50 +0000</pubDate>
      <link>https://dev.to/ragul_21/basic-linux-commands-4jh4</link>
      <guid>https://dev.to/ragul_21/basic-linux-commands-4jh4</guid>
      <description>&lt;p&gt;Hi folks , welcome to my blog. Here we are going to see some basic and important commands of linux.&lt;/p&gt;

&lt;p&gt;One of the most distinctive features of Linux is its command-line interface (CLI). Knowing a few basic commands can unlock many possibilities in Linux.&lt;br&gt;
&lt;strong&gt;Essential Commands&lt;/strong&gt;&lt;br&gt;
Here are some fundamental commands to get you started:&lt;br&gt;
 &lt;strong&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/strong&gt; - Lists files and directories in the current directory.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ls&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/strong&gt; - Changes to a different directory.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;cd /home/user/Documents&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/strong&gt; - Prints the current working directory.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;pwd&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;cp&lt;/code&gt;&lt;/strong&gt; - Copies files or directories.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;cp file1.txt /home/user/backup/&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;mv&lt;/code&gt;&lt;/strong&gt; - Moves or renames files or directories.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;mv file1.txt file2.txt&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;rm&lt;/code&gt;&lt;/strong&gt; - Removes files or directories.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;rm file1.txt&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;mkdir&lt;/code&gt;&lt;/strong&gt; - Creates a new directory.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;mkdir new_folder&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;touch&lt;/code&gt;&lt;/strong&gt; - Creates a new empty file.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;touch newfile.txt&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;cat&lt;/code&gt;&lt;/strong&gt; - Displays the contents of a file.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;cat file1.txt&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;nano&lt;/code&gt; or &lt;code&gt;vim&lt;/code&gt;&lt;/strong&gt; - Opens a file in the text editor.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;nano file1.txt&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;chmod&lt;/code&gt;&lt;/strong&gt; - Changes file permissions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;chmod 755 file1.txt&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;ps&lt;/code&gt;&lt;/strong&gt; - Displays active processes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ps&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;kill&lt;/code&gt;&lt;/strong&gt; - Terminates a process.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;kill [PID]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Each command is powerful on its own, and combining them enables you to manage your files and system effectively.We can see more about some basics and interesting things about linux in further upcoming blogs which I will be posting.&lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>basic</category>
      <category>cli</category>
    </item>
    <item>
      <title>Linux basics for beginners</title>
      <dc:creator>Ragul.M</dc:creator>
      <pubDate>Thu, 14 Nov 2024 16:04:04 +0000</pubDate>
      <link>https://dev.to/ragul_21/linux-basics-for-beginners-1fn7</link>
      <guid>https://dev.to/ragul_21/linux-basics-for-beginners-1fn7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;br&gt;
             Linux is one of the most powerful and widely-used operating systems in the world, found everywhere from mobile devices to high-powered servers. Known for its stability, security, and open-source nature, Linux is an essential skill for anyone interested in IT, programming, or system administration. &lt;br&gt;
             In this blog , we are going to see What is linux and Why choose linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) What is linux&lt;/strong&gt;&lt;br&gt;
Linux is an open-source operating system that was first introduced by Linus Torvalds in 1991. Built on a Unix-based foundation, Linux is community-driven, meaning anyone can view, modify, and contribute to its code. This collaborative approach has led to the creation of various Linux distributions, or "distros," each tailored to different types of users and use cases. Some of the most popular Linux distributions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ubuntu&lt;/strong&gt;: Known for its user-friendly interface, great for beginners.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fedora&lt;/strong&gt;: A cutting-edge distro with the latest software versions, popular with developers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CentOS&lt;/strong&gt;: Stable and widely used in enterprise environments.
Each distribution may look and function slightly differently, but they all share the same core Linux features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2) Why choose linux&lt;/strong&gt;&lt;br&gt;
Linux is favored for many reasons, including its:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stability&lt;/strong&gt;: Linux is well-known for running smoothly without crashing, even in demanding environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: Its open-source nature allows the community to detect and fix vulnerabilities quickly, making it highly secure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizability&lt;/strong&gt;: Users have complete control to modify and customize their system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: Linux is efficient, allowing it to run on a wide range of devices, from servers to small IoT devices.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Learning Linux basics is the first step to becoming proficient in an operating system that powers much of the digital world. We can see more about some basics and interesting things about linux in further upcoming blogs which I will be posting. &lt;/p&gt;

&lt;p&gt;Follow for more and happy learning :)  &lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>basic</category>
    </item>
  </channel>
</rss>
