Skip to content

Dude775/devops-field-guide

Repository files navigation

DevOps Field Guide - From Theory to Production

A practitioner's field guide for the journey from fundamentals to production-grade DevOps engineering.

What This Is

This repository operates on three levels:

  1. Field Guide - Distilled concepts, patterns, and principles for each DevOps domain, written to be referenced in practice
  2. Learning Journal - Honest reflections, surprises, and connections discovered along the way
  3. Live Projects - A rolling project that evolves with each module, accumulating real infrastructure

Course Roadmap

# Module Focus Status
00 Intro DevOps philosophy, SDLC, team dynamics Done
01 Linux Command line, filesystem, permissions, scripting Done
02 Python Basics Syntax, data structures, scripting Done
03 Git & GitHub Version control, branching, collaboration Done
04 Advanced Python OOP, Flask, APIs, automation Done
05 Networking TCP/IP, DNS, HTTP, firewalls Done
06 AWS Cloud fundamentals, core services Done
07 Docker Containers, images, Compose Done
08 CI/CD Pipelines, automation, deployment strategies Upcoming
09 Kubernetes Orchestration, pods, services In Progress
10 Helm Package management for Kubernetes In Progress
11 AWS Advanced ECS, ECR, EKS Upcoming
12 Terraform Infrastructure as Code Upcoming
13 Jenkins Build automation, pipeline orchestration Upcoming
14 Observability Grafana, monitoring, dashboards Upcoming
15 ArgoCD GitOps, continuous delivery Upcoming

Iron Rules

Principles collected throughout the course. These are non-negotiable truths earned through practice.

  • "An application is not code." - it is a solution living inside an organization
  • "Tech decisions are also organizational decisions."
  • "If it works, don't touch it."
  • "Any system too open will be breached."
  • "What you don't need, don't use."
  • "Always think worst case."
  • "A requirement not defined correctly doesn't disappear - it comes back as bugs."
  • "Bug in code = incident. Bug in data = crisis."
  • "Code that works in dev is not necessarily production-ready."
  • "insert_one() mutates your dict — handle _id before responding."
  • "Credentials in code = credentials in git. Use .env from day one."
  • "Circular imports? Extract shared resources to their own module."
  • "kubectl create -f is imperative-with-file, not declarative. Declarative is kubectl apply."
  • "spec.containers is required in every Pod manifest - it's a list, not a single object."
  • "kubectl describe is your proof that actual state == desired state."
  • "connection refused on the API server = cluster probably isn't running. Check docker ps first."
  • "kubectl create does not write last-applied-configuration. Migrating to apply triggers a one-time warning, then the annotation is backfilled automatically."
  • "Old ReplicaSets at 0 replicas are not junk - they are rollback history. Don't delete them manually."
  • "Never assume your working directory. pwd + ls -la before every lab."
  • "ReplicaSet counts every Pod matching its selector - including manually created Pods. Do not mix them casually."
  • "Changing ReplicaSet template does not update existing Pods. Only future Pods use the new template."
  • "pod-template-hash connects Deployment template, ReplicaSet name, and Pod names. Never set it manually."
  • "Changing pod template (image, env, etc.) creates a new ReplicaSet. Changing replicas does not."
  • "Rollback creates a new revision. It does not restore the old revision number."
  • "kubectl scale is temporary. kubectl apply always wins."
  • "Scaling replicas does not create a new rollout revision because pod template did not change."
  • "ImagePullBackOff is diagnosed at Pod level, not at Deployment level. Use kubectl describe pod."
  • "RollingUpdate keeps old Pods running until new Pods are healthy. A broken image does not kill availability."
  • "Rollback is fast recovery. If the manifest still has the bad image, the next apply brings it back."
  • "change-cause annotation is documentation, not action. It can lie. Check the actual image."
  • "kubectl diff before kubectl apply is not optional."

This list grows with each module.

About the Author

David Rubin - AI Solutions Specialist transitioning to DevOps Engineering.

Currently bridging the gap between business needs and technical implementation, now building depth in infrastructure, automation, and production systems.

About

Preparation for the DevOps self-study course

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors