<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DevOps on Nahuel Hernandez</title>
    <link>https://nahuelhernandez.com/tags/devops/</link>
    <description>Recent content in DevOps on Nahuel Hernandez</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 14 Nov 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://nahuelhernandez.com/tags/devops/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GitOps Meets Auto-Scaling: How ArgoCD and Karpenter Should Be Designed Together on EKS</title>
      <link>https://nahuelhernandez.com/blog/argocd_karpenter_design_eks/</link>
      <pubDate>Fri, 14 Nov 2025 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/argocd_karpenter_design_eks/</guid>
      <description>Most EKS clusters I have audited in the last two years have ArgoCD installed and Karpenter installed. Almost none of them have those two things designed to work together. ArgoCD is set up by the platform team, Karpenter is set up later by the cost-optimization initiative, and the two run side by side without anyone owning the gap between them.
That gap is where you get the weird Sunday-night incidents. A new app rolls out, ArgoCD marks it as Healthy, Karpenter is busy consolidating the cluster, and 15% of your replicas end up Pending for 90 seconds.</description>
    </item>
    
    <item>
      <title>Automated AWS Resource Cleanup with aws-nuke</title>
      <link>https://nahuelhernandez.com/blog/automated_aws_resources_cleanup_with_aws_nuke/</link>
      <pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/automated_aws_resources_cleanup_with_aws_nuke/</guid>
      <description>A comprehensive guide on how to automate AWS resource cleanup using aws-nuke in an AWS Lambda function, ensuring your AWS accounts stay clean while preventing the cleanup task from deleting itself.
Table of contents Introduction What is aws-nuke? Setup Process 1. Create aws-nuke Configuration 2. Create Lambda Function 3. Configure AWS Profiles 4. Deploy Lambda Function 5. Set Up EventBridge Rule Important Considerations Lambda Timeout AWS Profiles Resource Deletion Order Safety Measures Cost Analysis Lambda Costs ECS Fargate Costs (for comparison) Conclusion Reference Introduction Managing AWS resources can become overwhelming, especially in development and testing environments.</description>
    </item>
    
    <item>
      <title>Building a Production-Ready Kubernetes Cluster on AWS EKS</title>
      <link>https://nahuelhernandez.com/blog/building_production_ready_eks_cluster/</link>
      <pubDate>Thu, 20 Feb 2025 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/building_production_ready_eks_cluster/</guid>
      <description>In this comprehensive guide, we&amp;rsquo;ll walk through setting up a production-ready Kubernetes cluster on Amazon EKS (Elastic Kubernetes Service). We&amp;rsquo;ll explore each component and understand why they&amp;rsquo;re essential for a robust, scalable, and maintainable infrastructure.
Table of contents Introduction Core Components 1. Amazon EKS 2. Karpenter 3. AWS Load Balancer Controller 4. ArgoCD 5. Istio 6. EFS CSI Driver Infrastructure Setup 1. Variables Configuration 2. EKS Cluster Creation 3. Component Installation Component Integration Best Practices Reference Introduction Creating a production-ready Kubernetes cluster requires more than just spinning up a basic EKS cluster.</description>
    </item>
    
    <item>
      <title>Effortless EKS Monitoring with ChatOps using Botkube</title>
      <link>https://nahuelhernandez.com/blog/effortless_eks_monitoring_with_botkube_chatops/</link>
      <pubDate>Sat, 24 Feb 2024 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/effortless_eks_monitoring_with_botkube_chatops/</guid>
      <description>This updated version revisits a blog post I authored two years ago, during which time Botkube has incorporated additional features and undergone changes to its installation process. Also, this post show how to do it with AWS EKS, but is similar for any K8S flavor.
BotKube is a messaging bot for monitoring and debugging K8S clusters in real-time. Some features are:
Allow us to execute Kubectl commands on our chat clients.</description>
    </item>
    
    <item>
      <title>AWS Ingress controller integration with External DNS and ACM on EKS</title>
      <link>https://nahuelhernandez.com/blog/aws_ingress_controller_integration_with_externaldns_and_acm_on_eks/</link>
      <pubDate>Sat, 27 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/aws_ingress_controller_integration_with_externaldns_and_acm_on_eks/</guid>
      <description>This POC demonstrates the integration of Amazon EKS with the Application Load Balancer (ALB) Ingress Controller. The primary goal is to expose multiple applications through a single ALB efficiently. This setup utilizes ExternalDNS in conjunction with Route53 to dynamically create DNS records using Ingress annotations within Kubernetes.
The architecture also includes SSL termination, leveraging the certificates generated and managed by AWS Certificate Manager (ACM). By employing the ALB Ingress Controller, ingress resources, ExternalDNS, and Route53, this setup streamlines the process of exposing services running on EKS clusters while ensuring secure and manageable access to these applications via a unified Application Load Balancer.</description>
    </item>
    
    <item>
      <title>ChatOps on EKS using BotKube</title>
      <link>https://nahuelhernandez.com/blog/chatops_on_eks_using_botkube/</link>
      <pubDate>Thu, 08 Sep 2022 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/chatops_on_eks_using_botkube/</guid>
      <description>BotKube is a messaging bot for monitoring and debugging K8S clusters in real-time. Some features are:
Allow us to execute Kubectl commands on our chat clients. By Default uses a ReadOnly Service Account, thus is only possible to execute read commands. Can monitor any K8S resource, including Custom Resources (like certificate expiry or backup failure). Pretty easy to configure, less than 5 minutes. Let us do a quick debug using only our chat client mobile app.</description>
    </item>
    
    <item>
      <title>Create EKS with auto-provisioning nodes effortless using Karpenter and Eksclt</title>
      <link>https://nahuelhernandez.com/blog/eks_with_autoprovisioning_nodes_using_karpenter_and_eksctl/</link>
      <pubDate>Mon, 04 Jul 2022 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/eks_with_autoprovisioning_nodes_using_karpenter_and_eksctl/</guid>
      <description>Note: This post is an updated and reduced version of an old blog post if you want to know more about Karpenter you should check it https://nahuelhernandez.com/blog/karpenter_kubernetes_node_autoscaling/
Requirements:
AWS Account Eksctl &amp;gt;= 0.99 AWS cli &amp;gt;= 2.6 Kubectl &amp;gt;= 1.23 Configuring cluster variables:
&amp;gt; export CLUSTER_NAME=eks-with-karpenter &amp;gt; export VERSION=1.22 &amp;gt; export REGION=us-east-1 Creating the cluster using Eksctl:
&amp;gt; cat &amp;lt;&amp;lt;EOF | eksctl create cluster -f - --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: $CLUSTERNAME region: $REGION version: $VERSION tags: karpenter.</description>
    </item>
    
    <item>
      <title>Karpenter Kubernetes Node Autoscaling</title>
      <link>https://nahuelhernandez.com/blog/karpenter_kubernetes_node_autoscaling/</link>
      <pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/karpenter_kubernetes_node_autoscaling/</guid>
      <description>A Kubernetes node autoscaling solution is a tool that automatically adjusts the size of the Kubernetes cluster based on the demands of our workloads. Because of this, we don&amp;rsquo;t need to create manually a new Kubernetes Node every time we need it (or delete it). Karpenter automatically provisions new nodes in response to unschedulable pods. It does this by observing events within the Kubernetes cluster, and then sending commands to the underlying cloud provider.</description>
    </item>
    
    <item>
      <title>Ingress Controller and External DNS with Route53 on EKS</title>
      <link>https://nahuelhernandez.com/blog/ingress_and_external_dns_with_route53_on_eks/</link>
      <pubDate>Mon, 17 Jan 2022 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/ingress_and_external_dns_with_route53_on_eks/</guid>
      <description>Normally when we expose an application on EKS we use a LoadBalancer service to expose the application, the problem with this is every time we create a new LoadBalancer service, AWS will create a new ELB. Ingress controllers on EKS allow us to use one ELB and configure the application access using Kubernetes resources.
By default an ingress controller doesn&amp;rsquo;t come with EKS, we need to install it. We&amp;rsquo;ll use nginx-ingress ingress controller to do that.</description>
    </item>
    
    <item>
      <title>Kubernetes Applications on Raspberry PI 4</title>
      <link>https://nahuelhernandez.com/blog/deploy_kubernetes_apps_on_raspberrypi4/</link>
      <pubDate>Sun, 29 Aug 2021 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/deploy_kubernetes_apps_on_raspberrypi4/</guid>
      <description>Deploy Kubernetes Apps on Raspberry PI 4 I need to deploy applications to a Self-hosted K8S Cluster. Also, I need to automate the deployments using Jenkins and an own Git server for the applications code using Gitlab CE. I will use 2 Raspberry PI for the solution. On the first Raspberry PI (aka rpi4a) I will install Kubernetes and Docker, and on the second (aka rpi4b), I will install Gitlab and Jenkins.</description>
    </item>
    
    <item>
      <title>Serverless Framework CICD on AWS</title>
      <link>https://nahuelhernandez.com/blog/serverless_framework_cicd_on_aws/</link>
      <pubDate>Mon, 04 Jan 2021 00:00:00 +0000</pubDate>
      
      <guid>https://nahuelhernandez.com/blog/serverless_framework_cicd_on_aws/</guid>
      <description>A serverless architecture is a way to build and run applications and services without having to manage infrastructure. On AWS we can create Lambda, API Gateway, DynamoDB and other resources that are &amp;ldquo;Serverless&amp;rdquo;. Some tools can help us to create and deploy our Lambda functions and other infrastructure resources such Serverless Framework, SAM, Terraform, Cloudformation and others.
Serverless Framework I choose Serverless Framework because is Open Source, uses YAML, and is agnostic, we can use it with AWS, Azure, GCP, Knative and so on.</description>
    </item>
    
  </channel>
</rss>
