How to Run Docker Containers as Non-Root in Production
Running Docker containers as root inside the container may work during local development — but in production environments, it’s a serious security risk. In this advanced guide, we’ll walk through: Why root containers are dangerous in real-world systems How to properly design your Dockerfile to run as a non-root user Best practices used in enterprises How to enforce this in CI/CD pipelines and Kubernetes The Real Risk of Running Containers as RootWhen a container runs as root inside...
Debugging with Git bisects
Have you ever introduced a bug into your codebase and then spent hours, maybe even days, trying to figure out exactly when it happened? Scrolling through endless commits, comparing files, and feeling increasingly frustrated? If so, you’re not alone! Luckily, Git has a powerful tool that can significantly speed up this debugging process: git bisect. Think of it as a detective for your code, helping you pinpoint the exact commit that introduced a problem. This article will guide you through...
Backing Up Your Amazon EKS Cluster with Velero
Kubernetes has become the backbone of modern cloud-native infrastructure, but managing mission-critical workloads requires robust disaster recovery strategies. When running applications on Amazon Elastic Kubernetes Service (EKS), ensuring that your cluster’s resources—deployments, services, persistent volumes, and configurations—are reliably backed up is essential. A single misconfiguration, accidental deletion, or infrastructure failure could disrupt your entire environment. Velero...
How to Setup MySQL Master-Master Replication
Master-Master replication allows two MySQL servers to act as both master and slave simultaneously, enabling bidirectional data synchronization. This setup enhances high availability and distributes write loads across nodes. Below is a step-by-step guide to configure MySQL Master-Master replication. Prerequisites Two servers (Server A and Server B) with MySQL installed. Network connectivity between both servers (port 3306 open). Identical MySQL versions on both servers (recommended). Adjust...
A Complete Guide to MySQL Indexing
MySQL is a powerful relational database management system, and one of its most important features is indexing. Indexing significantly speeds up database queries by reducing the amount of data MySQL needs to scan. In this article, we’ll walk you through setting up MySQL indexes and demonstrate their impact on query performance using a simple Node.js application. What is MySQL Indexing?Indexing in MySQL is similar to the index in a book. It helps you quickly locate data without having to scan...
Configure SSO Authentication in ArgoCD using Okta
This guide walks you through configuring Single Sign-On (SSO) for ArgoCD with Okta as the Identity Provider (IdP) using the SAML protocol. ArgoCD is a declarative, GitOps continuous delivery tool for Kubernetes. It allows you to manage your Kubernetes resources using Git repositories as the source of truth. By configuring SSO with Okta, you can enable users to authenticate to ArgoCD using their Okta credentials. This provides a seamless and secure login experience for users....
Create a self-hosted GitHub Action Runner in EKS
One of my previous blog post, I have talked about how to create a self-hosted GitHub Action Runner in EC2 instance. GitHub Actions is a powerful CI/CD tool that enables developers to build, test, and deploy software using customizable workflows. It provides managed infrastructure for running actions, but there are instances when running workflows on your self-hosted infrastructure becomes essential. In this blog I am going to discuss about how to create GitHub Self Hosted Runner in...
How to Setup MySQL Master Slave Replication
Replication is the process of replicating data from one server to another simultaneously. Generally, it is used to boost data availability and recover data in the event of a failure. After deploying MySQL replication, you no longer need to perform regular database backups. All databases on the Master node will be automatically replicated to the Slave node. Replication can help minimise the strain on the master server by having the slave node handle application requests. In the event of a...
Integrating GitHub App with Jenkins for Automated Status Checks Before Branch Merging
In modern software development, automating status checks and enforcing branch protection is critical for ensuring code quaolty and preventing broken code from being merged into important branches llke main or develop. By integrating GitHub Apps with Jenkins, you can automate this process, using status checks to vaoldate the state of code before any branch merging. In this post, we’ll walk through how to create a GitHub App, configure Jenkins for status checks, and set up secrets in Jenkins...
A Comprehensive Guide to Setting Up VPC Peering in AWS
When designing a secure and scalable architecture in AWS, Virtual Private Clouds (VPCs) play a pivotal role in isolating resources. However, there are scenarios where resources across different VPCs need to communicate securely. This is where VPC Peering comes into play. VPC peering enables you to establish a direct network route between two VPCs, allowing instances in either VPC to communicate with each other. In this guide, we’ll walk you through the steps to set up a VPC peering...