Sunday, July 26, 2026

Compare Commits Easily in Azure DevOps with the New UI Feature

Troubleshooting software bugs often involves comparing commits to identify the changes introduced between two points in the project's history. This is one of the most common techniques used by developers to investigate regressions, validate fixes, and understand the impact of code changes.

Azure DevOps now provides a built in UI to compare commits, eliminating the need to manually construct comparison URLs. In this blog post, we'll explore how to use this feature to compare commits and review the differences between them.

Prerequisites

  • An Azure DevOps repository
  • Multiple branches or commits available for comparison

Tuesday, June 30, 2026

Easily Navigate Large Azure DevOps Pipelines

When an Azure DevOps pipeline contains hundreds of stages, navigating the pipeline UI can become challenging for several reasons.

  • * Finding a specific stage among hundreds can be difficult.
  • * Extensive horizontal and vertical scrolling is often required.
  • * Failed stages are harder to identify in a large pipeline.
  • * Navigation more difficult for users.

To address these challenges, Azure DevOps has introduced a new feature that makes navigating large pipelines much easier.

Prerequisites:

An Azure DevOps pipeline with multiple stages.

Sunday, June 7, 2026

Managing Kubernetes Clusters Efficiently with K9s Terminal UI

When working with multiple Kubernetes clusters, administrators and developers often use kubectl commands and kube config contexts to switch between clusters. While this is a powerful approach, it requires users to remember various commands and context names, which can become difficult as the number of clusters grows.

For those who prefer a more interactive way to manage Kubernetes environments, tools with user-friendly interfaces can simplify day to day operations. In this blog, we will learn about K9s, a terminal based user interface that provides an efficient way to interact with Kubernetes clusters. K9s enables users to navigate resources, monitor workloads, view logs, and manage clusters directly from the terminal.

Prerequisites: This blog is demonstrated on Windows, and Chocolatey should be installed on your machine.

Sunday, May 31, 2026

Visualizing Kafka Clusters Using Kafka UI in Kind

In the previous blog, we discussed how to set up an Apache Kafka cluster on Kind (Kubernetes in Docker) and how to interact with it using Kafka tools. While command-line utilities are useful, managing and monitoring Kafka becomes much easier with a graphical interface. In this blog, we will explore Kafka UI, a web-based tool that provides a convenient way to view topics, inspect messages, monitor consumer groups, track offsets and lag, and manage Kafka clusters without relying solely on the command line.

Pre-requisites:

  • Kafka running on Kind

Saturday, May 30, 2026

Getting Started with Kafka on Kind Cluster

Apache Kafka is one of the most widely used event streaming platforms for building real time data pipelines and streaming applications. Before implementing Kafka in production environments, it is important to understand its core concepts, architecture, and operational model.

A practical way to learn Kafka is by running it locally in a lightweight Kubernetes environment. Kind (Kubernetes in Docker) provides a lightweight Kubernetes environment that can run entirely on a local machine. It is easy to set up and consumes minimal resources.

In this blog, we will be learning how to deploy and run Apache Kafka on a Kind cluster, allowing you to experiment with Kafka concepts and gain hands-on experience in a local development environment.

Prerequisites: Kind installed locally and a single-node Kind cluster.

Thursday, April 30, 2026

Troubleshooting Kind Cluster Creation Issues

Kind (Kubernetes in Docker) is a tool used to run a lightweight Kubernetes cluster locally inside Docker containers.

It is a great platform for learning real Kubernetes behavior because clusters can be spun up easily using a single command. In this blog, we will discuss an error that occurred while creating a Kind cluster for the first time and how to resolve it.

Pre-requisites:

  • Docker Desktop
  • Kubectl installed
  • Kind installed

Thursday, February 12, 2026

Troubleshooting MSBuild Assembly Issues When Migrating Azure DevOps Pipelines from Windows-2019 to Windows-2022

A team encountered a failure in our Azure DevOps build pipeline when using the Microsoft-hosted agent windows-2019. The pipeline suddenly started failing with errors indicating that the configuration was no longer supported. This happens because Microsoft has deprecated the windows-2019 hosted agents, making them unavailable for new builds. 

Wednesday, January 28, 2026

Enabling Chef Logs in Windows Event Viewer

Chef is a desired configuration management tool used to configure multiple systems into the same, identical state. When Chef desired state configuration scripts fail on a few systems, troubleshooting becomes difficult without proper logging, because each failed system must be checked individually.

However, if logs are available centrally, for example, in the ELK stack, it becomes much easier to troubleshoot issues.

In this blog, we will learn how to enable Chef logs as Windows Event Logs. Once the logs are enabled, these Windows Event Logs can be forwarded to ELK, allowing centralized log analysis and faster troubleshooting.

Sunday, January 25, 2026

Getting Started with Docker Linting Using GitHub Actions

Linting is a vital part of modern software development, as it helps prevent issues early and improves code quality throughout the development lifecycle. It also makes code easier to read, understand, and maintain. There are several linting tools available in the market, each designed for different purposes. 

One important area where linting plays an important role is containerization. Docker is a widely used tool in modern development, and the Dockerfile is one of its most critical components. Therefore, maintaining a high-quality Dockerfile is crucial for ensuring code quality and identifying potential issues early. This blog explains how to use CI/CD pipeline to perform Docker linting effectively.

Friday, October 31, 2025

How to Convert StringList Parameters to PowerShell Arrays in Azure DevOps YAML Pipelines

Azure DevOps YAML pipelines provide a well-established, code-based approach to defining CI/CD workflows as code. When working with YAML pipelines, various types of parameters can be used to pass input values into the pipeline. These parameters can be referenced in later stages for multiple purposes, such as structuring the pipeline, adding conditions, or controlling task behavior.

In this blog, we’ll learn how to use StringList parameters in a PowerShell task within a YAML pipeline.

Pre-requites: Experience with Azure DevOps YAML pipelines

Wednesday, October 29, 2025

Enable Cross-Origin Resource Sharing in Nginx Reverse Proxy

Cross-Origin Resource Sharing (CORS) is a web security feature that controls how web pages can request resources from a different domain than the one that served the web page. Without CORS restrictions, any website could make requests to other sites where a user is logged in.

This blog explains how to configure CORS when using Nginx as a reverse proxy. By handling CORS at the Nginx layer, we can centralize and simplify cross-origin access control for multiple backend applications.


Pre-requisites: Nginx Configured as reverse proxy

Thursday, September 25, 2025

How to Use Painless Scripts for Conditional Logic in Ingest Pipelines

In the ELK stack, an ingest pipeline is used to process and transform documents before they are indexed into Elasticsearch. There are several processors available in an ingest pipeline that can be applied to transform documents. To perform transformations effectively, it is sometimes necessary to use conditions. This blog explains how to add conditions in ingest pipelines.

Prerequisites:

  • An Elastic Stack account
  • An ingest pipeline configured in Elasticsearch

Tuesday, September 2, 2025

Integrating Azure Key Vault with AKS via External Secrets Operator

Managing secrets centrally is a best practice in software development. Secrets should be stored and rotated in a central location, even when they are used by multiple components of an application. However, when secrets need to be accessed in different places, such as CI/CD pipelines and Kubernetes, manually copying them can lead to errors and failures caused by human mistakes.

To address this in Kubernetes, we can use External Secrets Operators, which automatically sync secrets from external secret stores such as Azure Key Vaults into Kubernetes secrets. This removes the need for manual synchronization and reduces the risk of errors due to incorrect or outdated secrets.

Pre-requites:

  • Azure Kubernetes Cluster
  • Azure Key vault
  • Managed identity

Saturday, August 23, 2025

Fixing Azure CLI Storage Account Whitelisting Error: ‘IPs does not appear to be an IPv4 or IPv6 network

This blog explains an error that occurs when whitelisting IPs on a storage account using an Azure CLI script. The script attempts to pass the IPs as a space-separated string and apply them through the CLI. However, it fails with an error indicating that the IP format is incorrect. This post explains the issue and provides the steps to fix it.

Pre-requites:

  • Azure Storage account
  • The $ipList parameter accepts a semicolon-separated list of IP addresses

Monday, August 18, 2025

How to Extract Certificates and Keys from a PFX File in Windows Using WSL

A Personal Information Exchange (PFX) is a cryptographic file format used to store and protect sensitive information such as certificates, private keys, and secrets. In this blog, I’ll explain how to extract the certificates and private keys from PFX using OpenSSL in Windows Subsystem for Linux (WSL).

Prerequisites:

  1. WSL
  2. PFX file with certificate and private key

  • Open WSL and run sudo apt update to refresh the list of available packages and their versions.
  • Run sudo apt install openssl to install OpenSSL in WSL.

Thursday, July 31, 2025

Creating and Testing Ingest Pipelines with Grok for NGINX Logs in Elasticsearch

The Elastic Stack is widely used for log management, monitoring, analytics, and observability. It includes several tools such as Beats, which collect logs from various systems. However, not all data in these logs is necessary for indexing. To filter, transform, and enrich documents before they are indexed, we can use ingest pipelines. In this blog, we will discuss how to create a simple ingest pipeline and test it.

Wednesday, July 30, 2025

Automate PagerDuty Maintenance Windows with Azure DevOps

Reliable notifications, scheduled escalations, and effective on-call management are essential for operations teams to quickly identify and address issues. PagerDuty is a platform that provides all of these capabilities, enabling teams to maintain high reliability and reduce operational noise.When working with any operations platform, reliability is key to avoiding unnecessary alerts or actions. For example, during a scheduled system update, creating a maintenance window in PagerDuty can prevent false alarms triggered by expected changes.

In this blog, we'll discuss how to create a PagerDuty maintenance window using an Azure DevOps pipeline. By adding this step to your deployment process, you can automatically start a maintenance window during system updates, improving alert accuracy and reducing manual overhead.

Saturday, July 5, 2025

Using StringList Parameters in Azure DevOps Pipelines

Azure DevOps YAML pipelines now support the stringList parameter type, which allows you to present multiple selectable options as checkboxes in the pipeline UI.

This blog explains a pipeline that uses a stringList parameter with three values: dev, qa, and prod. After adding the region parameter as a stringList, the pipeline looks similar to the image below.

Sunday, June 22, 2025

Exploring the Full YAML Pipeline View in Azure DevOps

Azure DevOps YAML pipelines can be created using reusable YAML templates that help define parts of the pipeline as modules. By using templates, we can create shorter YAML pipelines and avoid duplication. However, debugging a YAML pipeline with templates is not easy, as we are unable to view the full, expanded pipeline easily. Azure DevOps now supports a new feature that allows us to see the full YAML pipeline of a pipeline run. In this blog post we are going to learn how to navigate to the full YAML pipeline view of the YAML pipeline that uses templates.

Pre-requisites:

  • Azure DevOps YAML pipeline that uses templates

Sunday, June 15, 2025

Resolve Azure DevOps Build Pipeline Warning, "The windows-2019 runner image is being deprecated, consider switching to windows-2022 (windows-latest) or windows-2025 instead"

The Windows-2019 runner image in Azure DevOps is being deprecated, and pipelines using the Windows-2019 hosted agent display a warning recommending a switch to a newer hosted agent. However, after changing the agent, build pipelines may break due to dependency and environment differences. This blog explains a NuGet restore failure that occurred after switching to Windows-2022 and provides a solution for it.

Warning: The windows-2019 runner image is being deprecated, consider switching to windows-2022 (windows-latest) or windows-2025 instead