# The Ultimate DevOps Tools Cheat Sheet for 2026

## How to Use This Cheat Sheet

> Every page shows commands exactly as you would type them in the terminal, with a short explanation on the right. If you are new to DevOps, follow the steps below.

<table style="min-width: 581px;"><colgroup><col style="min-width: 25px;"><col style="width: 556px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p>&lt;name&gt;</p></td><td colspan="1" rowspan="1" colwidth="556"><p>GREEN text in angle brackets is a placeholder. Replace it (with the brackets) with your own value, e.g. &lt;pod&gt; becomes my-app-7d9f.</p></td></tr><tr><td colspan="1" rowspan="1"><p>--flag</p></td><td colspan="1" rowspan="1" colwidth="556"><p>BLUE text is an option / flag that changes how the command works.</p></td></tr><tr><td colspan="1" rowspan="1"><p># comment</p></td><td colspan="1" rowspan="1" colwidth="556"><p>GREY text on the right explains what the command does. Do not type it.</p></td></tr><tr><td colspan="1" rowspan="1"><p>$</p></td><td colspan="1" rowspan="1" colwidth="556"><p>The $ sign is the terminal prompt. Do not type it. Lines without $ are code snippets for a file (Jenkinsfile, YAML, HCL).</p></td></tr></tbody></table>

> ### Step-by-step: how to work safely in production
>
> **Step 1 - Confirm where you are.** Check the account, cluster and namespace first: aws sts get-caller-identity, kubectl config current-context, az account show.
>
> **Step 2 - Read before you change.** Use get / describe / list / plan / diff commands first. They only read and never modify anything.
>
> **Step 3 - Take a backup.** Snapshot the disk or database, run terraform state pull, or back up the config file before a risky change.
>
> **Step 4 - Do a dry run.** Use --dry-run, --check, terraform plan, helm --dry-run or kubectl diff to preview the exact change.
>
> **Step 5 - Change one thing at a time.** Apply the change to dev first, then staging, then production. Use rolling updates and approvals.
>
> **Step 6 - Verify and watch.** Check rollout status, logs, dashboards and alerts for a few minutes after the change.
>
> **Step 7 - Know your rollback.** Before you start, know the undo command: kubectl rollout undo, helm rollback, terraform apply of the previous version, git revert.
>
> *Warning: commands marked "careful", "danger" or "force" can delete data or cause downtime. Always double-check before pressing Enter.*

## DevOps Toolchain Architecture

> This diagram shows where each tool in this guide fits in the software delivery lifecycle - from writing code to monitoring it in production.

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/dcd58410-6fdb-40a1-a6bb-87f3ecfeea7a.png align="center")

## Index of Cheat Sheets

<table style="min-width: 503px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="width: 453px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>No.</strong></p></td><td colspan="1" rowspan="1"><p><strong>Tool</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p><strong>What you will find</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p>1</p></td><td colspan="1" rowspan="1"><p><strong>AWS CLI</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>48 commands - Manage every AWS service from the terminal - the base skill for any cloud DevOps role.</p></td></tr><tr><td colspan="1" rowspan="1"><p>2</p></td><td colspan="1" rowspan="1"><p><strong>Linux</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>51 commands - Daily-use commands for servers: files, processes, services, network and troubleshooting.</p></td></tr><tr><td colspan="1" rowspan="1"><p>3</p></td><td colspan="1" rowspan="1"><p><strong>Jenkins</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>30 commands - CI/CD automation server - service control, CLI, API calls and Jenkinsfile (pipeline) essentials.</p></td></tr><tr><td colspan="1" rowspan="1"><p>4</p></td><td colspan="1" rowspan="1"><p><strong>Terraform</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>40 commands - Infrastructure as Code - plan, apply, state management and safe production practices.</p></td></tr><tr><td colspan="1" rowspan="1"><p>5</p></td><td colspan="1" rowspan="1"><p><strong>Ansible</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>44 commands - Agentless configuration management - ad-hoc commands, playbooks, vault, roles and inventory.</p></td></tr><tr><td colspan="1" rowspan="1"><p>6</p></td><td colspan="1" rowspan="1"><p><strong>Docker</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>48 commands - Build, ship and run containers - images, containers, volumes, networks, compose and cleanup.</p></td></tr><tr><td colspan="1" rowspan="1"><p>7</p></td><td colspan="1" rowspan="1"><p><strong>Kubernetes</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>49 commands - Production edition: nodes, pods, rollouts, rollback, debugging and cluster health.</p></td></tr><tr><td colspan="1" rowspan="1"><p>8</p></td><td colspan="1" rowspan="1"><p><strong>Helm</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>36 commands - Kubernetes package manager - install, upgrade, rollback and test applications with charts.</p></td></tr><tr><td colspan="1" rowspan="1"><p>9</p></td><td colspan="1" rowspan="1"><p><strong>OpenShift (oc)</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>49 commands - Red Hat OpenShift CLI - projects, routes, builds, cluster operators, SCC and node debugging.</p></td></tr><tr><td colspan="1" rowspan="1"><p>10</p></td><td colspan="1" rowspan="1"><p><strong>Azure CLI</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>41 commands - Manage Azure resources - subscriptions, VMs, AKS, ACR, storage, Key Vault, RBAC and web apps.</p></td></tr><tr><td colspan="1" rowspan="1"><p>11</p></td><td colspan="1" rowspan="1"><p><strong>Git</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>54 commands - Daily Git workflow plus the recovery commands you need when something goes wrong.</p></td></tr><tr><td colspan="1" rowspan="1"><p>12</p></td><td colspan="1" rowspan="1"><p><strong>Monitoring Tools</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>38 commands - Prometheus, PromQL, Alertmanager, Grafana, Loki and Elasticsearch - the commands used in on-call.</p></td></tr><tr><td colspan="1" rowspan="1"><p>13</p></td><td colspan="1" rowspan="1"><p><strong>Linux Observability</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>49 commands - Find CPU, memory, disk, network and application bottlenecks on a live server - USE method.</p></td></tr><tr><td colspan="1" rowspan="1"><p>14</p></td><td colspan="1" rowspan="1"><p><strong>Argo CD &amp; GitOps</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>34 commands - GitOps continuous delivery for Kubernetes - Git is the single source of truth.</p></td></tr><tr><td colspan="1" rowspan="1"><p>15</p></td><td colspan="1" rowspan="1"><p><strong>HashiCorp Vault</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>34 commands - Secrets management - store, rotate and audit secrets, dynamic credentials and backups.</p></td></tr><tr><td colspan="1" rowspan="1"><p>16</p></td><td colspan="1" rowspan="1"><p><strong>DevSecOps Tools</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>28 commands - Shift-left security - scan images, code, IaC, dependencies, secrets and sign artifacts in CI/CD.</p></td></tr><tr><td colspan="1" rowspan="1"><p>17</p></td><td colspan="1" rowspan="1"><p><strong>GitHub Actions</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>34 commands - CI/CD workflow syntax - triggers, jobs, secrets, OIDC to cloud, approvals and reusable patterns.</p></td></tr><tr><td colspan="1" rowspan="1"><p>18</p></td><td colspan="1" rowspan="1"><p><strong>Kubernetes Power Tools</strong></p></td><td colspan="1" rowspan="1" colwidth="453"><p>38 commands - Ecosystem tools top companies use daily - k9s, stern, kubectx, Kustomize, Istio, cert-manager, Karpenter, KEDA.</p></td></tr></tbody></table>

## `1. AWS CLI (Part 1/2)`

Manage every AWS service from the terminal - the base skill for any cloud DevOps role.

<table style="width: 1714px;"><colgroup><col style="width: 395px;"><col style="width: 317px;"><col style="width: 298px;"><col style="width: 376px;"><col style="width: 328px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="395"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="317"><p>•&nbsp;Always run 'aws sts get-caller-identity' BEFORE any change - confirm you are in the right account/role.</p></td><td colspan="1" rowspan="1" colwidth="298"><p>•&nbsp;Use '--dry-run' (EC2) and '--query' + '--output table' to preview and filter results safely.</p></td><td colspan="1" rowspan="1" colwidth="376"><p>• Never hard-code access keys. Use SSO / IAM roles / OIDC and rotate keys regularly.</p></td><td colspan="1" rowspan="1" colwidth="328"><p>• Take a snapshot (EBS / RDS) before any risky production change.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/a0715745-9623-4e3a-b954-ba3422adae5d.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/28cb2a21-0c61-49b4-8287-36d89677c36e.png align="center")

## `2. Linux (Part 1/2)`

Daily-use commands for servers: files, processes, services, network and troubleshooting.

<table style="width: 1374px;"><colgroup><col style="width: 375px;"><col style="width: 215px;"><col style="width: 221px;"><col style="width: 262px;"><col style="width: 301px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="375"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="215"><p>• 'df -h' shows free space but 'df -i' shows free inodes - a server can be 'full' with space left.</p></td><td colspan="1" rowspan="1" colwidth="221"><p>•&nbsp;Use 'kill -15' (graceful) first. Use 'kill -9' only as last resort - it can corrupt data.</p></td><td colspan="1" rowspan="1" colwidth="262"><p>•&nbsp;Always take a backup (cp -a / tar) before editing config files in /etc.</p></td><td colspan="1" rowspan="1" colwidth="301"><p>•&nbsp;Use 'journalctl -u &lt;service&gt;' first when a service fails - the reason is almost always there.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/40370147-0944-4df7-8b33-b297d13988a6.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/f0fbc6b6-9a17-4adc-b69c-fd77740c56c2.png align="center")

## `3. Jenkins`

CI/CD automation server - service control, CLI, API calls and Jenkinsfile (pipeline) essentials.

<table style="width: 1517px;"><colgroup><col style="width: 412px;"><col style="width: 267px;"><col style="width: 283px;"><col style="width: 311px;"><col style="width: 244px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="412"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="267"><p>•&nbsp;Back up JENKINS_HOME (/var/lib/jenkins) regularly - it holds all jobs, credentials and config.</p></td><td colspan="1" rowspan="1" colwidth="283"><p>•&nbsp;Use 'safeRestart' (not 'restart') so running builds finish first.</p></td><td colspan="1" rowspan="1" colwidth="311"><p>•&nbsp;Never print secrets in logs - use credentials() / withCredentials() and keep 'mask passwords' on.</p></td><td colspan="1" rowspan="1" colwidth="244"><p>•&nbsp;Add an 'input' approval step and 'disableConcurrentBuilds()' for production deployments.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/40ca2dd1-25d0-4b8d-8c08-4940b7d57a85.png align="center")

## `4. Terraform`

Infrastructure as Code - plan, apply, state management and safe production practices.

<table style="width: 1700px;"><colgroup><col style="width: 418px;"><col style="width: 316px;"><col style="width: 303px;"><col style="width: 287px;"><col style="width: 376px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="418"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="316"><p>• ALWAYS run 'terraform plan -out=tfplan' and review it before 'apply tfplan'.</p></td><td colspan="1" rowspan="1" colwidth="303"><p>•&nbsp;Keep state in a remote backend (S3 + DynamoDB lock / Terraform Cloud) with versioning enabled.</p></td><td colspan="1" rowspan="1" colwidth="287"><p>•&nbsp;Use 'state pull &gt; backup.tfstate' before any 'state mv/rm' operation.</p></td><td colspan="1" rowspan="1" colwidth="376"><p>•&nbsp;Use '-target' only for emergencies - it can leave your infrastructure out of sync.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/e4967145-6dbe-40b6-a81b-ce0cb447d046.png align="center")

## `5. Ansible`

Agentless configuration management - ad-hoc commands, playbooks, vault, roles and inventory.

<table style="width: 2101px;"><colgroup><col style="width: 385px;"><col style="width: 374px;"><col style="width: 420px;"><col style="width: 421px;"><col style="width: 501px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="385"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="374"><p>• Always dry-run first: 'ansible-playbook site.yml --check --diff'.</p></td><td colspan="1" rowspan="1" colwidth="420"><p>•&nbsp;Use 'serial: 1' (rolling update) and 'max_fail_percentage' so one bad host does not take down production.</p></td><td colspan="1" rowspan="1" colwidth="421"><p>•&nbsp;Encrypt every secret with ansible-vault - never commit plain passwords to Git.</p></td><td colspan="1" rowspan="1" colwidth="501"><p>•&nbsp;Write idempotent tasks (use modules, not raw shell) so playbooks are safe to re-run.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/f19a4bc4-a7f5-4aec-b9d1-fe15af7af632.png align="center")

## `6. Docker (Part 1/2)`

Build, ship and run containers - images, containers, volumes, networks, compose and cleanup.

<table style="width: 1834px;"><colgroup><col style="width: 368px;"><col style="width: 336px;"><col style="width: 382px;"><col style="width: 457px;"><col style="width: 291px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="368"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="336"><p>•&nbsp;Never run containers as root - add 'USER appuser' in the Dockerfile and use a small base image.</p></td><td colspan="1" rowspan="1" colwidth="382"><p>•&nbsp;Always set '--restart unless-stopped' and memory/CPU limits for production containers.</p></td><td colspan="1" rowspan="1" colwidth="457"><p>• 'docker system prune -af --volumes' DELETES unused volumes (data!). Check before running.</p></td><td colspan="1" rowspan="1" colwidth="291"><p>•&nbsp;Pin image tags (nginx:1.27) - never use ':latest' in production. Scan images with Trivy.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/41f296d9-6ddd-4ecd-be49-34a6ce37ec7d.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/8bdf3998-1089-408c-96fc-e78e95ef2fc4.png align="center")

## `7. Kubernetes (Part 1/2)`

Production edition: nodes, pods, rollouts, rollback, debugging and cluster health.

<table style="width: 2389px;"><colgroup><col style="width: 337px;"><col style="width: 480px;"><col style="width: 468px;"><col style="width: 577px;"><col style="width: 527px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="337"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="480"><p>• Rollback fast: 'kubectl rollout undo deployment/&lt;name&gt;' - the first thing to try after a bad release.</p></td><td colspan="1" rowspan="1" colwidth="468"><p>•CrashLoopBackOff? Use 'kubectl logs --previous &lt;pod&gt;' and 'kubectl describe pod &lt;pod&gt;' (check Events).</p></td><td colspan="1" rowspan="1" colwidth="577"><p>•&nbsp;Always 'cordon' + 'drain' a node before maintenance. Set PodDisruptionBudgets for critical apps.</p></td><td colspan="1" rowspan="1" colwidth="527"><p>•&nbsp;Use 'kubectl diff -f' and '--dry-run=server' before 'apply' in production.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/95ea435a-6dab-4b5d-870c-fb49dfc44186.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/1566140b-223c-4d62-9c20-81facfe734f7.png align="center")

## `8. Helm`

Kubernetes package manager - install, upgrade, rollback and test applications with charts.

<table style="width: 2250px;"><colgroup><col style="width: 416px;"><col style="width: 434px;"><col style="width: 535px;"><col style="width: 460px;"><col style="width: 405px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="416"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="434"><p>• Use 'helm upgrade --install --atomic --timeout 10m' - it auto-rolls back if the release fails.</p></td><td colspan="1" rowspan="1" colwidth="535"><p>• Preview with 'helm diff upgrade' (plugin) or '--dry-run --debug' before touching production.</p></td><td colspan="1" rowspan="1" colwidth="460"><p>•&nbsp;Keep one values file per environment (values-dev.yaml, values-prod.yaml) in Git.</p></td><td colspan="1" rowspan="1" colwidth="405"><p>• Pin chart versions with '--version' so deployments are repeatable.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/d479d70b-e7f8-48be-8e01-d086619ac407.png align="center")

## `9. OpenShift (oc) (Part 1/2)`

Red Hat OpenShift CLI - projects, routes, builds, cluster operators, SCC and node debugging.

<table style="width: 2209px;"><colgroup><col style="width: 377px;"><col style="width: 477px;"><col style="width: 405px;"><col style="width: 367px;"><col style="width: 583px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="377"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="477"><p>• After any upgrade check 'oc get clusteroperators' - all should be Available=True, Degraded=False.</p></td><td colspan="1" rowspan="1" colwidth="405"><p>• Use 'oc debug node/&lt;node&gt;' to troubleshoot nodes - no SSH needed.</p></td><td colspan="1" rowspan="1" colwidth="367"><p>• Run 'oc adm must-gather' and attach it to Red Hat support cases.</p></td><td colspan="1" rowspan="1" colwidth="583"><p>• Avoid 'anyuid' / 'privileged' SCC - give the least privilege that works.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/ef473b64-f944-4e71-bace-da22961c0537.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/b9121f20-b793-4ff9-9dee-03c97fab5c98.png align="center")

## `10. Azure CLI (Part 1/2)`

Manage Azure resources - subscriptions, VMs, AKS, ACR, storage, Key Vault, RBAC and web apps.

<table style="width: 2302px;"><colgroup><col style="width: 389px;"><col style="width: 424px;"><col style="width: 419px;"><col style="width: 445px;"><col style="width: 625px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="389"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="424"><p>•&nbsp;Check 'az account show' before every change - wrong subscription is the #1 Azure mistake.</p></td><td colspan="1" rowspan="1" colwidth="419"><p>•&nbsp;'az group delete' removes EVERYTHING inside the group. Use resource locks on production.</p></td><td colspan="1" rowspan="1" colwidth="445"><p>•&nbsp;Use Managed Identity / Service Principal with least-privilege RBAC - not personal accounts in pipelines.</p></td><td colspan="1" rowspan="1" colwidth="625"><p>•&nbsp;Use deployment slots (staging -&gt; swap) for zero-downtime web app releases.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/614d91e3-6691-48f0-a243-d4184dc03978.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/29c16c7a-ee2c-42d7-bd5b-c566a327f43a.png align="center")

## `11. Git (Part 1/2)`

Daily Git workflow plus the recovery commands you need when something goes wrong.

<table style="width: 2210px;"><colgroup><col style="width: 387px;"><col style="width: 411px;"><col style="width: 428px;"><col style="width: 478px;"><col style="width: 506px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="387"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="411"><p>• Never 'git push --force' on shared branches - use '--force-with-lease'.</p></td><td colspan="1" rowspan="1" colwidth="428"><p>• 'git reflog' can bring back 'lost' commits after a bad reset or rebase.</p></td><td colspan="1" rowspan="1" colwidth="478"><p>• Use 'git revert &lt;sha&gt;' to undo a commit on main (history stays clean and safe).</p></td><td colspan="1" rowspan="1" colwidth="506"><p>•Committed a secret? Rotate it immediately - then clean history with git filter-repo.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/bb4a9d05-9f67-4319-b83f-14e2fd1f9bd3.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/0abb4cb6-42d1-4e83-8b15-95c16ceb0d73.png align="center")

## `12. Monitoring Tools (Part 1/2)`

Prometheus, PromQL, Alertmanager, Grafana, Loki and Elasticsearch - the commands used in on-call.

<table style="width: 2170px;"><colgroup><col style="width: 373px;"><col style="width: 381px;"><col style="width: 461px;"><col style="width: 425px;"><col style="width: 530px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="373"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="381"><p>•&nbsp;Watch the 4 Golden Signals: Latency, Traffic, Errors, Saturation.</p></td><td colspan="1" rowspan="1" colwidth="461"><p>•&nbsp;Alert on symptoms users feel (error rate, latency) - not only on CPU / memory.</p></td><td colspan="1" rowspan="1" colwidth="425"><p>• Always validate config with 'promtool check config / rules' BEFORE reloading Prometheus.</p></td><td colspan="1" rowspan="1" colwidth="530"><p>•&nbsp;Add a '--comment' when creating silences so the next engineer knows why.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/89cc8c3b-e3ca-4b9a-8e77-4f706781ee10.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/048d83d1-baa0-4e81-acb2-f33e84239eec.png align="center")

## `13. Linux Observability (Part 1/2)`

Find CPU, memory, disk, network and application bottlenecks on a live server - USE method.

<table style="width: 2311px;"><colgroup><col style="width: 346px;"><col style="width: 472px;"><col style="width: 470px;"><col style="width: 391px;"><col style="width: 632px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="346"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="472"><p>• USE method: for every resource check Utilization, Saturation and Errors.</p></td><td colspan="1" rowspan="1" colwidth="470"><p>•&nbsp;Load average higher than CPU cores = saturation. Check 'vmstat 1' column 'r' and 'wa'.</p></td><td colspan="1" rowspan="1" colwidth="391"><p>•&nbsp;Disk full but 'du' shows less? A deleted file is still open - find it with 'lsof +L1'.</p></td><td colspan="1" rowspan="1" colwidth="632"><p>•&nbsp;OOM kills? 'dmesg -T | grep -i oom' tells exactly which process was killed.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/6c0d23e3-094a-4349-b4b3-8ece584a6e90.png align="center")

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/666c328e-dd8c-44b1-83e5-c3afc1c9b24b.png align="center")

## `14. Argo CD & GitOps`

GitOps continuous delivery for Kubernetes - Git is the single source of truth.

<table style="width: 2489px;"><colgroup><col style="width: 352px;"><col style="width: 494px;"><col style="width: 470px;"><col style="width: 516px;"><col style="width: 657px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="352"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="494"><p>• Enable 'automated' sync with 'selfHeal' and 'prune' so manual cluster changes are reverted.</p></td><td colspan="1" rowspan="1" colwidth="470"><p>• Rollback by 'git revert' in the config repo - that is the real GitOps way.</p></td><td colspan="1" rowspan="1" colwidth="516"><p>• Use 'argocd app diff' before sync to see exactly what will change in prod.</p></td><td colspan="1" rowspan="1" colwidth="657"><p>•&nbsp;Use separate Projects (AppProject) to limit which repos / namespaces a team can deploy to.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/123d8e60-b0ab-4e94-b866-22b93e6d354d.png align="center")

## `15. HashiCorp Vault`

Secrets management - store, rotate and audit secrets, dynamic credentials and backups.

<table style="width: 2397px;"><colgroup><col style="width: 339px;"><col style="width: 499px;"><col style="width: 473px;"><col style="width: 479px;"><col style="width: 607px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="339"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="499"><p>• Take Raft snapshots regularly: 'vault operator raft snapshot save'. Test the restore.</p></td><td colspan="1" rowspan="1" colwidth="473"><p>•&nbsp;Enable an audit device on day one - you need it for every security investigation.</p></td><td colspan="1" rowspan="1" colwidth="479"><p>• Prefer dynamic (short-lived) credentials over static passwords.</p></td><td colspan="1" rowspan="1" colwidth="607"><p>• Leaked token? 'vault token revoke' or 'vault lease revoke -prefix &lt;path&gt;' immediately.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/61a5880f-b64f-4ab6-ad51-d190a5c4bc17.png align="center")

## `16. DevSecOps Tools`

Shift-left security - scan images, code, IaC, dependencies, secrets and sign artifacts in CI/CD.

<table style="width: 2724px;"><colgroup><col style="width: 360px;"><col style="width: 545px;"><col style="width: 555px;"><col style="width: 480px;"><col style="width: 784px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="360"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="545"><p>• Fail the pipeline on HIGH / CRITICAL findings: 'trivy image --exit-code 1 --severity HIGH,CRITICAL'.</p></td><td colspan="1" rowspan="1" colwidth="555"><p>•&nbsp;Scan at 3 points: source code (SAST / secrets), build (dependencies, images) and runtime (cluster).</p></td><td colspan="1" rowspan="1" colwidth="480"><p>• Generate an SBOM for every release and sign images with cosign.</p></td><td colspan="1" rowspan="1" colwidth="784"><p>• Use '--ignore-unfixed' to focus the team on vulnerabilities that actually have a fix.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/1bfc872c-e47e-4d2e-aeb3-1ccdd55be0a2.png align="center")

## `17. GitHub Actions`

CI/CD workflow syntax - triggers, jobs, secrets, OIDC to cloud, approvals and reusable patterns.

<table style="width: 2527px;"><colgroup><col style="width: 344px;"><col style="width: 557px;"><col style="width: 461px;"><col style="width: 535px;"><col style="width: 630px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="344"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="557"><p>•&nbsp;Use OIDC ('id-token: write') to assume cloud roles - no long-lived cloud keys in secrets.</p></td><td colspan="1" rowspan="1" colwidth="461"><p>•&nbsp;Pin third-party actions to a commit SHA and set minimal 'permissions'.</p></td><td colspan="1" rowspan="1" colwidth="535"><p>• Protect production with 'environment: production' + required reviewers (manual approval).</p></td><td colspan="1" rowspan="1" colwidth="630"><p>•&nbsp;Add 'concurrency' so two deployments never run at the same time.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/56e6de88-4897-4cfa-a4c1-7b810bddd342.png align="center")

## `18. Kubernetes Power Tools`

Ecosystem tools top companies use daily - k9s, stern, kubectx, Kustomize, Istio, cert-manager, Karpenter, KEDA.

<table style="width: 2760px;"><colgroup><col style="width: 397px;"><col style="width: 575px;"><col style="width: 508px;"><col style="width: 639px;"><col style="width: 641px;"></colgroup><tbody><tr><td colspan="1" rowspan="1" colwidth="397"><p><strong>Production Golden Rules</strong></p></td><td colspan="1" rowspan="1" colwidth="575"><p>•&nbsp;k9s + stern + kubectx/kubens save hours during an incident - install them on day one.</p></td><td colspan="1" rowspan="1" colwidth="508"><p>• Use Kustomize overlays (base + dev / prod) to avoid copy-pasting YAML.</p></td><td colspan="1" rowspan="1" colwidth="639"><p>• Expired certificate = outage. Always monitor cert-manager 'Certificate' objects.</p></td><td colspan="1" rowspan="1" colwidth="641"><p>•&nbsp;Use Karpenter / Cluster Autoscaler + KEDA to scale nodes and pods on real demand.</p></td></tr></tbody></table>

![](https://cdn.hashnode.com/uploads/covers/64896380683850aa5bb99b0e/e42548a3-db62-496d-82fc-f1aeeb6b2f70.png align="center")

**Author: Ram Khadke ( DevOps Consultant )**
