Knowledge Base
Practical tutorials, how-to guides, and deep-dives on Linux, Kubernetes, Cloud, and DevOps — written by the Network Nuts training team.
Latest technical guides
- Prove Ansible Template Idempotence with Check Mode and Diff — Build a tiny localhost Ansible lab that renders a config file, proves the second run is idempotent, and uses check mode plus diff to preview a safe variable change without rewriting the file.
- Instrument a Python API with Prometheus and Verify the Counter End to End — Build a small Python API, expose Prometheus metrics, and verify that a counter really increased after 20 successful requests. This lab-backed walkthrough shows the exact Compose setup, what `up` proves, and what a raw…
- How to Stop Noisy Prometheus Alerts with Recording Rules and promtool Tests — Reduce Prometheus alert noise by moving long PromQL into recording rules, using realistic `for` timing, separating missing-metric detection from service-failure alerts, and validating alert behavior offline with…
- How to Pass Build Metadata Between GitLab Jobs with dotenv Artifacts — Pass computed values like version tags, package paths, and review URLs between GitLab CI/CD jobs with dotenv report artifacts. Learn when to use them, how `needs` and `dependencies` affect inheritance, and where the…
- How to Drain and Reboot an OpenShift Worker Node Safely — Use a conservative OpenShift worker-node maintenance runbook: verify workload safety, account for infrastructure pods, cordon and drain correctly, reboot through a supported path, and uncordon only after the node is…
- How to Troubleshoot a Failed systemd Service on Linux — Diagnose failed Linux services with systemctl and journalctl. Read the right logs, inspect unit settings, distinguish reload from restart, and verify recovery before closing an incident.
- Git Restore vs Reset vs Revert: A Practical Guide to Undoing Changes — Learn when to use git restore, git reset, and git revert with a tested local lab. Understand staged changes, safe local history edits, and how to undo a shared commit.
- How to Install a GUI on an Existing RHEL 9 or RHEL 10 Virtual Machine — Learn how to install the GNOME GUI on an existing RHEL 9 or RHEL 10 virtual machine without reinstalling the OS. This guide covers Server with GUI installation, graphical target configuration, GDM, and common…
- Function Calling an Ansible Playbook with OpenAI — Learn how to use OpenAI function calling to trigger Ansible playbooks with natural language. Build a simple AI-powered DevOps automation workflow using Python, OpenAI, and Ansible.
- Installing KubeVirt on an Existing Kubernetes Cluster — Install KubeVirt on an existing Kubernetes cluster and enable Kubernetes-native virtual machines. This guide covers KubeVirt, CDI, virtctl, NFS storage setup, dynamic provisioning, StorageClass creation, and deploying…
- Ansible Variants Explained: Ansible Core, Community Ansible, Navigator, Execution Environments, and VS Code Dev Containers — Understand the modern Ansible ecosystem, including ansible-core, the Ansible community package, ansible-navigator, execution environments, Ansible Builder, and VS Code Dev Containers.
- Advantages and Use Cases of the Kubernetes Python SDK: Beyond What kubectl Can Do — Learn why the Kubernetes Python SDK is a better choice than kubectl for building automation, AI agents, self-service platforms, and Kubernetes-native applications. This article explores the SDK’s key advantages…
- Why Hosting Jupyter Notebooks for ML and AI Developers on Kubernetes Is Better Than Running Them on a Laptop
- When is Docker Compose Enough? Situations Where Kubernetes Isn't Required — Not every containerized application needs Kubernetes. This guide explains when Docker Compose is the better choice, the situations where Kubernetes is unnecessary, and how to decide between the two based on…
- KServe Explained: What It Is, How It Works, When to Use It, and How to Install It — Discover how KServe simplifies deploying and managing machine learning models on Kubernetes. This guide explains KServe’s architecture, key features, real-world use cases, installation process, and how it enables…
- Jenkins vs GitHub Actions vs Argo CD vs GitLab CI/CD: When Should You Use Each? — Jenkins, GitHub Actions, Argo CD, and GitLab CI/CD solve different problems. Learn what each tool does best, where it falls short, and how to combine them for Kubernetes-ready delivery pipelines.
- LiteLLM on Kubernetes: Why Modern AI Platforms Need It — Discover how LiteLLM acts as an AI gateway for Kubernetes, enabling applications to access multiple LLM providers through a single OpenAI-compatible API. This article explains its architecture, key advantages…
- Accessing Kubernetes API from OpenShift Pods — How a pod running inside OpenShift can securely talk to the Kubernetes API using its mounted service account token, cluster CA certificate, and RBAC — with curl and Python examples.